mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-24 12:44:11 +08:00
fsi: Use of_match_table for bus matching if specified
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> Link: https://lore.kernel.org/r/20230612195657.245125-4-eajames@linux.ibm.com Signed-off-by: Joel Stanley <joel@jms.id.au>
This commit is contained in:
parent
21930d80ed
commit
c21d322e1a
@ -17,6 +17,7 @@
|
||||
#include <linux/module.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/of_address.h>
|
||||
#include <linux/of_device.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/bitops.h>
|
||||
#include <linux/cdev.h>
|
||||
@ -1354,8 +1355,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;
|
||||
|
@ -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,
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user