diff options
| -rw-r--r-- | drivers/ide/ide-cs.c | 1 | ||||
| -rw-r--r-- | drivers/pcmcia/cistpl.c | 3 | ||||
| -rw-r--r-- | drivers/pcmcia/cs.c | 14 | ||||
| -rw-r--r-- | drivers/pcmcia/ds.c | 11 | ||||
| -rw-r--r-- | drivers/pcmcia/pcmcia_resource.c | 3 | ||||
| -rw-r--r-- | drivers/pcmcia/rsrc_nonstatic.c | 6 |
6 files changed, 21 insertions, 17 deletions
diff --git a/drivers/ide/ide-cs.c b/drivers/ide/ide-cs.c index cb199c815b53..f50210fe558f 100644 --- a/drivers/ide/ide-cs.c +++ b/drivers/ide/ide-cs.c | |||
| @@ -444,6 +444,7 @@ static struct pcmcia_device_id ide_ids[] = { | |||
| 444 | PCMCIA_DEVICE_PROD_ID1("STI Flash", 0xe4a13209), | 444 | PCMCIA_DEVICE_PROD_ID1("STI Flash", 0xe4a13209), |
| 445 | PCMCIA_DEVICE_PROD_ID12("STI", "Flash 5.0", 0xbf2df18d, 0x8cb57a0e), | 445 | PCMCIA_DEVICE_PROD_ID12("STI", "Flash 5.0", 0xbf2df18d, 0x8cb57a0e), |
| 446 | PCMCIA_MFC_DEVICE_PROD_ID12(1, "SanDisk", "ConnectPlus", 0x7a954bd9, 0x74be00c6), | 446 | PCMCIA_MFC_DEVICE_PROD_ID12(1, "SanDisk", "ConnectPlus", 0x7a954bd9, 0x74be00c6), |
| 447 | PCMCIA_DEVICE_PROD_ID2("Flash Card", 0x5a362506), | ||
| 447 | PCMCIA_DEVICE_NULL, | 448 | PCMCIA_DEVICE_NULL, |
| 448 | }; | 449 | }; |
| 449 | MODULE_DEVICE_TABLE(pcmcia, ide_ids); | 450 | MODULE_DEVICE_TABLE(pcmcia, ide_ids); |
diff --git a/drivers/pcmcia/cistpl.c b/drivers/pcmcia/cistpl.c index dcce9f5d8465..4a110b7b2673 100644 --- a/drivers/pcmcia/cistpl.c +++ b/drivers/pcmcia/cistpl.c | |||
| @@ -351,10 +351,11 @@ int verify_cis_cache(struct pcmcia_socket *s) | |||
| 351 | char *buf; | 351 | char *buf; |
| 352 | 352 | ||
| 353 | buf = kmalloc(256, GFP_KERNEL); | 353 | buf = kmalloc(256, GFP_KERNEL); |
| 354 | if (buf == NULL) | 354 | if (buf == NULL) { |
| 355 | dev_printk(KERN_WARNING, &s->dev, | 355 | dev_printk(KERN_WARNING, &s->dev, |
| 356 | "no memory for verifying CIS\n"); | 356 | "no memory for verifying CIS\n"); |
| 357 | return -ENOMEM; | 357 | return -ENOMEM; |
| 358 | } | ||
| 358 | list_for_each_entry(cis, &s->cis_cache, node) { | 359 | list_for_each_entry(cis, &s->cis_cache, node) { |
| 359 | int len = cis->len; | 360 | int len = cis->len; |
| 360 | 361 | ||
diff --git a/drivers/pcmcia/cs.c b/drivers/pcmcia/cs.c index c68c5d338285..0660ad182589 100644 --- a/drivers/pcmcia/cs.c +++ b/drivers/pcmcia/cs.c | |||
| @@ -186,12 +186,6 @@ int pcmcia_register_socket(struct pcmcia_socket *socket) | |||
| 186 | 186 | ||
| 187 | spin_lock_init(&socket->lock); | 187 | spin_lock_init(&socket->lock); |
| 188 | 188 | ||
| 189 | if (socket->resource_ops->init) { | ||
| 190 | ret = socket->resource_ops->init(socket); | ||
| 191 | if (ret) | ||
| 192 | return (ret); | ||
| 193 | } | ||
| 194 | |||
| 195 | /* try to obtain a socket number [yes, it gets ugly if we | 189 | /* try to obtain a socket number [yes, it gets ugly if we |
| 196 | * register more than 2^sizeof(unsigned int) pcmcia | 190 | * register more than 2^sizeof(unsigned int) pcmcia |
| 197 | * sockets... but the socket number is deprecated | 191 | * sockets... but the socket number is deprecated |
| @@ -226,7 +220,7 @@ int pcmcia_register_socket(struct pcmcia_socket *socket) | |||
| 226 | /* set proper values in socket->dev */ | 220 | /* set proper values in socket->dev */ |
| 227 | dev_set_drvdata(&socket->dev, socket); | 221 | dev_set_drvdata(&socket->dev, socket); |
| 228 | socket->dev.class = &pcmcia_socket_class; | 222 | socket->dev.class = &pcmcia_socket_class; |
| 229 | snprintf(socket->dev.bus_id, BUS_ID_SIZE, "pcmcia_socket%u", socket->sock); | 223 | dev_set_name(&socket->dev, "pcmcia_socket%u", socket->sock); |
| 230 | 224 | ||
| 231 | /* base address = 0, map = 0 */ | 225 | /* base address = 0, map = 0 */ |
| 232 | socket->cis_mem.flags = 0; | 226 | socket->cis_mem.flags = 0; |
| @@ -239,6 +233,12 @@ int pcmcia_register_socket(struct pcmcia_socket *socket) | |||
| 239 | mutex_init(&socket->skt_mutex); | 233 | mutex_init(&socket->skt_mutex); |
| 240 | spin_lock_init(&socket->thread_lock); | 234 | spin_lock_init(&socket->thread_lock); |
| 241 | 235 | ||
| 236 | if (socket->resource_ops->init) { | ||
| 237 | ret = socket->resource_ops->init(socket); | ||
| 238 | if (ret) | ||
| 239 | goto err; | ||
| 240 | } | ||
| 241 | |||
| 242 | tsk = kthread_run(pccardd, socket, "pccardd"); | 242 | tsk = kthread_run(pccardd, socket, "pccardd"); |
| 243 | if (IS_ERR(tsk)) { | 243 | if (IS_ERR(tsk)) { |
| 244 | ret = PTR_ERR(tsk); | 244 | ret = PTR_ERR(tsk); |
diff --git a/drivers/pcmcia/ds.c b/drivers/pcmcia/ds.c index 795660255490..47cab31ff6e4 100644 --- a/drivers/pcmcia/ds.c +++ b/drivers/pcmcia/ds.c | |||
| @@ -622,7 +622,6 @@ struct pcmcia_device * pcmcia_device_add(struct pcmcia_socket *s, unsigned int f | |||
| 622 | { | 622 | { |
| 623 | struct pcmcia_device *p_dev, *tmp_dev; | 623 | struct pcmcia_device *p_dev, *tmp_dev; |
| 624 | unsigned long flags; | 624 | unsigned long flags; |
| 625 | int bus_id_len; | ||
| 626 | 625 | ||
| 627 | s = pcmcia_get_socket(s); | 626 | s = pcmcia_get_socket(s); |
| 628 | if (!s) | 627 | if (!s) |
| @@ -650,12 +649,12 @@ struct pcmcia_device * pcmcia_device_add(struct pcmcia_socket *s, unsigned int f | |||
| 650 | /* by default don't allow DMA */ | 649 | /* by default don't allow DMA */ |
| 651 | p_dev->dma_mask = DMA_MASK_NONE; | 650 | p_dev->dma_mask = DMA_MASK_NONE; |
| 652 | p_dev->dev.dma_mask = &p_dev->dma_mask; | 651 | p_dev->dev.dma_mask = &p_dev->dma_mask; |
| 653 | bus_id_len = sprintf (p_dev->dev.bus_id, "%d.%d", p_dev->socket->sock, p_dev->device_no); | 652 | dev_set_name(&p_dev->dev, "%d.%d", p_dev->socket->sock, p_dev->device_no); |
| 654 | 653 | if (!dev_name(&p_dev->dev)) | |
| 655 | p_dev->devname = kmalloc(6 + bus_id_len + 1, GFP_KERNEL); | 654 | goto err_free; |
| 655 | p_dev->devname = kasprintf(GFP_KERNEL, "pcmcia%s", dev_name(&p_dev->dev)); | ||
| 656 | if (!p_dev->devname) | 656 | if (!p_dev->devname) |
| 657 | goto err_free; | 657 | goto err_free; |
| 658 | sprintf (p_dev->devname, "pcmcia%s", p_dev->dev.bus_id); | ||
| 659 | ds_dev_dbg(3, &p_dev->dev, "devname is %s\n", p_dev->devname); | 658 | ds_dev_dbg(3, &p_dev->dev, "devname is %s\n", p_dev->devname); |
| 660 | 659 | ||
| 661 | spin_lock_irqsave(&pcmcia_dev_list_lock, flags); | 660 | spin_lock_irqsave(&pcmcia_dev_list_lock, flags); |
| @@ -668,6 +667,8 @@ struct pcmcia_device * pcmcia_device_add(struct pcmcia_socket *s, unsigned int f | |||
| 668 | list_for_each_entry(tmp_dev, &s->devices_list, socket_device_list) | 667 | list_for_each_entry(tmp_dev, &s->devices_list, socket_device_list) |
| 669 | if (p_dev->func == tmp_dev->func) { | 668 | if (p_dev->func == tmp_dev->func) { |
| 670 | p_dev->function_config = tmp_dev->function_config; | 669 | p_dev->function_config = tmp_dev->function_config; |
| 670 | p_dev->io = tmp_dev->io; | ||
| 671 | p_dev->irq = tmp_dev->irq; | ||
| 671 | kref_get(&p_dev->function_config->ref); | 672 | kref_get(&p_dev->function_config->ref); |
| 672 | } | 673 | } |
| 673 | 674 | ||
diff --git a/drivers/pcmcia/pcmcia_resource.c b/drivers/pcmcia/pcmcia_resource.c index 76d4a98f0955..f5d0ba8e22d5 100644 --- a/drivers/pcmcia/pcmcia_resource.c +++ b/drivers/pcmcia/pcmcia_resource.c | |||
| @@ -302,9 +302,10 @@ int pcmcia_modify_configuration(struct pcmcia_device *p_dev, | |||
| 302 | /* We only allow changing Vpp1 and Vpp2 to the same value */ | 302 | /* We only allow changing Vpp1 and Vpp2 to the same value */ |
| 303 | if ((mod->Attributes & CONF_VPP1_CHANGE_VALID) && | 303 | if ((mod->Attributes & CONF_VPP1_CHANGE_VALID) && |
| 304 | (mod->Attributes & CONF_VPP2_CHANGE_VALID)) { | 304 | (mod->Attributes & CONF_VPP2_CHANGE_VALID)) { |
| 305 | if (mod->Vpp1 != mod->Vpp2) | 305 | if (mod->Vpp1 != mod->Vpp2) { |
| 306 | ds_dbg(s, 0, "Vpp1 and Vpp2 must be the same\n"); | 306 | ds_dbg(s, 0, "Vpp1 and Vpp2 must be the same\n"); |
| 307 | return -EINVAL; | 307 | return -EINVAL; |
| 308 | } | ||
| 308 | s->socket.Vpp = mod->Vpp1; | 309 | s->socket.Vpp = mod->Vpp1; |
| 309 | if (s->ops->set_socket(s, &s->socket)) { | 310 | if (s->ops->set_socket(s, &s->socket)) { |
| 310 | dev_printk(KERN_WARNING, &s->dev, | 311 | dev_printk(KERN_WARNING, &s->dev, |
diff --git a/drivers/pcmcia/rsrc_nonstatic.c b/drivers/pcmcia/rsrc_nonstatic.c index 17f4ecf1c0c5..9ca22c7aafb2 100644 --- a/drivers/pcmcia/rsrc_nonstatic.c +++ b/drivers/pcmcia/rsrc_nonstatic.c | |||
| @@ -71,7 +71,7 @@ static DEFINE_MUTEX(rsrc_mutex); | |||
| 71 | ======================================================================*/ | 71 | ======================================================================*/ |
| 72 | 72 | ||
| 73 | static struct resource * | 73 | static struct resource * |
| 74 | make_resource(resource_size_t b, resource_size_t n, int flags, char *name) | 74 | make_resource(resource_size_t b, resource_size_t n, int flags, const char *name) |
| 75 | { | 75 | { |
| 76 | struct resource *res = kzalloc(sizeof(*res), GFP_KERNEL); | 76 | struct resource *res = kzalloc(sizeof(*res), GFP_KERNEL); |
| 77 | 77 | ||
| @@ -624,7 +624,7 @@ static int nonstatic_adjust_io_region(struct resource *res, unsigned long r_star | |||
| 624 | static struct resource *nonstatic_find_io_region(unsigned long base, int num, | 624 | static struct resource *nonstatic_find_io_region(unsigned long base, int num, |
| 625 | unsigned long align, struct pcmcia_socket *s) | 625 | unsigned long align, struct pcmcia_socket *s) |
| 626 | { | 626 | { |
| 627 | struct resource *res = make_resource(0, num, IORESOURCE_IO, s->dev.bus_id); | 627 | struct resource *res = make_resource(0, num, IORESOURCE_IO, dev_name(&s->dev)); |
| 628 | struct socket_data *s_data = s->resource_data; | 628 | struct socket_data *s_data = s->resource_data; |
| 629 | struct pcmcia_align_data data; | 629 | struct pcmcia_align_data data; |
| 630 | unsigned long min = base; | 630 | unsigned long min = base; |
| @@ -658,7 +658,7 @@ static struct resource *nonstatic_find_io_region(unsigned long base, int num, | |||
| 658 | static struct resource * nonstatic_find_mem_region(u_long base, u_long num, | 658 | static struct resource * nonstatic_find_mem_region(u_long base, u_long num, |
| 659 | u_long align, int low, struct pcmcia_socket *s) | 659 | u_long align, int low, struct pcmcia_socket *s) |
| 660 | { | 660 | { |
| 661 | struct resource *res = make_resource(0, num, IORESOURCE_MEM, s->dev.bus_id); | 661 | struct resource *res = make_resource(0, num, IORESOURCE_MEM, dev_name(&s->dev)); |
| 662 | struct socket_data *s_data = s->resource_data; | 662 | struct socket_data *s_data = s->resource_data; |
| 663 | struct pcmcia_align_data data; | 663 | struct pcmcia_align_data data; |
| 664 | unsigned long min, max; | 664 | unsigned long min, max; |
