Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[PATCH] pcmcia: add pcmcia to IRQ information

Add a devname parameter to the pcmcia_device structure, fills it with
"pcmcia<bus_id>" in pcmcia_device_add, and passes it to request_irq in
pcmcia_request_irq.

Signed-off-by: Brice Goglin <Brice.Goglin@ens-lyon.org>
Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>

authored by

Brice Goglin and committed by
Linus Torvalds
bd65a685 d3feb184

+13 -3
+9 -1
drivers/pcmcia/ds.c
··· 354 354 struct pcmcia_device *p_dev = to_pcmcia_dev(dev); 355 355 ds_dbg(1, "releasing dev %p\n", p_dev); 356 356 pcmcia_put_socket(p_dev->socket); 357 + kfree(p_dev->devname); 357 358 kfree(p_dev); 358 359 } 359 360 ··· 505 504 { 506 505 struct pcmcia_device *p_dev; 507 506 unsigned long flags; 507 + int bus_id_len; 508 508 509 509 s = pcmcia_get_socket(s); 510 510 if (!s) ··· 529 527 p_dev->dev.bus = &pcmcia_bus_type; 530 528 p_dev->dev.parent = s->dev.dev; 531 529 p_dev->dev.release = pcmcia_release_dev; 532 - sprintf (p_dev->dev.bus_id, "%d.%d", p_dev->socket->sock, p_dev->device_no); 530 + bus_id_len = sprintf (p_dev->dev.bus_id, "%d.%d", p_dev->socket->sock, p_dev->device_no); 531 + 532 + p_dev->devname = kmalloc(6 + bus_id_len + 1, GFP_KERNEL); 533 + if (!p_dev->devname) 534 + goto err_free; 535 + sprintf (p_dev->devname, "pcmcia%s", p_dev->dev.bus_id); 533 536 534 537 /* compat */ 535 538 p_dev->state = CLIENT_UNBOUND; ··· 559 552 return p_dev; 560 553 561 554 err_free: 555 + kfree(p_dev->devname); 562 556 kfree(p_dev); 563 557 s->device_count--; 564 558 err_put:
+2 -2
drivers/pcmcia/pcmcia_resource.c
··· 820 820 ((req->Attributes & IRQ_TYPE_DYNAMIC_SHARING) || 821 821 (s->functions > 1) || 822 822 (irq == s->pci_irq)) ? SA_SHIRQ : 0, 823 - p_dev->dev.bus_id, 823 + p_dev->devname, 824 824 (req->Attributes & IRQ_HANDLE_PRESENT) ? req->Instance : data); 825 825 if (!ret) { 826 826 if (!(req->Attributes & IRQ_HANDLE_PRESENT)) ··· 842 842 ((req->Attributes & IRQ_TYPE_DYNAMIC_SHARING) || 843 843 (s->functions > 1) || 844 844 (irq == s->pci_irq)) ? SA_SHIRQ : 0, 845 - p_dev->dev.bus_id, req->Instance)) 845 + p_dev->devname, req->Instance)) 846 846 return CS_IN_USE; 847 847 } 848 848
+2
include/pcmcia/ds.h
··· 151 151 uniquely define a pcmcia_device */ 152 152 struct pcmcia_socket *socket; 153 153 154 + char *devname; 155 + 154 156 u8 device_no; 155 157 156 158 /* the hardware "function" device; certain subdevices can