lkml.org 
[lkml]   [2018]   [Feb]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v4 15/24] fpga: dfl-fme-pr: add compat_id support for dfl-fme-region platform device.
    Date
    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@intel.com>
    ---
    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
    \
     
     \ /
      Last update: 2018-02-13 10:41    [W:3.966 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site