diff options
author | Dominik Brodowski <linux@dominikbrodowski.net> | 2010-03-20 14:43:26 -0400 |
---|---|---|
committer | Dominik Brodowski <linux@dominikbrodowski.net> | 2010-05-10 04:23:16 -0400 |
commit | b498ada6d0cf0f9828b0c590f9fa2e84f60f5709 (patch) | |
tree | d066ef21b59ff0c7143a9aad2e7bf6f849a496dc /drivers/isdn | |
parent | c7c2fa079073ab92b0736a161b4cf1051a3e631f (diff) |
pcmcia: dev_node removal (remaining drivers)
As a fourth step, remove any remaining usages of
dev_node_t from drivers:
- ipwireless can be simplified a bit, as we do not need
to pass around the (write-only) dev_node_t around.
- avma1_cs can be simplified as well, if we only keep the
minor number around as "priv" data, not a full-fledged
struct.
Acked-by: Jiri Kosina <jkosina@suse.cz>
Acked-by: Karsten Keil <isdn@linux-pingi.de>
Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
Diffstat (limited to 'drivers/isdn')
-rw-r--r-- | drivers/isdn/hisax/avma1_cs.c | 51 |
1 files changed, 3 insertions, 48 deletions
diff --git a/drivers/isdn/hisax/avma1_cs.c b/drivers/isdn/hisax/avma1_cs.c index 3ae2176c6f75..a80a7617f16f 100644 --- a/drivers/isdn/hisax/avma1_cs.c +++ b/drivers/isdn/hisax/avma1_cs.c | |||
@@ -62,31 +62,6 @@ static void avma1cs_release(struct pcmcia_device *link); | |||
62 | static void avma1cs_detach(struct pcmcia_device *p_dev) __devexit ; | 62 | static void avma1cs_detach(struct pcmcia_device *p_dev) __devexit ; |
63 | 63 | ||
64 | 64 | ||
65 | /* | ||
66 | A linked list of "instances" of the skeleton device. Each actual | ||
67 | PCMCIA card corresponds to one device instance, and is described | ||
68 | by one struct pcmcia_device structure (defined in ds.h). | ||
69 | |||
70 | You may not want to use a linked list for this -- for example, the | ||
71 | memory card driver uses an array of struct pcmcia_device pointers, where minor | ||
72 | device numbers are used to derive the corresponding array index. | ||
73 | */ | ||
74 | |||
75 | /* | ||
76 | A driver needs to provide a dev_node_t structure for each device | ||
77 | on a card. In some cases, there is only one device per card (for | ||
78 | example, ethernet cards, modems). In other cases, there may be | ||
79 | many actual or logical devices (SCSI adapters, memory cards with | ||
80 | multiple partitions). The dev_node_t structures need to be kept | ||
81 | in a linked list starting at the 'dev' field of a struct pcmcia_device | ||
82 | structure. We allocate them in the card's private data structure, | ||
83 | because they generally can't be allocated dynamically. | ||
84 | */ | ||
85 | |||
86 | typedef struct local_info_t { | ||
87 | dev_node_t node; | ||
88 | } local_info_t; | ||
89 | |||
90 | /*====================================================================== | 65 | /*====================================================================== |
91 | 66 | ||
92 | avma1cs_attach() creates an "instance" of the driver, allocating | 67 | avma1cs_attach() creates an "instance" of the driver, allocating |
@@ -101,17 +76,8 @@ typedef struct local_info_t { | |||
101 | 76 | ||
102 | static int __devinit avma1cs_probe(struct pcmcia_device *p_dev) | 77 | static int __devinit avma1cs_probe(struct pcmcia_device *p_dev) |
103 | { | 78 | { |
104 | local_info_t *local; | ||
105 | |||
106 | dev_dbg(&p_dev->dev, "avma1cs_attach()\n"); | 79 | dev_dbg(&p_dev->dev, "avma1cs_attach()\n"); |
107 | 80 | ||
108 | /* Allocate space for private device-specific data */ | ||
109 | local = kzalloc(sizeof(local_info_t), GFP_KERNEL); | ||
110 | if (!local) | ||
111 | return -ENOMEM; | ||
112 | |||
113 | p_dev->priv = local; | ||
114 | |||
115 | /* The io structure describes IO port mapping */ | 81 | /* The io structure describes IO port mapping */ |
116 | p_dev->io.NumPorts1 = 16; | 82 | p_dev->io.NumPorts1 = 16; |
117 | p_dev->io.Attributes1 = IO_DATA_PATH_WIDTH_8; | 83 | p_dev->io.Attributes1 = IO_DATA_PATH_WIDTH_8; |
@@ -173,14 +139,11 @@ static int avma1cs_configcheck(struct pcmcia_device *p_dev, | |||
173 | 139 | ||
174 | static int __devinit avma1cs_config(struct pcmcia_device *link) | 140 | static int __devinit avma1cs_config(struct pcmcia_device *link) |
175 | { | 141 | { |
176 | local_info_t *dev; | ||
177 | int i = -1; | 142 | int i = -1; |
178 | char devname[128]; | 143 | char devname[128]; |
179 | IsdnCard_t icard; | 144 | IsdnCard_t icard; |
180 | int busy = 0; | 145 | int busy = 0; |
181 | 146 | ||
182 | dev = link->priv; | ||
183 | |||
184 | dev_dbg(&link->dev, "avma1cs_config(0x%p)\n", link); | 147 | dev_dbg(&link->dev, "avma1cs_config(0x%p)\n", link); |
185 | 148 | ||
186 | devname[0] = 0; | 149 | devname[0] = 0; |
@@ -211,14 +174,6 @@ static int __devinit avma1cs_config(struct pcmcia_device *link) | |||
211 | 174 | ||
212 | } while (0); | 175 | } while (0); |
213 | 176 | ||
214 | /* At this point, the dev_node_t structure(s) should be | ||
215 | initialized and arranged in a linked list at link->dev. */ | ||
216 | |||
217 | strcpy(dev->node.dev_name, "A1"); | ||
218 | dev->node.major = 45; | ||
219 | dev->node.minor = 0; | ||
220 | link->dev_node = &dev->node; | ||
221 | |||
222 | /* If any step failed, release any partially configured state */ | 177 | /* If any step failed, release any partially configured state */ |
223 | if (i != 0) { | 178 | if (i != 0) { |
224 | avma1cs_release(link); | 179 | avma1cs_release(link); |
@@ -239,7 +194,7 @@ static int __devinit avma1cs_config(struct pcmcia_device *link) | |||
239 | avma1cs_release(link); | 194 | avma1cs_release(link); |
240 | return -ENODEV; | 195 | return -ENODEV; |
241 | } | 196 | } |
242 | dev->node.minor = i; | 197 | link->priv = (void *) (unsigned long) i; |
243 | 198 | ||
244 | return 0; | 199 | return 0; |
245 | } /* avma1cs_config */ | 200 | } /* avma1cs_config */ |
@@ -254,12 +209,12 @@ static int __devinit avma1cs_config(struct pcmcia_device *link) | |||
254 | 209 | ||
255 | static void avma1cs_release(struct pcmcia_device *link) | 210 | static void avma1cs_release(struct pcmcia_device *link) |
256 | { | 211 | { |
257 | local_info_t *local = link->priv; | 212 | unsigned long minor = (unsigned long) link->priv; |
258 | 213 | ||
259 | dev_dbg(&link->dev, "avma1cs_release(0x%p)\n", link); | 214 | dev_dbg(&link->dev, "avma1cs_release(0x%p)\n", link); |
260 | 215 | ||
261 | /* now unregister function with hisax */ | 216 | /* now unregister function with hisax */ |
262 | HiSax_closecard(local->node.minor); | 217 | HiSax_closecard(minor); |
263 | 218 | ||
264 | pcmcia_disable_device(link); | 219 | pcmcia_disable_device(link); |
265 | } /* avma1cs_release */ | 220 | } /* avma1cs_release */ |