Date: Thu, 23 Nov 2006 13:59:48 -0500 From: Ben Collins Subject: ieee1394: Consolidate driver registering This patch consolidates some bookkeeping for driver registering. It closely models what pci_register_driver() does. The main addition is that the owner of the driver is set, so we get a proper symlink for /sys/bus/ieee1394/driver/*/module. Also moves setting of name and bus type into nodemgr. Because of this, we can remove the EXPORT_SYMBOL for ieee1394_bus_type, since it's now only used in ieee1394.ko. Signed-off-by: Stefan Richter --- drivers/ieee1394/dv1394.c | 6 +----- drivers/ieee1394/eth1394.c | 4 +--- drivers/ieee1394/ieee1394_core.c | 3 +-- drivers/ieee1394/nodemgr.c | 13 ++++++++++--- drivers/ieee1394/nodemgr.h | 7 ++++++- drivers/ieee1394/raw1394.c | 6 +----- drivers/ieee1394/sbp2.c | 4 +--- drivers/ieee1394/video1394.c | 6 +----- 8 files changed, 22 insertions(+), 27 deletions(-) Index: linux/drivers/ieee1394/dv1394.c =================================================================== --- linux.orig/drivers/ieee1394/dv1394.c 2006-11-23 21:16:12.000000000 +0100 +++ linux/drivers/ieee1394/dv1394.c 2006-11-23 21:18:36.000000000 +0100 @@ -2180,12 +2180,8 @@ static struct ieee1394_device_id dv1394_ MODULE_DEVICE_TABLE(ieee1394, dv1394_id_table); static struct hpsb_protocol_driver dv1394_driver = { - .name = "DV/1394 Driver", + .name = "dv1394", .id_table = dv1394_id_table, - .driver = { - .name = "dv1394", - .bus = &ieee1394_bus_type, - }, }; Index: linux/drivers/ieee1394/eth1394.c =================================================================== --- linux.orig/drivers/ieee1394/eth1394.c 2006-11-23 21:16:12.000000000 +0100 +++ linux/drivers/ieee1394/eth1394.c 2006-11-23 21:18:36.000000000 +0100 @@ -474,12 +474,10 @@ static struct ieee1394_device_id eth1394 MODULE_DEVICE_TABLE(ieee1394, eth1394_id_table); static struct hpsb_protocol_driver eth1394_proto_driver = { - .name = "IPv4 over 1394 Driver", + .name = ETH1394_DRIVER_NAME, .id_table = eth1394_id_table, .update = eth1394_update, .driver = { - .name = ETH1394_DRIVER_NAME, - .bus = &ieee1394_bus_type, .probe = eth1394_probe, .remove = eth1394_remove, }, Index: linux/drivers/ieee1394/ieee1394_core.c =================================================================== --- linux.orig/drivers/ieee1394/ieee1394_core.c 2006-11-11 18:39:22.000000000 +0100 +++ linux/drivers/ieee1394/ieee1394_core.c 2006-11-23 21:18:36.000000000 +0100 @@ -1237,9 +1237,8 @@ EXPORT_SYMBOL(highlevel_remove_host); /** nodemgr.c **/ EXPORT_SYMBOL(hpsb_node_fill_packet); EXPORT_SYMBOL(hpsb_node_write); -EXPORT_SYMBOL(hpsb_register_protocol); +EXPORT_SYMBOL(__hpsb_register_protocol); EXPORT_SYMBOL(hpsb_unregister_protocol); -EXPORT_SYMBOL(ieee1394_bus_type); #ifdef CONFIG_IEEE1394_EXPORT_FULL_API EXPORT_SYMBOL(nodemgr_for_each_host); #endif Index: linux/drivers/ieee1394/nodemgr.c =================================================================== --- linux.orig/drivers/ieee1394/nodemgr.c 2006-11-23 21:16:31.000000000 +0100 +++ linux/drivers/ieee1394/nodemgr.c 2006-11-23 21:22:02.000000000 +0100 @@ -1281,12 +1281,19 @@ static int nodemgr_uevent(struct class_d #endif /* CONFIG_HOTPLUG */ -int hpsb_register_protocol(struct hpsb_protocol_driver *driver) +int __hpsb_register_protocol(struct hpsb_protocol_driver *drv, + struct module *owner) { + int error; + + drv->driver.bus = &ieee1394_bus_type; + drv->driver.owner = owner; + drv->driver.name = drv->name; + /* This will cause a probe for devices */ - int error = driver_register(&driver->driver); + error = driver_register(&drv->driver); if (!error) - nodemgr_create_drv_files(driver); + nodemgr_create_drv_files(drv); return error; } Index: linux/drivers/ieee1394/nodemgr.h =================================================================== --- linux.orig/drivers/ieee1394/nodemgr.h 2006-10-10 18:18:40.000000000 +0200 +++ linux/drivers/ieee1394/nodemgr.h 2006-11-23 21:18:36.000000000 +0100 @@ -144,7 +144,12 @@ struct hpsb_protocol_driver { struct device_driver driver; }; -int hpsb_register_protocol(struct hpsb_protocol_driver *driver); +int __hpsb_register_protocol(struct hpsb_protocol_driver *, struct module *); +static inline int hpsb_register_protocol(struct hpsb_protocol_driver *driver) +{ + return __hpsb_register_protocol(driver, THIS_MODULE); +} + void hpsb_unregister_protocol(struct hpsb_protocol_driver *driver); static inline int hpsb_node_entry_valid(struct node_entry *ne) Index: linux/drivers/ieee1394/raw1394.c =================================================================== --- linux.orig/drivers/ieee1394/raw1394.c 2006-11-23 21:16:12.000000000 +0100 +++ linux/drivers/ieee1394/raw1394.c 2006-11-23 21:18:36.000000000 +0100 @@ -2987,12 +2987,8 @@ static struct ieee1394_device_id raw1394 MODULE_DEVICE_TABLE(ieee1394, raw1394_id_table); static struct hpsb_protocol_driver raw1394_driver = { - .name = "raw1394 Driver", + .name = "raw1394", .id_table = raw1394_id_table, - .driver = { - .name = "raw1394", - .bus = &ieee1394_bus_type, - }, }; /******************************************************************************/ Index: linux/drivers/ieee1394/sbp2.c =================================================================== --- linux.orig/drivers/ieee1394/sbp2.c 2006-11-23 21:16:32.000000000 +0100 +++ linux/drivers/ieee1394/sbp2.c 2006-11-23 21:18:36.000000000 +0100 @@ -259,12 +259,10 @@ static int sbp2_remove(struct device *); static int sbp2_update(struct unit_directory *); static struct hpsb_protocol_driver sbp2_driver = { - .name = "SBP2 Driver", + .name = SBP2_DEVICE_NAME, .id_table = sbp2_id_table, .update = sbp2_update, .driver = { - .name = SBP2_DEVICE_NAME, - .bus = &ieee1394_bus_type, .probe = sbp2_probe, .remove = sbp2_remove, }, Index: linux/drivers/ieee1394/video1394.c =================================================================== --- linux.orig/drivers/ieee1394/video1394.c 2006-11-23 21:16:12.000000000 +0100 +++ linux/drivers/ieee1394/video1394.c 2006-11-23 21:18:36.000000000 +0100 @@ -1308,12 +1308,8 @@ static struct ieee1394_device_id video13 MODULE_DEVICE_TABLE(ieee1394, video1394_id_table); static struct hpsb_protocol_driver video1394_driver = { - .name = "1394 Digital Camera Driver", + .name = VIDEO1394_DRIVER_NAME, .id_table = video1394_id_table, - .driver = { - .name = VIDEO1394_DRIVER_NAME, - .bus = &ieee1394_bus_type, - }, };