diff options
Diffstat (limited to 'drivers/zorro/zorro-driver.c')
| -rw-r--r-- | drivers/zorro/zorro-driver.c | 42 |
1 files changed, 15 insertions, 27 deletions
diff --git a/drivers/zorro/zorro-driver.c b/drivers/zorro/zorro-driver.c index fa23b7366b98..e7d3af1a223f 100644 --- a/drivers/zorro/zorro-driver.c +++ b/drivers/zorro/zorro-driver.c @@ -28,7 +28,7 @@ * zorro_device_id structure or %NULL if there is no match. */ -const struct zorro_device_id * +static const struct zorro_device_id * zorro_match_device(const struct zorro_device_id *ids, const struct zorro_dev *z) { @@ -39,7 +39,6 @@ zorro_match_device(const struct zorro_device_id *ids, } return NULL; } -EXPORT_SYMBOL(zorro_match_device); static int zorro_device_probe(struct device *dev) @@ -48,32 +47,26 @@ static int zorro_device_probe(struct device *dev) struct zorro_driver *drv = to_zorro_driver(dev->driver); struct zorro_dev *z = to_zorro_dev(dev); - if (!z->driver && drv->probe) { + if (drv->probe) { const struct zorro_device_id *id; id = zorro_match_device(drv->id_table, z); if (id) error = drv->probe(z, id); - if (error >= 0) { - z->driver = drv; + if (error >= 0) error = 0; - } } return error; } -static int zorro_device_remove(struct device *dev) +static void zorro_device_remove(struct device *dev) { struct zorro_dev *z = to_zorro_dev(dev); struct zorro_driver *drv = to_zorro_driver(dev->driver); - if (drv) { - if (drv->remove) - drv->remove(z); - z->driver = NULL; - } - return 0; + if (drv->remove) + drv->remove(z); } @@ -120,31 +113,26 @@ EXPORT_SYMBOL(zorro_unregister_driver); * @ids: array of Zorro device id structures to search in * @dev: the Zorro device structure to match against * - * Used by a driver to check whether a Zorro device present in the - * system is in its list of supported devices.Returns the matching - * zorro_device_id structure or %NULL if there is no match. + * Used by the driver core to check whether a Zorro device present in the + * system is in a driver's list of supported devices. Returns 1 if + * supported, and 0 if there is no match. */ -static int zorro_bus_match(struct device *dev, struct device_driver *drv) +static int zorro_bus_match(struct device *dev, const struct device_driver *drv) { struct zorro_dev *z = to_zorro_dev(dev); - struct zorro_driver *zorro_drv = to_zorro_driver(drv); + const struct zorro_driver *zorro_drv = to_zorro_driver(drv); const struct zorro_device_id *ids = zorro_drv->id_table; if (!ids) return 0; - while (ids->id) { - if (ids->id == ZORRO_WILDCARD || ids->id == z->id) - return 1; - ids++; - } - return 0; + return !!zorro_match_device(ids, z); } -static int zorro_uevent(struct device *dev, struct kobj_uevent_env *env) +static int zorro_uevent(const struct device *dev, struct kobj_uevent_env *env) { - struct zorro_dev *z; + const struct zorro_dev *z; if (!dev) return -ENODEV; @@ -162,7 +150,7 @@ static int zorro_uevent(struct device *dev, struct kobj_uevent_env *env) return 0; } -struct bus_type zorro_bus_type = { +const struct bus_type zorro_bus_type = { .name = "zorro", .dev_name = "zorro", .dev_groups = zorro_device_attribute_groups, |
