summaryrefslogtreecommitdiffstats
path: root/drivers/fsi
diff options
context:
space:
mode:
authorJeremy Kerr <jk@ozlabs.org>2017-02-01 11:53:43 -0500
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2017-02-10 09:19:48 -0500
commitdd37eed7db0f7607fa41887c11c1e428faa15d0c (patch)
tree77f9408503ed7e2fb672dcfa88682bb2596e3a1c /drivers/fsi
parentfda07a6c94ac5c9bd73d7b0134c6cc6861375341 (diff)
drivers/fsi: add driver to device matches
Driver bind to devices based on the engine types & (optional) versions. Signed-off-by: Jeremy Kerr <jk@ozlabs.org> Signed-off-by: Chris Bostic <cbostic@us.ibm.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/fsi')
-rw-r--r--drivers/fsi/fsi-core.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/drivers/fsi/fsi-core.c b/drivers/fsi/fsi-core.c
index 3e45306359b3..3d55bd547178 100644
--- a/drivers/fsi/fsi-core.c
+++ b/drivers/fsi/fsi-core.c
@@ -19,8 +19,29 @@
19 19
20/* FSI core & Linux bus type definitions */ 20/* FSI core & Linux bus type definitions */
21 21
22static int fsi_bus_match(struct device *dev, struct device_driver *drv)
23{
24 struct fsi_device *fsi_dev = to_fsi_dev(dev);
25 struct fsi_driver *fsi_drv = to_fsi_drv(drv);
26 const struct fsi_device_id *id;
27
28 if (!fsi_drv->id_table)
29 return 0;
30
31 for (id = fsi_drv->id_table; id->engine_type; id++) {
32 if (id->engine_type != fsi_dev->engine_type)
33 continue;
34 if (id->version == FSI_VERSION_ANY ||
35 id->version == fsi_dev->version)
36 return 1;
37 }
38
39 return 0;
40}
41
22struct bus_type fsi_bus_type = { 42struct bus_type fsi_bus_type = {
23 .name = "fsi", 43 .name = "fsi",
44 .match = fsi_bus_match,
24}; 45};
25EXPORT_SYMBOL_GPL(fsi_bus_type); 46EXPORT_SYMBOL_GPL(fsi_bus_type);
26 47