X-Git-Url: http://pilppa.org/gitweb/?a=blobdiff_plain;f=drivers%2Fserial%2F8250_acorn.c;h=b0ce8c56f1a4dcdb8ac077888ed3973756b8f2e6;hb=a09e64fbc0094e3073dbb09c3b4bfe4ab669244b;hp=32af3650e8b44bace902d939d58f4e57403c1e2b;hpb=1da177e4c3f41524e886b7f1b8a0c1fc7321cac2;p=linux-2.6-omap-h63xx.git diff --git a/drivers/serial/8250_acorn.c b/drivers/serial/8250_acorn.c index 32af3650e8b..b0ce8c56f1a 100644 --- a/drivers/serial/8250_acorn.c +++ b/drivers/serial/8250_acorn.c @@ -35,6 +35,7 @@ struct serial_card_type { struct serial_card_info { unsigned int num_ports; int ports[MAX_PORTS]; + void __iomem *vaddr; }; static int __devinit @@ -44,19 +45,17 @@ serial_card_probe(struct expansion_card *ec, const struct ecard_id *id) struct serial_card_type *type = id->data; struct uart_port port; unsigned long bus_addr; - unsigned char __iomem *virt_addr; unsigned int i; - info = kmalloc(sizeof(struct serial_card_info), GFP_KERNEL); + info = kzalloc(sizeof(struct serial_card_info), GFP_KERNEL); if (!info) return -ENOMEM; - memset(info, 0, sizeof(struct serial_card_info)); info->num_ports = type->num_ports; bus_addr = ecard_resource_start(ec, type->type); - virt_addr = ioremap(bus_addr, ecard_resource_len(ec, type->type)); - if (!virt_addr) { + info->vaddr = ecardm_iomap(ec, type->type, 0, 0); + if (!info->vaddr) { kfree(info); return -ENOMEM; } @@ -72,7 +71,7 @@ serial_card_probe(struct expansion_card *ec, const struct ecard_id *id) port.dev = &ec->dev; for (i = 0; i < info->num_ports; i ++) { - port.membase = virt_addr + type->offset[i]; + port.membase = info->vaddr + type->offset[i]; port.mapbase = bus_addr + type->offset[i]; info->ports[i] = serial8250_register_port(&port);