Linux-ARM-Kernel Archive on lore.kernel.org
 help / color / mirror / Atom feed
* Re: [PATCH 1/5] media: nxp: imx8-isi: Fix stream ID validation bypass in crossbar routing
From: Frank Li @ 2026-06-29 14:33 UTC (permalink / raw)
  To: Guoniu Zhou
  Cc: Laurent Pinchart, Mauro Carvalho Chehab, Frank Li, Sascha Hauer,
	Pengutronix Kernel Team, Fabio Estevam, Christian Hemp,
	Stefan Riedmueller, Jacopo Mondi, Dong Aisheng, Guoniu Zhou,
	linux-media, imx, linux-arm-kernel, linux-kernel, stable
In-Reply-To: <20260629-isi-v1-1-deebfdb1b07b@oss.nxp.com>

On Mon, Jun 29, 2026 at 03:44:55PM +0800, Guoniu Zhou wrote:
> The crossbar routing validation has a critical bug where it validates
> the wrong routing table, allowing userspace to bypass validation entirely.
>
> The __mxc_isi_crossbar_set_routing() function is called to validate and
> apply a new routing table from userspace. However, the validation loop
> iterates over state->routing (the currently active routing table) instead
> of the routing parameter (the new table being validated):
>
>     for_each_active_route(&state->routing, route) {
>
> This means userspace can submit any invalid routing configuration and it
> will pass validation as long as the currently active routing is valid.
> This is a security issue as it allows userspace to configure routes that
> violate hardware constraints, potentially causing undefined hardware
> behavior.
>
> Fix by validating the routing table that will actually be applied:
>
>     for_each_active_route(routing, route) {
>
> Additionally, add validation to enforce hardware constraints that were
> previously missing:
> - SOURCE stream must be 0 (ISI pipes are hardcoded to stream 0)
> - SINK stream must be less than the ISI channel count
> - Memory input can only route to the first pipeline (existing check)

Please use two patches to fix one, one fix for_each_active_route()
other other fix others.

Frank
>
> Fixes: cf21f328fcaf ("media: nxp: Add i.MX8 ISI driver")
> Cc: stable@vger.kernel.org
> Signed-off-by: Guoniu Zhou <guoniu.zhou@oss.nxp.com>
> ---
>  .../platform/nxp/imx8-isi/imx8-isi-crossbar.c      | 24 ++++++++++++++++++++--
>  1 file changed, 22 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/media/platform/nxp/imx8-isi/imx8-isi-crossbar.c b/drivers/media/platform/nxp/imx8-isi/imx8-isi-crossbar.c
> index c580c831972e..29f14d30dbbb 100644
> --- a/drivers/media/platform/nxp/imx8-isi/imx8-isi-crossbar.c
> +++ b/drivers/media/platform/nxp/imx8-isi/imx8-isi-crossbar.c
> @@ -106,8 +106,28 @@ static int __mxc_isi_crossbar_set_routing(struct v4l2_subdev *sd,
>  	if (ret)
>  		return ret;
>
> -	/* The memory input can be routed to the first pipeline only. */
> -	for_each_active_route(&state->routing, route) {
> +	/*
> +	 * Validate routes against hardware constraints:
> +	 * - SOURCE stream must be 0 (pipes are hardcoded to stream 0)
> +	 * - SINK stream must be < ISI channel count
> +	 * - Memory input can only route to the first pipeline
> +	 */
> +	for_each_active_route(routing, route) {
> +		if (route->source_stream != 0) {
> +			dev_dbg(xbar->isi->dev,
> +				"route to pipe %u must use source_stream=0, got %u\n",
> +				route->source_pad - xbar->num_sinks,
> +				route->source_stream);
> +			return -ENXIO;
> +		}
> +
> +		if (route->sink_stream >= xbar->num_sources) {
> +			dev_dbg(xbar->isi->dev,
> +				"sink_stream %u exceeds hardware limit %u\n",
> +				route->sink_stream, xbar->num_sources - 1);
> +			return -ENXIO;
> +		}
> +
>  		if (route->sink_pad == xbar->num_sinks - 1 &&
>  		    route->source_pad != xbar->num_sinks) {
>  			dev_dbg(xbar->isi->dev,
>
> --
> 2.34.1
>
>


^ permalink raw reply

* Re: [PATCH v2 2/2] arm64: dts: qcom: kaanapali: fix traceNoC probe issue
From: Leo Yan @ 2026-06-29 14:28 UTC (permalink / raw)
  To: Jie Gan
  Cc: Suzuki K Poulose, Mike Leach, James Clark, Konrad Dybcio,
	Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Tingwei Zhang, Jingyi Wang, Abel Vesa,
	Yuanfang Zhang, linux-arm-msm, devicetree, linux-kernel,
	coresight, linux-arm-kernel
In-Reply-To: <9432df20-08bf-4134-b4b9-e6b5d618af81@oss.qualcomm.com>

On Mon, Jun 29, 2026 at 10:08:17AM +0800, Jie Gan wrote:

[...]

> Can I fix the issue by adding "arm,primecell-periphid" property. That's
> would be the best temp solution as it avoids breaking the original design of
> both the TraceNoC AMBA driver and interconnect TraceNoC platform driver.

Before proceeding with the "arm,primecell-periphid" property, could you
clarify a bit:

  - For an interconnect TraceNoC, what would be the consequence of
    enabling ATID? Would it simply be a no-op, or are there any side
    effects? Or is the concern that the trace IDs could be exhausted?

  - How can you guarantee that a interconnect TraceNoC will never
    require ATID in the future?

> The TraceNoC device here must be treated as an AMBA device and I am
> continuing to investigate the issue with our hardware team.

> We aim to fix it from hardware perspetive for existing platforms if possible
> and ensure it is fixed in future platforms.

I'm concerned that all of use end up repeatedly fixing similar issues
whenever hardware configurations change or modules are reused in
different topologies.

For example, if future platforms may require ATID support for an
interconnect TraceNoC, then the issue will pop up again.

Thanks,
Leo


^ permalink raw reply

* Re: [PATCH 00/13] treewide: replace linux/gpio.h
From: Arnd Bergmann @ 2026-06-29 14:24 UTC (permalink / raw)
  To: Andreas Schwab, Arnd Bergmann
  Cc: open list:GPIO SUBSYSTEM, Bartosz Golaszewski, Andrew Lunn,
	Sebastian Hesselbarth, Gregory Clement, Frank Li, Robert Jarzmik,
	Krzysztof Kozlowski, Greg Ungerer, Thomas Bogendoerfer,
	Hauke Mehrtens, Rafał Miłecki, Yoshinori Sato,
	John Paul Adrian Glaubitz, Linus Walleij, Dmitry Torokhov,
	Jakub Kicinski, Paolo Abeni, Dominik Brodowski, linux-kernel,
	linux-arm-kernel, linux-samsung-soc, patches, linux-m68k,
	linux-mips, linux-sh, linux-input, linux-media, Netdev,
	linux-sunxi, linux-phy, linux-rockchip, linux-sound
In-Reply-To: <mvmik71win7.fsf@suse.de>

On Mon, Jun 29, 2026, at 16:01, Andreas Schwab wrote:
> On Jun 29 2026, Arnd Bergmann wrote:
>
>> From: Arnd Bergmann <arnd@arndb.de>
>>
>> The linux/gpio.h header used to be the global definition for the gpio
>> interfaces, with 1100 users back in linux-3.17. In linux-7.2, only about
>> 130 of those remain, so this series cleans out the rest.
>>
>> In each subsystem, we can replace the header either with
>> linux/gpio/consumer.h for users of the modern gpio descriptor interface,
>
> A few of them already used <linux/gpio/consumer.h>, and is duplicated
> now.

Indeed, I have removed the extra ones now and folded those into
the patches.

     Arnd

diff --git a/drivers/gpib/gpio/gpib_bitbang.c b/drivers/gpib/gpio/gpib_bitbang.c
index 2e8d895db06a..34d14b94a0b8 100644
--- a/drivers/gpib/gpio/gpib_bitbang.c
+++ b/drivers/gpib/gpio/gpib_bitbang.c
@@ -64,7 +64,6 @@
 #include <linux/gpio/consumer.h>
 #include <linux/gpio/driver.h>
 #include <linux/gpio/machine.h>
-#include <linux/gpio/consumer.h>
 #include <linux/irq.h>
 
 static int sn7516x_used = 1, sn7516x;
diff --git a/drivers/input/keyboard/matrix_keypad.c b/drivers/input/keyboard/matrix_keypad.c
index 98d0269a978f..8863b741d1a3 100644
--- a/drivers/input/keyboard/matrix_keypad.c
+++ b/drivers/input/keyboard/matrix_keypad.c
@@ -16,7 +16,6 @@
 #include <linux/interrupt.h>
 #include <linux/jiffies.h>
 #include <linux/module.h>
-#include <linux/gpio/consumer.h>
 #include <linux/input/matrix_keypad.h>
 #include <linux/slab.h>
 #include <linux/of.h>
diff --git a/drivers/input/misc/soc_button_array.c b/drivers/input/misc/soc_button_array.c
index eb11bf2e9436..a6c984205123 100644
--- a/drivers/input/misc/soc_button_array.c
+++ b/drivers/input/misc/soc_button_array.c
@@ -15,7 +15,6 @@
 #include <linux/dmi.h>
 #include <linux/gpio/consumer.h>
 #include <linux/gpio_keys.h>
-#include <linux/gpio/consumer.h>
 #include <linux/platform_device.h>
 
 static bool use_low_level_irq;
diff --git a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c
index 88c5c52e0e38..5f5adc9c9e83 100644
--- a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c
+++ b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c
@@ -16,7 +16,6 @@
 #include <linux/net_tstamp.h>
 #include <linux/ptp_classify.h>
 #include <linux/ptp_pch.h>
-#include <linux/gpio/consumer.h>
 
 #define PCH_GBE_MAR_ENTRIES		16
 #define PCH_GBE_SHORT_PKT		64
diff --git a/drivers/net/phy/mdio_device.c b/drivers/net/phy/mdio_device.c
index a18263d5bb02..06151f207134 100644
--- a/drivers/net/phy/mdio_device.c
+++ b/drivers/net/phy/mdio_device.c
@@ -9,7 +9,6 @@
 #include <linux/delay.h>
 #include <linux/errno.h>
 #include <linux/gpio/consumer.h>
-#include <linux/gpio/consumer.h>
 #include <linux/init.h>
 #include <linux/interrupt.h>
 #include <linux/kernel.h>
diff --git a/drivers/phy/broadcom/phy-bcm-ns2-usbdrd.c b/drivers/phy/broadcom/phy-bcm-ns2-usbdrd.c
index d9c06129ed23..171bf097a8b8 100644
--- a/drivers/phy/broadcom/phy-bcm-ns2-usbdrd.c
+++ b/drivers/phy/broadcom/phy-bcm-ns2-usbdrd.c
@@ -4,7 +4,6 @@
 #include <linux/delay.h>
 #include <linux/extcon-provider.h>
 #include <linux/gpio/consumer.h>
-#include <linux/gpio/consumer.h>
 #include <linux/init.h>
 #include <linux/interrupt.h>
 #include <linux/io.h>
diff --git a/drivers/phy/ti/phy-j721e-wiz.c b/drivers/phy/ti/phy-j721e-wiz.c
index 2233babc0078..1f5dba49ace4 100644
--- a/drivers/phy/ti/phy-j721e-wiz.c
+++ b/drivers/phy/ti/phy-j721e-wiz.c
@@ -12,7 +12,6 @@
 #include <linux/clk.h>
 #include <linux/clk-provider.h>
 #include <linux/gpio/consumer.h>
-#include <linux/gpio/consumer.h>
 #include <linux/io.h>
 #include <linux/module.h>
 #include <linux/mfd/syscon.h>
diff --git a/include/linux/mfd/ti-lmu.h b/include/linux/mfd/ti-lmu.h
index 5040c7d1e1b9..2089ec5124e8 100644
--- a/include/linux/mfd/ti-lmu.h
+++ b/include/linux/mfd/ti-lmu.h
@@ -10,7 +10,6 @@
 #ifndef __MFD_TI_LMU_H__
 #define __MFD_TI_LMU_H__
 
-#include <linux/gpio/consumer.h>
 #include <linux/notifier.h>
 #include <linux/regmap.h>
 #include <linux/gpio/consumer.h>
diff --git a/sound/soc/codecs/cs42l84.c b/sound/soc/codecs/cs42l84.c
index 36c3abc21fed..f2448b4c11fc 100644
--- a/sound/soc/codecs/cs42l84.c
+++ b/sound/soc/codecs/cs42l84.c
@@ -16,7 +16,6 @@
 #include <linux/init.h>
 #include <linux/delay.h>
 #include <linux/i2c.h>
-#include <linux/gpio/consumer.h>
 #include <linux/regmap.h>
 #include <linux/slab.h>
 #include <linux/acpi.h>
diff --git a/sound/soc/codecs/dmic.c b/sound/soc/codecs/dmic.c
index 8b05d6f9b429..cbed11136935 100644
--- a/sound/soc/codecs/dmic.c
+++ b/sound/soc/codecs/dmic.c
@@ -7,7 +7,6 @@
 
 #include <linux/delay.h>
 #include <linux/gpio/consumer.h>
-#include <linux/gpio/consumer.h>
 #include <linux/platform_device.h>
 #include <linux/regulator/consumer.h>
 #include <linux/slab.h>


^ permalink raw reply related

* [PATCH] clk: mediatek: fix memory leak on module removal
From: Akari Tsuyukusa @ 2026-06-29 14:23 UTC (permalink / raw)
  To: Michael Turquette, Stephen Boyd, Brian Masney, Matthias Brugger,
	AngeloGioacchino Del Regno, Chen-Yu Tsai, Miles Chen
  Cc: Akari Tsuyukusa, open list:COMMON CLK FRAMEWORK,
	open list:ARM/Mediatek SoC support,
	moderated list:ARM/Mediatek SoC support,
	moderated list:ARM/Mediatek SoC support

Some MediaTek clock drivers do not call platform_set_drvdata() during
probe(), but their remove() callback calls platform_get_drvdata(). This
results in platform_get_drvdata() returning NULL, which leads to calling
mtk_free_clk_data(NULL) -> kfree(NULL).
Therefore, the actual clk_data is never released, causing a memory leak.

Fix this by calling platform_set_drvdata() during probe.

Fixes: 124294ff468f ("clk: mediatek: mt8192: Move apmixedsys clock driver to its own file")
Fixes: 4c02c9af3cb9 ("clk: mediatek: mt8173: Break down clock drivers and allow module build")
Fixes: 54b7026f011e ("clk: mediatek: mt8135-apmixedsys: Convert to platform_driver and module")
Fixes: c50e2ea6507b ("clk: mediatek: mt7622-apmixedsys: Add .remove() callback for module build")
Fixes: 0d363282bb0c ("clk: mediatek: Add MediaTek Helio X10 MT6795 clock drivers")
Fixes: c6368ce86435 ("clk: mediatek: mt2712-apmixedsys: Add .remove() callback for module build")
Fixes: 838b86331c5e ("clk: mediatek: mt7622: Move infracfg to clk-mt7622-infracfg.c")
Signed-off-by: Akari Tsuyukusa <akkun11.open@gmail.com>
---
 drivers/clk/mediatek/clk-mt2712-apmixedsys.c | 1 +
 drivers/clk/mediatek/clk-mt6795-apmixedsys.c | 1 +
 drivers/clk/mediatek/clk-mt6795-infracfg.c   | 1 +
 drivers/clk/mediatek/clk-mt6795-pericfg.c    | 1 +
 drivers/clk/mediatek/clk-mt7622-apmixedsys.c | 1 +
 drivers/clk/mediatek/clk-mt7622-infracfg.c   | 1 +
 drivers/clk/mediatek/clk-mt8135-apmixedsys.c | 1 +
 drivers/clk/mediatek/clk-mt8173-apmixedsys.c | 1 +
 drivers/clk/mediatek/clk-mt8173-infracfg.c   | 1 +
 drivers/clk/mediatek/clk-mt8192-apmixedsys.c | 1 +
 10 files changed, 10 insertions(+)

diff --git a/drivers/clk/mediatek/clk-mt2712-apmixedsys.c b/drivers/clk/mediatek/clk-mt2712-apmixedsys.c
index 54b18e9f83f8..24522fc24019 100644
--- a/drivers/clk/mediatek/clk-mt2712-apmixedsys.c
+++ b/drivers/clk/mediatek/clk-mt2712-apmixedsys.c
@@ -129,6 +129,7 @@ static int clk_mt2712_apmixed_probe(struct platform_device *pdev)
 		goto unregister_plls;
 	}
 
+	platform_set_drvdata(pdev, clk_data);
 	return 0;
 
 unregister_plls:
diff --git a/drivers/clk/mediatek/clk-mt6795-apmixedsys.c b/drivers/clk/mediatek/clk-mt6795-apmixedsys.c
index 123d5d7fea85..b607592a7c37 100644
--- a/drivers/clk/mediatek/clk-mt6795-apmixedsys.c
+++ b/drivers/clk/mediatek/clk-mt6795-apmixedsys.c
@@ -175,6 +175,7 @@ static int clk_mt6795_apmixed_probe(struct platform_device *pdev)
 	dev_dbg(dev, "Performing initial setup for MD1\n");
 	clk_mt6795_apmixed_setup_md1(base);
 
+	platform_set_drvdata(pdev, clk_data);
 	return 0;
 
 unregister_ref2usb:
diff --git a/drivers/clk/mediatek/clk-mt6795-infracfg.c b/drivers/clk/mediatek/clk-mt6795-infracfg.c
index e4559569f5b0..12146bb3b726 100644
--- a/drivers/clk/mediatek/clk-mt6795-infracfg.c
+++ b/drivers/clk/mediatek/clk-mt6795-infracfg.c
@@ -116,6 +116,7 @@ static int clk_mt6795_infracfg_probe(struct platform_device *pdev)
 	if (ret)
 		goto unregister_cpumuxes;
 
+	platform_set_drvdata(pdev, clk_data);
 	return 0;
 
 unregister_cpumuxes:
diff --git a/drivers/clk/mediatek/clk-mt6795-pericfg.c b/drivers/clk/mediatek/clk-mt6795-pericfg.c
index d48240eb2a67..28faeb2e657a 100644
--- a/drivers/clk/mediatek/clk-mt6795-pericfg.c
+++ b/drivers/clk/mediatek/clk-mt6795-pericfg.c
@@ -125,6 +125,7 @@ static int clk_mt6795_pericfg_probe(struct platform_device *pdev)
 	if (ret)
 		goto unregister_composites;
 
+	platform_set_drvdata(pdev, clk_data);
 	return 0;
 
 unregister_composites:
diff --git a/drivers/clk/mediatek/clk-mt7622-apmixedsys.c b/drivers/clk/mediatek/clk-mt7622-apmixedsys.c
index 8a29eaab0cfc..a9fc2e5536b3 100644
--- a/drivers/clk/mediatek/clk-mt7622-apmixedsys.c
+++ b/drivers/clk/mediatek/clk-mt7622-apmixedsys.c
@@ -109,6 +109,7 @@ static int clk_mt7622_apmixed_probe(struct platform_device *pdev)
 	if (ret)
 		goto unregister_gates;
 
+	platform_set_drvdata(pdev, clk_data);
 	return 0;
 
 unregister_gates:
diff --git a/drivers/clk/mediatek/clk-mt7622-infracfg.c b/drivers/clk/mediatek/clk-mt7622-infracfg.c
index cfdf3b07c3e0..b44baf521d2f 100644
--- a/drivers/clk/mediatek/clk-mt7622-infracfg.c
+++ b/drivers/clk/mediatek/clk-mt7622-infracfg.c
@@ -90,6 +90,7 @@ static int clk_mt7622_infracfg_probe(struct platform_device *pdev)
 	if (ret)
 		goto unregister_cpumuxes;
 
+	platform_set_drvdata(pdev, clk_data);
 	return 0;
 
 unregister_cpumuxes:
diff --git a/drivers/clk/mediatek/clk-mt8135-apmixedsys.c b/drivers/clk/mediatek/clk-mt8135-apmixedsys.c
index 19e4ee489ec3..41e5cfbcbb76 100644
--- a/drivers/clk/mediatek/clk-mt8135-apmixedsys.c
+++ b/drivers/clk/mediatek/clk-mt8135-apmixedsys.c
@@ -66,6 +66,7 @@ static int clk_mt8135_apmixed_probe(struct platform_device *pdev)
 	if (ret)
 		goto unregister_plls;
 
+	platform_set_drvdata(pdev, clk_data);
 	return 0;
 
 unregister_plls:
diff --git a/drivers/clk/mediatek/clk-mt8173-apmixedsys.c b/drivers/clk/mediatek/clk-mt8173-apmixedsys.c
index d7d416172ab3..fe36d2eac3da 100644
--- a/drivers/clk/mediatek/clk-mt8173-apmixedsys.c
+++ b/drivers/clk/mediatek/clk-mt8173-apmixedsys.c
@@ -179,6 +179,7 @@ static int clk_mt8173_apmixed_probe(struct platform_device *pdev)
 	if (r)
 		goto unregister_ref2usb;
 
+	platform_set_drvdata(pdev, clk_data);
 	return 0;
 
 unregister_ref2usb:
diff --git a/drivers/clk/mediatek/clk-mt8173-infracfg.c b/drivers/clk/mediatek/clk-mt8173-infracfg.c
index fa2d1d557e04..b923b73c64f6 100644
--- a/drivers/clk/mediatek/clk-mt8173-infracfg.c
+++ b/drivers/clk/mediatek/clk-mt8173-infracfg.c
@@ -128,6 +128,7 @@ static int clk_mt8173_infracfg_probe(struct platform_device *pdev)
 	if (r)
 		goto unregister_clk_hw;
 
+	platform_set_drvdata(pdev, clk_data);
 	return 0;
 
 unregister_clk_hw:
diff --git a/drivers/clk/mediatek/clk-mt8192-apmixedsys.c b/drivers/clk/mediatek/clk-mt8192-apmixedsys.c
index b0563a285bd6..446c55b77777 100644
--- a/drivers/clk/mediatek/clk-mt8192-apmixedsys.c
+++ b/drivers/clk/mediatek/clk-mt8192-apmixedsys.c
@@ -176,6 +176,7 @@ static int clk_mt8192_apmixed_probe(struct platform_device *pdev)
 	if (r)
 		goto unregister_gates;
 
+	platform_set_drvdata(pdev, clk_data);
 	return r;
 
 unregister_gates:
-- 
2.54.0



^ permalink raw reply related

* Re: [PATCH v3] irqchip/gic-v3-its: Fix OF node reference leak
From: Zenghui Yu @ 2026-06-29 12:19 UTC (permalink / raw)
  To: Yuho Choi; +Cc: Marc Zyngier, Thomas Gleixner, linux-arm-kernel
In-Reply-To: <20260628220723.1699972-1-dbgh9129@gmail.com>

On 6/29/26 6:07 AM, Yuho Choi wrote:
> of_get_cpu_node() returns a referenced device node. In
> its_cpu_init_collection(), the Cavium 23144 workaround only uses the
> node to compare the CPU NUMA node, but the reference is never dropped.
> 
> Use the device_node cleanup helper for the CPU node reference so it is
> released when leaving the workaround block, including the NUMA mismatch
> return path.
> 
> Fixes: fbf8f40e1658 ("irqchip/gicv3-its: numa: Enable workaround for Cavium thunderx erratum 23144")
> Signed-off-by: Yuho Choi <dbgh9129@gmail.com>
> Acked-by: Marc Zyngier <maz@kernel.org>
> ---
> Changes in v3:
> - Keep the __free(device_node) assignment on a single line.
> - Fix indentation in the Cavium 23144 workaround block.
> - Add Marc's Acked-by.
> Changes in v2:
> - Use __free(device_node) for the CPU node reference.
> - Correct the Fixes tag to fbf8f40e1658.
>  drivers/irqchip/irq-gic-v3-its.c | 6 ++----
>  1 file changed, 2 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/irqchip/irq-gic-v3-its.c b/drivers/irqchip/irq-gic-v3-its.c
> index b57d81ad33a0..6f5811aae59c 100644
> --- a/drivers/irqchip/irq-gic-v3-its.c
> +++ b/drivers/irqchip/irq-gic-v3-its.c
> @@ -3290,11 +3290,9 @@ static void its_cpu_init_collection(struct its_node *its)
>  
>  	/* avoid cross node collections and its mapping */
>  	if (its->flags & ITS_FLAGS_WORKAROUND_CAVIUM_23144) {
> -		struct device_node *cpu_node;
> +		struct device_node *cpu_node __free(device_node) = of_get_cpu_node(cpu, NULL);
>  
> -		cpu_node = of_get_cpu_node(cpu, NULL);
> -		if (its->numa_node != NUMA_NO_NODE &&
> -			its->numa_node != of_node_to_nid(cpu_node))
> +		if (its->numa_node != NUMA_NO_NODE && its->numa_node != of_node_to_nid(cpu_node))
>  			return;
>  	}

Reviewed-by: Zenghui Yu (Huawei) <zenghui.yu@linux.dev>

Thanks,
Zenghui


^ permalink raw reply

* Re: [PATCH v7 7/7] KVM: arm64: Enforce strict SBZ checks in the FF-A proxy
From: Will Deacon @ 2026-06-29 14:17 UTC (permalink / raw)
  To: Sebastian Ene
  Cc: catalin.marinas, maz, oupton, joey.gouly, korneld, kvmarm,
	linux-arm-kernel, linux-kernel, android-kvm, mrigendra.chaubey,
	perlarsen, suzuki.poulose, vdonnefort, yuzenghui
In-Reply-To: <20260629093558.2425257-8-sebastianene@google.com>

On Mon, Jun 29, 2026 at 09:35:58AM +0000, Sebastian Ene wrote:
> Introduce a helper method ffa_check_unused_args_sbz to enforce strict
> arguments checking when the hypervisor acts as a relayer between the
> host and Trustzone.
> 
> Signed-off-by: Sebastian Ene <sebastianene@google.com>
> Reviewed-by: Vincent Donnefort <vdonnefort@google.com>
> Acked-by: Will Deacon <will@kernel.org>
> ---
>  arch/arm64/kvm/hyp/nvhe/ffa.c | 96 ++++++++++++++++++++++++++++++++++-
>  1 file changed, 95 insertions(+), 1 deletion(-)
> 
> diff --git a/arch/arm64/kvm/hyp/nvhe/ffa.c b/arch/arm64/kvm/hyp/nvhe/ffa.c
> index 712811e89435..334f8a28d942 100644
> --- a/arch/arm64/kvm/hyp/nvhe/ffa.c
> +++ b/arch/arm64/kvm/hyp/nvhe/ffa.c
> @@ -74,6 +74,21 @@ static u32 hyp_ffa_version;
>  static bool has_version_negotiated;
>  static hyp_spinlock_t version_lock;
>  
> +static bool ffa_check_unused_args_sbz(struct kvm_cpu_context *ctxt, int first_reg)
> +{
> +	DECLARE_REG(u32, func_id, ctxt, 0);
> +	int reg, end_reg = 7;
> +
> +	if (hyp_ffa_version >= FFA_VERSION_1_2 && ARM_SMCCC_IS_64(func_id))
> +		end_reg = 17;

Sashiko gets angry about this check, but I don't think we need to change
anything. Yes, there is a data race on hyp_ffa_version if you issue
FFA_VERSION concurrently with itself, but FFA_VERSION is a 32-bit call
so it's all moot.

In fact, a 64-bit FFA_VERSION would be problematic for other reasons,
because a single (non-racy) CPU trying to attempt a version downgrade
could end up passing non-zero values in registers that SBZ in the running
version (of which it knows nothing about).

So my Ack stands.

Will


^ permalink raw reply

* Re: [PATCH v4 2/2] i2c: imx: Cancel hrtimer before clearing slave pointer
From: Frank Li @ 2026-06-29 14:14 UTC (permalink / raw)
  To: Liem
  Cc: carlos.song, andi.shyti, biwen.li, festevam, frank.li, imx,
	kernel, linux-arm-kernel, linux-i2c, linux-kernel, o.rempel,
	s.hauer, stable, wsa, Carlos Song
In-Reply-To: <20260629023829.152651-3-liem16213@gmail.com>

On Mon, Jun 29, 2026 at 10:38:29AM +0800, Liem wrote:
> In i2c_imx_unreg_slave(), the slave pointer is set to NULL after
> disabling interrupts.  However, a pending interrupt might already
> have started the hrtimer (i2c_imx_slave_timeout) before the pointer
> was cleared.  If the hrtimer fires after i2c_imx->slave is set to
> NULL, the timer callback i2c_imx_slave_finish_op() will call
> i2c_imx_slave_event() with a NULL slave pointer, which results in a
> use-after-free / NULL pointer dereference.
>
> Fix by canceling the hrtimer and waiting for it to complete after
> disabling interrupts, before clearing the slave pointer.
>
> Fixes: f7414cd6923f ("i2c: imx: support slave mode for imx I2C driver")
> Cc: stable@vger.kernel.org
> Acked-by: Carlos Song <carlos.song@nxp.com>
> Signed-off-by: Liem <liem16213@gmail.com>
> ---

Reviewed-by: Frank Li <Frank.Li@nxp.com>

> v3 -> v4: No changes, added Acked-by from Carlos Song.
> ---
>  drivers/i2c/busses/i2c-imx.c | 1 +
>  1 file changed, 1 insertion(+)
>
> diff --git a/drivers/i2c/busses/i2c-imx.c b/drivers/i2c/busses/i2c-imx.c
> index 2398c406e913..b1c6581db774 100644
> --- a/drivers/i2c/busses/i2c-imx.c
> +++ b/drivers/i2c/busses/i2c-imx.c
> @@ -960,6 +960,7 @@ static int i2c_imx_unreg_slave(struct i2c_client *client)
>
>  	i2c_imx_reset_regs(i2c_imx);
>
> +	hrtimer_cancel(&i2c_imx->slave_timer);
>  	i2c_imx->slave = NULL;
>
>  	/* Suspend */
> --
> 2.34.1
>


^ permalink raw reply

* Re: [PATCH v4 1/2] i2c: imx: Fix slave registration race and error handling
From: Frank Li @ 2026-06-29 14:13 UTC (permalink / raw)
  To: Liem
  Cc: carlos.song, andi.shyti, biwen.li, festevam, frank.li, imx,
	kernel, linux-arm-kernel, linux-i2c, linux-kernel, o.rempel,
	s.hauer, stable, wsa
In-Reply-To: <20260629023829.152651-2-liem16213@gmail.com>

On Mon, Jun 29, 2026 at 10:38:28AM +0800, Liem wrote:
> In i2c_imx_reg_slave(), the slave pointer was assigned before
> pm_runtime_resume_and_get().  If pm_runtime_resume_and_get() failed,
> the error path returned without clearing i2c_imx->slave, leaving it
> non-NULL and causing all subsequent registration attempts to fail
> with -EBUSY.
>
> Additionally, because this driver uses a shared IRQ, the interrupt
> handler i2c_imx_isr() can execute concurrently and, after acquiring
> slave_lock, dereference i2c_imx->slave.  The previous fix attempt
> added a lockless i2c_imx->slave = NULL on the error path, but that
> could race with the ISR under the lock and still cause a NULL pointer
> dereference.
>
> Fix both issues by deferring the assignment of i2c_imx->slave and
> i2c_imx->last_slave_event to after a successful resume, and by
> performing the assignment inside the slave_lock critical section.
> This guarantees that the slave pointer is never left stale on the
> error path and is always valid when observed by the interrupt handler.
>
> Fixes: f7414cd6923f ("i2c: imx: support slave mode for imx I2C driver")
> Cc: stable@vger.kernel.org
> Signed-off-by: Liem <liem16213@gmail.com>
> ---

anthor question, why v1..v3 use the thread? Suppose each new version should
start new thread. Do you use --in-reply-to in send patch?

Reviewed-by: Frank Li <Frank.Li@nxp.com>

> v3 -> v4:
>   - Instead of clearing the slave pointer on error, defer the
>     assignment until after pm_runtime_resume_and_get() succeeds,
>     and take slave_lock to avoid racing with the shared IRQ handler.
>     Suggested by Sashiko and Carlos Song
> ---
>  drivers/i2c/busses/i2c-imx.c | 8 +++++---
>  1 file changed, 5 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/i2c/busses/i2c-imx.c b/drivers/i2c/busses/i2c-imx.c
> index 28313d0fad37..2398c406e913 100644
> --- a/drivers/i2c/busses/i2c-imx.c
> +++ b/drivers/i2c/busses/i2c-imx.c
> @@ -930,9 +930,6 @@ static int i2c_imx_reg_slave(struct i2c_client *client)
>  	if (i2c_imx->slave)
>  		return -EBUSY;
>
> -	i2c_imx->slave = client;
> -	i2c_imx->last_slave_event = I2C_SLAVE_STOP;
> -
>  	/* Resume */
>  	ret = pm_runtime_resume_and_get(i2c_imx->adapter.dev.parent);
>  	if (ret < 0) {
> @@ -940,6 +937,11 @@ static int i2c_imx_reg_slave(struct i2c_client *client)
>  		return ret;
>  	}
>
> +	scoped_guard(spinlock_irqsave, &i2c_imx->slave_lock) {
> +		i2c_imx->slave = client;
> +		i2c_imx->last_slave_event = I2C_SLAVE_STOP;
> +	}
> +
>  	i2c_imx_slave_init(i2c_imx);
>
>  	return 0;
> --
> 2.34.1
>


^ permalink raw reply

* Re: [External Mail] Re: [PATCH v3 2/7] net: wwan: t9xx: Add control plane transaction layer
From: Andrew Lunn @ 2026-06-29 14:10 UTC (permalink / raw)
  To: Wu. JackBB (GSM)
  Cc: Loic Poulain, Sergey Ryazanov, Johannes Berg, Andrew Lunn,
	David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
	Wen-Zhi Huang, Shi-Wei Yeh, Minano Tseng, Matthias Brugger,
	AngeloGioacchino Del Regno, Simon Horman, Jonathan Corbet,
	Shuah Khan, linux-kernel@vger.kernel.org, netdev@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	linux-mediatek@lists.infradead.org, linux-doc@vger.kernel.org
In-Reply-To: <49939d4d682f4c1fb359973ea2cdbd00@compal.com>

> > > -	devm_kfree(dev, mdev);
> > > +	mtk_dev_free(mdev);
> >
> > Why are you removing devm_ calls?
> 
> mtk_dev_alloc/mtk_dev_free are paired wrappers so the caller
> doesn't need to know the underlying allocation mechanism.
> The devm_kfree is still called inside mtk_dev_free.

Two different issues here:

1) If you don't want to use devm_, don't use devm_ from the
beginning. A patch should not change how a previous patch works, since
you are wasting reviewer time reviewing code which you later change.

2) Do you understand what devm_ actually does? Since you use
devm_free() i don't think you actually understand what devm_ is all
about.

	Andrew


^ permalink raw reply

* Re: [PATCH v2] MAINTAINERS: Update Xilinx AMS driver maintainers
From: Michal Simek @ 2026-06-29 14:10 UTC (permalink / raw)
  To: Sai Krishna Potthuri, Conall O'Griofa, Jonathan Cameron
  Cc: linux-iio, linux-arm-kernel, linux-kernel
In-Reply-To: <20260629140615.213750-1-sai.krishna.potthuri@amd.com>



On 6/29/26 16:06, Sai Krishna Potthuri wrote:
> Salih Erim is no longer with AMD to maintain the Xilinx AMS driver.
> Replace Salih Erim with Sai Krishna Potthuri in the Xilinx AMS driver
> MAINTAINERS entry for continued development and maintenance of the driver.
> 
> Signed-off-by: Sai Krishna Potthuri <sai.krishna.potthuri@amd.com>
> ---
> v2:
> - Replaced Salih Erim with Sai Krishna Potthuri.
> 
>   MAINTAINERS | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 6b4560681b51..d8591066f182 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -29458,7 +29458,7 @@ F:	include/uapi/linux/dqblk_xfs.h
>   F:	include/uapi/linux/fsmap.h
>   
>   XILINX AMS DRIVER
> -M:	Salih Erim <salih.erim@amd.com>
> +M:	Sai Krishna Potthuri <sai.krishna.potthuri@amd.com>
>   M:	Conall O'Griofa <conall.ogriofa@amd.com>
>   L:	linux-iio@vger.kernel.org
>   S:	Maintained

Acked-by: Michal Simek <michal.simek@amd.com>

Thanks,
Michal


^ permalink raw reply

* [PATCH v2] MAINTAINERS: Update Xilinx AMS driver maintainers
From: Sai Krishna Potthuri @ 2026-06-29 14:06 UTC (permalink / raw)
  To: Conall O'Griofa, Jonathan Cameron, michal.simek
  Cc: linux-iio, linux-arm-kernel, linux-kernel, Sai Krishna Potthuri

Salih Erim is no longer with AMD to maintain the Xilinx AMS driver.
Replace Salih Erim with Sai Krishna Potthuri in the Xilinx AMS driver
MAINTAINERS entry for continued development and maintenance of the driver.

Signed-off-by: Sai Krishna Potthuri <sai.krishna.potthuri@amd.com>
---
v2:
- Replaced Salih Erim with Sai Krishna Potthuri.

 MAINTAINERS | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/MAINTAINERS b/MAINTAINERS
index 6b4560681b51..d8591066f182 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -29458,7 +29458,7 @@ F:	include/uapi/linux/dqblk_xfs.h
 F:	include/uapi/linux/fsmap.h
 
 XILINX AMS DRIVER
-M:	Salih Erim <salih.erim@amd.com>
+M:	Sai Krishna Potthuri <sai.krishna.potthuri@amd.com>
 M:	Conall O'Griofa <conall.ogriofa@amd.com>
 L:	linux-iio@vger.kernel.org
 S:	Maintained
-- 
2.25.1



^ permalink raw reply related

* Re: [PATCH net-next v11 1/7] dt-bindings: phy: document the serdes PHY on sa8255p
From: Bartosz Golaszewski @ 2026-06-29 14:07 UTC (permalink / raw)
  To: Geert Uytterhoeven
  Cc: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Andrew Lunn, David S. Miller, Eric Dumazet,
	Jakub Kicinski, Paolo Abeni, Maxime Coquelin, Alexandre Torgue,
	Vinod Koul, Giuseppe Cavallaro, Chen-Yu Tsai, Jernej Skrabec,
	Neil Armstrong, Kevin Hilman, Jerome Brunet, Shawn Guo,
	Fabio Estevam, Jan Petrous, s32, Mohd Ayaan Anwar, Romain Gantois,
	Magnus Damm, Maxime Ripard, Christophe Roullier,
	Bartosz Golaszewski, Radu Rendec, linux-arm-msm, devicetree,
	linux-kernel, netdev, linux-stm32, linux-arm-kernel, Drew Fustini,
	linux-sunxi, linux-amlogic, linux-mips, imx, linux-renesas-soc,
	linux-rockchip, sophgo, linux-riscv, Bartosz Golaszewski,
	Bartosz Golaszewski
In-Reply-To: <CAMuHMdXen+E-Ai51aWBa_KV9W8Fz2cQPpT-FG_kQ7akhrrYa_A@mail.gmail.com>

On Mon, 29 Jun 2026 15:51:31 +0200, Geert Uytterhoeven
<geert@linux-m68k.org> said:
> Hi Bartosz,
>
> Thanks for your patch!
>
> On Mon, 29 Jun 2026 at 13:29, Bartosz Golaszewski
> <bartosz.golaszewski@oss.qualcomm.com> wrote:
>> Describe the SGMII/SerDes PHY present on the Qualcomm sa8255p platforms.
>> This is essentially the same hardware as sa8775p rev3 but the PHY is
>> managed by firmware over SCMI.
>
> So why can't it be reuse the DT bindings, and be compatible with
> qcom,sa8775p-dwmac-sgmii-phy?
>
>> Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
>
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/phy/qcom,sa8255p-dwmac-sgmii-phy.yaml
>
>> +  power-domains:
>> +    maxItems: 1
>> +
>> +  power-domain-names:
>> +    items:
>> +      - const: serdes
>
>> +examples:
>> +  - |
>> +    phy@8901000 {
>> +        compatible = "qcom,sa8255p-dwmac-sgmii-phy";
>> +        reg = <0x08901000 0xe10>;
>> +        #phy-cells = <0>;
>> +        power-domains = <&scmi7_dvfs 0>;
>> +        power-domain-names = "serdes";
>
> Ah, this uses power-domains, while the existing bindings for
> qcom,sa8775p-dwmac-sgmii-phy use a clock.
> I guess the clock is the correct hardware description?
>
> Adding to my list of examples for backing a hardware-to-SCMI remapping
> driver...
>

Russell King asked me to put the PHY logic for SCMI pm domains into the PHY
driver instead of the MAC driver where it was previously. Instead of cramming
both HLOS and firmware handling into the same driver, I figured it makes more
sense to have a dedicated, cleaner driver as the two share very little code (if
any).

Bart


^ permalink raw reply

* Re: [PATCH 00/13] treewide: replace linux/gpio.h
From: Andreas Schwab @ 2026-06-29 14:01 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: linux-gpio, Arnd Bergmann, Bartosz Golaszewski, Andrew Lunn,
	Sebastian Hesselbarth, Gregory Clement, Frank Li, Robert Jarzmik,
	Krzysztof Kozlowski, Greg Ungerer, Thomas Bogendoerfer,
	Hauke Mehrtens, Rafał Miłecki, Yoshinori Sato,
	John Paul Adrian Glaubitz, Linus Walleij, Dmitry Torokhov,
	Jakub Kicinski, Paolo Abeni, Dominik Brodowski, linux-kernel,
	linux-arm-kernel, linux-samsung-soc, patches, linux-m68k,
	linux-mips, linux-sh, linux-input, linux-media, netdev,
	linux-sunxi, linux-phy, linux-rockchip, linux-sound
In-Reply-To: <20260629132633.1300009-1-arnd@kernel.org>

On Jun 29 2026, Arnd Bergmann wrote:

> From: Arnd Bergmann <arnd@arndb.de>
>
> The linux/gpio.h header used to be the global definition for the gpio
> interfaces, with 1100 users back in linux-3.17. In linux-7.2, only about
> 130 of those remain, so this series cleans out the rest.
>
> In each subsystem, we can replace the header either with
> linux/gpio/consumer.h for users of the modern gpio descriptor interface,

A few of them already used <linux/gpio/consumer.h>, and is duplicated
now.

-- 
Andreas Schwab, schwab@linux-m68k.org
GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510  2552 DF73 E780 A9DA AEC1
"And now for something completely different."


^ permalink raw reply

* [PATCH] [RFC] gpiolib: introduce gpio_name() helper
From: Arnd Bergmann @ 2026-06-29 13:56 UTC (permalink / raw)
  To: Linus Walleij, Bartosz Golaszewski
  Cc: Arnd Bergmann, Marcel Holtmann, MyungJoo Ham, Chanwoo Choi,
	Geert Uytterhoeven, Andy Shevchenko, Dmitry Torokhov, Ulf Hansson,
	linux-bluetooth, linux-kernel, linux-gpio, dri-devel, linux-i2c,
	linux-iio, linux-input, linux-mmc, linux-arm-kernel, linux-pm,
	linux-usb

From: Arnd Bergmann <arnd@arndb.de>

Most remaining users of desc_to_gpio() only call it for printing debug
information.

Replace this with a new gpiod_name() helper that returns the
gpio_desc->name string after checking the gpio_desc pointer.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---

Not sure if this the way we want to take this, or if the gpio name is
an appropriate replacement in debug printk.

Since most of the callers of desc_to_gpio() and gpio_to_desc() are
otherwise in drivers that already depend on CONFIG_GPIOLIB_LEGACY and
include linux/gpio/legacy.h, only a handful of instances remain that
are otherwise in files that otherwise only use the descriptor interfaces:

arch/arm/mach-pxa/pxa27x.c:	reset_gpio = desc_to_gpio(gpiod);
arch/arm/plat-orion/gpio.c:	unsigned gpio = desc_to_gpio(desc);
drivers/gpio/gpio-nomadik.c:		mode = nmk_prcm_gpiocr_get_mode(pctldev, desc_to_gpio(desc));
drivers/gpio/gpiolib-acpi-core.c:			desc = gpio_to_desc(agpio->pin_table[pin_index]);
drivers/gpio/gpiolib-cdev.c:	hte_init_line_attr(hdesc, desc_to_gpio(line->desc), flags, NULL,
drivers/gpio/gpiolib-sysfs.c:	desc = gpio_to_desc(gpio);
drivers/gpio/gpiolib-sysfs.c:						   desc_to_gpio(desc));
drivers/gpio/gpiolib.c:	trace_gpio_direction(desc_to_gpio(desc), 1, ret);
drivers/input/misc/soc_button_array.c:	*gpio_ret = desc_to_gpio(desc);
drivers/pinctrl/core.c:			gdev = gpiod_to_gpio_device(gpio_to_desc(gpio_num));
drivers/platform/x86/x86-android-tablets/core.c: * 2. Calling desc_to_gpio() to get an old style GPIO number for gpio-keys
drivers/soc/fsl/qe/gpio.c:	gpio_num = desc_to_gpio(gpiod);
---
 drivers/bluetooth/hci_intel.c             |  4 ++--
 drivers/extcon/extcon-rtk-type-c.c        |  4 ++--
 drivers/gpio/gpio-aggregator.c            |  4 ++--
 drivers/gpio/gpiolib.c                    | 13 +++++++++++++
 drivers/gpu/drm/bridge/analogix/anx7625.c |  6 +++---
 drivers/i2c/busses/i2c-gpio.c             |  4 ++--
 drivers/iio/accel/mma9551.c               |  4 ++--
 drivers/iio/humidity/dht11.c              |  2 +-
 drivers/input/touchscreen/edt-ft5x06.c    |  6 +++---
 drivers/input/touchscreen/hycon-hy46xx.c  |  5 ++---
 drivers/mmc/host/atmel-mci.c              |  8 ++++----
 drivers/power/supply/bq24257_charger.c    |  2 +-
 drivers/usb/gadget/udc/at91_udc.c         |  4 ++--
 include/linux/gpio/consumer.h             |  8 ++++++++
 14 files changed, 47 insertions(+), 27 deletions(-)

diff --git a/drivers/bluetooth/hci_intel.c b/drivers/bluetooth/hci_intel.c
index c31105b91e47..2e6ebc152bcb 100644
--- a/drivers/bluetooth/hci_intel.c
+++ b/drivers/bluetooth/hci_intel.c
@@ -1176,8 +1176,8 @@ static int intel_probe(struct platform_device *pdev)
 	list_add_tail(&idev->list, &intel_device_list);
 	mutex_unlock(&intel_device_list_lock);
 
-	dev_info(&pdev->dev, "registered, gpio(%d)/irq(%d).\n",
-		 desc_to_gpio(idev->reset), idev->irq);
+	dev_info(&pdev->dev, "registered, gpio(%s)/irq(%d).\n",
+		 gpiod_name(idev->reset), idev->irq);
 
 	return 0;
 }
diff --git a/drivers/extcon/extcon-rtk-type-c.c b/drivers/extcon/extcon-rtk-type-c.c
index 82b60b927e41..fb57e9d7ddb6 100644
--- a/drivers/extcon/extcon-rtk-type-c.c
+++ b/drivers/extcon/extcon-rtk-type-c.c
@@ -1356,8 +1356,8 @@ static int extcon_rtk_type_c_probe(struct platform_device *pdev)
 				(int)PTR_ERR(gpio));
 		} else {
 			type_c->rd_ctrl_gpio_desc = gpio;
-			dev_dbg(dev, "%s get rd-ctrl-gpios (id=%d) OK\n",
-				__func__, desc_to_gpio(gpio));
+			dev_dbg(dev, "%s get rd-ctrl-gpios (id=%s) OK\n",
+				__func__, gpiod_name(gpio));
 		}
 	}
 
diff --git a/drivers/gpio/gpio-aggregator.c b/drivers/gpio/gpio-aggregator.c
index bc6699a821ee..27df680fbdbb 100644
--- a/drivers/gpio/gpio-aggregator.c
+++ b/drivers/gpio/gpio-aggregator.c
@@ -758,8 +758,8 @@ int gpiochip_fwd_desc_add(struct gpiochip_fwd *fwd, struct gpio_desc *desc,
 
 	fwd->descs[offset] = desc;
 
-	dev_dbg(chip->parent, "%u => gpio %d irq %d\n", offset,
-		desc_to_gpio(desc), gpiod_to_irq(desc));
+	dev_dbg(chip->parent, "%u => gpio %s irq %d\n", offset,
+		gpiod_name(desc), gpiod_to_irq(desc));
 
 	return 0;
 }
diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
index 1f498d6c8c68..00de24db74a5 100644
--- a/drivers/gpio/gpiolib.c
+++ b/drivers/gpio/gpiolib.c
@@ -4122,6 +4122,19 @@ int gpiod_set_consumer_name(struct gpio_desc *desc, const char *name)
 }
 EXPORT_SYMBOL_GPL(gpiod_set_consumer_name);
 
+/**
+ * gpiod_name() - get a name to print for a gpio descriptor
+ * @desc: gpio or NULL pointer to query
+ *
+ * Returns:
+ * The desc->name field or a dummy string for unknown GPIOs.
+ */
+const char *gpiod_name(const struct gpio_desc *desc)
+{
+	return desc ? desc->name : "(no gpio)";
+}
+EXPORT_SYMBOL_GPL(gpiod_name);
+
 /**
  * gpiod_is_shared() - check if this GPIO can be shared by multiple consumers
  * @desc: GPIO to inspect
diff --git a/drivers/gpu/drm/bridge/analogix/anx7625.c b/drivers/gpu/drm/bridge/analogix/anx7625.c
index fffcd6154c71..5dce097d4045 100644
--- a/drivers/gpu/drm/bridge/analogix/anx7625.c
+++ b/drivers/gpu/drm/bridge/analogix/anx7625.c
@@ -1448,9 +1448,9 @@ static void anx7625_init_gpio(struct anx7625_data *platform)
 
 	if (platform->pdata.gpio_p_on && platform->pdata.gpio_reset) {
 		platform->pdata.low_power_mode = 1;
-		DRM_DEV_DEBUG_DRIVER(dev, "low power mode, pon %d, reset %d.\n",
-				     desc_to_gpio(platform->pdata.gpio_p_on),
-				     desc_to_gpio(platform->pdata.gpio_reset));
+		DRM_DEV_DEBUG_DRIVER(dev, "low power mode, pon %s, reset %s.\n",
+				     gpiod_name(platform->pdata.gpio_p_on),
+				     gpiod_name(platform->pdata.gpio_reset));
 	} else {
 		platform->pdata.low_power_mode = 0;
 		DRM_DEV_DEBUG_DRIVER(dev, "not low power mode.\n");
diff --git a/drivers/i2c/busses/i2c-gpio.c b/drivers/i2c/busses/i2c-gpio.c
index f4355b17bfbf..4c320a833d9e 100644
--- a/drivers/i2c/busses/i2c-gpio.c
+++ b/drivers/i2c/busses/i2c-gpio.c
@@ -440,8 +440,8 @@ static int i2c_gpio_probe(struct platform_device *pdev)
 	 * get accessors to get the actual name of the GPIO line,
 	 * from the descriptor, then provide that instead.
 	 */
-	dev_info(dev, "using lines %u (SDA) and %u (SCL%s)\n",
-		 desc_to_gpio(priv->sda), desc_to_gpio(priv->scl),
+	dev_info(dev, "using lines %s (SDA) and %s (SCL%s)\n",
+		 gpiod_name(priv->sda), gpiod_name(priv->scl),
 		 pdata->scl_is_output_only
 		 ? ", no clock stretching" : "");
 
diff --git a/drivers/iio/accel/mma9551.c b/drivers/iio/accel/mma9551.c
index 020370b0ec07..b9d1fc3caf83 100644
--- a/drivers/iio/accel/mma9551.c
+++ b/drivers/iio/accel/mma9551.c
@@ -426,8 +426,8 @@ static int mma9551_gpio_probe(struct iio_dev *indio_dev)
 			return ret;
 		}
 
-		dev_dbg(dev, "gpio resource, no:%d irq:%d\n",
-			desc_to_gpio(gpio), data->irqs[i]);
+		dev_dbg(dev, "gpio resource, no:%s irq:%d\n",
+			gpiod_name(gpio), data->irqs[i]);
 	}
 
 	return 0;
