fpga: dfl: fme-mgr: add compat_id support
This patch adds compat_id support to fme manager driver, it reads the ID from the hardware register. And it could be used for compatibility check before partial reconfiguration. Signed-off-by: Wu Hao <hao.wu@intel.com> Acked-by: Alan Tull <atull@kernel.org> Acked-by: Moritz Fischer <mdf@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
af275ec616
commit
5ebae801d9
|
@ -272,9 +272,17 @@ static const struct fpga_manager_ops fme_mgr_ops = {
|
||||||
.status = fme_mgr_status,
|
.status = fme_mgr_status,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static void fme_mgr_get_compat_id(void __iomem *fme_pr,
|
||||||
|
struct fpga_compat_id *id)
|
||||||
|
{
|
||||||
|
id->id_l = readq(fme_pr + FME_PR_INTFC_ID_L);
|
||||||
|
id->id_h = readq(fme_pr + FME_PR_INTFC_ID_H);
|
||||||
|
}
|
||||||
|
|
||||||
static int fme_mgr_probe(struct platform_device *pdev)
|
static int fme_mgr_probe(struct platform_device *pdev)
|
||||||
{
|
{
|
||||||
struct dfl_fme_mgr_pdata *pdata = dev_get_platdata(&pdev->dev);
|
struct dfl_fme_mgr_pdata *pdata = dev_get_platdata(&pdev->dev);
|
||||||
|
struct fpga_compat_id *compat_id;
|
||||||
struct device *dev = &pdev->dev;
|
struct device *dev = &pdev->dev;
|
||||||
struct fme_mgr_priv *priv;
|
struct fme_mgr_priv *priv;
|
||||||
struct fpga_manager *mgr;
|
struct fpga_manager *mgr;
|
||||||
|
@ -295,11 +303,18 @@ static int fme_mgr_probe(struct platform_device *pdev)
|
||||||
return PTR_ERR(priv->ioaddr);
|
return PTR_ERR(priv->ioaddr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compat_id = devm_kzalloc(dev, sizeof(*compat_id), GFP_KERNEL);
|
||||||
|
if (!compat_id)
|
||||||
|
return -ENOMEM;
|
||||||
|
|
||||||
|
fme_mgr_get_compat_id(priv->ioaddr, compat_id);
|
||||||
|
|
||||||
mgr = fpga_mgr_create(dev, "DFL FME FPGA Manager",
|
mgr = fpga_mgr_create(dev, "DFL FME FPGA Manager",
|
||||||
&fme_mgr_ops, priv);
|
&fme_mgr_ops, priv);
|
||||||
if (!mgr)
|
if (!mgr)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
|
mgr->compat_id = compat_id;
|
||||||
platform_set_drvdata(pdev, mgr);
|
platform_set_drvdata(pdev, mgr);
|
||||||
|
|
||||||
ret = fpga_mgr_register(mgr);
|
ret = fpga_mgr_register(mgr);
|
||||||
|
|
Loading…
Reference in New Issue