Commit d2b3be80 authored by Russ Weight's avatar Russ Weight Committed by Wupeng Ma
Browse files

fpga: bridge: Use standard dev_release for class driver

mainline inclusion
from mainline-v5.17-rc1
commit 0d70af3c
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/IA7YMH

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0d70af3c2530a70f1b2c197feaa63fbd3548ce34



--------------------------------

The FPGA bridge class driver data structure is being treated as a
managed resource instead of using the standard dev_release call-back
function to release the class data structure. This change removes
the managed resource code and combines the create() and register()
functions into a single register() function.

Signed-off-by: default avatarRuss Weight <russell.h.weight@intel.com>
Reviewed-by: default avatarXu Yilun <yilun.xu@intel.com>
Acked-by: default avatarXu Yilun <yilun.xu@intel.com>
Signed-off-by: default avatarMoritz Fischer <mdf@kernel.org>

Conflicts:
	Documentation/driver-api/fpga/fpga-bridge.rst
	drivers/fpga/fpga-bridge.c
	drivers/fpga/xilinx-pr-decoupler.c
Signed-off-by: default avatarMa Wupeng <mawupeng1@huawei.com>
parent af9e9e5e
Loading
Loading
Loading
Loading
+1 −5
Original line number Diff line number Diff line
@@ -6,8 +6,7 @@ API to implement a new FPGA bridge

* struct fpga_bridge — The FPGA Bridge structure
* struct fpga_bridge_ops — Low level Bridge driver ops
* devm_fpga_bridge_create() — Allocate and init a bridge struct
* fpga_bridge_register() — Register a bridge
* fpga_bridge_register() — Create and register a bridge
* fpga_bridge_unregister() — Unregister a bridge

.. kernel-doc:: include/linux/fpga/fpga-bridge.h
@@ -16,9 +15,6 @@ API to implement a new FPGA bridge
.. kernel-doc:: include/linux/fpga/fpga-bridge.h
   :functions: fpga_bridge_ops

.. kernel-doc:: drivers/fpga/fpga-bridge.c
   :functions: devm_fpga_bridge_create

.. kernel-doc:: drivers/fpga/fpga-bridge.c
   :functions: fpga_bridge_register

+4 −8
Original line number Diff line number Diff line
@@ -121,17 +121,13 @@ static int alt_fpga_bridge_probe(struct platform_device *pdev)
	/* Get f2s bridge configuration saved in handoff register */
	regmap_read(sysmgr, SYSMGR_ISWGRP_HANDOFF3, &priv->mask);

	br = devm_fpga_bridge_create(dev, F2S_BRIDGE_NAME,
	br = fpga_bridge_register(dev, F2S_BRIDGE_NAME,
				  &altera_fpga2sdram_br_ops, priv);
	if (!br)
		return -ENOMEM;
	if (IS_ERR(br))
		return PTR_ERR(br);

	platform_set_drvdata(pdev, br);

	ret = fpga_bridge_register(br);
	if (ret)
		return ret;

	dev_info(dev, "driver initialized with handoff %08x\n", priv->mask);

	if (!of_property_read_u32(dev->of_node, "bridge-enable", &enable)) {
+5 −5
Original line number Diff line number Diff line
@@ -244,14 +244,14 @@ static int altera_freeze_br_probe(struct platform_device *pdev)

	priv->base_addr = base_addr;

	br = devm_fpga_bridge_create(dev, FREEZE_BRIDGE_NAME,
	br = fpga_bridge_register(dev, FREEZE_BRIDGE_NAME,
				  &altera_freeze_br_br_ops, priv);
	if (!br)
		return -ENOMEM;
	if (IS_ERR(br))
		return PTR_ERR(br);

	platform_set_drvdata(pdev, br);

	return fpga_bridge_register(br);
	return 0;
}

static int altera_freeze_br_remove(struct platform_device *pdev)
+4 −8
Original line number Diff line number Diff line
@@ -180,19 +180,15 @@ static int alt_fpga_bridge_probe(struct platform_device *pdev)
		}
	}

	br = devm_fpga_bridge_create(dev, priv->name,
	br = fpga_bridge_register(dev, priv->name,
				  &altera_hps2fpga_br_ops, priv);
	if (!br) {
		ret = -ENOMEM;
	if (IS_ERR(br)) {
		ret = PTR_ERR(br);
		goto err;
	}

	platform_set_drvdata(pdev, br);

	ret = fpga_bridge_register(br);
	if (ret)
		goto err;

	return 0;

err:
+5 −5
Original line number Diff line number Diff line
@@ -68,14 +68,14 @@ static int fme_br_probe(struct platform_device *pdev)

	priv->pdata = dev_get_platdata(dev);

	br = devm_fpga_bridge_create(dev, "DFL FPGA FME Bridge",
	br = fpga_bridge_register(dev, "DFL FPGA FME Bridge",
				  &fme_bridge_ops, priv);
	if (!br)
		return -ENOMEM;
	if (IS_ERR(br))
		return PTR_ERR(br);

	platform_set_drvdata(pdev, br);

	return fpga_bridge_register(br);
	return 0;
}

static int fme_br_remove(struct platform_device *pdev)
Loading