diff --git a/drivers/iio/humidity/dht11.c b/drivers/iio/humidity/dht11.c
index 980cb946bbf7..ca6b8c53e462 100644
--- a/drivers/iio/humidity/dht11.c
+++ b/drivers/iio/humidity/dht11.c
@@ -305,7 +305,7 @@ static int dht11_probe(struct platform_device *pdev)
 
 	dht11->irq = gpiod_to_irq(dht11->gpiod);
 	if (dht11->irq < 0) {
-		dev_err(dev, "GPIO %d has no interrupt\n", desc_to_gpio(dht11->gpiod));
+		dev_err(dev, "GPIO %s has no interrupt\n", gpiod_name(dht11->gpiod));
 		return -EINVAL;
 	}
 
diff --git a/drivers/input/touchscreen/edt-ft5x06.c b/drivers/input/touchscreen/edt-ft5x06.c
index d3b1177185a3..2d31c77614b0 100644
--- a/drivers/input/touchscreen/edt-ft5x06.c
+++ b/drivers/input/touchscreen/edt-ft5x06.c
@@ -1326,10 +1326,10 @@ static int edt_ft5x06_ts_probe(struct i2c_client *client)
 	edt_ft5x06_ts_prepare_debugfs(tsdata);
 
 	dev_dbg(&client->dev,
-		"EDT FT5x06 initialized: IRQ %d, WAKE pin %d, Reset pin %d.\n",
+		"EDT FT5x06 initialized: IRQ %d, WAKE pin %s, Reset pin %s.\n",
 		client->irq,
-		tsdata->wake_gpio ? desc_to_gpio(tsdata->wake_gpio) : -1,
-		tsdata->reset_gpio ? desc_to_gpio(tsdata->reset_gpio) : -1);
+		gpiod_name(tsdata->wake_gpio),
+		gpiod_name(tsdata->reset_gpio));
 
 	return 0;
 }
diff --git a/drivers/input/touchscreen/hycon-hy46xx.c b/drivers/input/touchscreen/hycon-hy46xx.c
index 1513f20cbf51..797667c5dd99 100644
--- a/drivers/input/touchscreen/hycon-hy46xx.c
+++ b/drivers/input/touchscreen/hycon-hy46xx.c
@@ -528,9 +528,8 @@ static int hycon_hy46xx_probe(struct i2c_client *client)
 		return error;
 
 	dev_dbg(&client->dev,
-		"HYCON HY46XX initialized: IRQ %d, Reset pin %d.\n",
-		client->irq,
-		tsdata->reset_gpio ? desc_to_gpio(tsdata->reset_gpio) : -1);
+		"HYCON HY46XX initialized: IRQ %d, Reset pin %s.\n",
+		client->irq, gpiod_name(tsdata->reset_gpio));
 
 	return 0;
 }
diff --git a/drivers/mmc/host/atmel-mci.c b/drivers/mmc/host/atmel-mci.c
index 3b4928f5b9b2..b21820564315 100644
--- a/drivers/mmc/host/atmel-mci.c
+++ b/drivers/mmc/host/atmel-mci.c
@@ -2255,11 +2255,11 @@ static int atmci_init_slot(struct atmel_mci *host,
 	slot->sdio_irq = sdio_irq;
 
 	dev_dbg(&mmc->class_dev,
-	        "slot[%u]: bus_width=%u, detect_pin=%d, "
-		"detect_is_active_high=%s, wp_pin=%d\n",
-		id, slot_data->bus_width, desc_to_gpio(slot_data->detect_pin),
+	        "slot[%u]: bus_width=%u, detect_pin=%s, "
+		"detect_is_active_high=%s, wp_pin=%s\n",
+		id, slot_data->bus_width, gpiod_name(slot_data->detect_pin),
 		str_true_false(!gpiod_is_active_low(slot_data->detect_pin)),
-		desc_to_gpio(slot_data->wp_pin));
+		gpiod_name(slot_data->wp_pin));
 
 	mmc->ops = &atmci_ops;
 	mmc->f_min = DIV_ROUND_UP(host->bus_hz, 512);
diff --git a/drivers/power/supply/bq24257_charger.c b/drivers/power/supply/bq24257_charger.c
index 72f1bfea8d54..b756bab74eec 100644
--- a/drivers/power/supply/bq24257_charger.c
+++ b/drivers/power/supply/bq24257_charger.c
@@ -868,7 +868,7 @@ static void bq24257_pg_gpio_probe(struct bq24257_device *bq)
 	}
 
 	if (bq->pg)
-		dev_dbg(bq->dev, "probed PG pin = %d\n", desc_to_gpio(bq->pg));
+		dev_dbg(bq->dev, "probed PG pin = %s\n", gpiod_name(bq->pg));
 }
 
 static int bq24257_fw_probe(struct bq24257_device *bq)
diff --git a/drivers/usb/gadget/udc/at91_udc.c b/drivers/usb/gadget/udc/at91_udc.c
index 5aa360ba4f03..099313604387 100644
--- a/drivers/usb/gadget/udc/at91_udc.c
+++ b/drivers/usb/gadget/udc/at91_udc.c
@@ -1896,8 +1896,8 @@ static int at91udc_probe(struct platform_device *pdev)
 					gpiod_to_irq(udc->board.vbus_pin),
 					at91_vbus_irq, 0, driver_name, udc);
 			if (retval) {
-				DBG("request vbus irq %d failed\n",
-				    desc_to_gpio(udc->board.vbus_pin));
+				DBG("request vbus irq %s failed\n",
+				    gpiod_name(udc->board.vbus_pin));
 				goto err_unprepare_iclk;
 			}
 		}
diff --git a/include/linux/gpio/consumer.h b/include/linux/gpio/consumer.h
index fceeefd5f893..9c91fae62f8c 100644
--- a/include/linux/gpio/consumer.h
+++ b/include/linux/gpio/consumer.h
@@ -172,6 +172,8 @@ int gpiod_set_consumer_name(struct gpio_desc *desc, const char *name);
 
 bool gpiod_is_shared(const struct gpio_desc *desc);
 
+const char *gpiod_name(const struct gpio_desc *desc);
+
 /* Convert between the old gpio_ and new gpiod_ interfaces */
 struct gpio_desc *gpio_to_desc(unsigned gpio);
 int desc_to_gpio(const struct gpio_desc *desc);
@@ -538,6 +540,12 @@ static inline bool gpiod_is_shared(const struct gpio_desc *desc)
 	return false;
 }
 
+static inline const char *gpiod_name(const struct gpio_desc *desc)
+{
+	WARN_ON(desc);
+	return "(no gpio)";
+}
+
 static inline struct gpio_desc *gpio_to_desc(unsigned gpio)
 {
 	return NULL;
-- 
2.39.5



^ permalink raw reply related

* Re: [PATCH v2 03/17] ASoC: rockchip: rockchip_sai: #include <linux/platform_device.h> explicitly
From: Uwe Kleine-König (The Capable Hub) @ 2026-06-29 13:57 UTC (permalink / raw)
  To: Mark Brown
  Cc: Linus Torvalds, Greg Kroah-Hartman, Nicolas Frattaroli,
	Liam Girdwood, Jaroslav Kysela, Takashi Iwai, Heiko Stuebner,
	linux-rockchip, linux-sound, linux-arm-kernel, linux-kernel
In-Reply-To: <8dcfcd10-4b9d-4775-9e23-3884b896a7b9@sirena.org.uk>

[-- Attachment #1: Type: text/plain, Size: 457 bytes --]

Hello Mark,

On Mon, Jun 29, 2026 at 12:17:04PM +0100, Mark Brown wrote:
> On Fri, Jun 26, 2026 at 08:00:22PM +0200, Uwe Kleine-König (The Capable Hub) wrote:
> > Currently that header is only included via:
> > 
> > 	<sound/dmaengine_pcm.h> ->
> > 	<sound/soc.h> ->
> > 	<linux/platform_device.h>
> 
> Acked-by: Mark Brown <broonie@kernel.org>

You're too late for the Ack, this patch already is applied and part of
v7.2.

Best regards
Uwe

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply

* Re: [PATCH net-next v11 1/7] dt-bindings: phy: document the serdes PHY on sa8255p
From: Geert Uytterhoeven @ 2026-06-29 13:51 UTC (permalink / raw)
  To: Bartosz Golaszewski
  Cc: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Andrew Lunn, David S. Miller, Eric Dumazet,
	Jakub Kicinski, Paolo Abeni, Maxime Coquelin, Alexandre Torgue,
	Vinod Koul, Giuseppe Cavallaro, Chen-Yu Tsai, Jernej Skrabec,
	Neil Armstrong, Kevin Hilman, Jerome Brunet, Shawn Guo,
	Fabio Estevam, Jan Petrous, s32, Mohd Ayaan Anwar, Romain Gantois,
	Magnus Damm, Maxime Ripard, Christophe Roullier,
	Bartosz Golaszewski, Radu Rendec, linux-arm-msm, devicetree,
	linux-kernel, netdev, linux-stm32, linux-arm-kernel, Drew Fustini,
	linux-sunxi, linux-amlogic, linux-mips, imx, linux-renesas-soc,
	linux-rockchip, sophgo, linux-riscv, Bartosz Golaszewski
In-Reply-To: <20260629-qcom-sa8255p-emac-v11-1-1b7fb95b51f9@oss.qualcomm.com>

Hi Bartosz,

Thanks for your patch!

On Mon, 29 Jun 2026 at 13:29, Bartosz Golaszewski
<bartosz.golaszewski@oss.qualcomm.com> wrote:
> Describe the SGMII/SerDes PHY present on the Qualcomm sa8255p platforms.
> This is essentially the same hardware as sa8775p rev3 but the PHY is
> managed by firmware over SCMI.

So why can't it be reuse the DT bindings, and be compatible with
qcom,sa8775p-dwmac-sgmii-phy?

> Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>

> --- /dev/null
> +++ b/Documentation/devicetree/bindings/phy/qcom,sa8255p-dwmac-sgmii-phy.yaml

> +  power-domains:
> +    maxItems: 1
> +
> +  power-domain-names:
> +    items:
> +      - const: serdes

> +examples:
> +  - |
> +    phy@8901000 {
> +        compatible = "qcom,sa8255p-dwmac-sgmii-phy";
> +        reg = <0x08901000 0xe10>;
> +        #phy-cells = <0>;
> +        power-domains = <&scmi7_dvfs 0>;
> +        power-domain-names = "serdes";

Ah, this uses power-domains, while the existing bindings for
qcom,sa8775p-dwmac-sgmii-phy use a clock.
I guess the clock is the correct hardware description?

Adding to my list of examples for backing a hardware-to-SCMI remapping
driver...

> +    };

Gr{oetje,eeting}s,

                        Geert

-- 
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds


^ permalink raw reply

* Re: [Upstream] Re: [PATCH 2/2] arm64: dts: ti: Add support for the phyCORE-AM67x
From: Wadim Egorov @ 2026-06-29 13:57 UTC (permalink / raw)
  To: Andrew Davis, Nathan Morrisson, nm, vigneshr, kristo, robh,
	krzk+dt, conor+dt
  Cc: linux-arm-kernel, devicetree, linux-kernel, upstream
In-Reply-To: <0aaf11b7-6043-4140-ac15-7c62f367c218@ti.com>

Hi Andrew,

On 6/25/26 11:37 PM, Andrew Davis wrote:
> On 6/25/26 11:02 AM, Nathan Morrisson wrote:
>> Add support for the PHYTEC phyCORE-AM67x SoM [1] and the
>> corresponding phyBOARD-Rigel carrier board [2]. The phyCORE-AM67x SoM
>> uses the TI AM67x SoC and can come with different sizes and models of
>> DDR, eMMC, and SPI NOR Flash.
>>
>> Supported features:
>>    * Audio playback and recording
>>    * CAN
>>    * Debug UART
>>    * eMMC
>>    * Ethernet
>>    * GPIO buttons
>>    * Heartbeat LED
>>    * I2C Current sensor
>>    * I2C EEPROM
>>    * I2C Light sensor
>>    * I2C RTC
>>    * Micro SD card
>>    * PCIe
>>    * SPI NOR flash
>>    * USB
>>
>> [1] https://www.phytec.com/product/phycore-am67x/
>> [2] https://www.phytec.com/product/phyboard-am67x-development-kit/
>>
>> Signed-off-by: Nathan Morrisson <nmorrisson@phytec.com>
>> ---
>>   arch/arm64/boot/dts/ti/Makefile               |   1 +
>>   .../boot/dts/ti/k3-am67-phycore-som.dtsi      | 328 ++++++++++++
>>   .../boot/dts/ti/k3-am6754-phyboard-rigel.dts  | 502 ++++++++++++++++++
>>   3 files changed, 831 insertions(+)
>>   create mode 100644 arch/arm64/boot/dts/ti/k3-am67-phycore-som.dtsi
>>   create mode 100644 arch/arm64/boot/dts/ti/k3-am6754-phyboard-rigel.dts
>>
>> diff --git a/arch/arm64/boot/dts/ti/Makefile b/arch/arm64/boot/dts/ti/Makefile
>> index 371f9a043fe5..623ee2369132 100644
>> --- a/arch/arm64/boot/dts/ti/Makefile
>> +++ b/arch/arm64/boot/dts/ti/Makefile
>> @@ -184,6 +184,7 @@ dtb-$(CONFIG_ARCH_K3) += k3-j721s2-evm-pcie1-ep.dtbo
>>   dtb-$(CONFIG_ARCH_K3) += k3-j721s2-evm-usb0-type-a.dtbo
>>     # Boards with J722s SoC
>> +dtb-$(CONFIG_ARCH_K3) += k3-am6754-phyboard-rigel.dtb
>>   dtb-$(CONFIG_ARCH_K3) += k3-am67a-beagley-ai.dtb
>>   dtb-$(CONFIG_ARCH_K3) += k3-j722s-evm.dtb
>>   dtb-$(CONFIG_ARCH_K3) += k3-j722s-evm-csi2-quad-rpi-cam-imx219.dtbo
>> diff --git a/arch/arm64/boot/dts/ti/k3-am67-phycore-som.dtsi b/arch/arm64/boot/dts/ti/k3-am67-phycore-som.dtsi
>> new file mode 100644
>> index 000000000000..8a40f648098e
>> --- /dev/null
>> +++ b/arch/arm64/boot/dts/ti/k3-am67-phycore-som.dtsi
>> @@ -0,0 +1,328 @@
>> +// SPDX-License-Identifier: GPL-2.0-only OR MIT
>> +/*
>> + * Copyright (C) 2026 PHYTEC America LLC
>> + * Author: Nathan Morrisson <nmorrisson@phytec.com>
>> + */
>> +
>> +#include <dt-bindings/net/ti-dp83867.h>
>> +#include <dt-bindings/leds/common.h>
>> +#include <dt-bindings/gpio/gpio.h>
>> +#include <dt-bindings/interrupt-controller/irq.h>
>> +
>> +/ {
>> +    compatible = "phytec,am67-phycore-som", "ti,j722s";
>> +    model = "PHYTEC phyCORE-AM67";
>> +
>> +    aliases {
>> +        ethernet0 = &cpsw_port1;
>> +        gpio0 = &main_gpio0;
>> +        mmc0 = &sdhci0;
>> +        rtc0 = &i2c_som_rtc;
>> +        rtc1 = &wkup_rtc0;
>> +        spi0 = &ospi0;
>> +    };
>> +
>> +    memory@80000000 {
>> +        /* 4G RAM */
>> +        reg = <0x00000000 0x80000000 0x00000000 0x80000000>,
>> +              <0x00000008 0x80000000 0x00000000 0x80000000>;
>> +        device_type = "memory";
>> +        bootph-all;
>> +    };
>> +
>> +    reserved_memory: reserved-memory {
>> +        #address-cells = <2>;
>> +        #size-cells = <2>;
>> +        ranges;
>> +
>> +        secure_tfa_ddr: tfa@9e780000 {
>> +            reg = <0x00 0x9e780000 0x00 0x80000>;
>> +            no-map;
>> +        };
>> +
>> +        secure_ddr: optee@9e800000 {
>> +            reg = <0x00 0x9e800000 0x00 0x01800000>;
>> +            no-map;
>> +        };
>> +
>> +        wkup_r5fss0_core0_dma_memory_region: memory@a0000000 {
>> +            compatible = "shared-dma-pool";
>> +            reg = <0x00 0xa0000000 0x00 0x100000>;
>> +            no-map;
>> +        };
>> +
>> +        wkup_r5fss0_core0_memory_region: memory@a0100000 {
>> +            compatible = "shared-dma-pool";
>> +            reg = <0x00 0xa0100000 0x00 0xf00000>;
>> +            no-map;
>> +        };
>> +    };
>> +
>> +    vcc_5v0_som: regulator-vcc-5v0-som {
>> +        compatible = "regulator-fixed";
>> +        regulator-name = "VCC_5V0_SOM";
>> +        regulator-min-microvolt = <5000000>;
>> +        regulator-max-microvolt = <5000000>;
>> +        regulator-always-on;
>> +        regulator-boot-on;
>> +    };
>> +
>> +    leds {
>> +        compatible = "gpio-leds";
>> +        pinctrl-names = "default";
>> +        pinctrl-0 = <&leds_pins_default>;
>> +
>> +        led-0 {
>> +            color = <LED_COLOR_ID_GREEN>;
>> +            gpios = <&main_gpio0 13 GPIO_ACTIVE_HIGH>;
>> +            linux,default-trigger = "heartbeat";
>> +            function = LED_FUNCTION_HEARTBEAT;
>> +        };
>> +    };
>> +};
>> +
>> +&main_pmx0 {
>> +    leds_pins_default: leds-default-pins {
>> +        pinctrl-single,pins = <
>> +            J722S_IOPAD(0x034, PIN_OUTPUT, 7)    /* (K22) OSPI0_CSN2.GPIO0_13 */
>> +        >;
>> +    };
>> +
>> +    mdio_pins_default: mdio-default-pins {
>> +        pinctrl-single,pins = <
>> +            J722S_IOPAD(0x0160, PIN_OUTPUT, 0)    /* (AC24) MDIO0_MDC */
>> +            J722S_IOPAD(0x015c, PIN_INPUT, 0)    /* (AD25) MDIO0_MDIO */
>> +        >;
>> +        bootph-all;
>> +    };
>> +
>> +    ospi0_pins_default: ospi0-default-pins {
>> +        pinctrl-single,pins = <
>> +            J722S_IOPAD(0x000, PIN_OUTPUT, 0)    /* (L24) OSPI0_CLK */
>> +            J722S_IOPAD(0x02c, PIN_OUTPUT, 0)    /* (K26) OSPI0_CSn0 */
>> +            J722S_IOPAD(0x00c, PIN_INPUT, 0)    /* (K27) OSPI0_D0 */
>> +            J722S_IOPAD(0x010, PIN_INPUT, 0)    /* (L27) OSPI0_D1 */
>> +            J722S_IOPAD(0x014, PIN_INPUT, 0)    /* (L26) OSPI0_D2 */
>> +            J722S_IOPAD(0x018, PIN_INPUT, 0)    /* (L25) OSPI0_D3 */
>> +            J722S_IOPAD(0x01c, PIN_INPUT, 0)    /* (L21) OSPI0_D4 */
>> +            J722S_IOPAD(0x020, PIN_INPUT, 0)    /* (M26) OSPI0_D5 */
>> +            J722S_IOPAD(0x024, PIN_INPUT, 0)    /* (N27) OSPI0_D6 */
>> +            J722S_IOPAD(0x028, PIN_INPUT, 0)    /* (M27) OSPI0_D7 */
>> +            J722S_IOPAD(0x008, PIN_INPUT, 0)    /* (L22) OSPI0_DQS */
>> +            J722S_IOPAD(0x038, PIN_INPUT, 7)    /* (J22) OSPI0_CSn3.GPIO0_14 */
>> +        >;
>> +        bootph-all;
>> +    };
>> +
>> +    pmic_irq_pins_default: pmic-irq-default-pins {
>> +        pinctrl-single,pins = <
>> +            J722S_IOPAD(0x030, PIN_INPUT, 7)    /* (K23) OSPI0_CSN1.GPIO0_12 */
>> +        >;
>> +    };
>> +
>> +    rgmii1_pins_default: rgmii1-default-pins {
>> +        pinctrl-single,pins = <
>> +            J722S_IOPAD(0x014c, PIN_INPUT, 0)    /* (AC25) RGMII1_RD0 */
>> +            J722S_IOPAD(0x0150, PIN_INPUT, 0)    /* (AD27) RGMII1_RD1 */
>> +            J722S_IOPAD(0x0154, PIN_INPUT, 0)    /* (AE24) RGMII1_RD2 */
>> +            J722S_IOPAD(0x0158, PIN_INPUT, 0)    /* (AE26) RGMII1_RD3 */
>> +            J722S_IOPAD(0x0148, PIN_INPUT, 0)    /* (AE27) RGMII1_RXC */
>> +            J722S_IOPAD(0x0144, PIN_INPUT, 0)    /* (AD23) RGMII1_RX_CTL */
>> +            J722S_IOPAD(0x0134, PIN_OUTPUT, 0)    /* (AF27) RGMII1_TD0 */
>> +            J722S_IOPAD(0x0138, PIN_OUTPUT, 0)    /* (AE23) RGMII1_TD1 */
>> +            J722S_IOPAD(0x013c, PIN_OUTPUT, 0)    /* (AG25) RGMII1_TD2 */
>> +            J722S_IOPAD(0x0140, PIN_OUTPUT, 0)    /* (AF24) RGMII1_TD3 */
>> +            J722S_IOPAD(0x0130, PIN_OUTPUT, 0)    /* (AG26) RGMII1_TXC */
>> +            J722S_IOPAD(0x012c, PIN_OUTPUT, 0)    /* (AF25) RGMII1_TX_CTL */
>> +        >;
>> +        bootph-all;
>> +    };
>> +};
>> +
>> +&mcu_pmx0 {
>> +    wkup_i2c0_pins_default: wkup-i2c0-default-pins {
>> +        pinctrl-single,pins = <
>> +            J722S_MCU_IOPAD(0x04c, PIN_INPUT_PULLUP, 0)    /* (B9) WKUP_I2C0_SCL */
>> +            J722S_MCU_IOPAD(0x050, PIN_INPUT_PULLUP, 0)    /* (D11) WKUP_I2C0_SDA */
>> +        >;
>> +        bootph-all;
>> +    };
>> +};
>> +
>> +&cpsw3g {
>> +    pinctrl-names = "default";
>> +    pinctrl-0 = <&rgmii1_pins_default>;
>> +    bootph-all;
>> +    status = "okay";
>> +};
>> +
>> +&cpsw3g_mdio {
>> +    pinctrl-names = "default";
>> +    pinctrl-0 = <&mdio_pins_default>;
>> +    status = "okay";
>> +
>> +    cpsw3g_phy1: ethernet-phy@1 {
>> +        compatible = "ethernet-phy-ieee802.3-c22";
>> +        reg = <1>;
>> +        ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
>> +        tx-fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
>> +        ti,min-output-impedance;
>> +    };
>> +};
>> +
>> +&cpsw_port1 {
>> +    phy-mode = "rgmii-id";
>> +    phy-handle = <&cpsw3g_phy1>;
>> +    status = "okay";
>> +};
>> +
>> +&cpsw_port2 {
>> +    status = "disabled";
> 
> This should already be default disabled in the SoC dtsi,
> no need to re-disable it here.
> 
>> +};
>> +
>> +&ospi0 {
>> +    pinctrl-names = "default";
>> +    pinctrl-0 = <&ospi0_pins_default>;
>> +    bootph-all;
>> +    status = "okay";
>> +
>> +    serial_flash: flash@0 {
>> +        compatible = "jedec,spi-nor";
>> +        reg = <0x0>;
>> +        spi-tx-bus-width = <8>;
>> +        spi-rx-bus-width = <8>;
>> +        spi-max-frequency = <25000000>;
>> +        vcc-supply = <&vdd_1v8>;
>> +        cdns,tshsl-ns = <60>;
>> +        cdns,tsd2d-ns = <60>;
>> +        cdns,tchsh-ns = <60>;
>> +        cdns,tslch-ns = <60>;
>> +        cdns,read-delay = <0>;
>> +    };
>> +};
>> +
>> +&sdhci0 {
>> +    non-removable;
>> +    bootph-all;
>> +    ti,driver-strength-ohm = <50>;
>> +    status = "okay";
>> +};
>> +
>> +&wkup_i2c0 {
>> +    pinctrl-names = "default";
>> +    pinctrl-0 = <&wkup_i2c0_pins_default>;
>> +    clock-frequency = <400000>;
>> +    bootph-all;
>> +    status = "okay";
>> +
>> +    pmic@30 {
>> +        compatible = "ti,tps65219";
>> +        reg = <0x30>;
>> +        buck1-supply = <&vcc_5v0_som>;
>> +        buck2-supply = <&vcc_5v0_som>;
>> +        buck3-supply = <&vcc_5v0_som>;
>> +        ldo1-supply = <&vdd_3v3>;
>> +        ldo2-supply = <&vdd_1v8>;
>> +        ldo3-supply = <&vdd_3v3>;
>> +        ldo4-supply = <&vdd_3v3>;
>> +
>> +        pinctrl-names = "default";
>> +        pinctrl-0 = <&pmic_irq_pins_default>;
>> +        interrupt-parent = <&main_gpio0>;
>> +        interrupts = <12 IRQ_TYPE_EDGE_FALLING>;
>> +        interrupt-controller;
>> +        #interrupt-cells = <1>;
>> +
>> +        system-power-controller;
>> +        ti,power-button;
>> +
>> +        regulators {
>> +            vdd_3v3: buck1 {
>> +                regulator-name = "VDD_3V3";
>> +                regulator-min-microvolt = <3300000>;
>> +                regulator-max-microvolt = <3300000>;
>> +                regulator-boot-on;
>> +                regulator-always-on;
>> +            };
>> +
>> +            vdd_1v8: buck2 {
>> +                regulator-name = "VDD_1V8";
>> +                regulator-min-microvolt = <1800000>;
>> +                regulator-max-microvolt = <1800000>;
>> +                regulator-boot-on;
>> +                regulator-always-on;
>> +            };
>> +
>> +            vdd_lpddr4: buck3 {
>> +                regulator-name = "VDD_LPDDR4";
>> +                regulator-min-microvolt = <1100000>;
>> +                regulator-max-microvolt = <1100000>;
>> +                regulator-boot-on;
>> +                regulator-always-on;
>> +            };
>> +
>> +            vddshv_sdio: ldo1 {
>> +                regulator-name = "VDDSHV_SDIO";
>> +                regulator-min-microvolt = <1800000>;
>> +                regulator-max-microvolt = <3300000>;
>> +                regulator-allow-bypass;
>> +                regulator-boot-on;
>> +                regulator-always-on;
>> +            };
>> +
>> +            vdd_1v2: ldo2 {
>> +                regulator-name = "VDD_1V2";
>> +                regulator-min-microvolt = <1200000>;
>> +                regulator-max-microvolt = <1200000>;
>> +                regulator-boot-on;
>> +                regulator-always-on;
>> +            };
>> +
>> +            vdda_1v8_phy: ldo3 {
>> +                regulator-name = "VDDA_1V8_PHY";
>> +                regulator-min-microvolt = <1800000>;
>> +                regulator-max-microvolt = <1800000>;
>> +                regulator-boot-on;
>> +                regulator-always-on;
>> +            };
>> +
>> +            vdd_1v8_pll: ldo4 {
>> +                regulator-name = "VDD_1V8_PLL";
>> +                regulator-min-microvolt = <1800000>;
>> +                regulator-max-microvolt = <1800000>;
>> +                regulator-boot-on;
>> +                regulator-always-on;
>> +            };
>> +        };
>> +    };
>> +
>> +    vdd_core: regulator-vdd-core@44 {
>> +        compatible = "ti,tps62873";
>> +        reg = <0x44>;
>> +        bootph-pre-ram;
>> +        regulator-name = "VDD_CORE";
>> +        regulator-min-microvolt = <850000>;
>> +        regulator-max-microvolt = <850000>;
>> +        regulator-boot-on;
>> +        regulator-always-on;
>> +    };
>> +
>> +    eeprom@50 {
>> +        compatible = "atmel,24c32";
>> +        reg = <0x50>;
>> +        pagesize = <32>;
>> +    };
>> +
>> +    som_eeprom_opt: eeprom@51 {
>> +        compatible = "atmel,24c32";
>> +        reg = <0x51>;
>> +        pagesize = <32>;
>> +    };
>> +
>> +    i2c_som_rtc: rtc@52 {
>> +        compatible = "microcrystal,rv3028";
>> +        reg = <0x52>;
>> +    };
>> +};
>> +
>> +#include "k3-j722s-ti-ipc-firmware.dtsi"
>> diff --git a/arch/arm64/boot/dts/ti/k3-am6754-phyboard-rigel.dts b/arch/arm64/boot/dts/ti/k3-am6754-phyboard-rigel.dts
>> new file mode 100644
>> index 000000000000..7853d4f5d3b9
>> --- /dev/null
>> +++ b/arch/arm64/boot/dts/ti/k3-am6754-phyboard-rigel.dts
>> @@ -0,0 +1,502 @@
>> +// SPDX-License-Identifier: GPL-2.0-only OR MIT
>> +/*
>> + * Copyright (C) 2026 PHYTEC America LLC
>> + * Author: Nathan Morrisson <nmorrisson@phytec.com>
>> + */
>> +
>> +/dts-v1/;
>> +
>> +#include <dt-bindings/input/input.h>
>> +#include <dt-bindings/phy/phy.h>
>> +#include <dt-bindings/gpio/gpio.h>
>> +#include <dt-bindings/interrupt-controller/irq.h>
>> +#include "k3-serdes.h"
>> +#include "k3-j722s.dtsi"
> 
> This should be included by the som.dtsi, keeps the include chain sane.


I think we always included the soc.dtsi on carrier-board level. As far as I remember the idea was to keep the option open for SoM/CB combinations using a different SoC variant from the j722s family. E.g. if in the future there will be a need for different soc.dtsi which is not j722s. But since most variants are now handled by u-boot/dt fixups, it does not really matter anymore.

Regards,
Wadim

> 
> Andrew
> 
>> +#include "k3-am67-phycore-som.dtsi"
>> +
>> +/ {
>> +    compatible = "phytec,am6754-phyboard-rigel",
>> +             "phytec,am67-phycore-som", "ti,j722s";
>> +    model = "PHYTEC phyBOARD-Rigel AM67";
>> +
>> +    aliases {
>> +        gpio1 = &main_gpio1;
>> +        mmc1 = &sdhci1;
>> +        serial2 = &main_uart0;
>> +        usb0 = &usb0;
>> +        usb1 = &usb1;
>> +    };
>> +
>> +    can_tc0: can-phy0 {
>> +        compatible = "ti,tcan1042";
>> +        #phy-cells = <0>;
>> +        max-bitrate = <8000000>;
>> +        standby-gpios = <&gpio_exp1 1 GPIO_ACTIVE_HIGH>;
>> +    };
>> +
>> +    usb0_connector: connector {
>> +        compatible = "gpio-usb-b-connector", "usb-b-connector";
>> +        label = "USB-C";
>> +        data-role = "dual";
>> +
>> +        pinctrl-names = "default";
>> +        pinctrl-0 = <&main_usbc_power_pins_default>;
>> +
>> +        id-gpios = <&main_gpio1 15 GPIO_ACTIVE_HIGH>;
>> +
>> +        port {
>> +            usb0_con: endpoint {
>> +                remote-endpoint = <&usb0_ep>;
>> +            };
>> +        };
>> +    };
>> +
>> +    keys {
>> +        compatible = "gpio-keys";
>> +        autorepeat;
>> +        pinctrl-names = "default";
>> +        pinctrl-0 = <&gpio_keys_pins_default>;
>> +
>> +        key-home {
>> +            label = "home";
>> +            linux,code = <KEY_HOME>;
>> +            gpios = <&main_gpio1 23 GPIO_ACTIVE_HIGH>;
>> +        };
>> +
>> +        key-menu {
>> +            label = "menu";
>> +            linux,code = <KEY_MENU>;
>> +            gpios = <&gpio_exp1 4 GPIO_ACTIVE_HIGH>;
>> +        };
>> +    };
>> +
>> +    pcie_refclk0: pcie-refclk0 {
>> +        compatible = "gpio-gate-clock";
>> +        pinctrl-names = "default";
>> +        pinctrl-0 = <&main_pcie_usb_sel_pins_default>;
>> +        clocks = <&serdes_refclk>;
>> +        #clock-cells = <0>;
>> +        enable-gpios = <&main_gpio0 22 GPIO_ACTIVE_LOW>;
>> +    };
>> +
>> +    vcc_1v8: regulator-vcc-1v8 {
>> +        compatible = "regulator-fixed";
>> +        regulator-name = "VCC_1V8";
>> +        regulator-min-microvolt = <1800000>;
>> +        regulator-max-microvolt = <1800000>;
>> +        regulator-always-on;
>> +        regulator-boot-on;
>> +    };
>> +
>> +    vcc_3v3_aud: regulator-vcc-3v3-aud {
>> +        compatible = "regulator-fixed";
>> +        regulator-name = "VCC_3V3_AUD";
>> +        regulator-min-microvolt = <3300000>;
>> +        regulator-max-microvolt = <3300000>;
>> +        regulator-always-on;
>> +        regulator-boot-on;
>> +    };
>> +
>> +    vcc_3v3_mmc: regulator-vcc-3v3-mmc {
>> +        /* TPS22963C OUTPUT */
>> +        compatible = "regulator-fixed";
>> +        regulator-name = "VCC_3V3_MMC";
>> +        regulator-min-microvolt = <3300000>;
>> +        regulator-max-microvolt = <3300000>;
>> +        regulator-always-on;
>> +        regulator-boot-on;
>> +    };
>> +
>> +    vcc_3v3_sw: regulator-vcc-3v3-sw {
>> +        compatible = "regulator-fixed";
>> +        regulator-name = "VCC_3V3_SW";
>> +        regulator-min-microvolt = <3300000>;
>> +        regulator-max-microvolt = <3300000>;
>> +        regulator-always-on;
>> +        regulator-boot-on;
>> +    };
>> +
>> +    vcc_speaker: regulator-vcc-speaker {
>> +        compatible = "regulator-fixed";
>> +        regulator-name = "VCC_SPEAKER";
>> +        regulator-min-microvolt = <5000000>;
>> +        regulator-max-microvolt = <5000000>;
>> +        regulator-always-on;
>> +        regulator-boot-on;
>> +    };
>> +
>> +    sound {
>> +        compatible = "simple-audio-card";
>> +        simple-audio-card,widgets =
>> +            "Microphone", "Mic Jack",
>> +            "Headphone", "Headphone Jack",
>> +            "Line", "Stereo Jack",
>> +            "Speaker", "L SPKR",
>> +            "Speaker", "R SPKR";
>> +        simple-audio-card,routing =
>> +            "MIC1RP", "Mic Jack",
>> +            "Mic Jack", "MICBIAS",
>> +            "Headphone Jack", "HPL",
>> +            "Headphone Jack", "HPR",
>> +            "MIC1LM", "Stereo Jack",
>> +            "MIC1LP", "Stereo Jack",
>> +            "SPL", "L SPKR",
>> +            "SPR", "R SPKR";
>> +        simple-audio-card,name = "phyBOARD-Rigel";
>> +        simple-audio-card,format = "dsp_b";
>> +        simple-audio-card,bitclock-master = <&sound_master>;
>> +        simple-audio-card,frame-master = <&sound_master>;
>> +        simple-audio-card,bitclock-inversion;
>> +
>> +        simple-audio-card,cpu {
>> +            sound-dai = <&mcasp0>;
>> +        };
>> +
>> +        sound_master: simple-audio-card,codec {
>> +            sound-dai = <&audio_codec>;
>> +            clocks = <&audio_refclk1>;
>> +        };
>> +    };
>> +};
>> +
>> +&main_pmx0 {
>> +    audio_ext_refclk1_pins_default: audio-ext-refclk1-default-pins {
>> +        pinctrl-single,pins = <
>> +            J722S_IOPAD(0x0a0, PIN_OUTPUT, 1)    /* (N24) GPMC0_WPn.AUDIO_EXT_REFCLK1 */
>> +        >;
>> +    };
>> +
>> +    gpio_exp0_int_pins_default: gpio-exp0-int-default-pins {
>> +        pinctrl-single,pins = <
>> +            J722S_IOPAD(0x0054, PIN_INPUT, 7)    /* (T21) GPMC0_AD6.GPIO0_21 */
>> +        >;
>> +    };
>> +
>> +    gpio_exp1_int_pins_default: gpio-exp1-int-default-pins {
>> +        pinctrl-single,pins = <
>> +            J722S_IOPAD(0x0244, PIN_INPUT, 7)    /* (A24) MMC1_SDWP.GPIO1_49 */
>> +        >;
>> +    };
>> +
>> +    gpio_exp2_int_pins_default: gpio-exp2-int-default-pins {
>> +        pinctrl-single,pins = <
>> +            J722S_IOPAD(0x0050, PIN_INPUT, 7)    /* (T24) GPMC0_AD5.GPIO0_20 */
>> +        >;
>> +    };
>> +
>> +    gpio_keys_pins_default: gpio-keys-default-pins {
>> +        pinctrl-single,pins = <
>> +            J722S_IOPAD(0x01d4, PIN_INPUT, 7)    /* (B21) UART0_RTSn.GPIO1_23 */
>> +        >;
>> +    };
>> +
>> +    main_i2c0_pins_default: main-i2c0-default-pins {
>> +        pinctrl-single,pins = <
>> +            J722S_IOPAD(0x01e0, PIN_INPUT_PULLUP, 0)    /* (D23) I2C0_SCL */
>> +            J722S_IOPAD(0x01e4, PIN_INPUT_PULLUP, 0)    /* (B22) I2C0_SDA */
>> +        >;
>> +        bootph-all;
>> +    };
>> +
>> +    main_i2c1_pins_default: main-i2c1-default-pins {
>> +        pinctrl-single,pins = <
>> +            J722S_IOPAD(0x01e8, PIN_INPUT_PULLUP, 0)    /* (C24) I2C1_SCL */
>> +            J722S_IOPAD(0x01ec, PIN_INPUT_PULLUP, 0)    /* (A22) I2C1_SDA */
>> +        >;
>> +        bootph-all;
>> +    };
>> +
>> +    main_mcan0_pins_default: main-mcan0-default-pins {
>> +        pinctrl-single,pins = <
>> +            J722S_IOPAD(0x1dc, PIN_INPUT, 0)    /* (C22) MCAN0_RX */
>> +            J722S_IOPAD(0x1d8, PIN_OUTPUT, 0)    /* (D22) MCAN0_TX */
>> +        >;
>> +    };
>> +
>> +    main_mcasp0_pins_default: main-mcasp0-default-pins {
>> +        pinctrl-single,pins = <
>> +            J722S_IOPAD(0x1a8, PIN_INPUT, 0)    /* (C26) MCASP0_AFSX */
>> +            J722S_IOPAD(0x1a4, PIN_INPUT, 0)    /* (D25) MCASP0_ACLKX */
>> +            J722S_IOPAD(0x198, PIN_OUTPUT, 0)    /* (A26) MCASP0_AXR2 */
>> +            J722S_IOPAD(0x194, PIN_INPUT, 0)    /* (A25) MCASP0_AXR3 */
>> +        >;
>> +    };
>> +
>> +    main_mcasp1_pins_default: main-mcasp1-default-pins {
>> +        pinctrl-single,pins = <
>> +            J722S_IOPAD(0x0090, PIN_INPUT, 2)    /* (P27) GPMC0_BE0n_CLE.MCASP1_ACLKX */
>> +            J722S_IOPAD(0x0098, PIN_INPUT, 2)    /* (V21) GPMC0_WAIT0.MCASP1_AFSX */
>> +            J722S_IOPAD(0x008c, PIN_OUTPUT, 2)    /* (N23) GPMC0_WEn.MCASP1_AXR0 */
>> +        >;
>> +    };
>> +
>> +    main_mmc1_pins_default: main-mmc1-default-pins {
>> +        pinctrl-single,pins = <
>> +            J722S_IOPAD(0x023c, PIN_INPUT, 0)    /* (H22) MMC1_CMD */
>> +            J722S_IOPAD(0x0234, PIN_INPUT, 0)    /* (H24) MMC1_CLK */
>> +            J722S_IOPAD(0x0230, PIN_INPUT, 0)    /* (H23) MMC1_DAT0 */
>> +            J722S_IOPAD(0x022c, PIN_INPUT, 0)    /* (H20) MMC1_DAT1 */
>> +            J722S_IOPAD(0x0228, PIN_INPUT, 0)    /* (J23) MMC1_DAT2 */
>> +            J722S_IOPAD(0x0224, PIN_INPUT, 0)    /* (H25) MMC1_DAT3 */
>> +            J722S_IOPAD(0x0240, PIN_INPUT, 0)    /* (B24) MMC1_SDCD */
>> +        >;
>> +        bootph-all;
>> +    };
>> +
>> +    main_pcie_pins_default: main-pcie-default-pins {
>> +        pinctrl-single,pins = <
>> +            J722S_IOPAD(0x07c, PIN_INPUT, 7)    /* (T23) GPMC0_CLK.GPIO0_31 */
>> +        >;
>> +    };
>> +
>> +    main_pcie_usb_sel_pins_default: main-pcie-usb-sel-default-pins {
>> +        pinctrl-single,pins = <
>> +            J722S_IOPAD(0x058, PIN_INPUT, 7)    /* (T22) GPMC0_AD7.GPIO0_22 */
>> +        >;
>> +    };
>> +
>> +    main_uart0_pins_default: main-uart0-default-pins {
>> +        pinctrl-single,pins = <
>> +            J722S_IOPAD(0x01c8, PIN_INPUT, 0)    /* (F19) UART0_RXD */
>> +            J722S_IOPAD(0x01cc, PIN_OUTPUT, 0)    /* (F20) UART0_TXD */
>> +        >;
>> +        bootph-all;
>> +    };
>> +
>> +    main_usbc_power_pins_default: main-usbc-power-default-pins {
>> +        pinctrl-single,pins = <
>> +            J722S_IOPAD(0x1b4, PIN_INPUT, 7)    /* (B20) SPI0_CS0.GPIO1_15 */
>> +        >;
>> +    };
>> +};
>> +
>> +&audio_refclk1 {
>> +    assigned-clock-rates = <25000000>;
>> +};
>> +
>> +&main_i2c0 {
>> +    pinctrl-names = "default";
>> +    pinctrl-0 = <&main_i2c0_pins_default>;
>> +    clock-frequency = <400000>;
>> +    status = "okay";
>> +
>> +    veml6030: light-sensor@10 {
>> +        compatible = "vishay,veml6030";
>> +        reg = <0x10>;
>> +        vdd-supply = <&vcc_3v3_sw>;
>> +    };
>> +};
>> +
>> +&main_i2c1 {
>> +    pinctrl-names = "default";
>> +    pinctrl-0 = <&main_i2c1_pins_default>;
>> +    clock-frequency = <100000>;
>> +    status = "okay";
>> +
>> +    audio_codec: audio-codec@18 {
>> +        compatible = "ti,tlv320aic3110";
>> +        reg = <0x18>;
>> +        pinctrl-names = "default";
>> +        pinctrl-0 = <&audio_ext_refclk1_pins_default>;
>> +        #sound-dai-cells = <0>;
>> +        ai3xx-micbias-vg = <2>;
>> +        reset-gpios = <&gpio_exp1 7 GPIO_ACTIVE_LOW>;
>> +
>> +        HPVDD-supply = <&vcc_3v3_aud>;
>> +        SPRVDD-supply = <&vcc_speaker>;
>> +        SPLVDD-supply = <&vcc_speaker>;
>> +        AVDD-supply = <&vcc_3v3_aud>;
>> +        IOVDD-supply = <&vcc_3v3_aud>;
>> +        DVDD-supply = <&vcc_1v8>;
>> +    };
>> +
>> +    gpio_exp0: gpio@20 {
>> +        compatible = "nxp,pcf8574";
>> +        reg = <0x20>;
>> +        gpio-controller;
>> +        #gpio-cells = <2>;
>> +        pinctrl-names = "default";
>> +        pinctrl-0 = <&gpio_exp0_int_pins_default>;
>> +        interrupt-parent = <&main_gpio0>;
>> +        interrupts = <21 IRQ_TYPE_LEVEL_LOW>;
>> +        gpio-line-names = "CSI3_STROBE", "CSI3_TRIGGER",
>> +                  "CSI3_SHUTTER", "CSI3_OE",
>> +                  "CSI2_STROBE", "CSI2_TRIGGER",
>> +                  "CSI2_SHUTTER", "CSI2_OE";
>> +    };
>> +
>> +    gpio_exp1: gpio@21 {
>> +        compatible = "nxp,pcf8574";
>> +        reg = <0x21>;
>> +        gpio-controller;
>> +        #gpio-cells = <2>;
>> +        pinctrl-names = "default";
>> +        pinctrl-0 = <&gpio_exp1_int_pins_default>;
>> +        interrupt-parent = <&main_gpio1>;
>> +        interrupts = <49 IRQ_TYPE_LEVEL_LOW>;
>> +        gpio-line-names = "GPIO0_HDMI_RST", "GPIO1_CAN_nEN",
>> +                  "GPIO2_LED", "GPIO3_MCU_CAN0_nEN",
>> +                  "GPIO4_BUT2", "GPIO5_MCU_CAN1_nEN",
>> +                  "GPIO6_AUDIO_GPIO", "GPIO7_AUDIO_USER_RESET";
>> +    };
>> +
>> +    gpio_exp2: gpio@23 {
>> +        compatible = "nxp,pcf8574";
>> +        reg = <0x23>;
>> +        gpio-controller;
>> +        #gpio-cells = <2>;
>> +        pinctrl-names = "default";
>> +        pinctrl-0 = <&gpio_exp2_int_pins_default>;
>> +        interrupt-parent = <&main_gpio0>;
>> +        interrupts = <20 IRQ_TYPE_LEVEL_LOW>;
>> +        gpio-line-names = "CSI1_STROBE", "CSI1_TRIGGER",
>> +                  "CSI1_SHUTTER", "CSI1_OE",
>> +                  "CSI0_STROBE", "CSI0_TRIGGER",
>> +                  "CSI0_SHUTTER", "CSI0_OE";
>> +    };
>> +
>> +    current-sensor@40 {
>> +        compatible = "ti,ina233";
>> +        reg = <0x40>;
>> +        shunt-resistor = <18000>;
>> +    };
>> +
>> +    eeprom@51 {
>> +        compatible = "atmel,24c02";
>> +        reg = <0x51>;
>> +        pagesize = <16>;
>> +    };
>> +};
>> +
>> +&main_mcan0 {
>> +    pinctrl-names = "default";
>> +    pinctrl-0 = <&main_mcan0_pins_default>;
>> +    phys = <&can_tc0>;
>> +    status = "okay";
>> +};
>> +
>> +&main_uart0 {
>> +    pinctrl-names = "default";
>> +    pinctrl-0 = <&main_uart0_pins_default>;
>> +    bootph-all;
>> +    status = "okay";
>> +};
>> +
>> +&mcasp0 {
>> +    #sound-dai-cells = <0>;
>> +    op-mode = <0>; /* MCASP_IIS_MODE */
>> +    pinctrl-names = "default";
>> +    pinctrl-0 = <&main_mcasp0_pins_default>;
>> +    tdm-slots = <2>;
>> +    serial-dir = < /* 0: INACTIVE, 1: TX, 2: RX */
>> +           0 0 1 2
>> +           0 0 0 0
>> +           0 0 0 0
>> +           0 0 0 0
>> +    >;
>> +    status = "okay";
>> +};
>> +
>> +&mcasp1 {
>> +    #sound-dai-cells = <0>;
>> +    pinctrl-names = "default";
>> +    pinctrl-0 = <&main_mcasp1_pins_default>;
>> +    op-mode = <0>; /* MCASP_IIS_MODE */
>> +    tdm-slots = <2>;
>> +    serial-dir = < /* 0: INACTIVE, 1: TX, 2: RX */
>> +           1 0 2 0
>> +           0 0 0 0
>> +           0 0 0 0
>> +           0 0 0 0
>> +    >;
>> +    status = "okay";
>> +};
>> +
>> +&pcie0_rc {
>> +    pinctrl-names = "default";
>> +    pinctrl-0 = <&main_pcie_pins_default>;
>> +    num-lanes = <1>;
>> +    phys = <&serdes1_pcie_link>;
>> +    phy-names = "pcie-phy";
>> +    reset-gpios = <&main_gpio0 31 GPIO_ACTIVE_HIGH>;
>> +    status = "okay";
>> +};
>> +
>> +&sdhci1 {
>> +    /* SD/MMC */
>> +    vmmc-supply = <&vcc_3v3_mmc>;
>> +    vqmmc-supply = <&vddshv_sdio>;
>> +    pinctrl-names = "default";
>> +    pinctrl-0 = <&main_mmc1_pins_default>;
>> +    disable-wp;
>> +    no-1-8-v;
>> +    bootph-all;
>> +    status = "okay";
>> +};
>> +
>> +&serdes_ln_ctrl {
>> +    idle-states = <J722S_SERDES0_LANE0_USB>,
>> +              <J722S_SERDES1_LANE0_PCIE0_LANE0>;
>> +};
>> +
>> +&serdes0 {
>> +    status = "okay";
>> +
>> +    serdes0_usb_link: phy@0 {
>> +        reg = <0>;
>> +        cdns,num-lanes = <1>;
>> +        #phy-cells = <0>;
>> +        cdns,phy-type = <PHY_TYPE_USB3>;
>> +        resets = <&serdes_wiz0 1>;
>> +    };
>> +};
>> +
>> +&serdes_wiz0 {
>> +    status = "okay";
>> +};
>> +
>> +&serdes1 {
>> +    status = "okay";
>> +
>> +    serdes1_pcie_link: phy@0 {
>> +        reg = <0>;
>> +        cdns,num-lanes = <1>;
>> +        #phy-cells = <0>;
>> +        cdns,phy-type = <PHY_TYPE_PCIE>;
>> +        resets = <&serdes_wiz1 1>;
>> +    };
>> +};
>> +
>> +&serdes_wiz1 {
>> +    clocks = <&k3_clks 280 0>, <&k3_clks 280 1>, <&pcie_refclk0>;
>> +    status = "okay";
>> +};
>> +
>> +&usbss0 {
>> +    ti,vbus-divider;
>> +    status = "okay";
>> +};
>> +
>> +&usb0 {
>> +    dr_mode = "otg";
>> +    usb-role-switch;
>> +    maximum-speed = "high-speed";
>> +
>> +    port {
>> +        usb0_ep: endpoint {
>> +            remote-endpoint = <&usb0_con>;
>> +        };
>> +    };
>> +};
>> +
>> +&usbss1 {
>> +    ti,vbus-divider;
>> +    status = "okay";
>> +};
>> +
>> +&usb1 {
>> +    dr_mode = "host";
>> +    phys = <&serdes0_usb_link>;
>> +    phy-names = "cdns3,usb3-phy";
>> +    maximum-speed = "super-speed";
>> +};
> 
> _______________________________________________
> upstream mailing list -- upstream@lists.phytec.de
> To unsubscribe send an email to upstream-leave@lists.phytec.de



^ permalink raw reply

* [PATCH] clocksource/drivers/exynos_mct: Fix an unexpected sign extension
From: Markov Gleb @ 2026-06-29 12:44 UTC (permalink / raw)
  To: Daniel Lezcano
  Cc: Gleb Markov, Thomas Gleixner, Krzysztof Kozlowski, Alim Akhtar,
	Kukjin Kim, Changhwan Youn, linux-arm-kernel, linux-samsung-soc,
	linux-kernel, lvc-project

From: Gleb Markov <markov.gi@npc-ksb.ru>

Due to implicit sign extension, shifting a signed iteral 1 before
converting to a wider unsigned type floods the upper bits with ones.
This produced an unexpected value (such as 0xffffffffff80000000), which
breaks subsequent calculations.

Add the UL suffix to explicitly convert to a type with a larger dimension.

Found by Linux Verification Center (linuxtesting.org) with SVACE.

Fixes: 30d8bead5a30 ("ARM: EXYNOS4: Implement kernel timers using MCT")
Signed-off-by: Gleb Markov <markov.gi@npc-ksb.ru>
---
 drivers/clocksource/exynos_mct.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/clocksource/exynos_mct.c b/drivers/clocksource/exynos_mct.c
index da09f467a6bb..ab607dc99004 100644
--- a/drivers/clocksource/exynos_mct.c
+++ b/drivers/clocksource/exynos_mct.c
@@ -378,7 +378,7 @@ static void exynos4_mct_tick_start(unsigned long cycles,
 
 	exynos4_mct_tick_stop(mevt);
 
-	tmp = (1 << 31) | cycles;	/* MCT_L_UPDATE_ICNTB */
+	tmp = (1UL << 31) | cycles;	/* MCT_L_UPDATE_ICNTB */
 
 	/* update interrupt count buffer */
 	exynos4_mct_write(tmp, mevt->base + MCT_L_ICNTB_OFFSET);
-- 
2.43.0



^ permalink raw reply related

* Re: [Upstream] [PATCH v2 2/2] arm64: dts: ti: Add support for the phyCORE-AM67x
From: Wadim Egorov @ 2026-06-29 13:38 UTC (permalink / raw)
  To: Nathan Morrisson, nm, vigneshr, kristo, robh, krzk+dt, conor+dt
  Cc: afd, sashiko-reviews, linux-arm-kernel, devicetree, linux-kernel,
	upstream
In-Reply-To: <20260626161014.1146128-2-nmorrisson@phytec.com>



On 6/26/26 7:10 PM, Nathan Morrisson wrote:
> Add support for the PHYTEC phyCORE-AM67x SoM [1] and the
> corresponding phyBOARD-Rigel carrier board [2]. The phyCORE-AM67x SoM
> uses the TI AM67x SoC and can come with different sizes and models of
> DDR, eMMC, and SPI NOR Flash.
> 
> Supported features:
>   * Audio playback and recording
>   * CAN
>   * Debug UART
>   * eMMC
>   * Ethernet
>   * GPIO buttons
>   * Heartbeat LED
>   * I2C Current sensor
>   * I2C EEPROM
>   * I2C Light sensor
>   * I2C RTC
>   * Micro SD card
>   * PCIe
>   * SPI NOR flash
>   * USB
> 
> [1] https://www.phytec.com/product/phycore-am67x/
> [2] https://www.phytec.com/product/phyboard-am67x-development-kit/
> 
> Signed-off-by: Nathan Morrisson <nmorrisson@phytec.com>

Reviewed-by: Wadim Egorov <w.egorov@phytec.de>


^ permalink raw reply

* Re: [PATCH net-next v11 2/7] phy: qcom: add the SGMII SerDes PHY driver for SCMI systems
From: Julian Braha @ 2026-06-29 13:35 UTC (permalink / raw)
  To: Bartosz Golaszewski, Bjorn Andersson, Konrad Dybcio, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Andrew Lunn, David S. Miller,
	Eric Dumazet, Jakub Kicinski, Paolo Abeni, Maxime Coquelin,
	Alexandre Torgue, Vinod Koul, Giuseppe Cavallaro, Chen-Yu Tsai,
	Jernej Skrabec, Neil Armstrong, Kevin Hilman, Jerome Brunet,
	Shawn Guo, Fabio Estevam, Jan Petrous, s32, Mohd Ayaan Anwar,
	Romain Gantois, Geert Uytterhoeven, Magnus Damm, Maxime Ripard,
	Christophe Roullier, Bartosz Golaszewski, Radu Rendec
  Cc: linux-arm-msm, devicetree, linux-kernel, netdev, linux-stm32,
	linux-arm-kernel, Drew Fustini, linux-sunxi, linux-amlogic,
	linux-mips, imx, linux-renesas-soc, linux-rockchip, sophgo,
	linux-riscv, Bartosz Golaszewski
In-Reply-To: <20260629-qcom-sa8255p-emac-v11-2-1b7fb95b51f9@oss.qualcomm.com>

Hi Bartosz,

On 6/29/26 12:28, Bartosz Golaszewski wrote:
> +config PHY_QCOM_SGMII_ETH_SCMI
> +	tristate "Qualcomm DWMAC SGMII SerDes/PHY driver (firmware managed)"
> +	depends on OF && (ARCH_QCOM || COMPILE_TEST)
> +	select GENERIC_PHY
> +	select PM_GENERIC_DOMAINS
> +	help

I think PHY_QCOM_SGMII_ETH_SCMI is missing a dependency on PM. I get a
build error currently:

WARNING: unmet direct dependencies detected for PM_GENERIC_DOMAINS
  Depends on [n]: PM [=n]
  Selected by [y]:
  - PHY_QCOM_SGMII_ETH_SCMI [=y] && OF [=y] && (ARCH_QCOM ||
COMPILE_TEST [=y])

drivers/pmdomain/core.c: In function ‘genpd_queue_power_off_work’:
drivers/pmdomain/core.c:936:20: error: ‘pm_wq’ undeclared (first use in
this function)
  936 |         queue_work(pm_wq, &genpd->power_off_work);
      |                    ^~~~~
drivers/pmdomain/core.c:936:20: note: each undeclared identifier is
reported only once for each function it appears in
drivers/pmdomain/core.c: In function ‘genpd_dev_pm_qos_notifier’:
drivers/pmdomain/core.c:1133:39: error: ‘struct dev_pm_info’ has no
member named ‘ignore_children’
 1133 |                 if (!dev || dev->power.ignore_children)
      |                                       ^
  CC      mm/truncate.o

- Julian Braha


^ permalink raw reply

* Re: [PATCH v2 1/4] dt-bindings: connector: Add fsl,aud-io-slot binding
From: Rob Herring @ 2026-06-29 13:32 UTC (permalink / raw)
  To: chancel.liu
  Cc: krzk+dt, conor+dt, Frank.Li, s.hauer, kernel, festevam,
	devicetree, linux-kernel, imx, linux-arm-kernel
In-Reply-To: <20260629074734.3643227-2-chancel.liu@oss.nxp.com>

On Mon, Jun 29, 2026 at 04:47:31PM +0900, chancel.liu@oss.nxp.com wrote:
> From: Chancel Liu <chancel.liu@nxp.com>
> 
> The NXP AUD-IO slot represents a physically present I/O connector on
> the base board. It acts as a nexus that exposes a constrained set of
> I/O resources, such as GPIOs, clocks and interrupts, through fixed
> electrical wiring. All actual hardware providers reside on the base
> board. The connector node only defines index-based mappings to those
> providers.
> 
> This connector type is present on i.MX95 19x19 EVK and i.MX952 EVK,
> where it is used to attach the IMX-AUD-IO audio expansion card[1]. The
> same add-on board can be reused across different base boards that carry
> this connector.
> 
> [1]https://www.nxp.com/part/IMX-AUD-IO
> 
> Signed-off-by: Chancel Liu <chancel.liu@nxp.com>
> ---
>  .../bindings/connector/fsl,aud-io-slot.yaml   | 113 ++++++++++++++++++
>  1 file changed, 113 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/connector/fsl,aud-io-slot.yaml
> 
> diff --git a/Documentation/devicetree/bindings/connector/fsl,aud-io-slot.yaml b/Documentation/devicetree/bindings/connector/fsl,aud-io-slot.yaml
> new file mode 100644
> index 000000000000..5085574d221b
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/connector/fsl,aud-io-slot.yaml
> @@ -0,0 +1,113 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/connector/fsl,aud-io-slot.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: NXP AUD-IO Slot
> +
> +maintainers:
> +  - Frank Li <Frank.li@nxp.com>
> +  - Chancel Liu <chancel.liu@nxp.com>
> +
> +description:
> +  The NXP AUD-IO slot represents a physically present I/O connector on
> +  the base board. It acts as a nexus that exposes a constrained set of
> +  I/O resources, such as GPIOs, clocks and interrupts, through fixed
> +  electrical wiring. All actual hardware providers reside on the base
> +  board. The connector node only defines index-based mappings to those
> +  providers. This connector type is present on i.MX95 19x19 EVK and
> +  i.MX952 EVK, where it is used to attach the IMX-AUD-IO expansion card.
> +
> +properties:
> +  compatible:
> +    oneOf:
> +      - items:
> +          - enum:
> +              - fsl,imx952-evk-aud-io
> +          - const: fsl,imx95-19x19-evk-aud-io
> +      - const: fsl,imx95-19x19-evk-aud-io
> +
> +  gpio-controller: true
> +
> +  '#gpio-cells':
> +    const: 2
> +
> +  gpio-map:
> +    minItems: 1
> +    maxItems: 32

You don't know how many GPIOs are on the connector?

> +
> +  gpio-map-mask:
> +    items:
> +      - const: 0xffff
> +      - const: 0x0
> +
> +  gpio-map-pass-thru:
> +    items:
> +      - const: 0x0
> +      - const: 0x1
> +
> +  '#clock-cells':
> +    const: 1
> +
> +  clock-map:
> +    minItems: 1
> +    maxItems: 16

You don't know how many clocks are on the connector?

> +
> +  clock-map-mask:
> +    items:
> +      - const: 0xff

> +
> +  clock-map-pass-thru: true

The purpose of this property (for GPIO) was to pass thru flag cells 
which are standardized. That's not the case for clocks.

Anyways, these properties need to be defined in dtschema first.

Rob


^ permalink raw reply

* [PATCH 13/13] gpiolib: remove linux/gpio.h
From: Arnd Bergmann @ 2026-06-29 13:26 UTC (permalink / raw)
  To: linux-gpio
  Cc: Arnd Bergmann, Bartosz Golaszewski, Andrew Lunn,
	Sebastian Hesselbarth, Gregory Clement, Frank Li, Robert Jarzmik,
	Krzysztof Kozlowski, Greg Ungerer, Thomas Bogendoerfer,
	Hauke Mehrtens, Rafał Miłecki, Yoshinori Sato,
	John Paul Adrian Glaubitz, Linus Walleij, Dmitry Torokhov,
	Jakub Kicinski, Paolo Abeni, Dominik Brodowski, linux-kernel,
	linux-arm-kernel, linux-samsung-soc, patches, linux-m68k,
	linux-mips, linux-sh, linux-input, linux-media, netdev,
	linux-sunxi, linux-phy, linux-rockchip, linux-sound
In-Reply-To: <20260629132633.1300009-1-arnd@kernel.org>

From: Arnd Bergmann <arnd@arndb.de>

After all other drivers have converted to linux/gpio/consumer.h
or linux/gpio/legacy.h, remove the final leftover bits here.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 MAINTAINERS                   |  1 -
 drivers/gpio/TODO             |  4 +---
 drivers/gpio/gpiolib-cdev.c   |  2 +-
 drivers/gpio/gpiolib-legacy.c |  3 +--
 drivers/gpio/gpiolib.c        |  2 +-
 include/linux/gpio.h          | 22 ----------------------
 6 files changed, 4 insertions(+), 30 deletions(-)
 delete mode 100644 include/linux/gpio.h

diff --git a/MAINTAINERS b/MAINTAINERS
index 15011f5752a9..7f3f386b1d8c 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -11175,7 +11175,6 @@ F:	Documentation/devicetree/bindings/gpio/
 F:	Documentation/driver-api/gpio/
 F:	drivers/gpio/
 F:	include/dt-bindings/gpio/
-F:	include/linux/gpio.h
 F:	include/linux/gpio/
 K:	(devm_)?gpio_(request|free|direction|get|set)
 K:	GPIOD_FLAGS_BIT_NONEXCLUSIVE
diff --git a/drivers/gpio/TODO b/drivers/gpio/TODO
index 7ce80fde1f17..894c7e1af252 100644
--- a/drivers/gpio/TODO
+++ b/drivers/gpio/TODO
@@ -52,9 +52,7 @@ Work items:
   base can be made dynamic (set to -1) if CONFIG_GPIO_SYSFS is disabled.
 
 - When this work is complete (will require some of the items in the
-  following ongoing work as well) we can delete the old global
-  numberspace accessors from <linux/gpio.h> and eventually delete
-  <linux/gpio.h> altogether.
+  following ongoing work as well) we can delete <linux/gpio/lagacy.h>.
 
 -------------------------------------------------------------------------------
 
diff --git a/drivers/gpio/gpiolib-cdev.c b/drivers/gpio/gpiolib-cdev.c
index 82f27db0b230..9b6a28819371 100644
--- a/drivers/gpio/gpiolib-cdev.c
+++ b/drivers/gpio/gpiolib-cdev.c
@@ -11,7 +11,7 @@
 #include <linux/device.h>
 #include <linux/err.h>
 #include <linux/file.h>
-#include <linux/gpio.h>
+#include <linux/gpio/consumer.h>
 #include <linux/gpio/driver.h>
 #include <linux/hte.h>
 #include <linux/interrupt.h>
diff --git a/drivers/gpio/gpiolib-legacy.c b/drivers/gpio/gpiolib-legacy.c
index ef3f2ef30cf2..33e5a45e720b 100644
--- a/drivers/gpio/gpiolib-legacy.c
+++ b/drivers/gpio/gpiolib-legacy.c
@@ -7,8 +7,7 @@
 
 #include <linux/gpio/consumer.h>
 #include <linux/gpio/driver.h>
-
-#include <linux/gpio.h>
+#include <linux/gpio/legacy.h>
 
 #include "gpiolib.h"
 
diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
index e5fb60111151..1f498d6c8c68 100644
--- a/drivers/gpio/gpiolib.c
+++ b/drivers/gpio/gpiolib.c
@@ -29,7 +29,7 @@
 #include <linux/string.h>
 #include <linux/string_choices.h>
 
-#include <linux/gpio.h>
+#include <linux/gpio/consumer.h>
 #include <linux/gpio/driver.h>
 #include <linux/gpio/machine.h>
 
diff --git a/include/linux/gpio.h b/include/linux/gpio.h
deleted file mode 100644
index b0d4942a65de..000000000000
--- a/include/linux/gpio.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * NOTE: This header *must not* be included.
- *
- * If you're implementing a GPIO driver, only include <linux/gpio/driver.h>
- * If you're implementing a GPIO consumer, only include <linux/gpio/consumer.h>
- * If you're using the legacy interfaces, include <linux/gpio/legacy.h>
- */
-
-#ifndef __LINUX_GPIO_H
-#define __LINUX_GPIO_H
-
-#include <linux/types.h>
-#ifdef CONFIG_GPIOLIB
-#include <linux/gpio/consumer.h>
-#endif
-
-#ifdef CONFIG_GPIOLIB_LEGACY
-#include <linux/gpio/legacy.h>
-#endif /* CONFIG_GPIOLIB_LEGACY */
-
-#endif /* __LINUX_GPIO_H */
-- 
2.39.5



^ permalink raw reply related

* [PATCH 12/13] gpib: gpio: replace linux/gpio.h inclusion
From: Arnd Bergmann @ 2026-06-29 13:26 UTC (permalink / raw)
  To: linux-gpio
  Cc: Arnd Bergmann, Bartosz Golaszewski, Andrew Lunn,
	Sebastian Hesselbarth, Gregory Clement, Frank Li, Robert Jarzmik,
	Krzysztof Kozlowski, Greg Ungerer, Thomas Bogendoerfer,
	Hauke Mehrtens, Rafał Miłecki, Yoshinori Sato,
	John Paul Adrian Glaubitz, Linus Walleij, Dmitry Torokhov,
	Jakub Kicinski, Paolo Abeni, Dominik Brodowski, linux-kernel,
	linux-arm-kernel, linux-samsung-soc, patches, linux-m68k,
	linux-mips, linux-sh, linux-input, linux-media, netdev,
	linux-sunxi, linux-phy, linux-rockchip, linux-sound
In-Reply-To: <20260629132633.1300009-1-arnd@kernel.org>

From: Arnd Bergmann <arnd@arndb.de>

linux/gpio.h is going away, so use linux/gpio/consumer.h instead.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 drivers/gpib/gpio/gpib_bitbang.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpib/gpio/gpib_bitbang.c b/drivers/gpib/gpio/gpib_bitbang.c
index 0e227980b493..2e8d895db06a 100644
--- a/drivers/gpib/gpio/gpib_bitbang.c
+++ b/drivers/gpib/gpio/gpib_bitbang.c
@@ -64,7 +64,7 @@
 #include <linux/gpio/consumer.h>
 #include <linux/gpio/driver.h>
 #include <linux/gpio/machine.h>
-#include <linux/gpio.h>
+#include <linux/gpio/consumer.h>
 #include <linux/irq.h>
 
 static int sn7516x_used = 1, sn7516x;
-- 
2.39.5



^ permalink raw reply related

* [PATCH 11/13] Input: matrix_keyboard - replace linux/gpio.h inclusion
From: Arnd Bergmann @ 2026-06-29 13:26 UTC (permalink / raw)
  To: linux-gpio
  Cc: Arnd Bergmann, Bartosz Golaszewski, Andrew Lunn,
	Sebastian Hesselbarth, Gregory Clement, Frank Li, Robert Jarzmik,
	Krzysztof Kozlowski, Greg Ungerer, Thomas Bogendoerfer,
	Hauke Mehrtens, Rafał Miłecki, Yoshinori Sato,
	John Paul Adrian Glaubitz, Linus Walleij, Dmitry Torokhov,
	Jakub Kicinski, Paolo Abeni, Dominik Brodowski, linux-kernel,
	linux-arm-kernel, linux-samsung-soc, patches, linux-m68k,
	linux-mips, linux-sh, linux-input, linux-media, netdev,
	linux-sunxi, linux-phy, linux-rockchip, linux-sound
In-Reply-To: <20260629132633.1300009-1-arnd@kernel.org>

From: Arnd Bergmann <arnd@arndb.de>

linux/gpio.h is going away, so use linux/gpio/consumer.h instead.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 drivers/input/keyboard/matrix_keypad.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/input/keyboard/matrix_keypad.c b/drivers/input/keyboard/matrix_keypad.c
index e50a6fea9a60..98d0269a978f 100644
--- a/drivers/input/keyboard/matrix_keypad.c
+++ b/drivers/input/keyboard/matrix_keypad.c
@@ -16,7 +16,7 @@
 #include <linux/interrupt.h>
 #include <linux/jiffies.h>
 #include <linux/module.h>
-#include <linux/gpio.h>
+#include <linux/gpio/consumer.h>
 #include <linux/input/matrix_keypad.h>
 #include <linux/slab.h>
 #include <linux/of.h>
-- 
2.39.5



^ permalink raw reply related

* [PATCH 10/13] media: replace linux/gpio.h inclusions
From: Arnd Bergmann @ 2026-06-29 13:26 UTC (permalink / raw)
  To: linux-gpio
  Cc: Arnd Bergmann, Bartosz Golaszewski, Andrew Lunn,
	Sebastian Hesselbarth, Gregory Clement, Frank Li, Robert Jarzmik,
	Krzysztof Kozlowski, Greg Ungerer, Thomas Bogendoerfer,
	Hauke Mehrtens, Rafał Miłecki, Yoshinori Sato,
	John Paul Adrian Glaubitz, Linus Walleij, Dmitry Torokhov,
	Jakub Kicinski, Paolo Abeni, Dominik Brodowski, linux-kernel,
	linux-arm-kernel, linux-samsung-soc, patches, linux-m68k,
	linux-mips, linux-sh, linux-input, linux-media, netdev,
	linux-sunxi, linux-phy, linux-rockchip, linux-sound
In-Reply-To: <20260629132633.1300009-1-arnd@kernel.org>

From: Arnd Bergmann <arnd@arndb.de>

linux/gpio.h should no longer be used, convert these instead to
either linux/gpio/consumer.h or linux/gpio/legacy.h as needed.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 drivers/media/pci/ddbridge/ddbridge.h                 | 2 +-
 drivers/media/platform/samsung/s3c-camif/camif-core.c | 2 +-
 drivers/media/usb/em28xx/em28xx-dvb.c                 | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/media/pci/ddbridge/ddbridge.h b/drivers/media/pci/ddbridge/ddbridge.h
index f01ecdb0b627..cf50898f9a92 100644
--- a/drivers/media/pci/ddbridge/ddbridge.h
+++ b/drivers/media/pci/ddbridge/ddbridge.h
@@ -14,7 +14,7 @@
 #include <linux/delay.h>
 #include <linux/device.h>
 #include <linux/dvb/ca.h>
-#include <linux/gpio.h>
+#include <linux/gpio/consumer.h>
 #include <linux/i2c.h>
 #include <linux/init.h>
 #include <linux/interrupt.h>
diff --git a/drivers/media/platform/samsung/s3c-camif/camif-core.c b/drivers/media/platform/samsung/s3c-camif/camif-core.c
index 221e3c447f36..c3d059224844 100644
--- a/drivers/media/platform/samsung/s3c-camif/camif-core.c
+++ b/drivers/media/platform/samsung/s3c-camif/camif-core.c
@@ -12,7 +12,7 @@
 #include <linux/delay.h>
 #include <linux/device.h>
 #include <linux/errno.h>
-#include <linux/gpio.h>
+#include <linux/gpio/consumer.h>
 #include <linux/i2c.h>
 #include <linux/interrupt.h>
 #include <linux/io.h>
diff --git a/drivers/media/usb/em28xx/em28xx-dvb.c b/drivers/media/usb/em28xx/em28xx-dvb.c
index 938f1980d448..8482fc4045ea 100644
--- a/drivers/media/usb/em28xx/em28xx-dvb.c
+++ b/drivers/media/usb/em28xx/em28xx-dvb.c
@@ -29,7 +29,7 @@
 #include <media/dmxdev.h>
 #include <media/tuner.h>
 #include "tuner-simple.h"
-#include <linux/gpio.h>
+#include <linux/gpio/legacy.h>
 
 #include "lgdt330x.h"
 #include "lgdt3305.h"
-- 
2.39.5



^ permalink raw reply related


This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox