提交 ed30c26e 编写于 作者: B Ben Collins 提交者: Stefan Richter

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: NStefan Richter <stefanr@s5r6.in-berlin.de>
上级 9b7d9c09
...@@ -2180,12 +2180,8 @@ static struct ieee1394_device_id dv1394_id_table[] = { ...@@ -2180,12 +2180,8 @@ static struct ieee1394_device_id dv1394_id_table[] = {
MODULE_DEVICE_TABLE(ieee1394, dv1394_id_table); MODULE_DEVICE_TABLE(ieee1394, dv1394_id_table);
static struct hpsb_protocol_driver dv1394_driver = { static struct hpsb_protocol_driver dv1394_driver = {
.name = "DV/1394 Driver", .name = "dv1394",
.id_table = dv1394_id_table, .id_table = dv1394_id_table,
.driver = {
.name = "dv1394",
.bus = &ieee1394_bus_type,
},
}; };
......
...@@ -474,12 +474,10 @@ static struct ieee1394_device_id eth1394_id_table[] = { ...@@ -474,12 +474,10 @@ static struct ieee1394_device_id eth1394_id_table[] = {
MODULE_DEVICE_TABLE(ieee1394, eth1394_id_table); MODULE_DEVICE_TABLE(ieee1394, eth1394_id_table);
static struct hpsb_protocol_driver eth1394_proto_driver = { static struct hpsb_protocol_driver eth1394_proto_driver = {
.name = "IPv4 over 1394 Driver", .name = ETH1394_DRIVER_NAME,
.id_table = eth1394_id_table, .id_table = eth1394_id_table,
.update = eth1394_update, .update = eth1394_update,
.driver = { .driver = {
.name = ETH1394_DRIVER_NAME,
.bus = &ieee1394_bus_type,
.probe = eth1394_probe, .probe = eth1394_probe,
.remove = eth1394_remove, .remove = eth1394_remove,
}, },
......
...@@ -1237,9 +1237,8 @@ EXPORT_SYMBOL(highlevel_remove_host); ...@@ -1237,9 +1237,8 @@ EXPORT_SYMBOL(highlevel_remove_host);
/** nodemgr.c **/ /** nodemgr.c **/
EXPORT_SYMBOL(hpsb_node_fill_packet); EXPORT_SYMBOL(hpsb_node_fill_packet);
EXPORT_SYMBOL(hpsb_node_write); EXPORT_SYMBOL(hpsb_node_write);
EXPORT_SYMBOL(hpsb_register_protocol); EXPORT_SYMBOL(__hpsb_register_protocol);
EXPORT_SYMBOL(hpsb_unregister_protocol); EXPORT_SYMBOL(hpsb_unregister_protocol);
EXPORT_SYMBOL(ieee1394_bus_type);
#ifdef CONFIG_IEEE1394_EXPORT_FULL_API #ifdef CONFIG_IEEE1394_EXPORT_FULL_API
EXPORT_SYMBOL(nodemgr_for_each_host); EXPORT_SYMBOL(nodemgr_for_each_host);
#endif #endif
......
...@@ -1282,12 +1282,19 @@ static int nodemgr_uevent(struct class_device *cdev, char **envp, int num_envp, ...@@ -1282,12 +1282,19 @@ static int nodemgr_uevent(struct class_device *cdev, char **envp, int num_envp,
#endif /* CONFIG_HOTPLUG */ #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 */ /* This will cause a probe for devices */
int error = driver_register(&driver->driver); error = driver_register(&drv->driver);
if (!error) if (!error)
nodemgr_create_drv_files(driver); nodemgr_create_drv_files(drv);
return error; return error;
} }
......
...@@ -144,7 +144,12 @@ struct hpsb_protocol_driver { ...@@ -144,7 +144,12 @@ struct hpsb_protocol_driver {
struct device_driver 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); void hpsb_unregister_protocol(struct hpsb_protocol_driver *driver);
static inline int hpsb_node_entry_valid(struct node_entry *ne) static inline int hpsb_node_entry_valid(struct node_entry *ne)
......
...@@ -2987,12 +2987,8 @@ static struct ieee1394_device_id raw1394_id_table[] = { ...@@ -2987,12 +2987,8 @@ static struct ieee1394_device_id raw1394_id_table[] = {
MODULE_DEVICE_TABLE(ieee1394, raw1394_id_table); MODULE_DEVICE_TABLE(ieee1394, raw1394_id_table);
static struct hpsb_protocol_driver raw1394_driver = { static struct hpsb_protocol_driver raw1394_driver = {
.name = "raw1394 Driver", .name = "raw1394",
.id_table = raw1394_id_table, .id_table = raw1394_id_table,
.driver = {
.name = "raw1394",
.bus = &ieee1394_bus_type,
},
}; };
/******************************************************************************/ /******************************************************************************/
......
...@@ -259,12 +259,10 @@ static int sbp2_remove(struct device *); ...@@ -259,12 +259,10 @@ static int sbp2_remove(struct device *);
static int sbp2_update(struct unit_directory *); static int sbp2_update(struct unit_directory *);
static struct hpsb_protocol_driver sbp2_driver = { static struct hpsb_protocol_driver sbp2_driver = {
.name = "SBP2 Driver", .name = SBP2_DEVICE_NAME,
.id_table = sbp2_id_table, .id_table = sbp2_id_table,
.update = sbp2_update, .update = sbp2_update,
.driver = { .driver = {
.name = SBP2_DEVICE_NAME,
.bus = &ieee1394_bus_type,
.probe = sbp2_probe, .probe = sbp2_probe,
.remove = sbp2_remove, .remove = sbp2_remove,
}, },
......
...@@ -1308,12 +1308,8 @@ static struct ieee1394_device_id video1394_id_table[] = { ...@@ -1308,12 +1308,8 @@ static struct ieee1394_device_id video1394_id_table[] = {
MODULE_DEVICE_TABLE(ieee1394, video1394_id_table); MODULE_DEVICE_TABLE(ieee1394, video1394_id_table);
static struct hpsb_protocol_driver video1394_driver = { static struct hpsb_protocol_driver video1394_driver = {
.name = "1394 Digital Camera Driver", .name = VIDEO1394_DRIVER_NAME,
.id_table = video1394_id_table, .id_table = video1394_id_table,
.driver = {
.name = VIDEO1394_DRIVER_NAME,
.bus = &ieee1394_bus_type,
},
}; };
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册