|
@@ -272,9 +272,17 @@ static const struct fpga_manager_ops fme_mgr_ops = {
|
|
|
.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)
|
|
|
{
|
|
|
struct dfl_fme_mgr_pdata *pdata = dev_get_platdata(&pdev->dev);
|
|
|
+ struct fpga_compat_id *compat_id;
|
|
|
struct device *dev = &pdev->dev;
|
|
|
struct fme_mgr_priv *priv;
|
|
|
struct fpga_manager *mgr;
|
|
@@ -295,11 +303,18 @@ static int fme_mgr_probe(struct platform_device *pdev)
|
|
|
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",
|
|
|
&fme_mgr_ops, priv);
|
|
|
if (!mgr)
|
|
|
return -ENOMEM;
|
|
|
|
|
|
+ mgr->compat_id = compat_id;
|
|
|
platform_set_drvdata(pdev, mgr);
|
|
|
|
|
|
ret = fpga_mgr_register(mgr);
|