diff options
author | Dominik Brodowski <linux@dominikbrodowski.net> | 2006-03-05 04:45:09 -0500 |
---|---|---|
committer | Dominik Brodowski <linux@dominikbrodowski.net> | 2006-03-31 10:15:57 -0500 |
commit | fd238232cd0ff4840ae6946bb338502154096d88 (patch) | |
tree | d20e8f5871f7cff9d0867a84f6ba088fbffcbe28 /drivers/char/pcmcia/cm4000_cs.c | |
parent | a78f4dd331a4f6a396eb5849656a4a72a70a56d7 (diff) |
[PATCH] pcmcia: embed dev_link_t into struct pcmcia_device
Embed dev_link_t into struct pcmcia_device(), as they basically address the
same entity. The actual contents of dev_link_t will be cleaned up step by step.
This patch includes a bugfix from and signed-off-by Andrew Morton.
Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
Diffstat (limited to 'drivers/char/pcmcia/cm4000_cs.c')
-rw-r--r-- | drivers/char/pcmcia/cm4000_cs.c | 29 |
1 files changed, 13 insertions, 16 deletions
diff --git a/drivers/char/pcmcia/cm4000_cs.c b/drivers/char/pcmcia/cm4000_cs.c index c996ae1375be..3e6d6e0bb6ee 100644 --- a/drivers/char/pcmcia/cm4000_cs.c +++ b/drivers/char/pcmcia/cm4000_cs.c | |||
@@ -46,7 +46,7 @@ | |||
46 | /* #define ATR_CSUM */ | 46 | /* #define ATR_CSUM */ |
47 | 47 | ||
48 | #ifdef PCMCIA_DEBUG | 48 | #ifdef PCMCIA_DEBUG |
49 | #define reader_to_dev(x) (&handle_to_dev(x->link.handle)) | 49 | #define reader_to_dev(x) (&handle_to_dev(x->p_dev->handle)) |
50 | static int pc_debug = PCMCIA_DEBUG; | 50 | static int pc_debug = PCMCIA_DEBUG; |
51 | module_param(pc_debug, int, 0600); | 51 | module_param(pc_debug, int, 0600); |
52 | #define DEBUGP(n, rdr, x, args...) do { \ | 52 | #define DEBUGP(n, rdr, x, args...) do { \ |
@@ -106,7 +106,7 @@ static int major; /* major number we get from the kernel */ | |||
106 | #define REG_STOPBITS(x) (x + 7) | 106 | #define REG_STOPBITS(x) (x + 7) |
107 | 107 | ||
108 | struct cm4000_dev { | 108 | struct cm4000_dev { |
109 | dev_link_t link; /* pcmcia link */ | 109 | struct pcmcia_device *p_dev; |
110 | dev_node_t node; /* OS node (major,minor) */ | 110 | dev_node_t node; /* OS node (major,minor) */ |
111 | 111 | ||
112 | unsigned char atr[MAX_ATR]; | 112 | unsigned char atr[MAX_ATR]; |
@@ -454,7 +454,7 @@ static struct card_fixup card_fixups[] = { | |||
454 | static void set_cardparameter(struct cm4000_dev *dev) | 454 | static void set_cardparameter(struct cm4000_dev *dev) |
455 | { | 455 | { |
456 | int i; | 456 | int i; |
457 | ioaddr_t iobase = dev->link.io.BasePort1; | 457 | ioaddr_t iobase = dev->p_dev->io.BasePort1; |
458 | u_int8_t stopbits = 0x02; /* ISO default */ | 458 | u_int8_t stopbits = 0x02; /* ISO default */ |
459 | 459 | ||
460 | DEBUGP(3, dev, "-> set_cardparameter\n"); | 460 | DEBUGP(3, dev, "-> set_cardparameter\n"); |
@@ -487,7 +487,7 @@ static int set_protocol(struct cm4000_dev *dev, struct ptsreq *ptsreq) | |||
487 | unsigned short num_bytes_read; | 487 | unsigned short num_bytes_read; |
488 | unsigned char pts_reply[4]; | 488 | unsigned char pts_reply[4]; |
489 | ssize_t rc; | 489 | ssize_t rc; |
490 | ioaddr_t iobase = dev->link.io.BasePort1; | 490 | ioaddr_t iobase = dev->p_dev->io.BasePort1; |
491 | 491 | ||
492 | rc = 0; | 492 | rc = 0; |
493 | 493 | ||
@@ -699,7 +699,7 @@ static void terminate_monitor(struct cm4000_dev *dev) | |||
699 | static void monitor_card(unsigned long p) | 699 | static void monitor_card(unsigned long p) |
700 | { | 700 | { |
701 | struct cm4000_dev *dev = (struct cm4000_dev *) p; | 701 | struct cm4000_dev *dev = (struct cm4000_dev *) p; |
702 | ioaddr_t iobase = dev->link.io.BasePort1; | 702 | ioaddr_t iobase = dev->p_dev->io.BasePort1; |
703 | unsigned short s; | 703 | unsigned short s; |
704 | struct ptsreq ptsreq; | 704 | struct ptsreq ptsreq; |
705 | int i, atrc; | 705 | int i, atrc; |
@@ -962,7 +962,7 @@ static ssize_t cmm_read(struct file *filp, __user char *buf, size_t count, | |||
962 | loff_t *ppos) | 962 | loff_t *ppos) |
963 | { | 963 | { |
964 | struct cm4000_dev *dev = filp->private_data; | 964 | struct cm4000_dev *dev = filp->private_data; |
965 | ioaddr_t iobase = dev->link.io.BasePort1; | 965 | ioaddr_t iobase = dev->p_dev->io.BasePort1; |
966 | ssize_t rc; | 966 | ssize_t rc; |
967 | int i, j, k; | 967 | int i, j, k; |
968 | 968 | ||
@@ -971,7 +971,7 @@ static ssize_t cmm_read(struct file *filp, __user char *buf, size_t count, | |||
971 | if (count == 0) /* according to manpage */ | 971 | if (count == 0) /* according to manpage */ |
972 | return 0; | 972 | return 0; |
973 | 973 | ||
974 | if ((dev->link.state & DEV_PRESENT) == 0 || /* socket removed */ | 974 | if ((dev->p_dev->state & DEV_PRESENT) == 0 || /* socket removed */ |
975 | test_bit(IS_CMM_ABSENT, &dev->flags)) | 975 | test_bit(IS_CMM_ABSENT, &dev->flags)) |
976 | return -ENODEV; | 976 | return -ENODEV; |
977 | 977 | ||
@@ -1083,7 +1083,7 @@ static ssize_t cmm_write(struct file *filp, const char __user *buf, | |||
1083 | size_t count, loff_t *ppos) | 1083 | size_t count, loff_t *ppos) |
1084 | { | 1084 | { |
1085 | struct cm4000_dev *dev = (struct cm4000_dev *) filp->private_data; | 1085 | struct cm4000_dev *dev = (struct cm4000_dev *) filp->private_data; |
1086 | ioaddr_t iobase = dev->link.io.BasePort1; | 1086 | ioaddr_t iobase = dev->p_dev->io.BasePort1; |
1087 | unsigned short s; | 1087 | unsigned short s; |
1088 | unsigned char tmp; | 1088 | unsigned char tmp; |
1089 | unsigned char infolen; | 1089 | unsigned char infolen; |
@@ -1108,7 +1108,7 @@ static ssize_t cmm_write(struct file *filp, const char __user *buf, | |||
1108 | 1108 | ||
1109 | sendT0 = dev->proto ? 0 : nr > 5 ? 0x08 : 0; | 1109 | sendT0 = dev->proto ? 0 : nr > 5 ? 0x08 : 0; |
1110 | 1110 | ||
1111 | if ((dev->link.state & DEV_PRESENT) == 0 || /* socket removed */ | 1111 | if ((dev->p_dev->state & DEV_PRESENT) == 0 || /* socket removed */ |
1112 | test_bit(IS_CMM_ABSENT, &dev->flags)) | 1112 | test_bit(IS_CMM_ABSENT, &dev->flags)) |
1113 | return -ENODEV; | 1113 | return -ENODEV; |
1114 | 1114 | ||
@@ -1440,7 +1440,7 @@ static int cmm_ioctl(struct inode *inode, struct file *filp, unsigned int cmd, | |||
1440 | unsigned long arg) | 1440 | unsigned long arg) |
1441 | { | 1441 | { |
1442 | struct cm4000_dev *dev = filp->private_data; | 1442 | struct cm4000_dev *dev = filp->private_data; |
1443 | ioaddr_t iobase = dev->link.io.BasePort1; | 1443 | ioaddr_t iobase = dev->p_dev->io.BasePort1; |
1444 | dev_link_t *link; | 1444 | dev_link_t *link; |
1445 | int size; | 1445 | int size; |
1446 | int rc; | 1446 | int rc; |
@@ -1844,7 +1844,7 @@ static void cm4000_config(dev_link_t * link, int devno) | |||
1844 | dev->node.major = major; | 1844 | dev->node.major = major; |
1845 | dev->node.minor = devno; | 1845 | dev->node.minor = devno; |
1846 | dev->node.next = NULL; | 1846 | dev->node.next = NULL; |
1847 | link->dev = &dev->node; | 1847 | link->dev_node = &dev->node; |
1848 | link->state &= ~DEV_CONFIG_PENDING; | 1848 | link->state &= ~DEV_CONFIG_PENDING; |
1849 | 1849 | ||
1850 | return; | 1850 | return; |
@@ -1889,8 +1889,8 @@ static void cm4000_release(dev_link_t *link) | |||
1889 | static int cm4000_attach(struct pcmcia_device *p_dev) | 1889 | static int cm4000_attach(struct pcmcia_device *p_dev) |
1890 | { | 1890 | { |
1891 | struct cm4000_dev *dev; | 1891 | struct cm4000_dev *dev; |
1892 | dev_link_t *link; | ||
1893 | int i; | 1892 | int i; |
1893 | dev_link_t *link = dev_to_instance(p_dev); | ||
1894 | 1894 | ||
1895 | for (i = 0; i < CM4000_MAX_DEV; i++) | 1895 | for (i = 0; i < CM4000_MAX_DEV; i++) |
1896 | if (dev_table[i] == NULL) | 1896 | if (dev_table[i] == NULL) |
@@ -1906,7 +1906,7 @@ static int cm4000_attach(struct pcmcia_device *p_dev) | |||
1906 | if (dev == NULL) | 1906 | if (dev == NULL) |
1907 | return -ENOMEM; | 1907 | return -ENOMEM; |
1908 | 1908 | ||
1909 | link = &dev->link; | 1909 | dev->p_dev = p_dev; |
1910 | link->priv = dev; | 1910 | link->priv = dev; |
1911 | link->conf.IntType = INT_MEMORY_AND_IO; | 1911 | link->conf.IntType = INT_MEMORY_AND_IO; |
1912 | dev_table[i] = link; | 1912 | dev_table[i] = link; |
@@ -1916,9 +1916,6 @@ static int cm4000_attach(struct pcmcia_device *p_dev) | |||
1916 | init_waitqueue_head(&dev->atrq); | 1916 | init_waitqueue_head(&dev->atrq); |
1917 | init_waitqueue_head(&dev->readq); | 1917 | init_waitqueue_head(&dev->readq); |
1918 | 1918 | ||
1919 | link->handle = p_dev; | ||
1920 | p_dev->instance = link; | ||
1921 | |||
1922 | link->state |= DEV_PRESENT | DEV_CONFIG_PENDING; | 1919 | link->state |= DEV_PRESENT | DEV_CONFIG_PENDING; |
1923 | cm4000_config(link, i); | 1920 | cm4000_config(link, i); |
1924 | 1921 | ||