aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/isdn/hisax/teles_cs.c
diff options
context:
space:
mode:
authorDominik Brodowski <linux@dominikbrodowski.net>2006-03-05 04:45:09 -0500
committerDominik Brodowski <linux@dominikbrodowski.net>2006-03-31 10:15:57 -0500
commitfd238232cd0ff4840ae6946bb338502154096d88 (patch)
treed20e8f5871f7cff9d0867a84f6ba088fbffcbe28 /drivers/isdn/hisax/teles_cs.c
parenta78f4dd331a4f6a396eb5849656a4a72a70a56d7 (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/isdn/hisax/teles_cs.c')
-rw-r--r--drivers/isdn/hisax/teles_cs.c13
1 files changed, 6 insertions, 7 deletions
diff --git a/drivers/isdn/hisax/teles_cs.c b/drivers/isdn/hisax/teles_cs.c
index 040f098d4b26..ea16ebfc028a 100644
--- a/drivers/isdn/hisax/teles_cs.c
+++ b/drivers/isdn/hisax/teles_cs.c
@@ -112,7 +112,7 @@ static void teles_detach(struct pcmcia_device *p_dev);
112*/ 112*/
113 113
114typedef struct local_info_t { 114typedef struct local_info_t {
115 dev_link_t link; 115 struct pcmcia_device *p_dev;
116 dev_node_t node; 116 dev_node_t node;
117 int busy; 117 int busy;
118 int cardnr; 118 int cardnr;
@@ -132,8 +132,8 @@ typedef struct local_info_t {
132 132
133static int teles_attach(struct pcmcia_device *p_dev) 133static int teles_attach(struct pcmcia_device *p_dev)
134{ 134{
135 dev_link_t *link;
136 local_info_t *local; 135 local_info_t *local;
136 dev_link_t *link = dev_to_instance(p_dev);
137 137
138 DEBUG(0, "teles_attach()\n"); 138 DEBUG(0, "teles_attach()\n");
139 139
@@ -142,7 +142,9 @@ static int teles_attach(struct pcmcia_device *p_dev)
142 if (!local) return -ENOMEM; 142 if (!local) return -ENOMEM;
143 memset(local, 0, sizeof(local_info_t)); 143 memset(local, 0, sizeof(local_info_t));
144 local->cardnr = -1; 144 local->cardnr = -1;
145 link = &local->link; link->priv = local; 145
146 local->p_dev = p_dev;
147 link->priv = local;
146 148
147 /* Interrupt setup */ 149 /* Interrupt setup */
148 link->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING|IRQ_FIRST_SHARED; 150 link->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING|IRQ_FIRST_SHARED;
@@ -163,9 +165,6 @@ static int teles_attach(struct pcmcia_device *p_dev)
163 link->conf.Attributes = CONF_ENABLE_IRQ; 165 link->conf.Attributes = CONF_ENABLE_IRQ;
164 link->conf.IntType = INT_MEMORY_AND_IO; 166 link->conf.IntType = INT_MEMORY_AND_IO;
165 167
166 link->handle = p_dev;
167 p_dev->instance = link;
168
169 link->state |= DEV_PRESENT | DEV_CONFIG_PENDING; 168 link->state |= DEV_PRESENT | DEV_CONFIG_PENDING;
170 teles_cs_config(link); 169 teles_cs_config(link);
171 170
@@ -311,7 +310,7 @@ static void teles_cs_config(dev_link_t *link)
311 sprintf(dev->node.dev_name, "teles"); 310 sprintf(dev->node.dev_name, "teles");
312 dev->node.major = dev->node.minor = 0x0; 311 dev->node.major = dev->node.minor = 0x0;
313 312
314 link->dev = &dev->node; 313 link->dev_node = &dev->node;
315 314
316 /* Finally, report what we've done */ 315 /* Finally, report what we've done */
317 printk(KERN_INFO "%s: index 0x%02x:", 316 printk(KERN_INFO "%s: index 0x%02x:",