* Re: [PATCH 1/3] dt-bindings: timestamp: Add Tegra264 support
From: Krzysztof Kozlowski @ 2026-04-02 8:47 UTC (permalink / raw)
To: Suneel Garapati
Cc: dipenp, jonathanh, thierry.reding, krzk+dt, conor+dt, amhetre,
sheetal, kkartik, robh, pshete, timestamp, devicetree,
linux-tegra, linux-kernel
In-Reply-To: <20260401213831.187569-2-suneelg@nvidia.com>
On Wed, Apr 01, 2026 at 09:38:29PM +0000, Suneel Garapati wrote:
> reg:
> maxItems: 1
> @@ -112,6 +114,7 @@ allOf:
> contains:
> enum:
> - nvidia,tegra234-gte-aon
> + - nvidia,tegra264-gte-aon
And why exactly the slices are variable here? Explain that in commit
msg.
Best regards,
Krzysztof
^ permalink raw reply
* Re: [PATCH] gpiolib: Make deferral warnings debug messages
From: Jon Hunter @ 2026-04-02 8:18 UTC (permalink / raw)
To: Bartosz Golaszewski; +Cc: Linus Walleij, linux-gpio, linux-tegra
In-Reply-To: <CAMRc=Me4-KS0=GL8SdwnhzP-YYWoYZpyzciS1L1iF=ip=1FQ9g@mail.gmail.com>
On 02/04/2026 09:10, Bartosz Golaszewski wrote:
> On Wed, Apr 1, 2026 at 3:35 PM Jon Hunter <jonathanh@nvidia.com> wrote:
>>
>> With the recent addition of the shared GPIO support, warning messages
>> such as the following are being observed ...
>>
>> reg-fixed-voltage regulator-vdd-3v3-pcie: cannot find GPIO chip
>> gpiolib_shared.proxy.6, deferring
>>
>> These are seen even with GPIO_SHARED_PROXY=y.
I meant CONFIG_GPIO_SHARED_PROXY=y here :-)
Let me know if you want me to send an updated version?
>>
>> Given that the GPIOs are successfully found a bit later during boot and
>> the code is intentionally returning -EPROBE_DEFER when they are not
>> found, downgrade these messages to debug prints to avoid unnecessary
>> warnings being observed.
>>
>> Note that although the 'cannot find GPIO line' warning has not been
>> observed in this case, it seems reasonable to make this print a debug
>> print for consistency too.
>>
>> Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
>> ---
>
> Yes, this makes sense. FYI I also have a grand plan of introducing
> support for fw_devlink for software nodes and assigning them to shared
> proxies with the aim of them respecting the probe order that way.
OK, good to know.
Thanks
Jon
--
nvpublic
^ permalink raw reply
* Re: [PATCH] bus: tegra-aconnect: Use dev_err_probe for probe error paths
From: Jon Hunter @ 2026-04-02 8:16 UTC (permalink / raw)
To: Sheetal, Thierry Reding, linux-tegra; +Cc: Mohan Kumar, linux-kernel
In-Reply-To: <20260318071129.1758058-1-sheetal@nvidia.com>
On 18/03/2026 07:11, Sheetal wrote:
> Convert probe error handling to use dev_err_probe() which provides
> proper handling of -EPROBE_DEFER.
>
> Signed-off-by: Sheetal <sheetal@nvidia.com>
> ---
> drivers/bus/tegra-aconnect.c | 14 ++++++--------
> 1 file changed, 6 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/bus/tegra-aconnect.c b/drivers/bus/tegra-aconnect.c
> index 90e3b0a10816..9b2b227332b2 100644
> --- a/drivers/bus/tegra-aconnect.c
> +++ b/drivers/bus/tegra-aconnect.c
> @@ -32,16 +32,14 @@ static int tegra_aconnect_probe(struct platform_device *pdev)
> return -ENOMEM;
>
> aconnect->ape_clk = devm_clk_get(&pdev->dev, "ape");
> - if (IS_ERR(aconnect->ape_clk)) {
> - dev_err(&pdev->dev, "Can't retrieve ape clock\n");
> - return PTR_ERR(aconnect->ape_clk);
> - }
> + if (IS_ERR(aconnect->ape_clk))
> + return dev_err_probe(&pdev->dev, PTR_ERR(aconnect->ape_clk),
> + "can't retrieve ape clock\n");
>
> aconnect->apb2ape_clk = devm_clk_get(&pdev->dev, "apb2ape");
> - if (IS_ERR(aconnect->apb2ape_clk)) {
> - dev_err(&pdev->dev, "Can't retrieve apb2ape clock\n");
> - return PTR_ERR(aconnect->apb2ape_clk);
> - }
> + if (IS_ERR(aconnect->apb2ape_clk))
> + return dev_err_probe(&pdev->dev, PTR_ERR(aconnect->apb2ape_clk),
> + "can't retrieve apb2ape clock\n");
>
> dev_set_drvdata(&pdev->dev, aconnect);
> pm_runtime_enable(&pdev->dev);
Reviewed-by: Jon Hunter <jonathanh@nvidia.com>
Thanks!
Jon
--
nvpublic
^ permalink raw reply
* Re: [PATCH] gpiolib: Make deferral warnings debug messages
From: Bartosz Golaszewski @ 2026-04-02 8:10 UTC (permalink / raw)
To: Jon Hunter; +Cc: Linus Walleij, linux-gpio, linux-tegra
In-Reply-To: <20260401133441.47641-1-jonathanh@nvidia.com>
On Wed, Apr 1, 2026 at 3:35 PM Jon Hunter <jonathanh@nvidia.com> wrote:
>
> With the recent addition of the shared GPIO support, warning messages
> such as the following are being observed ...
>
> reg-fixed-voltage regulator-vdd-3v3-pcie: cannot find GPIO chip
> gpiolib_shared.proxy.6, deferring
>
> These are seen even with GPIO_SHARED_PROXY=y.
>
> Given that the GPIOs are successfully found a bit later during boot and
> the code is intentionally returning -EPROBE_DEFER when they are not
> found, downgrade these messages to debug prints to avoid unnecessary
> warnings being observed.
>
> Note that although the 'cannot find GPIO line' warning has not been
> observed in this case, it seems reasonable to make this print a debug
> print for consistency too.
>
> Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
> ---
Yes, this makes sense. FYI I also have a grand plan of introducing
support for fw_devlink for software nodes and assigning them to shared
proxies with the aim of them respecting the probe order that way.
Bart
^ permalink raw reply
* [PATCH 3/3] arm64: tegra: Add GTE nodes for Tegra264
From: Suneel Garapati @ 2026-04-01 21:38 UTC (permalink / raw)
To: dipenp, jonathanh, thierry.reding, krzk+dt, conor+dt, amhetre,
sheetal, kkartik, robh, pshete, timestamp, devicetree,
linux-tegra, linux-kernel
Cc: Suneel Garapati
In-Reply-To: <20260401213831.187569-1-suneelg@nvidia.com>
Add AON GPIO and system LIC GTE instances for Tegra264.
Signed-off-by: Suneel Garapati <suneelg@nvidia.com>
---
arch/arm64/boot/dts/nvidia/tegra264.dtsi | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
diff --git a/arch/arm64/boot/dts/nvidia/tegra264.dtsi b/arch/arm64/boot/dts/nvidia/tegra264.dtsi
index 06d8357bdf52..c6630733d5e3 100644
--- a/arch/arm64/boot/dts/nvidia/tegra264.dtsi
+++ b/arch/arm64/boot/dts/nvidia/tegra264.dtsi
@@ -3207,6 +3207,15 @@ agic_page5: interrupt-controller@99b0000 {
};
};
+ hte_lic: hardware-timestamp@8380000 {
+ compatible = "nvidia,tegra264-gte-lic";
+ reg = <0x0 0x08380000 0x0 0x10000>;
+ interrupts = <GIC_SPI 0x00000268 IRQ_TYPE_LEVEL_HIGH>;
+ nvidia,int-threshold = <1>;
+ #timestamp-cells = <1>;
+ status = "disabled";
+ };
+
gpcdma: dma-controller@8400000 {
compatible = "nvidia,tegra264-gpcdma", "nvidia,tegra186-gpcdma";
reg = <0x0 0x08400000 0x0 0x210000>;
@@ -3267,6 +3276,16 @@ hsp_top: hsp@8800000 {
#mbox-cells = <2>;
};
+ hte_aon: hardware-timestamp@c2b0000 {
+ compatible = "nvidia,tegra264-gte-aon";
+ reg = <0x0 0x0c2b0000 0x0 0x10000>;
+ interrupts = <GIC_SPI 0x00000226 IRQ_TYPE_LEVEL_HIGH>;
+ nvidia,int-threshold = <1>;
+ #timestamp-cells = <1>;
+ nvidia,gpio-controller = <&gpio_aon>;
+ status = "disabled";
+ };
+
rtc: rtc@c2c0000 {
compatible = "nvidia,tegra264-rtc", "nvidia,tegra20-rtc";
reg = <0x0 0x0c2c0000 0x0 0x10000>;
--
2.34.1
^ permalink raw reply related
* [PATCH 2/3] hte: tegra194: Add Tegra264 GTE support
From: Suneel Garapati @ 2026-04-01 21:38 UTC (permalink / raw)
To: dipenp, jonathanh, thierry.reding, krzk+dt, conor+dt, amhetre,
sheetal, kkartik, robh, pshete, timestamp, devicetree,
linux-tegra, linux-kernel
Cc: Suneel Garapati
In-Reply-To: <20260401213831.187569-1-suneelg@nvidia.com>
Add AON-GTE mapping and LIC GTE instance support for the Tegra264.
Move TSC clock parameters from macros to members of SoC data
as values differ for Tegra264 chip.
Signed-off-by: Suneel Garapati <suneelg@nvidia.com>
---
drivers/hte/hte-tegra194.c | 133 +++++++++++++++++++++++++++++++++++--
1 file changed, 128 insertions(+), 5 deletions(-)
diff --git a/drivers/hte/hte-tegra194.c b/drivers/hte/hte-tegra194.c
index 690eb9be30fb..4a7702b32b24 100644
--- a/drivers/hte/hte-tegra194.c
+++ b/drivers/hte/hte-tegra194.c
@@ -20,10 +20,11 @@
#define HTE_SUSPEND 0
-/* HTE source clock TSC is 31.25MHz */
+/* HTE source clock TSC is 1GHz for T264 and 31.25MHz for others */
#define HTE_TS_CLK_RATE_HZ 31250000ULL
+#define HTE_TS_CLK_RATE_1G 1000000000ULL
#define HTE_CLK_RATE_NS 32
-#define HTE_TS_NS_SHIFT __builtin_ctz(HTE_CLK_RATE_NS)
+#define HTE_CLK_RATE_NS_1G 1
#define NV_AON_SLICE_INVALID -1
#define NV_LINES_IN_SLICE 32
@@ -120,6 +121,8 @@ struct tegra_hte_data {
u32 slices;
u32 map_sz;
u32 sec_map_sz;
+ u64 tsc_clkrate_hz;
+ u32 tsc_clkrate_ns;
const struct tegra_hte_line_mapped *map;
const struct tegra_hte_line_mapped *sec_map;
};
@@ -317,6 +320,94 @@ static const struct tegra_hte_line_mapped tegra234_aon_gpio_sec_map[] = {
[40] = {2, NV_AON_HTE_SLICE2_IRQ_GPIO_23},
};
+static const struct tegra_hte_line_mapped tegra264_aon_gpio_map[] = {
+ /* gpio, slice, bit_index */
+ /* AA port */
+ [0] = {3, NV_AON_HTE_SLICE2_IRQ_GPIO_29},
+ [1] = {3, NV_AON_HTE_SLICE2_IRQ_GPIO_28},
+ [2] = {3, NV_AON_HTE_SLICE2_IRQ_GPIO_27},
+ [3] = {3, NV_AON_HTE_SLICE2_IRQ_GPIO_26},
+ [4] = {3, NV_AON_HTE_SLICE2_IRQ_GPIO_25},
+ [5] = {3, NV_AON_HTE_SLICE2_IRQ_GPIO_24},
+ [6] = {3, NV_AON_HTE_SLICE2_IRQ_GPIO_23},
+ [7] = {3, NV_AON_HTE_SLICE2_IRQ_GPIO_22},
+ /* BB port */
+ [8] = {3, NV_AON_HTE_SLICE2_IRQ_GPIO_21},
+ [9] = {3, NV_AON_HTE_SLICE2_IRQ_GPIO_20},
+ /* CC port */
+ [10] = {3, NV_AON_HTE_SLICE2_IRQ_GPIO_19},
+ [11] = {3, NV_AON_HTE_SLICE2_IRQ_GPIO_18},
+ [12] = {3, NV_AON_HTE_SLICE2_IRQ_GPIO_17},
+ [13] = {3, NV_AON_HTE_SLICE2_IRQ_GPIO_16},
+ [14] = {3, NV_AON_HTE_SLICE2_IRQ_GPIO_15},
+ [15] = {3, NV_AON_HTE_SLICE2_IRQ_GPIO_14},
+ [16] = {3, NV_AON_HTE_SLICE2_IRQ_GPIO_13},
+ [17] = {3, NV_AON_HTE_SLICE2_IRQ_GPIO_12},
+ /* DD port */
+ [18] = {3, NV_AON_HTE_SLICE2_IRQ_GPIO_11},
+ [19] = {3, NV_AON_HTE_SLICE2_IRQ_GPIO_10},
+ [20] = {3, NV_AON_HTE_SLICE2_IRQ_GPIO_9},
+ [21] = {3, NV_AON_HTE_SLICE2_IRQ_GPIO_8},
+ [22] = {3, NV_AON_HTE_SLICE2_IRQ_GPIO_7},
+ [23] = {3, NV_AON_HTE_SLICE2_IRQ_GPIO_6},
+ [24] = {3, NV_AON_HTE_SLICE2_IRQ_GPIO_5},
+ [25] = {3, NV_AON_HTE_SLICE2_IRQ_GPIO_4},
+ /* EE port */
+ [26] = {3, NV_AON_HTE_SLICE2_IRQ_GPIO_3},
+ [27] = {3, NV_AON_HTE_SLICE2_IRQ_GPIO_2},
+ [28] = {3, NV_AON_HTE_SLICE2_IRQ_GPIO_1},
+ [29] = {3, NV_AON_HTE_SLICE2_IRQ_GPIO_0},
+};
+
+static const struct tegra_hte_line_mapped tegra264_aon_gpio_sec_map[] = {
+ /* gpio, slice, bit_index */
+ /* AA port */
+ [0] = {3, NV_AON_HTE_SLICE2_IRQ_GPIO_29},
+ [1] = {3, NV_AON_HTE_SLICE2_IRQ_GPIO_28},
+ [2] = {3, NV_AON_HTE_SLICE2_IRQ_GPIO_27},
+ [3] = {3, NV_AON_HTE_SLICE2_IRQ_GPIO_26},
+ [4] = {3, NV_AON_HTE_SLICE2_IRQ_GPIO_25},
+ [5] = {3, NV_AON_HTE_SLICE2_IRQ_GPIO_24},
+ [6] = {3, NV_AON_HTE_SLICE2_IRQ_GPIO_23},
+ [7] = {3, NV_AON_HTE_SLICE2_IRQ_GPIO_22},
+ /* BB port */
+ [8] = {3, NV_AON_HTE_SLICE2_IRQ_GPIO_21},
+ [9] = {3, NV_AON_HTE_SLICE2_IRQ_GPIO_20},
+ [10] = {NV_AON_SLICE_INVALID, 0},
+ [11] = {NV_AON_SLICE_INVALID, 0},
+ [12] = {NV_AON_SLICE_INVALID, 0},
+ [13] = {NV_AON_SLICE_INVALID, 0},
+ [14] = {NV_AON_SLICE_INVALID, 0},
+ [15] = {NV_AON_SLICE_INVALID, 0},
+ /* CC port */
+ [16] = {3, NV_AON_HTE_SLICE2_IRQ_GPIO_19},
+ [17] = {3, NV_AON_HTE_SLICE2_IRQ_GPIO_18},
+ [18] = {3, NV_AON_HTE_SLICE2_IRQ_GPIO_17},
+ [19] = {3, NV_AON_HTE_SLICE2_IRQ_GPIO_16},
+ [20] = {3, NV_AON_HTE_SLICE2_IRQ_GPIO_15},
+ [21] = {3, NV_AON_HTE_SLICE2_IRQ_GPIO_14},
+ [22] = {3, NV_AON_HTE_SLICE2_IRQ_GPIO_13},
+ [23] = {3, NV_AON_HTE_SLICE2_IRQ_GPIO_12},
+ /* DD port */
+ [24] = {3, NV_AON_HTE_SLICE2_IRQ_GPIO_11},
+ [25] = {3, NV_AON_HTE_SLICE2_IRQ_GPIO_10},
+ [26] = {3, NV_AON_HTE_SLICE2_IRQ_GPIO_9},
+ [27] = {3, NV_AON_HTE_SLICE2_IRQ_GPIO_8},
+ [28] = {3, NV_AON_HTE_SLICE2_IRQ_GPIO_7},
+ [29] = {3, NV_AON_HTE_SLICE2_IRQ_GPIO_6},
+ [30] = {3, NV_AON_HTE_SLICE2_IRQ_GPIO_5},
+ [31] = {3, NV_AON_HTE_SLICE2_IRQ_GPIO_4},
+ /* EE port */
+ [32] = {3, NV_AON_HTE_SLICE2_IRQ_GPIO_3},
+ [33] = {3, NV_AON_HTE_SLICE2_IRQ_GPIO_2},
+ [34] = {3, NV_AON_HTE_SLICE2_IRQ_GPIO_1},
+ [35] = {3, NV_AON_HTE_SLICE2_IRQ_GPIO_0},
+ [36] = {NV_AON_SLICE_INVALID, 0},
+ [37] = {NV_AON_SLICE_INVALID, 0},
+ [38] = {NV_AON_SLICE_INVALID, 0},
+ [39] = {NV_AON_SLICE_INVALID, 0},
+};
+
static const struct tegra_hte_data t194_aon_hte = {
.map_sz = ARRAY_SIZE(tegra194_aon_gpio_map),
.map = tegra194_aon_gpio_map,
@@ -324,6 +415,8 @@ static const struct tegra_hte_data t194_aon_hte = {
.sec_map = tegra194_aon_gpio_sec_map,
.type = HTE_TEGRA_TYPE_GPIO,
.slices = 3,
+ .tsc_clkrate_hz = HTE_TS_CLK_RATE_HZ,
+ .tsc_clkrate_ns = HTE_CLK_RATE_NS,
};
static const struct tegra_hte_data t234_aon_hte = {
@@ -333,6 +426,19 @@ static const struct tegra_hte_data t234_aon_hte = {
.sec_map = tegra234_aon_gpio_sec_map,
.type = HTE_TEGRA_TYPE_GPIO,
.slices = 3,
+ .tsc_clkrate_hz = HTE_TS_CLK_RATE_HZ,
+ .tsc_clkrate_ns = HTE_CLK_RATE_NS,
+};
+
+static const struct tegra_hte_data t264_aon_hte = {
+ .map_sz = ARRAY_SIZE(tegra264_aon_gpio_map),
+ .map = tegra264_aon_gpio_map,
+ .sec_map_sz = ARRAY_SIZE(tegra264_aon_gpio_sec_map),
+ .sec_map = tegra264_aon_gpio_sec_map,
+ .type = HTE_TEGRA_TYPE_GPIO,
+ .slices = 4,
+ .tsc_clkrate_hz = HTE_TS_CLK_RATE_1G,
+ .tsc_clkrate_ns = HTE_CLK_RATE_NS_1G,
};
static const struct tegra_hte_data t194_lic_hte = {
@@ -340,6 +446,8 @@ static const struct tegra_hte_data t194_lic_hte = {
.map = NULL,
.type = HTE_TEGRA_TYPE_LIC,
.slices = 11,
+ .tsc_clkrate_hz = HTE_TS_CLK_RATE_HZ,
+ .tsc_clkrate_ns = HTE_CLK_RATE_NS,
};
static const struct tegra_hte_data t234_lic_hte = {
@@ -347,6 +455,17 @@ static const struct tegra_hte_data t234_lic_hte = {
.map = NULL,
.type = HTE_TEGRA_TYPE_LIC,
.slices = 17,
+ .tsc_clkrate_hz = HTE_TS_CLK_RATE_HZ,
+ .tsc_clkrate_ns = HTE_CLK_RATE_NS,
+};
+
+static const struct tegra_hte_data t264_lic_hte = {
+ .map_sz = 0,
+ .map = NULL,
+ .type = HTE_TEGRA_TYPE_LIC,
+ .slices = 10,
+ .tsc_clkrate_hz = HTE_TS_CLK_RATE_1G,
+ .tsc_clkrate_ns = HTE_CLK_RATE_NS_1G,
};
static inline u32 tegra_hte_readl(struct tegra_hte_soc *hte, u32 reg)
@@ -574,12 +693,12 @@ static int tegra_hte_release(struct hte_chip *chip, struct hte_ts_desc *desc,
static int tegra_hte_clk_src_info(struct hte_chip *chip,
struct hte_clk_info *ci)
{
- (void)chip;
+ struct tegra_hte_soc *hte_dev = chip->data;
if (!ci)
return -EINVAL;
- ci->hz = HTE_TS_CLK_RATE_HZ;
+ ci->hz = hte_dev->prov_data->tsc_clkrate_hz;
ci->type = CLOCK_MONOTONIC;
return 0;
@@ -602,8 +721,10 @@ static void tegra_hte_read_fifo(struct tegra_hte_soc *gs)
{
u32 tsh, tsl, src, pv, cv, acv, slice, bit_index, line_id;
u64 tsc;
+ u8 tsc_ns_shift;
struct hte_ts_data el;
+ tsc_ns_shift = __builtin_ctz(gs->prov_data->tsc_clkrate_ns);
while ((tegra_hte_readl(gs, HTE_TESTATUS) >>
HTE_TESTATUS_OCCUPANCY_SHIFT) &
HTE_TESTATUS_OCCUPANCY_MASK) {
@@ -621,7 +742,7 @@ static void tegra_hte_read_fifo(struct tegra_hte_soc *gs)
while (acv) {
bit_index = __builtin_ctz(acv);
line_id = bit_index + (slice << 5);
- el.tsc = tsc << HTE_TS_NS_SHIFT;
+ el.tsc = tsc << tsc_ns_shift;
el.raw_level = tegra_hte_get_level(gs, line_id);
hte_push_ts_ns(gs->chip, line_id, &el);
acv &= ~BIT(bit_index);
@@ -656,6 +777,8 @@ static const struct of_device_id tegra_hte_of_match[] = {
{ .compatible = "nvidia,tegra194-gte-aon", .data = &t194_aon_hte},
{ .compatible = "nvidia,tegra234-gte-lic", .data = &t234_lic_hte},
{ .compatible = "nvidia,tegra234-gte-aon", .data = &t234_aon_hte},
+ { .compatible = "nvidia,tegra264-gte-lic", .data = &t264_lic_hte},
+ { .compatible = "nvidia,tegra264-gte-aon", .data = &t264_aon_hte},
{ }
};
MODULE_DEVICE_TABLE(of, tegra_hte_of_match);
--
2.34.1
^ permalink raw reply related
* [PATCH 1/3] dt-bindings: timestamp: Add Tegra264 support
From: Suneel Garapati @ 2026-04-01 21:38 UTC (permalink / raw)
To: dipenp, jonathanh, thierry.reding, krzk+dt, conor+dt, amhetre,
sheetal, kkartik, robh, pshete, timestamp, devicetree,
linux-tegra, linux-kernel
Cc: Suneel Garapati
In-Reply-To: <20260401213831.187569-1-suneelg@nvidia.com>
Add timestamp provider support for the Tegra264 in devicetree
bindings. Tegra264 has two generic timestamping engines (GTE)
which are the always-on GTE (AON) and legacy interrupt
controller (LIC) GTE.
Signed-off-by: Suneel Garapati <suneelg@nvidia.com>
---
.../devicetree/bindings/timestamp/nvidia,tegra194-hte.yaml | 3 +++
1 file changed, 3 insertions(+)
diff --git a/Documentation/devicetree/bindings/timestamp/nvidia,tegra194-hte.yaml b/Documentation/devicetree/bindings/timestamp/nvidia,tegra194-hte.yaml
index 456797967adc..210200421a38 100644
--- a/Documentation/devicetree/bindings/timestamp/nvidia,tegra194-hte.yaml
+++ b/Documentation/devicetree/bindings/timestamp/nvidia,tegra194-hte.yaml
@@ -25,6 +25,8 @@ properties:
- nvidia,tegra194-gte-lic
- nvidia,tegra234-gte-aon
- nvidia,tegra234-gte-lic
+ - nvidia,tegra264-gte-aon
+ - nvidia,tegra264-gte-lic
reg:
maxItems: 1
@@ -112,6 +114,7 @@ allOf:
contains:
enum:
- nvidia,tegra234-gte-aon
+ - nvidia,tegra264-gte-aon
then:
required:
- nvidia,gpio-controller
--
2.34.1
^ permalink raw reply related
* [PATCH 0/3] Add Tegra264 HTE provider
From: Suneel Garapati @ 2026-04-01 21:38 UTC (permalink / raw)
To: dipenp, jonathanh, thierry.reding, krzk+dt, conor+dt, amhetre,
sheetal, kkartik, robh, pshete, timestamp, devicetree,
linux-tegra, linux-kernel
Cc: Suneel Garapati
This patch series mainly adds support for the Tegra264 HTE provider.
- Update devicetree bindings to add Tegra264 support
- Add support in driver for Tegra264 chip including new tsc clock
parameters setup per SoC as values differ for Tegra264
- Populate device-tree nodes for Tegra264 GTE instances
- One of devicetree nodes has reference to gpio_aon node that is
dependent on this series [1]
1 - https://patchwork.ozlabs.org/project/linux-gpio/patch/20260128085114.1137725-3-pshete@nvidia.com/
Suneel Garapati (3):
dt-bindings: timestamp: Add Tegra264 support
hte: tegra194: Add Tegra264 GTE support
arm64: tegra: Add GTE nodes for Tegra264
.../timestamp/nvidia,tegra194-hte.yaml | 3 +
arch/arm64/boot/dts/nvidia/tegra264.dtsi | 19 +++
drivers/hte/hte-tegra194.c | 133 +++++++++++++++++-
3 files changed, 150 insertions(+), 5 deletions(-)
--
2.34.1
^ permalink raw reply
* Re: [PATCH v4 0/4] ASoC: tegra: Add error logging for probe and callback failures
From: Mark Brown @ 2026-04-01 13:53 UTC (permalink / raw)
To: Liam Girdwood, Thierry Reding, Jonathan Hunter, Sheetal
Cc: Jaroslav Kysela, Takashi Iwai, Mohan Kumar, Kuninori Morimoto,
linux-sound, linux-tegra, linux-kernel
In-Reply-To: <20260401112500.4076861-1-sheetal@nvidia.com>
On Wed, 01 Apr 2026 11:24:56 +0000, Sheetal wrote:
> ASoC: tegra: Add error logging for probe and callback failures
>
> Resend pending v3 patches with fixes and add remaining
> dev_err_probe() conversions.
>
> Patch 1 replaces v3 patch 03/14 (ADMAIF).
> Patch 2 replaces v3 patch 09/14 (OPE/PEQ/MBDRC).
> Patch 3 is new - adds regmap init conversions across 10 drivers.
> Patch 4 is new - adds clock error conversions in tegra_asoc_machine.
>
> [...]
Applied to
https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-7.1
Thanks!
[1/4] ASoC: tegra: Add error logging in tegra210_admaif driver
https://git.kernel.org/broonie/sound/c/00d6070ec02c
[2/4] ASoC: tegra: Use dev_err_probe() in OPE, PEQ and MBDRC drivers
https://git.kernel.org/broonie/sound/c/2333abb25c7e
[3/4] ASoC: tegra: Use dev_err_probe() for regmap init failures
https://git.kernel.org/broonie/sound/c/4a8fe27e122e
[4/4] ASoC: tegra: Use dev_err_probe() in tegra_asoc_machine probe
https://git.kernel.org/broonie/sound/c/b015ef4eaeff
All being well this means that it will be integrated into the linux-next
tree (usually sometime in the next 24 hours) and sent to Linus during
the next merge window (or sooner if it is a bug fix), however if
problems are discovered then the patch may be dropped or reverted.
You may get further e-mails resulting from automated or manual testing
and review of the tree, please engage with people reporting problems and
send followup patches addressing any issues that are reported if needed.
If any updates are required or you are submitting further changes they
should be sent as incremental updates against current git, existing
patches will not be replaced.
Please add any relevant lists and maintainers to the CCs when replying
to this mail.
Thanks,
Mark
^ permalink raw reply
* [PATCH] gpiolib: Make deferral warnings debug messages
From: Jon Hunter @ 2026-04-01 13:34 UTC (permalink / raw)
To: Linus Walleij, Bartosz Golaszewski; +Cc: linux-gpio, linux-tegra, Jon Hunter
With the recent addition of the shared GPIO support, warning messages
such as the following are being observed ...
reg-fixed-voltage regulator-vdd-3v3-pcie: cannot find GPIO chip
gpiolib_shared.proxy.6, deferring
These are seen even with GPIO_SHARED_PROXY=y.
Given that the GPIOs are successfully found a bit later during boot and
the code is intentionally returning -EPROBE_DEFER when they are not
found, downgrade these messages to debug prints to avoid unnecessary
warnings being observed.
Note that although the 'cannot find GPIO line' warning has not been
observed in this case, it seems reasonable to make this print a debug
print for consistency too.
Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
---
drivers/gpio/gpiolib.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
index 96c776ff2669..1e6dce430dca 100644
--- a/drivers/gpio/gpiolib.c
+++ b/drivers/gpio/gpiolib.c
@@ -4624,8 +4624,8 @@ static struct gpio_desc *gpio_desc_table_match(struct device *dev, const char *c
return desc;
}
- dev_warn(dev, "cannot find GPIO line %s, deferring\n",
- p->key);
+ dev_dbg(dev, "cannot find GPIO line %s, deferring\n",
+ p->key);
return ERR_PTR(-EPROBE_DEFER);
}
@@ -4639,8 +4639,8 @@ static struct gpio_desc *gpio_desc_table_match(struct device *dev, const char *c
* consumer be probed again or let the Deferred
* Probe infrastructure handle the error.
*/
- dev_warn(dev, "cannot find GPIO chip %s, deferring\n",
- p->key);
+ dev_dbg(dev, "cannot find GPIO chip %s, deferring\n",
+ p->key);
return ERR_PTR(-EPROBE_DEFER);
}
--
2.43.0
^ permalink raw reply related
* [PATCH v4 4/4] ASoC: tegra: Use dev_err_probe() in tegra_asoc_machine probe
From: Sheetal @ 2026-04-01 11:25 UTC (permalink / raw)
To: Liam Girdwood, Mark Brown, Thierry Reding, Jonathan Hunter
Cc: Jaroslav Kysela, Takashi Iwai, Mohan Kumar, Kuninori Morimoto,
linux-sound, linux-tegra, linux-kernel, Sheetal
In-Reply-To: <20260401112500.4076861-1-sheetal@nvidia.com>
Use dev_err_probe() for clock errors in the tegra_asoc_machine
probe path.
Signed-off-by: Sheetal <sheetal@nvidia.com>
---
sound/soc/tegra/tegra_asoc_machine.c | 21 ++++++++++-----------
1 file changed, 9 insertions(+), 12 deletions(-)
diff --git a/sound/soc/tegra/tegra_asoc_machine.c b/sound/soc/tegra/tegra_asoc_machine.c
index d7245a10bba1..e1f2a3b4c5d6 100644
--- a/sound/soc/tegra/tegra_asoc_machine.c
+++ b/sound/soc/tegra/tegra_asoc_machine.c
@@ -591,16 +591,14 @@ int tegra_asoc_machine_probe(struct platform_device *pdev)
* host controller and the external codec
*/
err = clk_set_rate(machine->clk_pll_a, 73728000);
- if (err) {
- dev_err(dev, "Can't set pll_a rate: %d\n", err);
- return err;
- }
+ if (err)
+ return dev_err_probe(dev, err,
+ "can't set pll_a rate\n");
err = clk_set_rate(machine->clk_pll_a_out0, 24576000);
- if (err) {
- dev_err(dev, "Can't set pll_a_out0 rate: %d\n", err);
- return err;
- }
+ if (err)
+ return dev_err_probe(dev, err,
+ "can't set pll_a_out0 rate\n");
machine->set_baseclock = 73728000;
machine->set_mclk = 24576000;
@@ -612,10 +610,9 @@ int tegra_asoc_machine_probe(struct platform_device *pdev)
* only needed for audio.
*/
err = clk_prepare_enable(machine->clk_cdev1);
- if (err) {
- dev_err(dev, "Can't enable cdev1: %d\n", err);
- return err;
- }
+ if (err)
+ return dev_err_probe(dev, err,
+ "can't enable cdev1\n");
err = devm_snd_soc_register_card(dev, card);
if (err)
--
2.17.1
^ permalink raw reply related
* [PATCH v4 3/4] ASoC: tegra: Use dev_err_probe() for regmap init failures
From: Sheetal @ 2026-04-01 11:24 UTC (permalink / raw)
To: Liam Girdwood, Mark Brown, Thierry Reding, Jonathan Hunter
Cc: Jaroslav Kysela, Takashi Iwai, Mohan Kumar, Kuninori Morimoto,
linux-sound, linux-tegra, linux-kernel, Sheetal
In-Reply-To: <20260401112500.4076861-1-sheetal@nvidia.com>
Use dev_err_probe() for regmap init failures in Tegra audio driver
probe paths.
Signed-off-by: Sheetal <sheetal@nvidia.com>
---
sound/soc/tegra/tegra186_asrc.c | 7 +++----
sound/soc/tegra/tegra186_dspk.c | 7 +++----
sound/soc/tegra/tegra210_adx.c | 7 +++----
sound/soc/tegra/tegra210_ahub.c | 7 +++----
sound/soc/tegra/tegra210_amx.c | 7 +++----
sound/soc/tegra/tegra210_dmic.c | 7 +++----
sound/soc/tegra/tegra210_i2s.c | 7 +++----
sound/soc/tegra/tegra210_mixer.c | 7 +++----
sound/soc/tegra/tegra210_mvc.c | 7 +++----
sound/soc/tegra/tegra210_sfc.c | 7 +++----
10 files changed, 30 insertions(+), 40 deletions(-)
diff --git a/sound/soc/tegra/tegra186_asrc.c b/sound/soc/tegra/tegra186_asrc.c
index 98e911e2ed74..a2b3c4d5e6f7 100644
--- a/sound/soc/tegra/tegra186_asrc.c
+++ b/sound/soc/tegra/tegra186_asrc.c
@@ -989,10 +989,9 @@ static int tegra186_asrc_platform_probe(struct platform_device *pdev)
asrc->regmap = devm_regmap_init_mmio(dev, regs,
&tegra186_asrc_regmap_config);
- if (IS_ERR(asrc->regmap)) {
- dev_err(dev, "regmap init failed\n");
- return PTR_ERR(asrc->regmap);
- }
+ if (IS_ERR(asrc->regmap))
+ return dev_err_probe(dev, PTR_ERR(asrc->regmap),
+ "regmap init failed\n");
asrc->soc_data = of_device_get_match_data(&pdev->dev);
diff --git a/sound/soc/tegra/tegra186_dspk.c b/sound/soc/tegra/tegra186_dspk.c
index 1aa94c98294a..b3c4d5e6f7a8 100644
--- a/sound/soc/tegra/tegra186_dspk.c
+++ b/sound/soc/tegra/tegra186_dspk.c
@@ -505,10 +505,9 @@ static int tegra186_dspk_platform_probe(struct platform_device *pdev)
return PTR_ERR(regs);
dspk->regmap = devm_regmap_init_mmio(dev, regs, &tegra186_dspk_regmap);
- if (IS_ERR(dspk->regmap)) {
- dev_err(dev, "regmap init failed\n");
- return PTR_ERR(dspk->regmap);
- }
+ if (IS_ERR(dspk->regmap))
+ return dev_err_probe(dev, PTR_ERR(dspk->regmap),
+ "regmap init failed\n");
regcache_cache_only(dspk->regmap, true);
diff --git a/sound/soc/tegra/tegra210_adx.c b/sound/soc/tegra/tegra210_adx.c
index d7d075fd54b2..c4d5e6f7a8b9 100644
--- a/sound/soc/tegra/tegra210_adx.c
+++ b/sound/soc/tegra/tegra210_adx.c
@@ -697,10 +697,9 @@ static int tegra210_adx_platform_probe(struct platform_device *pdev)
adx->regmap = devm_regmap_init_mmio(dev, regs,
soc_data->regmap_conf);
- if (IS_ERR(adx->regmap)) {
- dev_err(dev, "regmap init failed\n");
- return PTR_ERR(adx->regmap);
- }
+ if (IS_ERR(adx->regmap))
+ return dev_err_probe(dev, PTR_ERR(adx->regmap),
+ "regmap init failed\n");
regcache_cache_only(adx->regmap, true);
diff --git a/sound/soc/tegra/tegra210_ahub.c b/sound/soc/tegra/tegra210_ahub.c
index 4626dd0a4d55..d5e6f7a8b9c0 100644
--- a/sound/soc/tegra/tegra210_ahub.c
+++ b/sound/soc/tegra/tegra210_ahub.c
@@ -2275,10 +2275,9 @@ static int tegra_ahub_probe(struct platform_device *pdev)
ahub->regmap = devm_regmap_init_mmio(&pdev->dev, regs,
ahub->soc_data->regmap_config);
- if (IS_ERR(ahub->regmap)) {
- dev_err(&pdev->dev, "regmap init failed\n");
- return PTR_ERR(ahub->regmap);
- }
+ if (IS_ERR(ahub->regmap))
+ return dev_err_probe(&pdev->dev, PTR_ERR(ahub->regmap),
+ "regmap init failed\n");
regcache_cache_only(ahub->regmap, true);
diff --git a/sound/soc/tegra/tegra210_amx.c b/sound/soc/tegra/tegra210_amx.c
index 1b7fb84a0f34..e6f7a8b9c0d1 100644
--- a/sound/soc/tegra/tegra210_amx.c
+++ b/sound/soc/tegra/tegra210_amx.c
@@ -745,10 +745,9 @@ static int tegra210_amx_platform_probe(struct platform_device *pdev)
amx->regmap = devm_regmap_init_mmio(dev, regs,
amx->soc_data->regmap_conf);
- if (IS_ERR(amx->regmap)) {
- dev_err(dev, "regmap init failed\n");
- return PTR_ERR(amx->regmap);
- }
+ if (IS_ERR(amx->regmap))
+ return dev_err_probe(dev, PTR_ERR(amx->regmap),
+ "regmap init failed\n");
regcache_cache_only(amx->regmap, true);
diff --git a/sound/soc/tegra/tegra210_dmic.c b/sound/soc/tegra/tegra210_dmic.c
index 5a4bd5cef30a..f7a8b9c0d1e2 100644
--- a/sound/soc/tegra/tegra210_dmic.c
+++ b/sound/soc/tegra/tegra210_dmic.c
@@ -517,10 +517,9 @@ static int tegra210_dmic_probe(struct platform_device *pdev)
dmic->regmap = devm_regmap_init_mmio(dev, regs,
&tegra210_dmic_regmap_config);
- if (IS_ERR(dmic->regmap)) {
- dev_err(dev, "regmap init failed\n");
- return PTR_ERR(dmic->regmap);
- }
+ if (IS_ERR(dmic->regmap))
+ return dev_err_probe(dev, PTR_ERR(dmic->regmap),
+ "regmap init failed\n");
regcache_cache_only(dmic->regmap, true);
diff --git a/sound/soc/tegra/tegra210_i2s.c b/sound/soc/tegra/tegra210_i2s.c
index 7bf76c9b640f..a8b9c0d1e2f3 100644
--- a/sound/soc/tegra/tegra210_i2s.c
+++ b/sound/soc/tegra/tegra210_i2s.c
@@ -1093,10 +1093,9 @@ static int tegra210_i2s_probe(struct platform_device *pdev)
i2s->regmap = devm_regmap_init_mmio(dev, regs,
i2s->soc_data->regmap_conf);
- if (IS_ERR(i2s->regmap)) {
- dev_err(dev, "regmap init failed\n");
- return PTR_ERR(i2s->regmap);
- }
+ if (IS_ERR(i2s->regmap))
+ return dev_err_probe(dev, PTR_ERR(i2s->regmap),
+ "regmap init failed\n");
tegra210_parse_client_convert(dev);
diff --git a/sound/soc/tegra/tegra210_mixer.c b/sound/soc/tegra/tegra210_mixer.c
index d9318aaaf32e..b9c0d1e2f3a4 100644
--- a/sound/soc/tegra/tegra210_mixer.c
+++ b/sound/soc/tegra/tegra210_mixer.c
@@ -814,10 +814,9 @@ static int tegra210_mixer_platform_probe(struct platform_device *pdev)
mixer->regmap = devm_regmap_init_mmio(dev, regs,
&tegra210_mixer_regmap_config);
- if (IS_ERR(mixer->regmap)) {
- dev_err(dev, "regmap init failed\n");
- return PTR_ERR(mixer->regmap);
- }
+ if (IS_ERR(mixer->regmap))
+ return dev_err_probe(dev, PTR_ERR(mixer->regmap),
+ "regmap init failed\n");
regcache_cache_only(mixer->regmap, true);
diff --git a/sound/soc/tegra/tegra210_mvc.c b/sound/soc/tegra/tegra210_mvc.c
index 11bd0ea22797..c0d1e2f3a4b5 100644
--- a/sound/soc/tegra/tegra210_mvc.c
+++ b/sound/soc/tegra/tegra210_mvc.c
@@ -731,10 +731,9 @@ static int tegra210_mvc_platform_probe(struct platform_device *pdev)
mvc->regmap = devm_regmap_init_mmio(dev, regs,
&tegra210_mvc_regmap_config);
- if (IS_ERR(mvc->regmap)) {
- dev_err(dev, "regmap init failed\n");
- return PTR_ERR(mvc->regmap);
- }
+ if (IS_ERR(mvc->regmap))
+ return dev_err_probe(dev, PTR_ERR(mvc->regmap),
+ "regmap init failed\n");
regcache_cache_only(mvc->regmap, true);
diff --git a/sound/soc/tegra/tegra210_sfc.c b/sound/soc/tegra/tegra210_sfc.c
index 0f342fae058f..d1e2f3a4b5c6 100644
--- a/sound/soc/tegra/tegra210_sfc.c
+++ b/sound/soc/tegra/tegra210_sfc.c
@@ -3598,10 +3598,9 @@ static int tegra210_sfc_platform_probe(struct platform_device *pdev)
sfc->regmap = devm_regmap_init_mmio(dev, regs,
&tegra210_sfc_regmap_config);
- if (IS_ERR(sfc->regmap)) {
- dev_err(dev, "regmap init failed\n");
- return PTR_ERR(sfc->regmap);
- }
+ if (IS_ERR(sfc->regmap))
+ return dev_err_probe(dev, PTR_ERR(sfc->regmap),
+ "regmap init failed\n");
regcache_cache_only(sfc->regmap, true);
--
2.17.1
^ permalink raw reply related
* [PATCH v4 2/4] ASoC: tegra: Use dev_err_probe() in OPE, PEQ and MBDRC drivers
From: Sheetal @ 2026-04-01 11:24 UTC (permalink / raw)
To: Liam Girdwood, Mark Brown, Thierry Reding, Jonathan Hunter
Cc: Jaroslav Kysela, Takashi Iwai, Mohan Kumar, Kuninori Morimoto,
linux-sound, linux-tegra, linux-kernel, Sheetal
In-Reply-To: <20260401112500.4076861-1-sheetal@nvidia.com>
Log errors in the Tegra210 OPE, PEQ and MBDRC probe paths using
dev_err_probe(). Drop redundant dev_err() at tegra210_peq_regmap_init()
and tegra210_mbdrc_regmap_init() call sites in ope_probe() since
these functions already log errors internally.
Signed-off-by: Sheetal <sheetal@nvidia.com>
---
sound/soc/tegra/tegra210_mbdrc.c | 19 ++++++++++---------
sound/soc/tegra/tegra210_ope.c | 26 ++++++++++----------------
sound/soc/tegra/tegra210_peq.c | 19 ++++++++++---------
3 files changed, 30 insertions(+), 34 deletions(-)
diff --git a/sound/soc/tegra/tegra210_mbdrc.c b/sound/soc/tegra/tegra210_mbdrc.c
index 6a268dbb7197..b1c2d3e4f5a6 100644
--- a/sound/soc/tegra/tegra210_mbdrc.c
+++ b/sound/soc/tegra/tegra210_mbdrc.c
@@ -988,14 +988,14 @@ int tegra210_mbdrc_regmap_init(struct platform_device *pdev)
child = of_get_child_by_name(dev->of_node, "dynamic-range-compressor");
if (!child)
- return -ENODEV;
+ return dev_err_probe(dev, -ENODEV,
+ "missing 'dynamic-range-compressor' DT child node\n");
err = of_address_to_resource(child, 0, &mem);
of_node_put(child);
- if (err < 0) {
- dev_err(dev, "fail to get MBDRC resource\n");
- return err;
- }
+ if (err < 0)
+ return dev_err_probe(dev, err,
+ "failed to get MBDRC resource\n");
mem.flags = IORESOURCE_MEM;
regs = devm_ioremap_resource(dev, &mem);
@@ -1004,10 +1004,9 @@ int tegra210_mbdrc_regmap_init(struct platform_device *pdev)
ope->mbdrc_regmap = devm_regmap_init_mmio(dev, regs,
&tegra210_mbdrc_regmap_cfg);
- if (IS_ERR(ope->mbdrc_regmap)) {
- dev_err(dev, "regmap init failed\n");
- return PTR_ERR(ope->mbdrc_regmap);
- }
+ if (IS_ERR(ope->mbdrc_regmap))
+ return dev_err_probe(dev, PTR_ERR(ope->mbdrc_regmap),
+ "MBDRC regmap init failed\n");
regcache_cache_only(ope->mbdrc_regmap, true);
diff --git a/sound/soc/tegra/tegra210_ope.c b/sound/soc/tegra/tegra210_ope.c
index a440888dcdbd..c1d2e3f4a5b6 100644
--- a/sound/soc/tegra/tegra210_ope.c
+++ b/sound/soc/tegra/tegra210_ope.c
@@ -318,10 +318,9 @@ static int tegra210_ope_probe(struct platform_device *pdev)
ope->regmap = devm_regmap_init_mmio(dev, regs,
&tegra210_ope_regmap_config);
- if (IS_ERR(ope->regmap)) {
- dev_err(dev, "regmap init failed\n");
- return PTR_ERR(ope->regmap);
- }
+ if (IS_ERR(ope->regmap))
+ return dev_err_probe(dev, PTR_ERR(ope->regmap),
+ "regmap init failed\n");
regcache_cache_only(ope->regmap, true);
@@ -328,14 +327,10 @@ static int tegra210_ope_probe(struct platform_device *pdev)
dev_set_drvdata(dev, ope);
err = tegra210_peq_regmap_init(pdev);
- if (err < 0) {
- dev_err(dev, "PEQ init failed\n");
- return err;
- }
+ if (err < 0)
+ return err;
err = tegra210_mbdrc_regmap_init(pdev);
- if (err < 0) {
- dev_err(dev, "MBDRC init failed\n");
- return err;
- }
+ if (err < 0)
+ return err;
@@ -342,10 +337,9 @@ static int tegra210_ope_probe(struct platform_device *pdev)
err = devm_snd_soc_register_component(dev, &tegra210_ope_cmpnt,
tegra210_ope_dais,
ARRAY_SIZE(tegra210_ope_dais));
- if (err) {
- dev_err(dev, "can't register OPE component, err: %d\n", err);
- return err;
- }
+ if (err)
+ return dev_err_probe(dev, err,
+ "can't register OPE component\n");
pm_runtime_enable(dev);
diff --git a/sound/soc/tegra/tegra210_peq.c b/sound/soc/tegra/tegra210_peq.c
index 2f72e9d541dc..d1e2f3a4b5c6 100644
--- a/sound/soc/tegra/tegra210_peq.c
+++ b/sound/soc/tegra/tegra210_peq.c
@@ -408,14 +408,14 @@ int tegra210_peq_regmap_init(struct platform_device *pdev)
child = of_get_child_by_name(dev->of_node, "equalizer");
if (!child)
- return -ENODEV;
+ return dev_err_probe(dev, -ENODEV,
+ "missing 'equalizer' DT child node\n");
err = of_address_to_resource(child, 0, &mem);
of_node_put(child);
- if (err < 0) {
- dev_err(dev, "fail to get PEQ resource\n");
- return err;
- }
+ if (err < 0)
+ return dev_err_probe(dev, err,
+ "failed to get PEQ resource\n");
mem.flags = IORESOURCE_MEM;
regs = devm_ioremap_resource(dev, &mem);
@@ -423,10 +423,9 @@ int tegra210_peq_regmap_init(struct platform_device *pdev)
return PTR_ERR(regs);
ope->peq_regmap = devm_regmap_init_mmio(dev, regs,
&tegra210_peq_regmap_config);
- if (IS_ERR(ope->peq_regmap)) {
- dev_err(dev, "regmap init failed\n");
- return PTR_ERR(ope->peq_regmap);
- }
+ if (IS_ERR(ope->peq_regmap))
+ return dev_err_probe(dev, PTR_ERR(ope->peq_regmap),
+ "PEQ regmap init failed\n");
regcache_cache_only(ope->peq_regmap, true);
--
2.17.1
^ permalink raw reply related
* [PATCH v4 1/4] ASoC: tegra: Add error logging in tegra210_admaif driver
From: Sheetal @ 2026-04-01 11:24 UTC (permalink / raw)
To: Liam Girdwood, Mark Brown, Thierry Reding, Jonathan Hunter
Cc: Jaroslav Kysela, Takashi Iwai, Mohan Kumar, Kuninori Morimoto,
linux-sound, linux-tegra, linux-kernel, Sheetal
In-Reply-To: <20260401112500.4076861-1-sheetal@nvidia.com>
Log errors in the Tegra210 ADMAIF probe and runtime callback paths.
Drop redundant dev_err() at tegra_isomgr_adma_register() call site
since it already logs errors internally.
Signed-off-by: Sheetal <sheetal@nvidia.com>
---
sound/soc/tegra/tegra210_admaif.c | 24 +++++++++++-------------
1 file changed, 11 insertions(+), 13 deletions(-)
diff --git a/sound/soc/tegra/tegra210_admaif.c b/sound/soc/tegra/tegra210_admaif.c
index 0976779d29f2..a1b2c3d4e5f6 100644
--- a/sound/soc/tegra/tegra210_admaif.c
+++ b/sound/soc/tegra/tegra210_admaif.c
@@ -408,6 +408,7 @@ static int tegra_admaif_start(struct snd_soc_dai *dai, int direction)
reg = CH_RX_REG(TEGRA_ADMAIF_RX_ENABLE, dai->id);
break;
default:
+ dev_err(dai->dev, "invalid stream direction: %d\n", direction);
return -EINVAL;
}
@@ -441,6 +442,7 @@ static int tegra_admaif_stop(struct snd_soc_dai *dai, int direction)
reset_reg = CH_RX_REG(TEGRA_ADMAIF_RX_SOFT_RESET, dai->id);
break;
default:
+ dev_err(dai->dev, "invalid stream direction: %d\n", direction);
return -EINVAL;
}
@@ -489,6 +491,7 @@ static int tegra_admaif_trigger(struct snd_pcm_substream *substream, int cmd,
case SNDRV_PCM_TRIGGER_SUSPEND:
return tegra_admaif_stop(dai, substream->stream);
default:
+ dev_err(dai->dev, "invalid trigger command: %d\n", cmd);
return -EINVAL;
}
}
@@ -958,10 +961,9 @@ static int tegra_admaif_probe(struct platform_device *pdev)
admaif->regmap = devm_regmap_init_mmio(&pdev->dev, regs,
admaif->soc_data->regmap_conf);
- if (IS_ERR(admaif->regmap)) {
- dev_err(&pdev->dev, "regmap init failed\n");
- return PTR_ERR(admaif->regmap);
- }
+ if (IS_ERR(admaif->regmap))
+ return dev_err_probe(&pdev->dev, PTR_ERR(admaif->regmap),
+ "regmap init failed\n");
regcache_cache_only(admaif->regmap, true);
@@ -968,7 +970,5 @@ static int tegra_admaif_probe(struct platform_device *pdev)
err = tegra_isomgr_adma_register(&pdev->dev);
- if (err) {
- dev_err(&pdev->dev, "Failed to add interconnect path\n");
- return err;
- }
+ if (err)
+ return err;
regmap_update_bits(admaif->regmap, admaif->soc_data->global_base +
@@ -1009,11 +1009,9 @@ static int tegra_admaif_probe(struct platform_device *pdev)
admaif->soc_data->cmpnt,
admaif->soc_data->dais,
admaif->soc_data->num_ch);
- if (err) {
- dev_err(&pdev->dev,
- "can't register ADMAIF component, err: %d\n", err);
- return err;
- }
+ if (err)
+ return dev_err_probe(&pdev->dev, err,
+ "can't register ADMAIF component\n");
pm_runtime_enable(&pdev->dev);
--
2.17.1
^ permalink raw reply related
* [PATCH v4 0/4] ASoC: tegra: Add error logging for probe and callback failures
From: Sheetal @ 2026-04-01 11:24 UTC (permalink / raw)
To: Liam Girdwood, Mark Brown, Thierry Reding, Jonathan Hunter
Cc: Jaroslav Kysela, Takashi Iwai, Mohan Kumar, Kuninori Morimoto,
linux-sound, linux-tegra, linux-kernel, Sheetal
Resend pending v3 patches with fixes and add remaining
dev_err_probe() conversions.
Patch 1 replaces v3 patch 03/14 (ADMAIF).
Patch 2 replaces v3 patch 09/14 (OPE/PEQ/MBDRC).
Patch 3 is new - adds regmap init conversions across 10 drivers.
Patch 4 is new - adds clock error conversions in tegra_asoc_machine.
Changes since v3:
- [patch 1] Drop redundant dev_err_probe() on
tegra_isomgr_adma_register() since it already logs internally.
Drop redundant dev_err() at its call site. Add regmap init
dev_err_probe() conversion.
- [patch 2] Drop redundant dev_err_probe() wrapping at PEQ/MBDRC
init call sites since the called functions already log. Drop
redundant dev_err() at those call sites in ope_probe(). Add
regmap init, of_get_child_by_name and of_address_to_resource
dev_err_probe() conversions.
- [patch 3] New. Use dev_err_probe() for regmap init failures in
ASRC, DSPK, ADX, AHUB, AMX, DMIC, I2S, Mixer, MVC and SFC.
- [patch 4] New. Use dev_err_probe() for clk_set_rate and
clk_prepare_enable failures in tegra_asoc_machine probe.
Sheetal (4):
ASoC: tegra: Add error logging in tegra210_admaif driver
ASoC: tegra: Use dev_err_probe() in OPE, PEQ and MBDRC drivers
ASoC: tegra: Use dev_err_probe() for regmap init failures
ASoC: tegra: Use dev_err_probe() in tegra_asoc_machine probe
sound/soc/tegra/tegra186_asrc.c | 7 +++----
sound/soc/tegra/tegra186_dspk.c | 7 +++----
sound/soc/tegra/tegra210_admaif.c | 24 +++++++++++-------------
sound/soc/tegra/tegra210_adx.c | 7 +++----
sound/soc/tegra/tegra210_ahub.c | 7 +++----
sound/soc/tegra/tegra210_amx.c | 7 +++----
sound/soc/tegra/tegra210_dmic.c | 7 +++----
sound/soc/tegra/tegra210_i2s.c | 7 +++----
sound/soc/tegra/tegra210_mbdrc.c | 19 ++++++++++---------
sound/soc/tegra/tegra210_mixer.c | 7 +++----
sound/soc/tegra/tegra210_mvc.c | 7 +++----
sound/soc/tegra/tegra210_ope.c | 26 ++++++++++----------------
sound/soc/tegra/tegra210_peq.c | 19 ++++++++++---------
sound/soc/tegra/tegra210_sfc.c | 7 +++----
sound/soc/tegra/tegra_asoc_machine.c | 21 ++++++++++-----------
15 files changed, 82 insertions(+), 99 deletions(-)
--
2.17.1
^ permalink raw reply
* Re: [PATCH] iommu: Always fill in gather when unmapping
From: Jon Hunter @ 2026-04-01 10:40 UTC (permalink / raw)
To: Jason Gunthorpe, Alexandre Ghiti, AngeloGioacchino Del Regno,
Albert Ou, asahi, Baolin Wang, iommu, Janne Grunau,
Jernej Skrabec, Joerg Roedel, Jean-Philippe Brucker,
linux-arm-kernel, linux-mediatek, linux-riscv, linux-sunxi,
Matthias Brugger, Neal Gompa, Orson Zhai, Palmer Dabbelt,
Paul Walmsley, Samuel Holland, Sven Peter, virtualization,
Chen-Yu Tsai, Will Deacon, Yong Wu, Chunyan Zhang
Cc: Lu Baolu, Janusz Krzysztofik, Joerg Roedel, patches, Robin Murphy,
Samiullah Khawaja, stable, Vasant Hegde,
linux-tegra@vger.kernel.org
In-Reply-To: <0-v1-664d3acaabb9+78b-iommu_gather_always_jgg@nvidia.com>
On 31/03/2026 20:56, Jason Gunthorpe wrote:
> The fixed commit assumed that the gather would always be populated if
> an iotlb_sync was required.
>
> arm-smmu-v3, amd, VT-d, riscv, s390, mtk all use information from the
> gather during their iotlb_sync() and this approach works for them.
>
> However, arm-smmu, qcom_iommu, ipmmu-vmsa, sun50i, sprd, virtio,
> apple-dart all ignore the gather during their iotlb_sync(). They
> mostly issue a full flush.
>
> Unfortunately the latter set of drivers often don't bother to add
> anything to the gather since they don't intend on using it. Since the
> core code now blocks gathers that were never filled, this caused those
> drivers to stop getting their iotlb_sync() calls and breaks them.
>
> Since it is impossible to tell the difference between gathers that are
> empty because there is nothing to do and gathers that are empty
> because they are not used, fill in the gathers for the missing cases.
>
> io-pgtable might have intended to allow the driver to choose between
> gather or immediate flush because it passed gather to
> ops->tlb_add_page(), however no driver does anything with it.
>
> mtk uses io-pgtable-arm-v7s but added the range to the gather in the
> unmap callback. Move this into the io-pgtable-arm unmap itself. That
> will fix all the armv7 using drivers (arm-smmu, qcom_iommu,
> ipmmu-vmsa).
>
> arm-smmu uses both ARM_V7S and ARM LPAE formats. The LPAE formats
> already have the gather population because SMMUv3 requires it, so it
> becomes consistent.
>
> Add a trivial gather population to io-pgtable-dart.
>
> Add trivial populations to sprd, sun50i and virtio-iommu in their
> unmap functions.
>
> Fixes: 90c5def10bea ("iommu: Do not call drivers for empty gathers")
> Reported-by: Jon Hunter <jonathanh@nvidia.com>
> Closes: https://lore.kernel.org/r/8800a38b-8515-4bbe-af15-0dae81274bf7@nvidia.com
> Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
> ---
> drivers/iommu/io-pgtable-arm.c | 4 +++-
> drivers/iommu/io-pgtable-dart.c | 3 +++
> drivers/iommu/mtk_iommu.c | 1 -
> drivers/iommu/sprd-iommu.c | 1 +
> drivers/iommu/sun50i-iommu.c | 1 +
> drivers/iommu/virtio-iommu.c | 2 ++
> 6 files changed, 10 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/iommu/io-pgtable-arm.c b/drivers/iommu/io-pgtable-arm.c
> index 0208e5897c299a..8572713a42ca29 100644
> --- a/drivers/iommu/io-pgtable-arm.c
> +++ b/drivers/iommu/io-pgtable-arm.c
> @@ -666,9 +666,11 @@ static size_t __arm_lpae_unmap(struct arm_lpae_io_pgtable *data,
> /* Clear the remaining entries */
> __arm_lpae_clear_pte(ptep, &iop->cfg, i);
>
> - if (gather && !iommu_iotlb_gather_queued(gather))
> + if (gather && !iommu_iotlb_gather_queued(gather)) {
> + iommu_iotlb_gather_add_range(gather, iova, i * size);
> for (int j = 0; j < i; j++)
> io_pgtable_tlb_add_page(iop, gather, iova + j * size, size);
> + }
>
> return i * size;
> } else if (iopte_leaf(pte, lvl, iop->fmt)) {
> diff --git a/drivers/iommu/io-pgtable-dart.c b/drivers/iommu/io-pgtable-dart.c
> index cbc5d6aa2daa23..75d699dc28e7b0 100644
> --- a/drivers/iommu/io-pgtable-dart.c
> +++ b/drivers/iommu/io-pgtable-dart.c
> @@ -330,6 +330,9 @@ static size_t dart_unmap_pages(struct io_pgtable_ops *ops, unsigned long iova,
> i++;
> }
>
> + if (i && !iommu_iotlb_gather_queued(gather))
> + iommu_iotlb_gather_add_range(gather, iova, i * pgsize);
> +
> return i * pgsize;
> }
>
> diff --git a/drivers/iommu/mtk_iommu.c b/drivers/iommu/mtk_iommu.c
> index 2be990c108de2b..a2f80a92f51f2c 100644
> --- a/drivers/iommu/mtk_iommu.c
> +++ b/drivers/iommu/mtk_iommu.c
> @@ -828,7 +828,6 @@ static size_t mtk_iommu_unmap(struct iommu_domain *domain,
> {
> struct mtk_iommu_domain *dom = to_mtk_domain(domain);
>
> - iommu_iotlb_gather_add_range(gather, iova, pgsize * pgcount);
> return dom->iop->unmap_pages(dom->iop, iova, pgsize, pgcount, gather);
> }
>
> diff --git a/drivers/iommu/sprd-iommu.c b/drivers/iommu/sprd-iommu.c
> index c1a34445d244fb..893ea67d322644 100644
> --- a/drivers/iommu/sprd-iommu.c
> +++ b/drivers/iommu/sprd-iommu.c
> @@ -340,6 +340,7 @@ static size_t sprd_iommu_unmap(struct iommu_domain *domain, unsigned long iova,
> spin_lock_irqsave(&dom->pgtlock, flags);
> memset(pgt_base_iova, 0, pgcount * sizeof(u32));
> spin_unlock_irqrestore(&dom->pgtlock, flags);
> + iommu_iotlb_gather_add_range(iotlb_gather, iova, size);
>
> return size;
> }
> diff --git a/drivers/iommu/sun50i-iommu.c b/drivers/iommu/sun50i-iommu.c
> index be3f1ce696ba29..b9aa4bbc82acad 100644
> --- a/drivers/iommu/sun50i-iommu.c
> +++ b/drivers/iommu/sun50i-iommu.c
> @@ -655,6 +655,7 @@ static size_t sun50i_iommu_unmap(struct iommu_domain *domain, unsigned long iova
>
> memset(pte_addr, 0, sizeof(*pte_addr));
> sun50i_table_flush(sun50i_domain, pte_addr, 1);
> + iommu_iotlb_gather_add_range(gather, iova, SZ_4K);
>
> return SZ_4K;
> }
> diff --git a/drivers/iommu/virtio-iommu.c b/drivers/iommu/virtio-iommu.c
> index 587fc13197f122..5865b8f6c6e67a 100644
> --- a/drivers/iommu/virtio-iommu.c
> +++ b/drivers/iommu/virtio-iommu.c
> @@ -897,6 +897,8 @@ static size_t viommu_unmap_pages(struct iommu_domain *domain, unsigned long iova
> if (unmapped < size)
> return 0;
>
> + iommu_iotlb_gather_add_range(gather, iova, unmapped);
> +
> /* Device already removed all mappings after detach. */
> if (!vdomain->nr_endpoints)
> return unmapped;
>
> base-commit: fcbe430399ca5c318e99bfda6df9beee90ab051c
Fixes the issue I was seeing ...
Tested-by: Jon Hunter <jonathanh@nvidia.com>
Thanks!
Jon
--
nvpublic
^ permalink raw reply
* [PATCH V4 2/3] dt-bindings: net: Fix Tegra234 MGBE PTP clock
From: Jon Hunter @ 2026-04-01 10:29 UTC (permalink / raw)
To: Andrew Lunn, David S . Miller, Eric Dumazet, Jakub Kicinski,
Paolo Abeni, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Thierry Reding
Cc: netdev, devicetree, linux-tegra, Jon Hunter, Krzysztof Kozlowski
In-Reply-To: <20260401102941.17466-1-jonathanh@nvidia.com>
The PTP clock for the Tegra234 MGBE device is incorrectly named
'ptp-ref' and should be 'ptp_ref'. This is causing the following
warning to be observed on Tegra234 platforms that use this device:
ERR KERN tegra-mgbe 6800000.ethernet eth0: Invalid PTP clock rate
WARNING KERN tegra-mgbe 6800000.ethernet eth0: PTP init failed
Although this constitutes an ABI breakage in the binding for this
device, PTP support has clearly never worked and so fix this now
so we can correct the device-tree for this device. Note that the
MGBE driver still supports the legacy 'ptp-ref' clock name and so
older/existing device-trees will still work, but given that this
is not the correct name, there is no point to advertise this in the
binding.
Fixes: 189c2e5c7669 ("dt-bindings: net: Add Tegra234 MGBE")
Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
---
.../devicetree/bindings/net/nvidia,tegra234-mgbe.yaml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/Documentation/devicetree/bindings/net/nvidia,tegra234-mgbe.yaml b/Documentation/devicetree/bindings/net/nvidia,tegra234-mgbe.yaml
index 2bd3efff2485..215f14d1897d 100644
--- a/Documentation/devicetree/bindings/net/nvidia,tegra234-mgbe.yaml
+++ b/Documentation/devicetree/bindings/net/nvidia,tegra234-mgbe.yaml
@@ -42,7 +42,7 @@ properties:
- const: mgbe
- const: mac
- const: mac-divider
- - const: ptp-ref
+ - const: ptp_ref
- const: rx-input-m
- const: rx-input
- const: tx
@@ -133,7 +133,7 @@ examples:
<&bpmp TEGRA234_CLK_MGBE0_RX_PCS_M>,
<&bpmp TEGRA234_CLK_MGBE0_RX_PCS>,
<&bpmp TEGRA234_CLK_MGBE0_TX_PCS>;
- clock-names = "mgbe", "mac", "mac-divider", "ptp-ref", "rx-input-m",
+ clock-names = "mgbe", "mac", "mac-divider", "ptp_ref", "rx-input-m",
"rx-input", "tx", "eee-pcs", "rx-pcs-input", "rx-pcs-m",
"rx-pcs", "tx-pcs";
resets = <&bpmp TEGRA234_RESET_MGBE0_MAC>,
--
2.43.0
^ permalink raw reply related
* [PATCH V4 3/3] arm64: tegra: Fix Tegra234 MGBE PTP clock
From: Jon Hunter @ 2026-04-01 10:29 UTC (permalink / raw)
To: Andrew Lunn, David S . Miller, Eric Dumazet, Jakub Kicinski,
Paolo Abeni, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Thierry Reding
Cc: netdev, devicetree, linux-tegra, Jon Hunter, Krzysztof Kozlowski
In-Reply-To: <20260401102941.17466-1-jonathanh@nvidia.com>
The Tegra MGBE PTP clock is incorrectly named as 'ptp-ref' and not
'ptp_ref' and this causing the initialisation of the PTP clock to fail.
The device-tree binding doc for the device and the Tegra MGBE driver
have been updated to use the correct name and so update the device-tree
for Tegra234 as well.
Fixes: 610cdf3186bc ("arm64: tegra: Add MGBE nodes on Tegra234")
Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
---
arch/arm64/boot/dts/nvidia/tegra234.dtsi | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/arch/arm64/boot/dts/nvidia/tegra234.dtsi b/arch/arm64/boot/dts/nvidia/tegra234.dtsi
index 04a95b6658ca..18220cdac9f9 100644
--- a/arch/arm64/boot/dts/nvidia/tegra234.dtsi
+++ b/arch/arm64/boot/dts/nvidia/tegra234.dtsi
@@ -3605,7 +3605,7 @@ ethernet@6800000 {
<&bpmp TEGRA234_CLK_MGBE0_RX_PCS_M>,
<&bpmp TEGRA234_CLK_MGBE0_RX_PCS>,
<&bpmp TEGRA234_CLK_MGBE0_TX_PCS>;
- clock-names = "mgbe", "mac", "mac-divider", "ptp-ref", "rx-input-m",
+ clock-names = "mgbe", "mac", "mac-divider", "ptp_ref", "rx-input-m",
"rx-input", "tx", "eee-pcs", "rx-pcs-input", "rx-pcs-m",
"rx-pcs", "tx-pcs";
resets = <&bpmp TEGRA234_RESET_MGBE0_MAC>,
@@ -3647,7 +3647,7 @@ ethernet@6900000 {
<&bpmp TEGRA234_CLK_MGBE1_RX_PCS_M>,
<&bpmp TEGRA234_CLK_MGBE1_RX_PCS>,
<&bpmp TEGRA234_CLK_MGBE1_TX_PCS>;
- clock-names = "mgbe", "mac", "mac-divider", "ptp-ref", "rx-input-m",
+ clock-names = "mgbe", "mac", "mac-divider", "ptp_ref", "rx-input-m",
"rx-input", "tx", "eee-pcs", "rx-pcs-input", "rx-pcs-m",
"rx-pcs", "tx-pcs";
resets = <&bpmp TEGRA234_RESET_MGBE1_MAC>,
@@ -3689,7 +3689,7 @@ ethernet@6a00000 {
<&bpmp TEGRA234_CLK_MGBE2_RX_PCS_M>,
<&bpmp TEGRA234_CLK_MGBE2_RX_PCS>,
<&bpmp TEGRA234_CLK_MGBE2_TX_PCS>;
- clock-names = "mgbe", "mac", "mac-divider", "ptp-ref", "rx-input-m",
+ clock-names = "mgbe", "mac", "mac-divider", "ptp_ref", "rx-input-m",
"rx-input", "tx", "eee-pcs", "rx-pcs-input", "rx-pcs-m",
"rx-pcs", "tx-pcs";
resets = <&bpmp TEGRA234_RESET_MGBE2_MAC>,
@@ -3731,7 +3731,7 @@ ethernet@6b00000 {
<&bpmp TEGRA234_CLK_MGBE3_RX_PCS_M>,
<&bpmp TEGRA234_CLK_MGBE3_RX_PCS>,
<&bpmp TEGRA234_CLK_MGBE3_TX_PCS>;
- clock-names = "mgbe", "mac", "mac-divider", "ptp-ref", "rx-input-m",
+ clock-names = "mgbe", "mac", "mac-divider", "ptp_ref", "rx-input-m",
"rx-input", "tx", "eee-pcs", "rx-pcs-input", "rx-pcs-m",
"rx-pcs", "tx-pcs";
resets = <&bpmp TEGRA234_RESET_MGBE3_MAC>,
--
2.43.0
^ permalink raw reply related
* [PATCH V4 0/3] net: stmmac: Fix Tegra234 MGBE clock
From: Jon Hunter @ 2026-04-01 10:29 UTC (permalink / raw)
To: Andrew Lunn, David S . Miller, Eric Dumazet, Jakub Kicinski,
Paolo Abeni, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Thierry Reding
Cc: netdev, devicetree, linux-tegra, Jon Hunter
The name of the PTP ref clock for the Tegra234 MGBE ethernet controller
does not match the generic name in the stmmac platform driver. Despite
this basic ethernet is functional on the Tegra234 platforms that use
this driver and as far as I know, we have not tested PTP support with
this driver. Hence, the risk of breaking any functionality is low.
The previous attempt to fix this in the stmmac platform driver, by
supporting the Tegra234 PTP clock name, was rejected [0]. The preference
from the netdev maintainers is to fix this in the DT binding for
Tegra234.
This series fixes this by correcting the device-tree binding to align
with the generic name for the PTP clock. I understand that this is
breaking the ABI for this device, which we should never do, but this
is a last resort for getting this fixed. I am open to any better ideas
to fix this. Please note that we still maintain backward compatibility
in the driver to allow older device-trees to work, but we don't
advertise this via the binding, because I did not see any value in doing
so.
Changes since V3:
- Added Krzysztof's reviewed-by for device-tree changes.
- Re-worked logic in MGBE driver for detecting the legacy clock to make
it more explicit and clear.
Changes since V2:
- Corrected example in dt-binding doc.
Changes since V1:
- Moved handling of different PTP clock names into Tegra234 MGBE driver.
- Add changes to update the Tegra234 MGBE DT binding and DT source.
[0] https://lore.kernel.org/linux-tegra/20250612062032.293275-1-jonathanh@nvidia.com/
Jon Hunter (3):
net: stmmac: Fix PTP ref clock for Tegra234
dt-bindings: net: Fix Tegra234 MGBE PTP clock
arm64: tegra: Fix Tegra234 MGBE PTP clock
.../bindings/net/nvidia,tegra234-mgbe.yaml | 4 ++--
arch/arm64/boot/dts/nvidia/tegra234.dtsi | 8 ++++----
.../net/ethernet/stmicro/stmmac/dwmac-tegra.c | 20 +++++++++++++++++--
3 files changed, 24 insertions(+), 8 deletions(-)
--
2.43.0
^ permalink raw reply
* [PATCH V4 1/3] net: stmmac: Fix PTP ref clock for Tegra234
From: Jon Hunter @ 2026-04-01 10:29 UTC (permalink / raw)
To: Andrew Lunn, David S . Miller, Eric Dumazet, Jakub Kicinski,
Paolo Abeni, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Thierry Reding
Cc: netdev, devicetree, linux-tegra, Jon Hunter
In-Reply-To: <20260401102941.17466-1-jonathanh@nvidia.com>
Since commit 030ce919e114 ("net: stmmac: make sure that ptp_rate is not
0 before configuring timestamping") was added the following error is
observed on Tegra234:
ERR KERN tegra-mgbe 6800000.ethernet eth0: Invalid PTP clock rate
WARNING KERN tegra-mgbe 6800000.ethernet eth0: PTP init failed
It turns out that the Tegra234 device-tree binding defines the PTP ref
clock name as 'ptp-ref' and not 'ptp_ref' and the above commit now
exposes this and that the PTP clock is not configured correctly.
In order to update device-tree to use the correct 'ptp_ref' name, update
the Tegra MGBE driver to use 'ptp_ref' by default and fallback to using
'ptp-ref' if this clock name is present.
Fixes: d8ca113724e7 ("net: stmmac: tegra: Add MGBE support")
Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
---
.../net/ethernet/stmicro/stmmac/dwmac-tegra.c | 20 +++++++++++++++++--
1 file changed, 18 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-tegra.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-tegra.c
index b4b39e6a169e..3af2f001fada 100644
--- a/drivers/net/ethernet/stmicro/stmmac/dwmac-tegra.c
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-tegra.c
@@ -9,7 +9,7 @@
#include "stmmac_platform.h"
static const char *const mgbe_clks[] = {
- "rx-pcs", "tx", "tx-pcs", "mac-divider", "mac", "mgbe", "ptp-ref", "mac"
+ "rx-pcs", "tx", "tx-pcs", "mac-divider", "mac", "mgbe", "ptp_ref", "mac"
};
struct tegra_mgbe {
@@ -216,6 +216,7 @@ static int tegra_mgbe_probe(struct platform_device *pdev)
struct plat_stmmacenet_data *plat;
struct stmmac_resources res;
struct tegra_mgbe *mgbe;
+ bool use_legacy_ptp = false;
int irq, err, i;
u32 value;
@@ -257,9 +258,24 @@ static int tegra_mgbe_probe(struct platform_device *pdev)
if (!mgbe->clks)
return -ENOMEM;
- for (i = 0; i < ARRAY_SIZE(mgbe_clks); i++)
+ /*
+ * Older device-trees use 'ptp-ref' rather than 'ptp_ref'.
+ * Fall back when the legacy name is present.
+ */
+ if (of_property_match_string(pdev->dev.of_node, "clock-names",
+ "ptp-ref") >= 0)
+ use_legacy_ptp = true;
+
+ for (i = 0; i < ARRAY_SIZE(mgbe_clks); i++) {
mgbe->clks[i].id = mgbe_clks[i];
+ if (use_legacy_ptp && !strcmp(mgbe_clks[i], "ptp_ref")) {
+ dev_warn(mgbe->dev,
+ "Device-tree update needed for PTP clock!\n");
+ mgbe->clks[i].id = "ptp-ref";
+ }
+ }
+
err = devm_clk_bulk_get(mgbe->dev, ARRAY_SIZE(mgbe_clks), mgbe->clks);
if (err < 0)
return err;
--
2.43.0
^ permalink raw reply related
* Re: [PATCH 6.19 000/342] 6.19.11-rc1 review
From: Luna Jernberg @ 2026-04-01 10:06 UTC (permalink / raw)
To: Jon Hunter, Luna Jernberg
Cc: Greg Kroah-Hartman, patches, linux-kernel, torvalds, akpm, linux,
shuah, patches, lkft-triage, pavel, f.fainelli, sudipm.mukherjee,
rwarsow, conor, hargar, broonie, achill, sr, linux-tegra, stable
In-Reply-To: <aa4dcd03-8c65-47c0-9c0d-9fc3d3b69a1b@drhqmail202.nvidia.com>
Tested-by: Luna Jernberg <droidbittin@gmail.com>
AMD Ryzen 5 5600 6-Core Processor:
https://www.inet.se/produkt/5304697/amd-ryzen-5-5600-3-5-ghz-35mb on a
https://www.gigabyte.com/Motherboard/B550-AORUS-ELITE-V2-rev-12
https://www.inet.se/produkt/1903406/gigabyte-b550-aorus-elite-v2
motherboard :)
running Arch Linux with the testing repos enabled:
https://archlinux.org/ https://archboot.com/
https://wiki.archlinux.org/title/Arch_Testing_Team
Den ons 1 apr. 2026 kl 11:25 skrev Jon Hunter <jonathanh@nvidia.com>:
>
> On Tue, 31 Mar 2026 18:17:13 +0200, Greg Kroah-Hartman wrote:
> > This is the start of the stable review cycle for the 6.19.11 release.
> > There are 342 patches in this series, all will be posted as a response
> > to this one. If anyone has any issues with these being applied, please
> > let me know.
> >
> > Responses should be made by Thu, 02 Apr 2026 16:16:56 +0000.
> > Anything received after that time might be too late.
> >
> > The whole patch series can be found in one patch at:
> > https://www.kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.19.11-rc1.gz
> > or in the git tree and branch at:
> > git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-6.19.y
> > and the diffstat can be found below.
> >
> > thanks,
> >
> > greg k-h
>
> All tests passing for Tegra ...
>
> Test results for stable-v6.19:
> 11 builds: 11 pass, 0 fail
> 28 boots: 28 pass, 0 fail
> 133 tests: 133 pass, 0 fail
>
> Linux version: 6.19.11-rc1-g411f8a553ae8
> Boards tested: tegra124-jetson-tk1, tegra186-p2771-0000,
> tegra186-p3509-0000+p3636-0001, tegra194-p2972-0000,
> tegra194-p3509-0000+p3668-0000, tegra20-ventana,
> tegra210-p2371-2180, tegra210-p3450-0000,
> tegra234-p3737-0000+p3701-0000,
> tegra234-p3768-0000+p3767-0005, tegra30-cardhu-a04
>
> Tested-by: Jon Hunter <jonathanh@nvidia.com>
>
> Jon
>
^ permalink raw reply
* Re: [PATCH 6.18 000/309] 6.18.21-rc1 review
From: Jon Hunter @ 2026-04-01 9:19 UTC (permalink / raw)
To: Greg Kroah-Hartman
Cc: Greg Kroah-Hartman, patches, linux-kernel, torvalds, akpm, linux,
shuah, patches, lkft-triage, pavel, jonathanh, f.fainelli,
sudipm.mukherjee, rwarsow, conor, hargar, broonie, achill, sr,
linux-tegra, stable
In-Reply-To: <20260331161753.468533260@linuxfoundation.org>
On Tue, 31 Mar 2026 18:18:23 +0200, Greg Kroah-Hartman wrote:
> This is the start of the stable review cycle for the 6.18.21 release.
> There are 309 patches in this series, all will be posted as a response
> to this one. If anyone has any issues with these being applied, please
> let me know.
>
> Responses should be made by Thu, 02 Apr 2026 16:16:56 +0000.
> Anything received after that time might be too late.
>
> The whole patch series can be found in one patch at:
> https://www.kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.18.21-rc1.gz
> or in the git tree and branch at:
> git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-6.18.y
> and the diffstat can be found below.
>
> thanks,
>
> greg k-h
All tests passing for Tegra ...
Test results for stable-v6.18:
11 builds: 11 pass, 0 fail
28 boots: 28 pass, 0 fail
133 tests: 133 pass, 0 fail
Linux version: 6.18.21-rc1-g489a397a6e94
Boards tested: tegra124-jetson-tk1, tegra186-p2771-0000,
tegra186-p3509-0000+p3636-0001, tegra194-p2972-0000,
tegra194-p3509-0000+p3668-0000, tegra20-ventana,
tegra210-p2371-2180, tegra210-p3450-0000,
tegra234-p3737-0000+p3701-0000,
tegra234-p3768-0000+p3767-0005, tegra30-cardhu-a04
Tested-by: Jon Hunter <jonathanh@nvidia.com>
Jon
^ permalink raw reply
* Re: [PATCH 6.12 000/244] 6.12.80-rc1 review
From: Jon Hunter @ 2026-04-01 9:19 UTC (permalink / raw)
To: Greg Kroah-Hartman
Cc: Greg Kroah-Hartman, patches, linux-kernel, torvalds, akpm, linux,
shuah, patches, lkft-triage, pavel, jonathanh, f.fainelli,
sudipm.mukherjee, rwarsow, conor, hargar, broonie, achill, sr,
linux-tegra, stable
In-Reply-To: <20260331161741.651718120@linuxfoundation.org>
On Tue, 31 Mar 2026 18:19:10 +0200, Greg Kroah-Hartman wrote:
> This is the start of the stable review cycle for the 6.12.80 release.
> There are 244 patches in this series, all will be posted as a response
> to this one. If anyone has any issues with these being applied, please
> let me know.
>
> Responses should be made by Thu, 02 Apr 2026 16:16:56 +0000.
> Anything received after that time might be too late.
>
> The whole patch series can be found in one patch at:
> https://www.kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.12.80-rc1.gz
> or in the git tree and branch at:
> git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-6.12.y
> and the diffstat can be found below.
>
> thanks,
>
> greg k-h
All tests passing for Tegra ...
Test results for stable-v6.12:
11 builds: 11 pass, 0 fail
28 boots: 28 pass, 0 fail
133 tests: 133 pass, 0 fail
Linux version: 6.12.80-rc1-g77487557237f
Boards tested: tegra124-jetson-tk1, tegra186-p2771-0000,
tegra186-p3509-0000+p3636-0001, tegra194-p2972-0000,
tegra194-p3509-0000+p3668-0000, tegra20-ventana,
tegra210-p2371-2180, tegra210-p3450-0000,
tegra234-p3737-0000+p3701-0000, tegra30-cardhu-a04
Tested-by: Jon Hunter <jonathanh@nvidia.com>
Jon
^ permalink raw reply
* Re: [PATCH 6.19 000/342] 6.19.11-rc1 review
From: Jon Hunter @ 2026-04-01 9:19 UTC (permalink / raw)
To: Greg Kroah-Hartman
Cc: Greg Kroah-Hartman, patches, linux-kernel, torvalds, akpm, linux,
shuah, patches, lkft-triage, pavel, jonathanh, f.fainelli,
sudipm.mukherjee, rwarsow, conor, hargar, broonie, achill, sr,
linux-tegra, stable
In-Reply-To: <20260331161758.909578033@linuxfoundation.org>
On Tue, 31 Mar 2026 18:17:13 +0200, Greg Kroah-Hartman wrote:
> This is the start of the stable review cycle for the 6.19.11 release.
> There are 342 patches in this series, all will be posted as a response
> to this one. If anyone has any issues with these being applied, please
> let me know.
>
> Responses should be made by Thu, 02 Apr 2026 16:16:56 +0000.
> Anything received after that time might be too late.
>
> The whole patch series can be found in one patch at:
> https://www.kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.19.11-rc1.gz
> or in the git tree and branch at:
> git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-6.19.y
> and the diffstat can be found below.
>
> thanks,
>
> greg k-h
All tests passing for Tegra ...
Test results for stable-v6.19:
11 builds: 11 pass, 0 fail
28 boots: 28 pass, 0 fail
133 tests: 133 pass, 0 fail
Linux version: 6.19.11-rc1-g411f8a553ae8
Boards tested: tegra124-jetson-tk1, tegra186-p2771-0000,
tegra186-p3509-0000+p3636-0001, tegra194-p2972-0000,
tegra194-p3509-0000+p3668-0000, tegra20-ventana,
tegra210-p2371-2180, tegra210-p3450-0000,
tegra234-p3737-0000+p3701-0000,
tegra234-p3768-0000+p3767-0005, tegra30-cardhu-a04
Tested-by: Jon Hunter <jonathanh@nvidia.com>
Jon
^ permalink raw reply
* Re: [PATCH 6.6 000/175] 6.6.131-rc1 review
From: Jon Hunter @ 2026-04-01 9:19 UTC (permalink / raw)
To: Greg Kroah-Hartman
Cc: Greg Kroah-Hartman, patches, linux-kernel, torvalds, akpm, linux,
shuah, patches, lkft-triage, pavel, jonathanh, f.fainelli,
sudipm.mukherjee, rwarsow, conor, hargar, broonie, achill, sr,
linux-tegra, stable
In-Reply-To: <20260331161729.779738837@linuxfoundation.org>
On Tue, 31 Mar 2026 18:19:44 +0200, Greg Kroah-Hartman wrote:
> This is the start of the stable review cycle for the 6.6.131 release.
> There are 175 patches in this series, all will be posted as a response
> to this one. If anyone has any issues with these being applied, please
> let me know.
>
> Responses should be made by Thu, 02 Apr 2026 16:16:56 +0000.
> Anything received after that time might be too late.
>
> The whole patch series can be found in one patch at:
> https://www.kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.6.131-rc1.gz
> or in the git tree and branch at:
> git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-6.6.y
> and the diffstat can be found below.
>
> thanks,
>
> greg k-h
All tests passing for Tegra ...
Test results for stable-v6.6:
11 builds: 11 pass, 0 fail
28 boots: 28 pass, 0 fail
133 tests: 133 pass, 0 fail
Linux version: 6.6.131-rc1-g616fc3cb7c95
Boards tested: tegra124-jetson-tk1, tegra186-p2771-0000,
tegra186-p3509-0000+p3636-0001, tegra194-p2972-0000,
tegra194-p3509-0000+p3668-0000, tegra20-ventana,
tegra210-p2371-2180, tegra210-p3450-0000,
tegra234-p3737-0000+p3701-0000, tegra30-cardhu-a04
Tested-by: Jon Hunter <jonathanh@nvidia.com>
Jon
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox