+++ /dev/null
-From 8342080b3f972f0d33b4bc7086ccd19be1715f4a Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Wed, 14 Feb 2024 15:36:45 +0100
-Subject: hwmon: (axi-fan-control) Make use of dev_err_probe()
-
-From: Nuno Sa <nuno.sa@analog.com>
-
-[ Upstream commit ec823656c1e0e5f49e92ed86cee9fb26585da18e ]
-
-Use dev_err_probe() to slightly simplify printing errors during probe.
-No functional changes intended.
-
-Signed-off-by: Nuno Sa <nuno.sa@analog.com>
-Link: https://lore.kernel.org/r/20240214-axi-fan-control-no-of-v1-3-43ca656fe2e3@analog.com
-Signed-off-by: Guenter Roeck <linux@roeck-us.net>
-Stable-dep-of: 813bbc4d33d2 ("hwmon: axi-fan: don't use driver_override as IRQ name")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/hwmon/axi-fan-control.c | 40 +++++++++++++++------------------
- 1 file changed, 18 insertions(+), 22 deletions(-)
-
-diff --git a/drivers/hwmon/axi-fan-control.c b/drivers/hwmon/axi-fan-control.c
-index cb46615555720..4ea86778d49da 100644
---- a/drivers/hwmon/axi-fan-control.c
-+++ b/drivers/hwmon/axi-fan-control.c
-@@ -465,10 +465,9 @@ static int axi_fan_control_probe(struct platform_device *pdev)
- return PTR_ERR(ctl->base);
-
- clk = devm_clk_get_enabled(&pdev->dev, NULL);
-- if (IS_ERR(clk)) {
-- dev_err(&pdev->dev, "clk_get failed with %ld\n", PTR_ERR(clk));
-- return PTR_ERR(clk);
-- }
-+ if (IS_ERR(clk))
-+ return dev_err_probe(&pdev->dev, PTR_ERR(clk),
-+ "clk_get failed\n");
-
- ctl->clk_rate = clk_get_rate(clk);
- if (!ctl->clk_rate)
-@@ -476,22 +475,20 @@ static int axi_fan_control_probe(struct platform_device *pdev)
-
- version = axi_ioread(ADI_AXI_REG_VERSION, ctl);
- if (ADI_AXI_PCORE_VER_MAJOR(version) !=
-- ADI_AXI_PCORE_VER_MAJOR((*id))) {
-- dev_err(&pdev->dev, "Major version mismatch. Expected %d.%.2d.%c, Reported %d.%.2d.%c\n",
-- ADI_AXI_PCORE_VER_MAJOR(*id),
-- ADI_AXI_PCORE_VER_MINOR(*id),
-- ADI_AXI_PCORE_VER_PATCH(*id),
-- ADI_AXI_PCORE_VER_MAJOR(version),
-- ADI_AXI_PCORE_VER_MINOR(version),
-- ADI_AXI_PCORE_VER_PATCH(version));
-- return -ENODEV;
-- }
-+ ADI_AXI_PCORE_VER_MAJOR((*id)))
-+ return dev_err_probe(&pdev->dev, -ENODEV,
-+ "Major version mismatch. Expected %d.%.2d.%c, Reported %d.%.2d.%c\n",
-+ ADI_AXI_PCORE_VER_MAJOR(*id),
-+ ADI_AXI_PCORE_VER_MINOR(*id),
-+ ADI_AXI_PCORE_VER_PATCH(*id),
-+ ADI_AXI_PCORE_VER_MAJOR(version),
-+ ADI_AXI_PCORE_VER_MINOR(version),
-+ ADI_AXI_PCORE_VER_PATCH(version));
-
- ret = axi_fan_control_init(ctl, &pdev->dev);
-- if (ret) {
-- dev_err(&pdev->dev, "Failed to initialize device\n");
-- return ret;
-- }
-+ if (ret)
-+ return dev_err_probe(&pdev->dev, ret,
-+ "Failed to initialize device\n");
-
- ctl->hdev = devm_hwmon_device_register_with_info(&pdev->dev,
- name,
-@@ -510,10 +507,9 @@ static int axi_fan_control_probe(struct platform_device *pdev)
- axi_fan_control_irq_handler,
- IRQF_ONESHOT | IRQF_TRIGGER_HIGH,
- pdev->driver_override, ctl);
-- if (ret) {
-- dev_err(&pdev->dev, "failed to request an irq, %d", ret);
-- return ret;
-- }
-+ if (ret)
-+ return dev_err_probe(&pdev->dev, ret,
-+ "failed to request an irq\n");
-
- return 0;
- }
---
-2.51.0
-
+++ /dev/null
-From 10fe75f492d9515aedfcf9d4186d824e77530114 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Wed, 14 Feb 2024 15:36:43 +0100
-Subject: hwmon: (axi-fan-control) Use device firmware agnostic API
-
-From: Nuno Sa <nuno.sa@analog.com>
-
-[ Upstream commit 1b5239f70fcd2d7fe86f0f5473006c2896db07a8 ]
-
-Don't directly use OF and use device property APIs. In addition, this
-makes the probe() code neater and also allow us to move the
-of_device_id table to it's natural place.
-
-While at it, make sure to explicitly include mod_devicetable.h for the
-of_device_id table.
-
-Signed-off-by: Nuno Sa <nuno.sa@analog.com>
-Link: https://lore.kernel.org/r/20240214-axi-fan-control-no-of-v1-1-43ca656fe2e3@analog.com
-Signed-off-by: Guenter Roeck <linux@roeck-us.net>
-Stable-dep-of: 813bbc4d33d2 ("hwmon: axi-fan: don't use driver_override as IRQ name")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/hwmon/axi-fan-control.c | 39 +++++++++++++++++----------------
- 1 file changed, 20 insertions(+), 19 deletions(-)
-
-diff --git a/drivers/hwmon/axi-fan-control.c b/drivers/hwmon/axi-fan-control.c
-index 6cfc063c133f4..cb46615555720 100644
---- a/drivers/hwmon/axi-fan-control.c
-+++ b/drivers/hwmon/axi-fan-control.c
-@@ -13,8 +13,9 @@
- #include <linux/io.h>
- #include <linux/kernel.h>
- #include <linux/module.h>
--#include <linux/of.h>
-+#include <linux/mod_devicetable.h>
- #include <linux/platform_device.h>
-+#include <linux/property.h>
-
- /* register map */
- #define ADI_REG_RSTN 0x0080
-@@ -367,12 +368,12 @@ static irqreturn_t axi_fan_control_irq_handler(int irq, void *data)
- }
-
- static int axi_fan_control_init(struct axi_fan_control_data *ctl,
-- const struct device_node *np)
-+ const struct device *dev)
- {
- int ret;
-
- /* get fan pulses per revolution */
-- ret = of_property_read_u32(np, "pulses-per-revolution", &ctl->ppr);
-+ ret = device_property_read_u32(dev, "pulses-per-revolution", &ctl->ppr);
- if (ret)
- return ret;
-
-@@ -442,25 +443,16 @@ static struct attribute *axi_fan_control_attrs[] = {
- };
- ATTRIBUTE_GROUPS(axi_fan_control);
-
--static const u32 version_1_0_0 = ADI_AXI_PCORE_VER(1, 0, 'a');
--
--static const struct of_device_id axi_fan_control_of_match[] = {
-- { .compatible = "adi,axi-fan-control-1.00.a",
-- .data = (void *)&version_1_0_0},
-- {},
--};
--MODULE_DEVICE_TABLE(of, axi_fan_control_of_match);
--
- static int axi_fan_control_probe(struct platform_device *pdev)
- {
- struct axi_fan_control_data *ctl;
- struct clk *clk;
-- const struct of_device_id *id;
-+ const unsigned int *id;
- const char *name = "axi_fan_control";
- u32 version;
- int ret;
-
-- id = of_match_node(axi_fan_control_of_match, pdev->dev.of_node);
-+ id = device_get_match_data(&pdev->dev);
- if (!id)
- return -EINVAL;
-
-@@ -484,18 +476,18 @@ static int axi_fan_control_probe(struct platform_device *pdev)
-
- version = axi_ioread(ADI_AXI_REG_VERSION, ctl);
- if (ADI_AXI_PCORE_VER_MAJOR(version) !=
-- ADI_AXI_PCORE_VER_MAJOR((*(u32 *)id->data))) {
-+ ADI_AXI_PCORE_VER_MAJOR((*id))) {
- dev_err(&pdev->dev, "Major version mismatch. Expected %d.%.2d.%c, Reported %d.%.2d.%c\n",
-- ADI_AXI_PCORE_VER_MAJOR((*(u32 *)id->data)),
-- ADI_AXI_PCORE_VER_MINOR((*(u32 *)id->data)),
-- ADI_AXI_PCORE_VER_PATCH((*(u32 *)id->data)),
-+ ADI_AXI_PCORE_VER_MAJOR(*id),
-+ ADI_AXI_PCORE_VER_MINOR(*id),
-+ ADI_AXI_PCORE_VER_PATCH(*id),
- ADI_AXI_PCORE_VER_MAJOR(version),
- ADI_AXI_PCORE_VER_MINOR(version),
- ADI_AXI_PCORE_VER_PATCH(version));
- return -ENODEV;
- }
-
-- ret = axi_fan_control_init(ctl, pdev->dev.of_node);
-+ ret = axi_fan_control_init(ctl, &pdev->dev);
- if (ret) {
- dev_err(&pdev->dev, "Failed to initialize device\n");
- return ret;
-@@ -526,6 +518,15 @@ static int axi_fan_control_probe(struct platform_device *pdev)
- return 0;
- }
-
-+static const u32 version_1_0_0 = ADI_AXI_PCORE_VER(1, 0, 'a');
-+
-+static const struct of_device_id axi_fan_control_of_match[] = {
-+ { .compatible = "adi,axi-fan-control-1.00.a",
-+ .data = (void *)&version_1_0_0},
-+ {},
-+};
-+MODULE_DEVICE_TABLE(of, axi_fan_control_of_match);
-+
- static struct platform_driver axi_fan_control_driver = {
- .driver = {
- .name = "axi_fan_control_driver",
---
-2.51.0
-
+++ /dev/null
-From 2e1878ac518d58b2384a3ee12efbf2f8548cd7b4 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Tue, 3 Mar 2026 12:53:20 +0100
-Subject: hwmon: axi-fan: don't use driver_override as IRQ name
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-From: Danilo Krummrich <dakr@kernel.org>
-
-[ Upstream commit 813bbc4d33d2ca5b0da63e70ae13b60874f20d37 ]
-
-Do not use driver_override as IRQ name, as it is not guaranteed to point
-to a valid string; use NULL instead (which makes the devm IRQ helpers
-use dev_name()).
-
-Fixes: 8412b410fa5e ("hwmon: Support ADI Fan Control IP")
-Reviewed-by: Nuno Sá <nuno.sa@analog.com>
-Acked-by: Guenter Roeck <linux@roeck-us.net>
-Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-Link: https://patch.msgid.link/20260303115720.48783-4-dakr@kernel.org
-Signed-off-by: Danilo Krummrich <dakr@kernel.org>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/hwmon/axi-fan-control.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/hwmon/axi-fan-control.c b/drivers/hwmon/axi-fan-control.c
-index 4ea86778d49da..5593be1664be7 100644
---- a/drivers/hwmon/axi-fan-control.c
-+++ b/drivers/hwmon/axi-fan-control.c
-@@ -506,7 +506,7 @@ static int axi_fan_control_probe(struct platform_device *pdev)
- ret = devm_request_threaded_irq(&pdev->dev, ctl->irq, NULL,
- axi_fan_control_irq_handler,
- IRQF_ONESHOT | IRQF_TRIGGER_HIGH,
-- pdev->driver_override, ctl);
-+ NULL, ctl);
- if (ret)
- return dev_err_probe(&pdev->dev, ret,
- "failed to request an irq\n");
---
-2.51.0
-
+++ /dev/null
-From 2729af35760cfd5f38d89ee802a333a7b1560fbd Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Mon, 8 Aug 2022 08:06:40 +0200
-Subject: hwmon: Make use of devm_clk_get_enabled()
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-From: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
-
-[ Upstream commit 0dee25ebc7d315d9ee785ea5f457ae980979ea89 ]
-
-Several drivers manually register a devm handler to disable their clk.
-Convert them to devm_clk_get_enabled().
-
-Acked-by: Guenter Roeck <linux@roeck-us.net>
-Reviewed-by: Nuno Sá <nuno.sa@analog.com>
-Acked-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
-Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
-Signed-off-by: Guenter Roeck <linux@roeck-us.net>
-Stable-dep-of: 813bbc4d33d2 ("hwmon: axi-fan: don't use driver_override as IRQ name")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/hwmon/axi-fan-control.c | 2 +-
- drivers/hwmon/ltc2947-core.c | 17 +----------------
- drivers/hwmon/mr75203.c | 26 +-------------------------
- 3 files changed, 3 insertions(+), 42 deletions(-)
-
-diff --git a/drivers/hwmon/axi-fan-control.c b/drivers/hwmon/axi-fan-control.c
-index 4b8250f2bb421..6cfc063c133f4 100644
---- a/drivers/hwmon/axi-fan-control.c
-+++ b/drivers/hwmon/axi-fan-control.c
-@@ -472,7 +472,7 @@ static int axi_fan_control_probe(struct platform_device *pdev)
- if (IS_ERR(ctl->base))
- return PTR_ERR(ctl->base);
-
-- clk = devm_clk_get(&pdev->dev, NULL);
-+ clk = devm_clk_get_enabled(&pdev->dev, NULL);
- if (IS_ERR(clk)) {
- dev_err(&pdev->dev, "clk_get failed with %ld\n", PTR_ERR(clk));
- return PTR_ERR(clk);
-diff --git a/drivers/hwmon/ltc2947-core.c b/drivers/hwmon/ltc2947-core.c
-index e918490f3ff75..f752701818192 100644
---- a/drivers/hwmon/ltc2947-core.c
-+++ b/drivers/hwmon/ltc2947-core.c
-@@ -956,13 +956,6 @@ static struct attribute *ltc2947_attrs[] = {
- };
- ATTRIBUTE_GROUPS(ltc2947);
-
--static void ltc2947_clk_disable(void *data)
--{
-- struct clk *extclk = data;
--
-- clk_disable_unprepare(extclk);
--}
--
- static int ltc2947_setup(struct ltc2947_data *st)
- {
- int ret;
-@@ -989,7 +982,7 @@ static int ltc2947_setup(struct ltc2947_data *st)
- return ret;
-
- /* check external clock presence */
-- extclk = devm_clk_get_optional(st->dev, NULL);
-+ extclk = devm_clk_get_optional_enabled(st->dev, NULL);
- if (IS_ERR(extclk))
- return dev_err_probe(st->dev, PTR_ERR(extclk),
- "Failed to get external clock\n");
-@@ -1007,14 +1000,6 @@ static int ltc2947_setup(struct ltc2947_data *st)
- return -EINVAL;
- }
-
-- ret = clk_prepare_enable(extclk);
-- if (ret)
-- return ret;
--
-- ret = devm_add_action_or_reset(st->dev, ltc2947_clk_disable,
-- extclk);
-- if (ret)
-- return ret;
- /* as in table 1 of the datasheet */
- if (rate_hz >= LTC2947_CLK_MIN && rate_hz <= 1000000)
- pre = 0;
-diff --git a/drivers/hwmon/mr75203.c b/drivers/hwmon/mr75203.c
-index 19ec9fb912020..cb4cdb26385bc 100644
---- a/drivers/hwmon/mr75203.c
-+++ b/drivers/hwmon/mr75203.c
-@@ -487,24 +487,6 @@ static int pvt_get_regmap(struct platform_device *pdev, char *reg_name,
- return 0;
- }
-
--static void pvt_clk_disable(void *data)
--{
-- struct pvt_device *pvt = data;
--
-- clk_disable_unprepare(pvt->clk);
--}
--
--static int pvt_clk_enable(struct device *dev, struct pvt_device *pvt)
--{
-- int ret;
--
-- ret = clk_prepare_enable(pvt->clk);
-- if (ret)
-- return ret;
--
-- return devm_add_action_or_reset(dev, pvt_clk_disable, pvt);
--}
--
- static void pvt_reset_control_assert(void *data)
- {
- struct pvt_device *pvt = data;
-@@ -541,16 +523,10 @@ static int mr75203_probe(struct platform_device *pdev)
- if (ret)
- return ret;
-
-- pvt->clk = devm_clk_get(dev, NULL);
-+ pvt->clk = devm_clk_get_enabled(dev, NULL);
- if (IS_ERR(pvt->clk))
- return dev_err_probe(dev, PTR_ERR(pvt->clk), "failed to get clock\n");
-
-- ret = pvt_clk_enable(dev, pvt);
-- if (ret) {
-- dev_err(dev, "failed to enable clock\n");
-- return ret;
-- }
--
- pvt->rst = devm_reset_control_get_optional_exclusive(dev, NULL);
- if (IS_ERR(pvt->rst))
- return dev_err_probe(dev, PTR_ERR(pvt->rst),
---
-2.51.0
-
+++ /dev/null
-From c6c2193ad57da00489f65f0109027deda72f4ba4 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Thu, 8 Sep 2022 15:24:37 +0000
-Subject: hwmon: (mr75203) skip reset-control deassert for SOCs that don't
- support it
-
-From: Eliav Farber <farbere@amazon.com>
-
-[ Upstream commit 493372f5d3df9905087a2ce9f8b5a2dca5af889f ]
-
-Don't fail the probe function and don't deassert the reset controller if
-a "reset" property doesn't exist in the device tree.
-
-Change is done for SOCs that don't support a reset controller.
-
-Signed-off-by: Eliav Farber <farbere@amazon.com>
-Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
-Link: https://lore.kernel.org/r/20220908152449.35457-10-farbere@amazon.com
-Signed-off-by: Guenter Roeck <linux@roeck-us.net>
-Stable-dep-of: 813bbc4d33d2 ("hwmon: axi-fan: don't use driver_override as IRQ name")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/hwmon/mr75203.c | 11 +++++++----
- 1 file changed, 7 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/hwmon/mr75203.c b/drivers/hwmon/mr75203.c
-index 41e3d3b54baff..19ec9fb912020 100644
---- a/drivers/hwmon/mr75203.c
-+++ b/drivers/hwmon/mr75203.c
-@@ -551,14 +551,17 @@ static int mr75203_probe(struct platform_device *pdev)
- return ret;
- }
-
-- pvt->rst = devm_reset_control_get_exclusive(dev, NULL);
-+ pvt->rst = devm_reset_control_get_optional_exclusive(dev, NULL);
- if (IS_ERR(pvt->rst))
- return dev_err_probe(dev, PTR_ERR(pvt->rst),
- "failed to get reset control\n");
-
-- ret = pvt_reset_control_deassert(dev, pvt);
-- if (ret)
-- return dev_err_probe(dev, ret, "cannot deassert reset control\n");
-+ if (pvt->rst) {
-+ ret = pvt_reset_control_deassert(dev, pvt);
-+ if (ret)
-+ return dev_err_probe(dev, ret,
-+ "cannot deassert reset control\n");
-+ }
-
- ret = regmap_read(pvt->c_map, PVT_IP_CONFIG, &val);
- if(ret < 0)
---
-2.51.0
-
netfilter-nft_set_pipapo-split-gc-into-unlink-and-reclaim-phase.patch
xen-privcmd-restrict-usage-in-unprivileged-domu.patch
xen-privcmd-add-boot-control-for-restricted-usage-in-domu.patch
-hwmon-mr75203-skip-reset-control-deassert-for-socs-t.patch
-hwmon-make-use-of-devm_clk_get_enabled.patch
-hwmon-axi-fan-control-use-device-firmware-agnostic-a.patch
-hwmon-axi-fan-control-make-use-of-dev_err_probe.patch
-hwmon-axi-fan-don-t-use-driver_override-as-irq-name.patch
sh-platform_early-remove-pdev-driver_override-check.patch
hid-asus-avoid-memory-leak-in-asus_report_fixup.patch
platform-x86-intel-hid-enable-5-button-array-on-thin.patch
+++ /dev/null
-From f699df3cc124ad390c4c8cb4b08ad7314c9806b3 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Wed, 14 Feb 2024 15:36:45 +0100
-Subject: hwmon: (axi-fan-control) Make use of dev_err_probe()
-
-From: Nuno Sa <nuno.sa@analog.com>
-
-[ Upstream commit ec823656c1e0e5f49e92ed86cee9fb26585da18e ]
-
-Use dev_err_probe() to slightly simplify printing errors during probe.
-No functional changes intended.
-
-Signed-off-by: Nuno Sa <nuno.sa@analog.com>
-Link: https://lore.kernel.org/r/20240214-axi-fan-control-no-of-v1-3-43ca656fe2e3@analog.com
-Signed-off-by: Guenter Roeck <linux@roeck-us.net>
-Stable-dep-of: 813bbc4d33d2 ("hwmon: axi-fan: don't use driver_override as IRQ name")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/hwmon/axi-fan-control.c | 40 +++++++++++++++------------------
- 1 file changed, 18 insertions(+), 22 deletions(-)
-
-diff --git a/drivers/hwmon/axi-fan-control.c b/drivers/hwmon/axi-fan-control.c
-index 49ef395eab7ad..61f24ef470728 100644
---- a/drivers/hwmon/axi-fan-control.c
-+++ b/drivers/hwmon/axi-fan-control.c
-@@ -465,10 +465,9 @@ static int axi_fan_control_probe(struct platform_device *pdev)
- return PTR_ERR(ctl->base);
-
- clk = devm_clk_get_enabled(&pdev->dev, NULL);
-- if (IS_ERR(clk)) {
-- dev_err(&pdev->dev, "clk_get failed with %ld\n", PTR_ERR(clk));
-- return PTR_ERR(clk);
-- }
-+ if (IS_ERR(clk))
-+ return dev_err_probe(&pdev->dev, PTR_ERR(clk),
-+ "clk_get failed\n");
-
- ctl->clk_rate = clk_get_rate(clk);
- if (!ctl->clk_rate)
-@@ -476,22 +475,20 @@ static int axi_fan_control_probe(struct platform_device *pdev)
-
- version = axi_ioread(ADI_AXI_REG_VERSION, ctl);
- if (ADI_AXI_PCORE_VER_MAJOR(version) !=
-- ADI_AXI_PCORE_VER_MAJOR((*id))) {
-- dev_err(&pdev->dev, "Major version mismatch. Expected %d.%.2d.%c, Reported %d.%.2d.%c\n",
-- ADI_AXI_PCORE_VER_MAJOR(*id),
-- ADI_AXI_PCORE_VER_MINOR(*id),
-- ADI_AXI_PCORE_VER_PATCH(*id),
-- ADI_AXI_PCORE_VER_MAJOR(version),
-- ADI_AXI_PCORE_VER_MINOR(version),
-- ADI_AXI_PCORE_VER_PATCH(version));
-- return -ENODEV;
-- }
-+ ADI_AXI_PCORE_VER_MAJOR((*id)))
-+ return dev_err_probe(&pdev->dev, -ENODEV,
-+ "Major version mismatch. Expected %d.%.2d.%c, Reported %d.%.2d.%c\n",
-+ ADI_AXI_PCORE_VER_MAJOR(*id),
-+ ADI_AXI_PCORE_VER_MINOR(*id),
-+ ADI_AXI_PCORE_VER_PATCH(*id),
-+ ADI_AXI_PCORE_VER_MAJOR(version),
-+ ADI_AXI_PCORE_VER_MINOR(version),
-+ ADI_AXI_PCORE_VER_PATCH(version));
-
- ret = axi_fan_control_init(ctl, &pdev->dev);
-- if (ret) {
-- dev_err(&pdev->dev, "Failed to initialize device\n");
-- return ret;
-- }
-+ if (ret)
-+ return dev_err_probe(&pdev->dev, ret,
-+ "Failed to initialize device\n");
-
- ctl->hdev = devm_hwmon_device_register_with_info(&pdev->dev,
- name,
-@@ -510,10 +507,9 @@ static int axi_fan_control_probe(struct platform_device *pdev)
- axi_fan_control_irq_handler,
- IRQF_ONESHOT | IRQF_TRIGGER_HIGH,
- pdev->driver_override, ctl);
-- if (ret) {
-- dev_err(&pdev->dev, "failed to request an irq, %d", ret);
-- return ret;
-- }
-+ if (ret)
-+ return dev_err_probe(&pdev->dev, ret,
-+ "failed to request an irq\n");
-
- return 0;
- }
---
-2.51.0
-
+++ /dev/null
-From 50f8eeb34216ce58cbbe31107f9b73fed952609d Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Wed, 14 Feb 2024 15:36:43 +0100
-Subject: hwmon: (axi-fan-control) Use device firmware agnostic API
-
-From: Nuno Sa <nuno.sa@analog.com>
-
-[ Upstream commit 1b5239f70fcd2d7fe86f0f5473006c2896db07a8 ]
-
-Don't directly use OF and use device property APIs. In addition, this
-makes the probe() code neater and also allow us to move the
-of_device_id table to it's natural place.
-
-While at it, make sure to explicitly include mod_devicetable.h for the
-of_device_id table.
-
-Signed-off-by: Nuno Sa <nuno.sa@analog.com>
-Link: https://lore.kernel.org/r/20240214-axi-fan-control-no-of-v1-1-43ca656fe2e3@analog.com
-Signed-off-by: Guenter Roeck <linux@roeck-us.net>
-Stable-dep-of: 813bbc4d33d2 ("hwmon: axi-fan: don't use driver_override as IRQ name")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/hwmon/axi-fan-control.c | 39 +++++++++++++++++----------------
- 1 file changed, 20 insertions(+), 19 deletions(-)
-
-diff --git a/drivers/hwmon/axi-fan-control.c b/drivers/hwmon/axi-fan-control.c
-index 8ed141f0d4a6b..49ef395eab7ad 100644
---- a/drivers/hwmon/axi-fan-control.c
-+++ b/drivers/hwmon/axi-fan-control.c
-@@ -13,8 +13,9 @@
- #include <linux/io.h>
- #include <linux/kernel.h>
- #include <linux/module.h>
--#include <linux/of.h>
-+#include <linux/mod_devicetable.h>
- #include <linux/platform_device.h>
-+#include <linux/property.h>
-
- /* register map */
- #define ADI_REG_RSTN 0x0080
-@@ -367,12 +368,12 @@ static irqreturn_t axi_fan_control_irq_handler(int irq, void *data)
- }
-
- static int axi_fan_control_init(struct axi_fan_control_data *ctl,
-- const struct device_node *np)
-+ const struct device *dev)
- {
- int ret;
-
- /* get fan pulses per revolution */
-- ret = of_property_read_u32(np, "pulses-per-revolution", &ctl->ppr);
-+ ret = device_property_read_u32(dev, "pulses-per-revolution", &ctl->ppr);
- if (ret)
- return ret;
-
-@@ -442,25 +443,16 @@ static struct attribute *axi_fan_control_attrs[] = {
- };
- ATTRIBUTE_GROUPS(axi_fan_control);
-
--static const u32 version_1_0_0 = ADI_AXI_PCORE_VER(1, 0, 'a');
--
--static const struct of_device_id axi_fan_control_of_match[] = {
-- { .compatible = "adi,axi-fan-control-1.00.a",
-- .data = (void *)&version_1_0_0},
-- {},
--};
--MODULE_DEVICE_TABLE(of, axi_fan_control_of_match);
--
- static int axi_fan_control_probe(struct platform_device *pdev)
- {
- struct axi_fan_control_data *ctl;
- struct clk *clk;
-- const struct of_device_id *id;
-+ const unsigned int *id;
- const char *name = "axi_fan_control";
- u32 version;
- int ret;
-
-- id = of_match_node(axi_fan_control_of_match, pdev->dev.of_node);
-+ id = device_get_match_data(&pdev->dev);
- if (!id)
- return -EINVAL;
-
-@@ -484,18 +476,18 @@ static int axi_fan_control_probe(struct platform_device *pdev)
-
- version = axi_ioread(ADI_AXI_REG_VERSION, ctl);
- if (ADI_AXI_PCORE_VER_MAJOR(version) !=
-- ADI_AXI_PCORE_VER_MAJOR((*(u32 *)id->data))) {
-+ ADI_AXI_PCORE_VER_MAJOR((*id))) {
- dev_err(&pdev->dev, "Major version mismatch. Expected %d.%.2d.%c, Reported %d.%.2d.%c\n",
-- ADI_AXI_PCORE_VER_MAJOR((*(u32 *)id->data)),
-- ADI_AXI_PCORE_VER_MINOR((*(u32 *)id->data)),
-- ADI_AXI_PCORE_VER_PATCH((*(u32 *)id->data)),
-+ ADI_AXI_PCORE_VER_MAJOR(*id),
-+ ADI_AXI_PCORE_VER_MINOR(*id),
-+ ADI_AXI_PCORE_VER_PATCH(*id),
- ADI_AXI_PCORE_VER_MAJOR(version),
- ADI_AXI_PCORE_VER_MINOR(version),
- ADI_AXI_PCORE_VER_PATCH(version));
- return -ENODEV;
- }
-
-- ret = axi_fan_control_init(ctl, pdev->dev.of_node);
-+ ret = axi_fan_control_init(ctl, &pdev->dev);
- if (ret) {
- dev_err(&pdev->dev, "Failed to initialize device\n");
- return ret;
-@@ -526,6 +518,15 @@ static int axi_fan_control_probe(struct platform_device *pdev)
- return 0;
- }
-
-+static const u32 version_1_0_0 = ADI_AXI_PCORE_VER(1, 0, 'a');
-+
-+static const struct of_device_id axi_fan_control_of_match[] = {
-+ { .compatible = "adi,axi-fan-control-1.00.a",
-+ .data = (void *)&version_1_0_0},
-+ {},
-+};
-+MODULE_DEVICE_TABLE(of, axi_fan_control_of_match);
-+
- static struct platform_driver axi_fan_control_driver = {
- .driver = {
- .name = "axi_fan_control_driver",
---
-2.51.0
-
+++ /dev/null
-From 10da045f0b20ab7427f4bcee70ba7648196feb22 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Tue, 3 Mar 2026 12:53:20 +0100
-Subject: hwmon: axi-fan: don't use driver_override as IRQ name
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-From: Danilo Krummrich <dakr@kernel.org>
-
-[ Upstream commit 813bbc4d33d2ca5b0da63e70ae13b60874f20d37 ]
-
-Do not use driver_override as IRQ name, as it is not guaranteed to point
-to a valid string; use NULL instead (which makes the devm IRQ helpers
-use dev_name()).
-
-Fixes: 8412b410fa5e ("hwmon: Support ADI Fan Control IP")
-Reviewed-by: Nuno Sá <nuno.sa@analog.com>
-Acked-by: Guenter Roeck <linux@roeck-us.net>
-Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-Link: https://patch.msgid.link/20260303115720.48783-4-dakr@kernel.org
-Signed-off-by: Danilo Krummrich <dakr@kernel.org>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/hwmon/axi-fan-control.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/hwmon/axi-fan-control.c b/drivers/hwmon/axi-fan-control.c
-index 61f24ef470728..ef51d05b4eb61 100644
---- a/drivers/hwmon/axi-fan-control.c
-+++ b/drivers/hwmon/axi-fan-control.c
-@@ -506,7 +506,7 @@ static int axi_fan_control_probe(struct platform_device *pdev)
- ret = devm_request_threaded_irq(&pdev->dev, ctl->irq, NULL,
- axi_fan_control_irq_handler,
- IRQF_ONESHOT | IRQF_TRIGGER_HIGH,
-- pdev->driver_override, ctl);
-+ NULL, ctl);
- if (ret)
- return dev_err_probe(&pdev->dev, ret,
- "failed to request an irq\n");
---
-2.51.0
-
+++ /dev/null
-From 705f03a3e0f866fd4fe28453e8b0386389331f9f Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Mon, 8 Aug 2022 08:06:40 +0200
-Subject: hwmon: Make use of devm_clk_get_enabled()
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-From: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
-
-[ Upstream commit 0dee25ebc7d315d9ee785ea5f457ae980979ea89 ]
-
-Several drivers manually register a devm handler to disable their clk.
-Convert them to devm_clk_get_enabled().
-
-Acked-by: Guenter Roeck <linux@roeck-us.net>
-Reviewed-by: Nuno Sá <nuno.sa@analog.com>
-Acked-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
-Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
-Signed-off-by: Guenter Roeck <linux@roeck-us.net>
-Stable-dep-of: 813bbc4d33d2 ("hwmon: axi-fan: don't use driver_override as IRQ name")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/hwmon/axi-fan-control.c | 15 +--------------
- drivers/hwmon/ltc2947-core.c | 17 +----------------
- drivers/hwmon/mr75203.c | 26 +-------------------------
- 3 files changed, 3 insertions(+), 55 deletions(-)
-
-diff --git a/drivers/hwmon/axi-fan-control.c b/drivers/hwmon/axi-fan-control.c
-index 7af18018a32ff..8ed141f0d4a6b 100644
---- a/drivers/hwmon/axi-fan-control.c
-+++ b/drivers/hwmon/axi-fan-control.c
-@@ -393,11 +393,6 @@ static int axi_fan_control_init(struct axi_fan_control_data *ctl,
- return ret;
- }
-
--static void axi_fan_control_clk_disable(void *clk)
--{
-- clk_disable_unprepare(clk);
--}
--
- static const struct hwmon_channel_info *axi_fan_control_info[] = {
- HWMON_CHANNEL_INFO(pwm, HWMON_PWM_INPUT),
- HWMON_CHANNEL_INFO(fan, HWMON_F_INPUT | HWMON_F_FAULT | HWMON_F_LABEL),
-@@ -477,20 +472,12 @@ static int axi_fan_control_probe(struct platform_device *pdev)
- if (IS_ERR(ctl->base))
- return PTR_ERR(ctl->base);
-
-- clk = devm_clk_get(&pdev->dev, NULL);
-+ clk = devm_clk_get_enabled(&pdev->dev, NULL);
- if (IS_ERR(clk)) {
- dev_err(&pdev->dev, "clk_get failed with %ld\n", PTR_ERR(clk));
- return PTR_ERR(clk);
- }
-
-- ret = clk_prepare_enable(clk);
-- if (ret)
-- return ret;
--
-- ret = devm_add_action_or_reset(&pdev->dev, axi_fan_control_clk_disable, clk);
-- if (ret)
-- return ret;
--
- ctl->clk_rate = clk_get_rate(clk);
- if (!ctl->clk_rate)
- return -EINVAL;
-diff --git a/drivers/hwmon/ltc2947-core.c b/drivers/hwmon/ltc2947-core.c
-index e918490f3ff75..f752701818192 100644
---- a/drivers/hwmon/ltc2947-core.c
-+++ b/drivers/hwmon/ltc2947-core.c
-@@ -956,13 +956,6 @@ static struct attribute *ltc2947_attrs[] = {
- };
- ATTRIBUTE_GROUPS(ltc2947);
-
--static void ltc2947_clk_disable(void *data)
--{
-- struct clk *extclk = data;
--
-- clk_disable_unprepare(extclk);
--}
--
- static int ltc2947_setup(struct ltc2947_data *st)
- {
- int ret;
-@@ -989,7 +982,7 @@ static int ltc2947_setup(struct ltc2947_data *st)
- return ret;
-
- /* check external clock presence */
-- extclk = devm_clk_get_optional(st->dev, NULL);
-+ extclk = devm_clk_get_optional_enabled(st->dev, NULL);
- if (IS_ERR(extclk))
- return dev_err_probe(st->dev, PTR_ERR(extclk),
- "Failed to get external clock\n");
-@@ -1007,14 +1000,6 @@ static int ltc2947_setup(struct ltc2947_data *st)
- return -EINVAL;
- }
-
-- ret = clk_prepare_enable(extclk);
-- if (ret)
-- return ret;
--
-- ret = devm_add_action_or_reset(st->dev, ltc2947_clk_disable,
-- extclk);
-- if (ret)
-- return ret;
- /* as in table 1 of the datasheet */
- if (rate_hz >= LTC2947_CLK_MIN && rate_hz <= 1000000)
- pre = 0;
-diff --git a/drivers/hwmon/mr75203.c b/drivers/hwmon/mr75203.c
-index 15ae3f4336340..71087741e27e2 100644
---- a/drivers/hwmon/mr75203.c
-+++ b/drivers/hwmon/mr75203.c
-@@ -487,24 +487,6 @@ static int pvt_get_regmap(struct platform_device *pdev, char *reg_name,
- return 0;
- }
-
--static void pvt_clk_disable(void *data)
--{
-- struct pvt_device *pvt = data;
--
-- clk_disable_unprepare(pvt->clk);
--}
--
--static int pvt_clk_enable(struct device *dev, struct pvt_device *pvt)
--{
-- int ret;
--
-- ret = clk_prepare_enable(pvt->clk);
-- if (ret)
-- return ret;
--
-- return devm_add_action_or_reset(dev, pvt_clk_disable, pvt);
--}
--
- static void pvt_reset_control_assert(void *data)
- {
- struct pvt_device *pvt = data;
-@@ -541,16 +523,10 @@ static int mr75203_probe(struct platform_device *pdev)
- if (ret)
- return ret;
-
-- pvt->clk = devm_clk_get(dev, NULL);
-+ pvt->clk = devm_clk_get_enabled(dev, NULL);
- if (IS_ERR(pvt->clk))
- return dev_err_probe(dev, PTR_ERR(pvt->clk), "failed to get clock\n");
-
-- ret = pvt_clk_enable(dev, pvt);
-- if (ret) {
-- dev_err(dev, "failed to enable clock\n");
-- return ret;
-- }
--
- pvt->rst = devm_reset_control_get_optional_exclusive(dev, NULL);
- if (IS_ERR(pvt->rst))
- return dev_err_probe(dev, PTR_ERR(pvt->rst),
---
-2.51.0
-
+++ /dev/null
-From 228b6e37686c3fa3421136d4a7b3f5b237885501 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Thu, 8 Sep 2022 15:24:37 +0000
-Subject: hwmon: (mr75203) skip reset-control deassert for SOCs that don't
- support it
-
-From: Eliav Farber <farbere@amazon.com>
-
-[ Upstream commit 493372f5d3df9905087a2ce9f8b5a2dca5af889f ]
-
-Don't fail the probe function and don't deassert the reset controller if
-a "reset" property doesn't exist in the device tree.
-
-Change is done for SOCs that don't support a reset controller.
-
-Signed-off-by: Eliav Farber <farbere@amazon.com>
-Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
-Link: https://lore.kernel.org/r/20220908152449.35457-10-farbere@amazon.com
-Signed-off-by: Guenter Roeck <linux@roeck-us.net>
-Stable-dep-of: 813bbc4d33d2 ("hwmon: axi-fan: don't use driver_override as IRQ name")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/hwmon/mr75203.c | 11 +++++++----
- 1 file changed, 7 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/hwmon/mr75203.c b/drivers/hwmon/mr75203.c
-index 05da83841536f..15ae3f4336340 100644
---- a/drivers/hwmon/mr75203.c
-+++ b/drivers/hwmon/mr75203.c
-@@ -551,14 +551,17 @@ static int mr75203_probe(struct platform_device *pdev)
- return ret;
- }
-
-- pvt->rst = devm_reset_control_get_exclusive(dev, NULL);
-+ pvt->rst = devm_reset_control_get_optional_exclusive(dev, NULL);
- if (IS_ERR(pvt->rst))
- return dev_err_probe(dev, PTR_ERR(pvt->rst),
- "failed to get reset control\n");
-
-- ret = pvt_reset_control_deassert(dev, pvt);
-- if (ret)
-- return dev_err_probe(dev, ret, "cannot deassert reset control\n");
-+ if (pvt->rst) {
-+ ret = pvt_reset_control_deassert(dev, pvt);
-+ if (ret)
-+ return dev_err_probe(dev, ret,
-+ "cannot deassert reset control\n");
-+ }
-
- ret = regmap_read(pvt->c_map, PVT_IP_CONFIG, &val);
- if(ret < 0)
---
-2.51.0
-
netfilter-nft_set_pipapo-split-gc-into-unlink-and-reclaim-phase.patch
xen-privcmd-restrict-usage-in-unprivileged-domu.patch
xen-privcmd-add-boot-control-for-restricted-usage-in-domu.patch
-hwmon-mr75203-skip-reset-control-deassert-for-socs-t.patch
-hwmon-make-use-of-devm_clk_get_enabled.patch
-hwmon-axi-fan-control-use-device-firmware-agnostic-a.patch
-hwmon-axi-fan-control-make-use-of-dev_err_probe.patch
-hwmon-axi-fan-don-t-use-driver_override-as-irq-name.patch
sh-platform_early-remove-pdev-driver_override-check.patch
bpf-release-module-btf-idr-before-module-unload.patch
hid-asus-avoid-memory-leak-in-asus_report_fixup.patch
+++ /dev/null
-From 06e89dd919312e41b7a842d3b66eb7bb3cc67d8f Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Wed, 14 Feb 2024 15:36:45 +0100
-Subject: hwmon: (axi-fan-control) Make use of dev_err_probe()
-
-From: Nuno Sa <nuno.sa@analog.com>
-
-[ Upstream commit ec823656c1e0e5f49e92ed86cee9fb26585da18e ]
-
-Use dev_err_probe() to slightly simplify printing errors during probe.
-No functional changes intended.
-
-Signed-off-by: Nuno Sa <nuno.sa@analog.com>
-Link: https://lore.kernel.org/r/20240214-axi-fan-control-no-of-v1-3-43ca656fe2e3@analog.com
-Signed-off-by: Guenter Roeck <linux@roeck-us.net>
-Stable-dep-of: 813bbc4d33d2 ("hwmon: axi-fan: don't use driver_override as IRQ name")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/hwmon/axi-fan-control.c | 40 +++++++++++++++------------------
- 1 file changed, 18 insertions(+), 22 deletions(-)
-
-diff --git a/drivers/hwmon/axi-fan-control.c b/drivers/hwmon/axi-fan-control.c
-index b847d91dd5bab..15a3455577dd7 100644
---- a/drivers/hwmon/axi-fan-control.c
-+++ b/drivers/hwmon/axi-fan-control.c
-@@ -466,10 +466,9 @@ static int axi_fan_control_probe(struct platform_device *pdev)
- return PTR_ERR(ctl->base);
-
- clk = devm_clk_get_enabled(&pdev->dev, NULL);
-- if (IS_ERR(clk)) {
-- dev_err(&pdev->dev, "clk_get failed with %ld\n", PTR_ERR(clk));
-- return PTR_ERR(clk);
-- }
-+ if (IS_ERR(clk))
-+ return dev_err_probe(&pdev->dev, PTR_ERR(clk),
-+ "clk_get failed\n");
-
- ctl->clk_rate = clk_get_rate(clk);
- if (!ctl->clk_rate)
-@@ -477,22 +476,20 @@ static int axi_fan_control_probe(struct platform_device *pdev)
-
- version = axi_ioread(ADI_AXI_REG_VERSION, ctl);
- if (ADI_AXI_PCORE_VER_MAJOR(version) !=
-- ADI_AXI_PCORE_VER_MAJOR((*id))) {
-- dev_err(&pdev->dev, "Major version mismatch. Expected %d.%.2d.%c, Reported %d.%.2d.%c\n",
-- ADI_AXI_PCORE_VER_MAJOR(*id),
-- ADI_AXI_PCORE_VER_MINOR(*id),
-- ADI_AXI_PCORE_VER_PATCH(*id),
-- ADI_AXI_PCORE_VER_MAJOR(version),
-- ADI_AXI_PCORE_VER_MINOR(version),
-- ADI_AXI_PCORE_VER_PATCH(version));
-- return -ENODEV;
-- }
-+ ADI_AXI_PCORE_VER_MAJOR((*id)))
-+ return dev_err_probe(&pdev->dev, -ENODEV,
-+ "Major version mismatch. Expected %d.%.2d.%c, Reported %d.%.2d.%c\n",
-+ ADI_AXI_PCORE_VER_MAJOR(*id),
-+ ADI_AXI_PCORE_VER_MINOR(*id),
-+ ADI_AXI_PCORE_VER_PATCH(*id),
-+ ADI_AXI_PCORE_VER_MAJOR(version),
-+ ADI_AXI_PCORE_VER_MINOR(version),
-+ ADI_AXI_PCORE_VER_PATCH(version));
-
- ret = axi_fan_control_init(ctl, &pdev->dev);
-- if (ret) {
-- dev_err(&pdev->dev, "Failed to initialize device\n");
-- return ret;
-- }
-+ if (ret)
-+ return dev_err_probe(&pdev->dev, ret,
-+ "Failed to initialize device\n");
-
- ctl->hdev = devm_hwmon_device_register_with_info(&pdev->dev,
- name,
-@@ -511,10 +508,9 @@ static int axi_fan_control_probe(struct platform_device *pdev)
- axi_fan_control_irq_handler,
- IRQF_ONESHOT | IRQF_TRIGGER_HIGH,
- pdev->driver_override, ctl);
-- if (ret) {
-- dev_err(&pdev->dev, "failed to request an irq, %d", ret);
-- return ret;
-- }
-+ if (ret)
-+ return dev_err_probe(&pdev->dev, ret,
-+ "failed to request an irq\n");
-
- return 0;
- }
---
-2.51.0
-
+++ /dev/null
-From 5f193643c6b952c12096ca8987b45975cc392adb Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Wed, 14 Feb 2024 15:36:43 +0100
-Subject: hwmon: (axi-fan-control) Use device firmware agnostic API
-
-From: Nuno Sa <nuno.sa@analog.com>
-
-[ Upstream commit 1b5239f70fcd2d7fe86f0f5473006c2896db07a8 ]
-
-Don't directly use OF and use device property APIs. In addition, this
-makes the probe() code neater and also allow us to move the
-of_device_id table to it's natural place.
-
-While at it, make sure to explicitly include mod_devicetable.h for the
-of_device_id table.
-
-Signed-off-by: Nuno Sa <nuno.sa@analog.com>
-Link: https://lore.kernel.org/r/20240214-axi-fan-control-no-of-v1-1-43ca656fe2e3@analog.com
-Signed-off-by: Guenter Roeck <linux@roeck-us.net>
-Stable-dep-of: 813bbc4d33d2 ("hwmon: axi-fan: don't use driver_override as IRQ name")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/hwmon/axi-fan-control.c | 39 +++++++++++++++++----------------
- 1 file changed, 20 insertions(+), 19 deletions(-)
-
-diff --git a/drivers/hwmon/axi-fan-control.c b/drivers/hwmon/axi-fan-control.c
-index 25abf28084c96..b847d91dd5bab 100644
---- a/drivers/hwmon/axi-fan-control.c
-+++ b/drivers/hwmon/axi-fan-control.c
-@@ -13,8 +13,9 @@
- #include <linux/io.h>
- #include <linux/kernel.h>
- #include <linux/module.h>
--#include <linux/of.h>
-+#include <linux/mod_devicetable.h>
- #include <linux/platform_device.h>
-+#include <linux/property.h>
-
- /* register map */
- #define ADI_REG_RSTN 0x0080
-@@ -368,12 +369,12 @@ static irqreturn_t axi_fan_control_irq_handler(int irq, void *data)
- }
-
- static int axi_fan_control_init(struct axi_fan_control_data *ctl,
-- const struct device_node *np)
-+ const struct device *dev)
- {
- int ret;
-
- /* get fan pulses per revolution */
-- ret = of_property_read_u32(np, "pulses-per-revolution", &ctl->ppr);
-+ ret = device_property_read_u32(dev, "pulses-per-revolution", &ctl->ppr);
- if (ret)
- return ret;
-
-@@ -443,25 +444,16 @@ static struct attribute *axi_fan_control_attrs[] = {
- };
- ATTRIBUTE_GROUPS(axi_fan_control);
-
--static const u32 version_1_0_0 = ADI_AXI_PCORE_VER(1, 0, 'a');
--
--static const struct of_device_id axi_fan_control_of_match[] = {
-- { .compatible = "adi,axi-fan-control-1.00.a",
-- .data = (void *)&version_1_0_0},
-- {},
--};
--MODULE_DEVICE_TABLE(of, axi_fan_control_of_match);
--
- static int axi_fan_control_probe(struct platform_device *pdev)
- {
- struct axi_fan_control_data *ctl;
- struct clk *clk;
-- const struct of_device_id *id;
-+ const unsigned int *id;
- const char *name = "axi_fan_control";
- u32 version;
- int ret;
-
-- id = of_match_node(axi_fan_control_of_match, pdev->dev.of_node);
-+ id = device_get_match_data(&pdev->dev);
- if (!id)
- return -EINVAL;
-
-@@ -485,18 +477,18 @@ static int axi_fan_control_probe(struct platform_device *pdev)
-
- version = axi_ioread(ADI_AXI_REG_VERSION, ctl);
- if (ADI_AXI_PCORE_VER_MAJOR(version) !=
-- ADI_AXI_PCORE_VER_MAJOR((*(u32 *)id->data))) {
-+ ADI_AXI_PCORE_VER_MAJOR((*id))) {
- dev_err(&pdev->dev, "Major version mismatch. Expected %d.%.2d.%c, Reported %d.%.2d.%c\n",
-- ADI_AXI_PCORE_VER_MAJOR((*(u32 *)id->data)),
-- ADI_AXI_PCORE_VER_MINOR((*(u32 *)id->data)),
-- ADI_AXI_PCORE_VER_PATCH((*(u32 *)id->data)),
-+ ADI_AXI_PCORE_VER_MAJOR(*id),
-+ ADI_AXI_PCORE_VER_MINOR(*id),
-+ ADI_AXI_PCORE_VER_PATCH(*id),
- ADI_AXI_PCORE_VER_MAJOR(version),
- ADI_AXI_PCORE_VER_MINOR(version),
- ADI_AXI_PCORE_VER_PATCH(version));
- return -ENODEV;
- }
-
-- ret = axi_fan_control_init(ctl, pdev->dev.of_node);
-+ ret = axi_fan_control_init(ctl, &pdev->dev);
- if (ret) {
- dev_err(&pdev->dev, "Failed to initialize device\n");
- return ret;
-@@ -527,6 +519,15 @@ static int axi_fan_control_probe(struct platform_device *pdev)
- return 0;
- }
-
-+static const u32 version_1_0_0 = ADI_AXI_PCORE_VER(1, 0, 'a');
-+
-+static const struct of_device_id axi_fan_control_of_match[] = {
-+ { .compatible = "adi,axi-fan-control-1.00.a",
-+ .data = (void *)&version_1_0_0},
-+ {},
-+};
-+MODULE_DEVICE_TABLE(of, axi_fan_control_of_match);
-+
- static struct platform_driver axi_fan_control_driver = {
- .driver = {
- .name = "axi_fan_control_driver",
---
-2.51.0
-
+++ /dev/null
-From 2307a2ff1de9fcb8b368d53fab2a9c8a2970528b Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Tue, 3 Mar 2026 12:53:20 +0100
-Subject: hwmon: axi-fan: don't use driver_override as IRQ name
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-From: Danilo Krummrich <dakr@kernel.org>
-
-[ Upstream commit 813bbc4d33d2ca5b0da63e70ae13b60874f20d37 ]
-
-Do not use driver_override as IRQ name, as it is not guaranteed to point
-to a valid string; use NULL instead (which makes the devm IRQ helpers
-use dev_name()).
-
-Fixes: 8412b410fa5e ("hwmon: Support ADI Fan Control IP")
-Reviewed-by: Nuno Sá <nuno.sa@analog.com>
-Acked-by: Guenter Roeck <linux@roeck-us.net>
-Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-Link: https://patch.msgid.link/20260303115720.48783-4-dakr@kernel.org
-Signed-off-by: Danilo Krummrich <dakr@kernel.org>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/hwmon/axi-fan-control.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/hwmon/axi-fan-control.c b/drivers/hwmon/axi-fan-control.c
-index 15a3455577dd7..ce20f54ce2a09 100644
---- a/drivers/hwmon/axi-fan-control.c
-+++ b/drivers/hwmon/axi-fan-control.c
-@@ -507,7 +507,7 @@ static int axi_fan_control_probe(struct platform_device *pdev)
- ret = devm_request_threaded_irq(&pdev->dev, ctl->irq, NULL,
- axi_fan_control_irq_handler,
- IRQF_ONESHOT | IRQF_TRIGGER_HIGH,
-- pdev->driver_override, ctl);
-+ NULL, ctl);
- if (ret)
- return dev_err_probe(&pdev->dev, ret,
- "failed to request an irq\n");
---
-2.51.0
-
-hwmon-axi-fan-control-use-device-firmware-agnostic-a.patch
-hwmon-axi-fan-control-make-use-of-dev_err_probe.patch
-hwmon-axi-fan-don-t-use-driver_override-as-irq-name.patch
sh-platform_early-remove-pdev-driver_override-check.patch
bpf-release-module-btf-idr-before-module-unload.patch
hid-asus-avoid-memory-leak-in-asus_report_fixup.patch