@@ -278,46 +278,32 @@ static int port_detect(struct device *dev, void *dev_drv)
278
278
int __parport_register_driver (struct parport_driver * drv , struct module * owner ,
279
279
const char * mod_name )
280
280
{
281
- if (drv -> devmodel ) {
282
- /* using device model */
283
- int ret ;
284
-
285
- /* initialize common driver fields */
286
- drv -> driver .name = drv -> name ;
287
- drv -> driver .bus = & parport_bus_type ;
288
- drv -> driver .owner = owner ;
289
- drv -> driver .mod_name = mod_name ;
290
- ret = driver_register (& drv -> driver );
291
- if (ret )
292
- return ret ;
281
+ /* using device model */
282
+ int ret ;
293
283
294
- /*
295
- * check if bus has any parallel port registered, if
296
- * none is found then load the lowlevel driver.
297
- */
298
- ret = bus_for_each_dev (& parport_bus_type , NULL , NULL ,
299
- port_detect );
300
- if (!ret )
301
- get_lowlevel_driver ();
302
-
303
- mutex_lock (& registration_lock );
304
- if (drv -> match_port )
305
- bus_for_each_dev (& parport_bus_type , NULL , drv ,
306
- port_check );
307
- mutex_unlock (& registration_lock );
308
- } else {
309
- struct parport * port ;
310
-
311
- drv -> devmodel = false;
312
-
313
- if (list_empty (& portlist ))
314
- get_lowlevel_driver ();
315
- mutex_lock (& registration_lock );
316
- list_for_each_entry (port , & portlist , list )
317
- drv -> attach (port );
318
- list_add (& drv -> list , & drivers );
319
- mutex_unlock (& registration_lock );
320
- }
284
+ /* initialize common driver fields */
285
+ drv -> driver .name = drv -> name ;
286
+ drv -> driver .bus = & parport_bus_type ;
287
+ drv -> driver .owner = owner ;
288
+ drv -> driver .mod_name = mod_name ;
289
+ ret = driver_register (& drv -> driver );
290
+ if (ret )
291
+ return ret ;
292
+
293
+ /*
294
+ * check if bus has any parallel port registered, if
295
+ * none is found then load the lowlevel driver.
296
+ */
297
+ ret = bus_for_each_dev (& parport_bus_type , NULL , NULL ,
298
+ port_detect );
299
+ if (!ret )
300
+ get_lowlevel_driver ();
301
+
302
+ mutex_lock (& registration_lock );
303
+ if (drv -> match_port )
304
+ bus_for_each_dev (& parport_bus_type , NULL , drv ,
305
+ port_check );
306
+ mutex_unlock (& registration_lock );
321
307
322
308
return 0 ;
323
309
}
@@ -352,17 +338,9 @@ static int port_detach(struct device *dev, void *_drv)
352
338
353
339
void parport_unregister_driver (struct parport_driver * drv )
354
340
{
355
- struct parport * port ;
356
-
357
341
mutex_lock (& registration_lock );
358
- if (drv -> devmodel ) {
359
- bus_for_each_dev (& parport_bus_type , NULL , drv , port_detach );
360
- driver_unregister (& drv -> driver );
361
- } else {
362
- list_del_init (& drv -> list );
363
- list_for_each_entry (port , & portlist , list )
364
- drv -> detach (port );
365
- }
342
+ bus_for_each_dev (& parport_bus_type , NULL , drv , port_detach );
343
+ driver_unregister (& drv -> driver );
366
344
mutex_unlock (& registration_lock );
367
345
}
368
346
EXPORT_SYMBOL (parport_unregister_driver );
@@ -915,10 +893,7 @@ void parport_unregister_device(struct pardevice *dev)
915
893
spin_unlock_irq (& port -> waitlist_lock );
916
894
917
895
kfree (dev -> state );
918
- if (dev -> devmodel )
919
- device_unregister (& dev -> dev );
920
- else
921
- kfree (dev );
896
+ device_unregister (& dev -> dev );
922
897
923
898
module_put (port -> ops -> owner );
924
899
parport_put_port (port );
0 commit comments