2
2
* card.c - contains functions for managing groups of PnP devices
3
3
*
4
4
* Copyright 2002 Adam Belay <[email protected] >
5
- *
6
5
*/
7
6
8
7
#include <linux/module.h>
@@ -17,12 +16,15 @@ static const struct pnp_card_device_id *match_card(struct pnp_card_driver *drv,
17
16
struct pnp_card * card )
18
17
{
19
18
const struct pnp_card_device_id * drv_id = drv -> id_table ;
19
+
20
20
while (* drv_id -> id ) {
21
21
if (compare_pnp_id (card -> id , drv_id -> id )) {
22
22
int i = 0 ;
23
+
23
24
for (;;) {
24
25
int found ;
25
26
struct pnp_dev * dev ;
27
+
26
28
if (i == PNP_MAX_DEVICES
27
29
|| !* drv_id -> devs [i ].id )
28
30
return drv_id ;
@@ -52,6 +54,7 @@ static void card_remove(struct pnp_dev *dev)
52
54
static void card_remove_first (struct pnp_dev * dev )
53
55
{
54
56
struct pnp_card_driver * drv = to_pnp_card_driver (dev -> driver );
57
+
55
58
if (!dev -> card || !drv )
56
59
return ;
57
60
if (drv -> remove )
@@ -96,12 +99,11 @@ static int card_probe(struct pnp_card *card, struct pnp_card_driver *drv)
96
99
* pnp_add_card_id - adds an EISA id to the specified card
97
100
* @id: pointer to a pnp_id structure
98
101
* @card: pointer to the desired card
99
- *
100
102
*/
101
-
102
103
int pnp_add_card_id (struct pnp_id * id , struct pnp_card * card )
103
104
{
104
105
struct pnp_id * ptr ;
106
+
105
107
if (!id )
106
108
return - EINVAL ;
107
109
if (!card )
@@ -121,6 +123,7 @@ static void pnp_free_card_ids(struct pnp_card *card)
121
123
{
122
124
struct pnp_id * id ;
123
125
struct pnp_id * next ;
126
+
124
127
if (!card )
125
128
return ;
126
129
id = card -> id ;
@@ -134,6 +137,7 @@ static void pnp_free_card_ids(struct pnp_card *card)
134
137
static void pnp_release_card (struct device * dmdev )
135
138
{
136
139
struct pnp_card * card = to_pnp_card (dmdev );
140
+
137
141
pnp_free_card_ids (card );
138
142
kfree (card );
139
143
}
@@ -143,6 +147,7 @@ static ssize_t pnp_show_card_name(struct device *dmdev,
143
147
{
144
148
char * str = buf ;
145
149
struct pnp_card * card = to_pnp_card (dmdev );
150
+
146
151
str += sprintf (str , "%s\n" , card -> name );
147
152
return (str - buf );
148
153
}
@@ -168,6 +173,7 @@ static DEVICE_ATTR(card_id, S_IRUGO, pnp_show_card_ids, NULL);
168
173
static int pnp_interface_attach_card (struct pnp_card * card )
169
174
{
170
175
int rc = device_create_file (& card -> dev , & dev_attr_name );
176
+
171
177
if (rc )
172
178
return rc ;
173
179
@@ -186,11 +192,11 @@ static int pnp_interface_attach_card(struct pnp_card *card)
186
192
* pnp_add_card - adds a PnP card to the PnP Layer
187
193
* @card: pointer to the card to add
188
194
*/
189
-
190
195
int pnp_add_card (struct pnp_card * card )
191
196
{
192
197
int error ;
193
198
struct list_head * pos , * temp ;
199
+
194
200
if (!card || !card -> protocol )
195
201
return - EINVAL ;
196
202
@@ -233,10 +239,10 @@ int pnp_add_card(struct pnp_card *card)
233
239
* pnp_remove_card - removes a PnP card from the PnP Layer
234
240
* @card: pointer to the card to remove
235
241
*/
236
-
237
242
void pnp_remove_card (struct pnp_card * card )
238
243
{
239
244
struct list_head * pos , * temp ;
245
+
240
246
if (!card )
241
247
return ;
242
248
device_unregister (& card -> dev );
@@ -255,7 +261,6 @@ void pnp_remove_card(struct pnp_card *card)
255
261
* @card: pointer to the card to add to
256
262
* @dev: pointer to the device to add
257
263
*/
258
-
259
264
int pnp_add_card_device (struct pnp_card * card , struct pnp_dev * dev )
260
265
{
261
266
if (!card || !dev || !dev -> protocol )
@@ -275,7 +280,6 @@ int pnp_add_card_device(struct pnp_card *card, struct pnp_dev *dev)
275
280
* pnp_remove_card_device- removes a device from the specified card
276
281
* @dev: pointer to the device to remove
277
282
*/
278
-
279
283
void pnp_remove_card_device (struct pnp_dev * dev )
280
284
{
281
285
spin_lock (& pnp_lock );
@@ -291,14 +295,14 @@ void pnp_remove_card_device(struct pnp_dev *dev)
291
295
* @id: pointer to a PnP ID structure that explains the rules for finding the device
292
296
* @from: Starting place to search from. If NULL it will start from the begining.
293
297
*/
294
-
295
298
struct pnp_dev * pnp_request_card_device (struct pnp_card_link * clink ,
296
299
const char * id , struct pnp_dev * from )
297
300
{
298
301
struct list_head * pos ;
299
302
struct pnp_dev * dev ;
300
303
struct pnp_card_driver * drv ;
301
304
struct pnp_card * card ;
305
+
302
306
if (!clink || !id )
303
307
goto done ;
304
308
card = clink -> card ;
@@ -340,10 +344,10 @@ struct pnp_dev *pnp_request_card_device(struct pnp_card_link *clink,
340
344
* pnp_release_card_device - call this when the driver no longer needs the device
341
345
* @dev: pointer to the PnP device stucture
342
346
*/
343
-
344
347
void pnp_release_card_device (struct pnp_dev * dev )
345
348
{
346
349
struct pnp_card_driver * drv = dev -> card_link -> driver ;
350
+
347
351
if (!drv )
348
352
return ;
349
353
drv -> link .remove = & card_remove ;
@@ -357,6 +361,7 @@ void pnp_release_card_device(struct pnp_dev *dev)
357
361
static int card_suspend (struct pnp_dev * dev , pm_message_t state )
358
362
{
359
363
struct pnp_card_link * link = dev -> card_link ;
364
+
360
365
if (link -> pm_state .event == state .event )
361
366
return 0 ;
362
367
link -> pm_state = state ;
@@ -366,6 +371,7 @@ static int card_suspend(struct pnp_dev *dev, pm_message_t state)
366
371
static int card_resume (struct pnp_dev * dev )
367
372
{
368
373
struct pnp_card_link * link = dev -> card_link ;
374
+
369
375
if (link -> pm_state .event == PM_EVENT_ON )
370
376
return 0 ;
371
377
link -> pm_state = PMSG_ON ;
@@ -377,7 +383,6 @@ static int card_resume(struct pnp_dev *dev)
377
383
* pnp_register_card_driver - registers a PnP card driver with the PnP Layer
378
384
* @drv: pointer to the driver to register
379
385
*/
380
-
381
386
int pnp_register_card_driver (struct pnp_card_driver * drv )
382
387
{
383
388
int error ;
@@ -411,7 +416,6 @@ int pnp_register_card_driver(struct pnp_card_driver *drv)
411
416
* pnp_unregister_card_driver - unregisters a PnP card driver from the PnP Layer
412
417
* @drv: pointer to the driver to unregister
413
418
*/
414
-
415
419
void pnp_unregister_card_driver (struct pnp_card_driver * drv )
416
420
{
417
421
spin_lock (& pnp_lock );
@@ -420,13 +424,6 @@ void pnp_unregister_card_driver(struct pnp_card_driver *drv)
420
424
pnp_unregister_driver (& drv -> link );
421
425
}
422
426
423
- #if 0
424
- EXPORT_SYMBOL (pnp_add_card );
425
- EXPORT_SYMBOL (pnp_remove_card );
426
- EXPORT_SYMBOL (pnp_add_card_device );
427
- EXPORT_SYMBOL (pnp_remove_card_device );
428
- EXPORT_SYMBOL (pnp_add_card_id );
429
- #endif /* 0 */
430
427
EXPORT_SYMBOL (pnp_request_card_device );
431
428
EXPORT_SYMBOL (pnp_release_card_device );
432
429
EXPORT_SYMBOL (pnp_register_card_driver );
0 commit comments