Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 91985
b: refs/heads/master
c: 227739b
h: refs/heads/master
i:
  91983: 4d6024a
v: v3
  • Loading branch information
Robert Reif authored and David S. Miller committed Apr 24, 2008
1 parent 0fb3bbb commit 06c0588
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 14 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 77c664fa58624079f7a0fc29b46e8a32883633a5
refs/heads/master: 227739bf4c110bbd02d0c0f13b272c32de406e4c
30 changes: 17 additions & 13 deletions trunk/drivers/serial/sunzilog.c
Original file line number Diff line number Diff line change
Expand Up @@ -1015,6 +1015,7 @@ static struct uart_ops sunzilog_pops = {
.verify_port = sunzilog_verify_port,
};

static int uart_chip_count;
static struct uart_sunzilog_port *sunzilog_port_table;
static struct zilog_layout __iomem **sunzilog_chip_regs;

Expand Down Expand Up @@ -1350,16 +1351,22 @@ static int zilog_irq = -1;

static int __devinit zs_probe(struct of_device *op, const struct of_device_id *match)
{
static int inst;
static int kbm_inst, uart_inst;
int inst;
struct uart_sunzilog_port *up;
struct zilog_layout __iomem *rp;
int keyboard_mouse;
int keyboard_mouse = 0;
int err;

keyboard_mouse = 0;
if (of_find_property(op->node, "keyboard", NULL))
keyboard_mouse = 1;

/* uarts must come before keyboards/mice */
if (keyboard_mouse)
inst = uart_chip_count + kbm_inst;
else
inst = uart_inst;

sunzilog_chip_regs[inst] = of_ioremap(&op->resource[0], 0,
sizeof(struct zilog_layout),
"zs");
Expand Down Expand Up @@ -1427,6 +1434,7 @@ static int __devinit zs_probe(struct of_device *op, const struct of_device_id *m
rp, sizeof(struct zilog_layout));
return err;
}
uart_inst++;
} else {
printk(KERN_INFO "%s: Keyboard at MMIO 0x%llx (irq = %d) "
"is a %s\n",
Expand All @@ -1438,12 +1446,11 @@ static int __devinit zs_probe(struct of_device *op, const struct of_device_id *m
op->dev.bus_id,
(unsigned long long) up[1].port.mapbase,
op->irqs[0], sunzilog_type(&up[1].port));
kbm_inst++;
}

dev_set_drvdata(&op->dev, &up[0]);

inst++;

return 0;
}

Expand Down Expand Up @@ -1491,28 +1498,25 @@ static struct of_platform_driver zs_driver = {
static int __init sunzilog_init(void)
{
struct device_node *dp;
int err, uart_count;
int num_keybms;
int err;
int num_keybms = 0;
int num_sunzilog = 0;

num_keybms = 0;
for_each_node_by_name(dp, "zs") {
num_sunzilog++;
if (of_find_property(dp, "keyboard", NULL))
num_keybms++;
}

uart_count = 0;
if (num_sunzilog) {
int uart_count;

err = sunzilog_alloc_tables(num_sunzilog);
if (err)
goto out;

uart_count = (num_sunzilog * 2) - (2 * num_keybms);
uart_chip_count = num_sunzilog - num_keybms;

err = sunserial_register_minors(&sunzilog_reg, uart_count);
err = sunserial_register_minors(&sunzilog_reg,
uart_chip_count * 2);
if (err)
goto out_free_tables;
}
Expand Down

0 comments on commit 06c0588

Please sign in to comment.