@@ -278,46 +278,32 @@ static int port_detect(struct device *dev, void *dev_drv)
278278int __parport_register_driver (struct parport_driver * drv , struct module * owner ,
279279 const char * mod_name )
280280{
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 ;
293283
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 );
321307
322308 return 0 ;
323309}
@@ -352,17 +338,9 @@ static int port_detach(struct device *dev, void *_drv)
352338
353339void parport_unregister_driver (struct parport_driver * drv )
354340{
355- struct parport * port ;
356-
357341 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 );
366344 mutex_unlock (& registration_lock );
367345}
368346EXPORT_SYMBOL (parport_unregister_driver );
@@ -915,10 +893,7 @@ void parport_unregister_device(struct pardevice *dev)
915893 spin_unlock_irq (& port -> waitlist_lock );
916894
917895 kfree (dev -> state );
918- if (dev -> devmodel )
919- device_unregister (& dev -> dev );
920- else
921- kfree (dev );
896+ device_unregister (& dev -> dev );
922897
923898 module_put (port -> ops -> owner );
924899 parport_put_port (port );
0 commit comments