This patch adds compat_id support when driver creates the platform device for dfl-fme-region. It allows dfl-fme-region platform driver to create fpga-region with correct compat_id. Signed-off-by: Wu Hao <hao.wu@xxxxxxxxx> --- drivers/fpga/dfl-fme-pr.c | 20 ++++++++++++++++++++ drivers/fpga/dfl-fme-pr.h | 3 +++ 2 files changed, 23 insertions(+) diff --git a/drivers/fpga/dfl-fme-pr.c b/drivers/fpga/dfl-fme-pr.c index 526e90b..c17170b 100644 --- a/drivers/fpga/dfl-fme-pr.c +++ b/drivers/fpga/dfl-fme-pr.c @@ -314,6 +314,25 @@ static void fpga_fme_destroy_bridges(struct feature_platform_data *pdata) } /** + * fpga_fme_get_region_compat_id - read region compat_id from hardware + * + * @dev: fme device. + */ +static struct fpga_region_compat_id +fpga_fme_get_region_compat_id(struct device *dev) +{ + struct fpga_region_compat_id compat_id; + void __iomem *fme_pr; + + fme_pr = get_feature_ioaddr_by_id(dev, FME_FEATURE_ID_PR_MGMT); + + compat_id.id_l = readq(fme_pr + FME_PR_INTFC_ID_L); + compat_id.id_h = readq(fme_pr + FME_PR_INTFC_ID_H); + + return compat_id; +} + +/** * fpga_fme_create_region - create fpga region platform device as child * * @pdata: fme platform device's pdata @@ -339,6 +358,7 @@ fpga_fme_create_region(struct feature_platform_data *pdata, region_pdata.mgr = mgr; region_pdata.br = br; + region_pdata.compat_id = fpga_fme_get_region_compat_id(dev); /* * Each FPGA device may have more than one port, so allocate platform diff --git a/drivers/fpga/dfl-fme-pr.h b/drivers/fpga/dfl-fme-pr.h index 11bd001..ef6c95a 100644 --- a/drivers/fpga/dfl-fme-pr.h +++ b/drivers/fpga/dfl-fme-pr.h @@ -19,6 +19,7 @@ #define __DFL_FME_PR_H #include <linux/platform_device.h> +#include <linux/fpga/fpga-region.h> /** * struct fme_region - FME fpga region data structure @@ -39,11 +40,13 @@ struct fme_region { * @mgr: platform device of the FPGA manager. * @br: platform device of the FPGA bridge. * @region_id: region id (same as port_id). + * @compat_id: compat id of the FPGA region. */ struct fme_region_pdata { struct platform_device *mgr; struct platform_device *br; int region_id; + struct fpga_region_compat_id compat_id; }; /** -- 2.7.4 -- To unsubscribe from this list: send the line "unsubscribe linux-api" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html