lkml.org 
[lkml]   [2023]   [Feb]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v5 6/6] fsi: Use of_match_table for bus matching if specified
    Date
    Since we have two scom drivers, use the standard of matching if
    the driver specifies a table so that the right devices go to the
    right driver.

    Signed-off-by: Eddie James <eajames@linux.ibm.com>
    ---
    drivers/fsi/fsi-core.c | 11 +++++++++--
    drivers/fsi/fsi-scom.c | 8 ++++++++
    2 files changed, 17 insertions(+), 2 deletions(-)

    diff --git a/drivers/fsi/fsi-core.c b/drivers/fsi/fsi-core.c
    index b77013b9d8a7..ca4a9634fbc3 100644
    --- a/drivers/fsi/fsi-core.c
    +++ b/drivers/fsi/fsi-core.c
    @@ -16,6 +16,7 @@
    #include <linux/idr.h>
    #include <linux/module.h>
    #include <linux/of.h>
    +#include <linux/of_device.h>
    #include <linux/slab.h>
    #include <linux/bitops.h>
    #include <linux/cdev.h>
    @@ -1375,8 +1376,14 @@ static int fsi_bus_match(struct device *dev, struct device_driver *drv)
    if (id->engine_type != fsi_dev->engine_type)
    continue;
    if (id->version == FSI_VERSION_ANY ||
    - id->version == fsi_dev->version)
    - return 1;
    + id->version == fsi_dev->version) {
    + if (drv->of_match_table) {
    + if (of_driver_match_device(dev, drv))
    + return 1;
    + } else {
    + return 1;
    + }
    + }
    }

    return 0;
    diff --git a/drivers/fsi/fsi-scom.c b/drivers/fsi/fsi-scom.c
    index bcb756dc9866..61dbda9dbe2b 100644
    --- a/drivers/fsi/fsi-scom.c
    +++ b/drivers/fsi/fsi-scom.c
    @@ -10,6 +10,7 @@
    #include <linux/cdev.h>
    #include <linux/delay.h>
    #include <linux/fs.h>
    +#include <linux/mod_devicetable.h>
    #include <linux/uaccess.h>
    #include <linux/slab.h>
    #include <linux/list.h>
    @@ -587,6 +588,12 @@ static int scom_remove(struct device *dev)
    return 0;
    }

    +static const struct of_device_id scom_of_ids[] = {
    + { .compatible = "ibm,fsi2pib" },
    + { }
    +};
    +MODULE_DEVICE_TABLE(of, scom_of_ids);
    +
    static const struct fsi_device_id scom_ids[] = {
    {
    .engine_type = FSI_ENGID_SCOM,
    @@ -600,6 +607,7 @@ static struct fsi_driver scom_drv = {
    .drv = {
    .name = "scom",
    .bus = &fsi_bus_type,
    + .of_match_table = scom_of_ids,
    .probe = scom_probe,
    .remove = scom_remove,
    }
    --
    2.31.1
    \
     
     \ /
      Last update: 2023-03-27 00:30    [W:4.560 / U:0.180 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site