From 700001af960af35e57b701e57bd1595404dca613 Mon Sep 17 00:00:00 2001 From: Johan Hovold Date: Sat, 21 Nov 2015 10:52:03 +0100 Subject: [PATCH] greybus: move id-matching back to core Move id-matching back to core and the bus code where it belongs. Signed-off-by: Johan Hovold Signed-off-by: Greg Kroah-Hartman --- drivers/staging/greybus/bundle.c | 35 ------------------------------ drivers/staging/greybus/core.c | 37 ++++++++++++++++++++++++++++++-- 2 files changed, 35 insertions(+), 37 deletions(-) diff --git a/drivers/staging/greybus/bundle.c b/drivers/staging/greybus/bundle.c index fbc043998e08..4d04f09f0591 100644 --- a/drivers/staging/greybus/bundle.c +++ b/drivers/staging/greybus/bundle.c @@ -68,41 +68,6 @@ struct device_type greybus_bundle_type = { .release = gb_bundle_release, }; -static int gb_bundle_match_one_id(struct gb_bundle *bundle, - const struct greybus_bundle_id *id) -{ - if ((id->match_flags & GREYBUS_ID_MATCH_VENDOR) && - (id->vendor != bundle->intf->vendor)) - return 0; - - if ((id->match_flags & GREYBUS_ID_MATCH_PRODUCT) && - (id->product != bundle->intf->product)) - return 0; - - if ((id->match_flags & GREYBUS_ID_MATCH_CLASS) && - (id->class != bundle->class)) - return 0; - - return 1; -} - -const struct greybus_bundle_id * -gb_bundle_match_id(struct gb_bundle *bundle, - const struct greybus_bundle_id *id) -{ - if (id == NULL) - return NULL; - - for (; id->vendor || id->product || id->class || id->driver_info; - id++) { - if (gb_bundle_match_one_id(bundle, id)) - return id; - } - - return NULL; -} - - /* XXX This could be per-host device or per-module */ static DEFINE_SPINLOCK(gb_bundles_lock); diff --git a/drivers/staging/greybus/core.c b/drivers/staging/greybus/core.c index 4396f90e65d6..56250fa37708 100644 --- a/drivers/staging/greybus/core.c +++ b/drivers/staging/greybus/core.c @@ -29,13 +29,46 @@ int greybus_disabled(void) } EXPORT_SYMBOL_GPL(greybus_disabled); +static int greybus_match_one_id(struct gb_bundle *bundle, + const struct greybus_bundle_id *id) +{ + if ((id->match_flags & GREYBUS_ID_MATCH_VENDOR) && + (id->vendor != bundle->intf->vendor)) + return 0; + + if ((id->match_flags & GREYBUS_ID_MATCH_PRODUCT) && + (id->product != bundle->intf->product)) + return 0; + + if ((id->match_flags & GREYBUS_ID_MATCH_CLASS) && + (id->class != bundle->class)) + return 0; + + return 1; +} + +static const struct greybus_bundle_id * +greybus_match_id(struct gb_bundle *bundle, const struct greybus_bundle_id *id) +{ + if (id == NULL) + return NULL; + + for (; id->vendor || id->product || id->class || id->driver_info; + id++) { + if (greybus_match_one_id(bundle, id)) + return id; + } + + return NULL; +} + static int greybus_module_match(struct device *dev, struct device_driver *drv) { struct greybus_driver *driver = to_greybus_driver(drv); struct gb_bundle *bundle = to_gb_bundle(dev); const struct greybus_bundle_id *id; - id = gb_bundle_match_id(bundle, driver->id_table); + id = greybus_match_id(bundle, driver->id_table); if (id) return 1; /* FIXME - Dynamic ids? */ @@ -97,7 +130,7 @@ static int greybus_probe(struct device *dev) int retval; /* match id */ - id = gb_bundle_match_id(bundle, driver->id_table); + id = greybus_match_id(bundle, driver->id_table); if (!id) return -ENODEV;