Skip to contentSkip to conversation

arm64: tegra: add initial Tegra238 and E2426-1099+E2423-1099 support

PATCH NAK Chun Ng 3 participants 10 messages Mar 25 – Mar 26

Subsystems (5)
lore
Share & tools
lore

Chun Ng

author
#0 lore raw

cover arm64: tegra: add initial Tegra238 and E2426-1099+E2423-1099 support

Hi all,

This series adds initial support for the NVIDIA Tegra238 SoC and the E2426-1099+E2423-1099 engineering reference platform. The series follows the pattern used for Tegra234 and other recent Tegra SoCs.

It introduces Tegra238 clock and reset binding headers, documents the E2426-1099+E2423-1099 platform compatibles, relaxes the tegra186-hsp binding schema for HSP configurations used on Tegra238, and adds the initial Tegra238 SoC device tree plus board DTS.

The device tree added here is minimal scaffolding only. It is not yet bootable, and further enablement will follow in later series.

The patch order puts bindings before implementation: clock/reset IDs first, then platform documentation, then the HSP schema update required by tegra238.dtsi, and finally the SoC and board device trees.

This series is based on linux-next commit 785f0eb2f85d ("Add linux-next specific files for 20260320").

Tested with:
- make ARCH=arm64 CHECK_DTBS=yes nvidia/tegra238-e2426-1099+e2423-1099.dtb
- make ARCH=arm64 dt_binding_check

Chun Ng (4):
dt-bindings: tegra: Add Tegra238 clock and reset definitions
dt-bindings: tegra: Document E2426-1099+E2423-1099 platform
dt-bindings: mailbox: tegra186-hsp: allow doorbell+shared or
shared-only
arm64: tegra: add e2426-1099+e2423-1099 support

 .../devicetree/bindings/arm/tegra.yaml        |   4 +
 .../bindings/mailbox/nvidia,tegra186-hsp.yaml |   7 +
 arch/arm64/boot/dts/nvidia/Makefile           |   2 +
 .../nvidia/tegra238-e2426-1099+e2423-1099.dts |  16 +
 arch/arm64/boot/dts/nvidia/tegra238.dtsi      | 190 ++++++++++++
 include/dt-bindings/clock/nvidia,tegra238.h   | 279 ++++++++++++++++++
 include/dt-bindings/reset/nvidia,tegra238.h   | 125 ++++++++
 7 files changed, 623 insertions(+)
 create mode 100644 arch/arm64/boot/dts/nvidia/tegra238-e2426-1099+e2423-1099.dts
 create mode 100644 arch/arm64/boot/dts/nvidia/tegra238.dtsi
 create mode 100644 include/dt-bindings/clock/nvidia,tegra238.h
 create mode 100644 include/dt-bindings/reset/nvidia,tegra238.h

base-commit: 785f0eb2f85decbe7c1ef9ae922931f0194ffc2e

Signature · 1 line
2.43.0
author
#1 lore raw

PATCH 1/4 dt-bindings: tegra: Add Tegra238 clock and reset definitions

Add device tree binding headers for Tegra238 that define the clock and reset resource IDs used by the BPMP firmware. The IDs are defined by hardware and are not software enumerations; 0 is reserved, so numbering starts at 1. The reset header documents reserved ID ranges where no reset line is present.

---
 include/dt-bindings/clock/nvidia,tegra238.h | 279 ++++++++++++++++++++
 include/dt-bindings/reset/nvidia,tegra238.h | 125 +++++++++
 2 files changed, 404 insertions(+)
 create mode 100644 include/dt-bindings/clock/nvidia,tegra238.h
 create mode 100644 include/dt-bindings/reset/nvidia,tegra238.h
include/dt-bindings/clock/nvidia,tegra238.h new file +279 -0
new file mode 100644
index 000000000000..eb1cb01ab20a
@@ -0,0 +1,279 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
+/* Copyright (c) 2021-2026, NVIDIA CORPORATION. All rights reserved. */
+
+#ifndef DT_BINDINGS_CLOCK_NVIDIA_TEGRA238_H
+#define DT_BINDINGS_CLOCK_NVIDIA_TEGRA238_H
+
+#define TEGRA238_CLK_ACLK			1
+#define TEGRA238_CLK_ACTMON			2
+#define TEGRA238_CLK_ADSP			3
+#define TEGRA238_CLK_ADSPNEON			4
+#define TEGRA238_CLK_AHUB			5
+#define TEGRA238_CLK_AON_APB			6
+#define TEGRA238_CLK_AON_CPU_NIC		7
+#define TEGRA238_CLK_AON_I2C_SLOW		8
+#define TEGRA238_CLK_AON_NIC			9
+#define TEGRA238_CLK_AON_TOUCH			10
+#define TEGRA238_CLK_APB2APE			11
+#define TEGRA238_CLK_APE			12
+#define TEGRA238_CLK_AUD_MCLK			13
+#define TEGRA238_CLK_AXI_CBB			14
+#define TEGRA238_CLK_AZA_2XBIT			15
+#define TEGRA238_CLK_AZA_BIT			16
+#define TEGRA238_CLK_BPMP_CPU			17
+#define TEGRA238_CLK_BPMP_CPU_NIC		18
+#define TEGRA238_CLK_CLK_32K			19
+#define TEGRA238_CLK_CLK_M			20
+#define TEGRA238_CLK_CSITE			21
+#define TEGRA238_CLK_DBGAPB			22
+#define TEGRA238_CLK_DISP			23
+#define TEGRA238_CLK_DISPHUBPLL			24
+#define TEGRA238_CLK_DISPPLL			25
+#define TEGRA238_CLK_DISP_ROOT			26
+#define TEGRA238_CLK_DMIC1			27
+#define TEGRA238_CLK_DMIC3			28
+#define TEGRA238_CLK_DMIC4			29
+#define TEGRA238_CLK_DMIC5			30
+#define TEGRA238_CLK_DPAUX			31
+#define TEGRA238_CLK_DP_LINK_REF		32
+#define TEGRA238_CLK_DSC			33
+#define TEGRA238_CLK_DSIPLL_CLKOUTA		34
+#define TEGRA238_CLK_DSIPLL_CLKOUTPN		35
+#define TEGRA238_CLK_DSIPLL_VCO			36
+#define TEGRA238_CLK_DSI_CORE			37
+#define TEGRA238_CLK_DSI_LP			38
+#define TEGRA238_CLK_DSI_PAD_INPUT		39
+#define TEGRA238_CLK_DSI_PIXEL			40
+#define TEGRA238_CLK_DSPK1			41
+#define TEGRA238_CLK_DSPK2			42
+#define TEGRA238_CLK_EMC			43
+#define TEGRA238_CLK_EMCHUB			44
+#define TEGRA238_CLK_EMCSA_EMC			45
+#define TEGRA238_CLK_EMCSA_MC			46
+#define TEGRA238_CLK_EMCSA_MPLL			47
+#define TEGRA238_CLK_EMCSB_EMC			48
+#define TEGRA238_CLK_EMCSB_MC			49
+#define TEGRA238_CLK_EMCSB_MPLL			50
+#define TEGRA238_CLK_EXTPERIPH1			51
+#define TEGRA238_CLK_EXTPERIPH2			52
+#define TEGRA238_CLK_EXTPERIPH3			53
+#define TEGRA238_CLK_EXTPERIPH4			54
+#define TEGRA238_CLK_FDE			55
+#define TEGRA238_CLK_FR_SE			56
+#define TEGRA238_CLK_FR_SEU1			57
+#define TEGRA238_CLK_FUSE			58
+#define TEGRA238_CLK_FUSE_BURN			59
+#define TEGRA238_CLK_FUSE_SERIAL		60
+#define TEGRA238_CLK_GPC0CLK			61
+#define TEGRA238_CLK_GPU_PWR			62
+#define TEGRA238_CLK_HOST1X			63
+#define TEGRA238_CLK_HUB			64
+#define TEGRA238_CLK_HUB_ROOT			65
+#define TEGRA238_CLK_I2C1			66
+#define TEGRA238_CLK_I2C2			67
+#define TEGRA238_CLK_I2C3			68
+#define TEGRA238_CLK_I2C4			69
+#define TEGRA238_CLK_I2C5			70
+#define TEGRA238_CLK_I2C6			71
+#define TEGRA238_CLK_I2C7			72
+#define TEGRA238_CLK_I2C8			73
+#define TEGRA238_CLK_I2C9			74
+#define TEGRA238_CLK_I2C_SLOW			75
+#define TEGRA238_CLK_I2S1			76
+#define TEGRA238_CLK_I2S1_SYNC_INPUT		77
+#define TEGRA238_CLK_I2S2			78
+#define TEGRA238_CLK_I2S2_SYNC_INPUT		79
+#define TEGRA238_CLK_I2S3			80
+#define TEGRA238_CLK_I2S3_SYNC_INPUT		81
+#define TEGRA238_CLK_I2S4			82
+#define TEGRA238_CLK_I2S4_SYNC_INPUT		83
+#define TEGRA238_CLK_I2S5			84
+#define TEGRA238_CLK_I2S5_SYNC_INPUT		85
+#define TEGRA238_CLK_I2S6			86
+#define TEGRA238_CLK_I2S6_SYNC_INPUT		87
+#define TEGRA238_CLK_JTAG_INTFC_PRE_CG		88
+#define TEGRA238_CLK_LA				89
+#define TEGRA238_CLK_LINKA_SYM_CLKOUT		90
+#define TEGRA238_CLK_LINKF_SYM_CLKOUT		91
+#define TEGRA238_CLK_MAUD			92
+#define TEGRA238_CLK_MCHUB			93
+#define TEGRA238_CLK_MIPI_CAL			94
+#define TEGRA238_CLK_MPHY_CORE_PLL_FIXED	95
+#define TEGRA238_CLK_MPHY_FORCE_LS_MODE		96
+#define TEGRA238_CLK_MPHY_L0_RX_ANA		97
+#define TEGRA238_CLK_MPHY_L0_RX_HS_SYMB_DIV	98
+#define TEGRA238_CLK_MPHY_L0_RX_LS_BIT		99
+#define TEGRA238_CLK_MPHY_L0_RX_LS_BIT_DIV	100
+#define TEGRA238_CLK_MPHY_L0_RX_LS_SYMB_DIV	101
+#define TEGRA238_CLK_MPHY_L0_RX_MUX_SYMB_DIV	102
+#define TEGRA238_CLK_MPHY_L0_RX_SYMB		103
+#define TEGRA238_CLK_MPHY_L0_TX_2X_SYMB		104
+#define TEGRA238_CLK_MPHY_L0_TX_HS_SYMB_DIV	105
+#define TEGRA238_CLK_MPHY_L0_TX_LS_3XBIT	106
+#define TEGRA238_CLK_MPHY_L0_TX_LS_3XBIT_DIV	107
+#define TEGRA238_CLK_MPHY_L0_TX_LS_SYMB_DIV	108
+#define TEGRA238_CLK_MPHY_L0_TX_MUX_SYMB_DIV	109
+#define TEGRA238_CLK_MPHY_L0_TX_PRE_SYMB	110
+#define TEGRA238_CLK_MPHY_L0_TX_SYMB		111
+#define TEGRA238_CLK_MPHY_L1_RX_ANA		112
+#define TEGRA238_CLK_MPHY_TX_1MHZ_REF		113
+#define TEGRA238_CLK_MSS_ENCRYPT		114
+#define TEGRA238_CLK_NAFLL_BPMP			115
+#define TEGRA238_CLK_NAFLL_CLUSTER0_CORE	116
+#define TEGRA238_CLK_NAFLL_CLUSTER0_DSU		117
+#define TEGRA238_CLK_NAFLL_FDE			118
+#define TEGRA238_CLK_NAFLL_GPC0			119
+#define TEGRA238_CLK_NAFLL_NVDEC		120
+#define TEGRA238_CLK_NAFLL_NVENC		121
+#define TEGRA238_CLK_NAFLL_OFA			122
+#define TEGRA238_CLK_NAFLL_SE			123
+#define TEGRA238_CLK_NAFLL_SEU1			124
+#define TEGRA238_CLK_NAFLL_TSEC			125
+#define TEGRA238_CLK_NAFLL_VIC			126
+#define TEGRA238_CLK_NVDEC			127
+#define TEGRA238_CLK_NVDISPLAY_P0		128
+#define TEGRA238_CLK_NVDISPLAY_P1		129
+#define TEGRA238_CLK_NVENC			130
+#define TEGRA238_CLK_OFA			131
+#define TEGRA238_CLK_OSC			132
+#define TEGRA238_CLK_PEX0_C0_CORE		133
+#define TEGRA238_CLK_PEX0_C1_CORE		134
+#define TEGRA238_CLK_PEX0_C2_CORE		135
+#define TEGRA238_CLK_PEX0_C3_CORE		136
+#define TEGRA238_CLK_PEX_SATA_USB_RX_BYP	137
+#define TEGRA238_CLK_PEX_USB_PAD_PLL0_MGMT	138
+#define TEGRA238_CLK_PEX_USB_PAD_PLL1_MGMT	139
+#define TEGRA238_CLK_PEX_USB_PAD_PLL2_MGMT	140
+#define TEGRA238_CLK_PEX_USB_PAD_PLL3_MGMT	141
+#define TEGRA238_CLK_PLLA			142
+#define TEGRA238_CLK_PLLA1			143
+#define TEGRA238_CLK_PLLA1_OUT1			144
+#define TEGRA238_CLK_PLLAON			145
+#define TEGRA238_CLK_PLLA_DISP			146
+#define TEGRA238_CLK_PLLA_DISPHUB		147
+#define TEGRA238_CLK_PLLA_DIV2			148
+#define TEGRA238_CLK_PLLA_OUT0			149
+#define TEGRA238_CLK_PLLC			150
+#define TEGRA238_CLK_PLLC2			151
+#define TEGRA238_CLK_PLLC4			152
+#define TEGRA238_CLK_PLLC4_MUXED		153
+#define TEGRA238_CLK_PLLC4_OUT1			154
+#define TEGRA238_CLK_PLLC4_OUT2			155
+#define TEGRA238_CLK_PLLC4_VCO_DIV2		156
+#define TEGRA238_CLK_PLLE			157
+#define TEGRA238_CLK_PLLE_HPS			158
+#define TEGRA238_CLK_PLLHUB			159
+#define TEGRA238_CLK_PLLP			160
+#define TEGRA238_CLK_PLLP_AUDIO			161
+#define TEGRA238_CLK_PLLP_DIV17			162
+#define TEGRA238_CLK_PLLP_OUT0			163
+#define TEGRA238_CLK_PLLP_OUT_JTAG		164
+#define TEGRA238_CLK_PLLREFE_VCOOUT		165
+#define TEGRA238_CLK_PLLREFE_VCOOUT_GATED	166
+#define TEGRA238_CLK_PPC			167
+#define TEGRA238_CLK_PRE_SF0			168
+#define TEGRA238_CLK_PRE_SOR0			169
+#define TEGRA238_CLK_PRE_SOR0_REF		170
+#define TEGRA238_CLK_PRE_SOR1			171
+#define TEGRA238_CLK_PRE_SOR1_REF		172
+#define TEGRA238_CLK_PWM1			173
+#define TEGRA238_CLK_PWM2			174
+#define TEGRA238_CLK_PWM3			175
+#define TEGRA238_CLK_PWM4			176
+#define TEGRA238_CLK_PWM5			177
+#define TEGRA238_CLK_PWM6			178
+#define TEGRA238_CLK_PWM7			179
+#define TEGRA238_CLK_PWM8			180
+#define TEGRA238_CLK_QSPI0_2X_PM		181
+#define TEGRA238_CLK_QSPI0_PM			182
+#define TEGRA238_CLK_RG0			183
+#define TEGRA238_CLK_RG1			184
+#define TEGRA238_CLK_SDMMC1			185
+#define TEGRA238_CLK_SDMMC4			186
+#define TEGRA238_CLK_SDMMC4_AXICIF		187
+#define TEGRA238_CLK_SDMMC_LEGACY_TM		188
+#define TEGRA238_CLK_SE				189
+#define TEGRA238_CLK_SEU1			190
+#define TEGRA238_CLK_SF0			191
+#define TEGRA238_CLK_SF0_POSTMUX		192
+#define TEGRA238_CLK_SF1			193
+#define TEGRA238_CLK_SF1_POSTMUX		194
+#define TEGRA238_CLK_SOC_THERM			195
+#define TEGRA238_CLK_SOR0			196
+#define TEGRA238_CLK_SOR0_PAD_CLKOUT		197
+#define TEGRA238_CLK_SOR0_PLL_REF		198
+#define TEGRA238_CLK_SOR0_REF			199
+#define TEGRA238_CLK_SOR1			200
+#define TEGRA238_CLK_SOR1_PAD_CLKOUT		201
+#define TEGRA238_CLK_SOR1_PLL_REF		202
+#define TEGRA238_CLK_SOR1_REF			203
+#define TEGRA238_CLK_SOR_SAFE			204
+#define TEGRA238_CLK_SPI1			205
+#define TEGRA238_CLK_SPI2			206
+#define TEGRA238_CLK_SPI3			207
+#define TEGRA238_CLK_SPI4			208
+#define TEGRA238_CLK_SPI5			209
+#define TEGRA238_CLK_SPPLL0_CLKOUTA		210
+#define TEGRA238_CLK_SPPLL0_CLKOUTB		211
+#define TEGRA238_CLK_SPPLL0_CLKOUTPN		212
+#define TEGRA238_CLK_SPPLL0_DIV10		213
+#define TEGRA238_CLK_SPPLL0_DIV25		214
+#define TEGRA238_CLK_SPPLL0_DIV27PN		215
+#define TEGRA238_CLK_SPPLL0_VCO			216
+#define TEGRA238_CLK_SPPLL1_CLKOUTPN		217
+#define TEGRA238_CLK_SPPLL1_DIV27PN		218
+#define TEGRA238_CLK_SPPLL1_VCO			219
+#define TEGRA238_CLK_SYNC_DMIC1			220
+#define TEGRA238_CLK_SYNC_DMIC3			221
+#define TEGRA238_CLK_SYNC_DMIC4			222
+#define TEGRA238_CLK_SYNC_DSPK1			223
+#define TEGRA238_CLK_SYNC_DSPK2			224
+#define TEGRA238_CLK_SYNC_I2S1			225
+#define TEGRA238_CLK_SYNC_I2S2			226
+#define TEGRA238_CLK_SYNC_I2S3			227
+#define TEGRA238_CLK_SYNC_I2S4			228
+#define TEGRA238_CLK_SYNC_I2S5			229
+#define TEGRA238_CLK_SYNC_I2S6			230
+#define TEGRA238_CLK_TACH0			231
+#define TEGRA238_CLK_TACH1			232
+#define TEGRA238_CLK_TSC			233
+#define TEGRA238_CLK_TSC_REF			234
+#define TEGRA238_CLK_TSEC			235
+#define TEGRA238_CLK_TSEC_PKA			236
+#define TEGRA238_CLK_TSENSE			237
+#define TEGRA238_CLK_UARTA			238
+#define TEGRA238_CLK_UARTB			239
+#define TEGRA238_CLK_UARTC			240
+#define TEGRA238_CLK_UARTD			241
+#define TEGRA238_CLK_UARTE			242
+#define TEGRA238_CLK_UARTF			243
+#define TEGRA238_CLK_UARTG			244
+#define TEGRA238_CLK_UARTH			245
+#define TEGRA238_CLK_UART_FST_MIPI_CAL		246
+#define TEGRA238_CLK_UFSDEV_REF			247
+#define TEGRA238_CLK_UFSHC			248
+#define TEGRA238_CLK_UPHY_PLL3			249
+#define TEGRA238_CLK_USB2_TRK			250
+#define TEGRA238_CLK_UTMIPLL_CLKOUT48		251
+#define TEGRA238_CLK_UTMIPLL_CLKOUT480		252
+#define TEGRA238_CLK_UTMIP_PLL			253
+#define TEGRA238_CLK_VIC			254
+#define TEGRA238_CLK_VPLL0			255
+#define TEGRA238_CLK_VPLL0_REF			256
+#define TEGRA238_CLK_VPLL1			257
+#define TEGRA238_CLK_XUSB_CORE_DEV		258
+#define TEGRA238_CLK_XUSB_CORE_HOST		259
+#define TEGRA238_CLK_XUSB_CORE_MUX		260
+#define TEGRA238_CLK_XUSB_CORE_SS		261
+#define TEGRA238_CLK_XUSB_FALCON		262
+#define TEGRA238_CLK_XUSB_FALCON_HOST		263
+#define TEGRA238_CLK_XUSB_FALCON_SS		264
+#define TEGRA238_CLK_XUSB_FS			265
+#define TEGRA238_CLK_XUSB_FS_DEV		266
+#define TEGRA238_CLK_XUSB_FS_HOST		267
+#define TEGRA238_CLK_XUSB_HS_HSICP		268
+#define TEGRA238_CLK_XUSB_SS			269
+#define TEGRA238_CLK_XUSB_SS_DEV		270
+#define TEGRA238_CLK_XUSB_SS_SUPERSPEED		271
+
+#endif /* DT_BINDINGS_CLOCK_NVIDIA_TEGRA238_H */
include/dt-bindings/reset/nvidia,tegra238.h new file +125 -0

125 lines not on this page · raw message

Signature · 1 line
2.43.0
#2 lore raw

Re: [PATCH 1/4] dt-bindings: tegra: Add Tegra238 clock and reset definitions

Quoted 10 lines · Chun Ng

Add device tree binding headers for Tegra238 that define the clock and reset resource IDs used by the BPMP firmware. The IDs are defined by hardware and are not software enumerations; 0 is reserved, so numbering starts at 1. The reset header documents reserved ID ranges where no reset line is present.

---
 include/dt-bindings/clock/nvidia,tegra238.h | 279 ++++++++++++++++++++
 include/dt-bindings/reset/nvidia,tegra238.h | 125 +++++++++

Where is the bindings change with compatible?

You have entire commit msg to explain unusual things. Or cover letter - nothing useful there.

Quoted 3 lines
 2 files changed, 404 insertions(+)
 create mode 100644 include/dt-bindings/clock/nvidia,tegra238.h
 create mode 100644 include/dt-bindings/reset/nvidia,tegra238.h

So how can I verify that this matches compatible?

Best regards,
Krzysztof

author
#3 lore raw

PATCH 2/4 dt-bindings: tegra: Document E2426-1099+E2423-1099 platform

In reply to Chun Ng

Document engineering platform E2426-1099+E2423-1099 for the Tegra238 SoC.

---
 Documentation/devicetree/bindings/arm/tegra.yaml | 4 ++++
 1 file changed, 4 insertions(+)
Documentation/devicetree/bindings/arm/tegra.yaml +4 -0
index 50a31dba7bec..96f19c3ca4a0 100644
@@ -263,6 +263,10 @@ properties:
           - const: nvidia,p3768-0000+p3767-0005
           - const: nvidia,p3767-0005
           - const: nvidia,tegra234
+      - description: NVIDIA E2426-1099+E2423-1099 Engineering Reference Platform
+        items:
+          - const: nvidia,e2426-1099+e2423-1099
+          - const: nvidia,tegra238
       - description: NVIDIA P3971-0089+P3834-0008 Engineering Reference Platform
         items:
           - const: nvidia,p3971-0089+p3834-0008
Signature · 1 line
2.43.0
author
#4 lore raw

PATCH 3/4 dt-bindings: mailbox: tegra186-hsp: allow doorbell+shared or shared-only

In reply to Chun Ng

On Tegra238, hsp_top0 mailbox has doorbell plus shared0, while hsp_top1 and aon_hsp mailboxes expose only a single shared interrupt (shared0 and shared1 respectively) with no doorbell.

Update the schema to support Tegra238 by adding an extra oneOf options for:
- doorbell with one shared interrupt (shared0..shared15)
- single shared interrupt only (no doorbell)

---
 .../devicetree/bindings/mailbox/nvidia,tegra186-hsp.yaml   | 7 +++++++
 1 file changed, 7 insertions(+)
Documentation/devicetree/bindings/mailbox/nvidia,tegra186-hsp.yaml +7 -0
index f833b845de0d..274480a04c70 100644
@@ -82,6 +82,13 @@ properties:
       - items:
           - const: doorbell
 
+      - items:
+          - const: doorbell
+          - pattern: "^shared([0-9]|1[0-5])$"
+
+      - items:
+          - pattern: "^shared([0-9]|1[0-5])$"
+
       - items:
           - const: doorbell
           - pattern: "^shared([0-9]|1[0-5])$"
Signature · 1 line
2.43.0
#5 lore raw

Re: [PATCH 3/4] dt-bindings: mailbox: tegra186-hsp: allow doorbell+shared or shared-only

Quoted 5 lines · Chun Ng

On Tegra238, hsp_top0 mailbox has doorbell plus shared0, while hsp_top1 and aon_hsp mailboxes expose only a single shared interrupt (shared0 and shared1 respectively) with no doorbell.

Update the schema to support Tegra238 by adding an extra oneOf options for:

NAK, there is no Tegra238 in that file nor in youro diff. Just open it and look around.

Quoted 13 lines

- doorbell with one shared interrupt (shared0..shared15)
- single shared interrupt only (no doorbell)

---
 .../devicetree/bindings/mailbox/nvidia,tegra186-hsp.yaml   | 7 +++++++
 1 file changed, 7 insertions(+)
Documentation/devicetree/bindings/mailbox/nvidia,tegra186-hsp.yaml +0 -0
index f833b845de0d..274480a04c70 100644

Documentation/devicetree/bindings/mailbox/nvidia,tegra186-hsp.yaml properties: · line 87

Quoted 6 lines
Documentation/devicetree/bindings/mailbox/nvidia,tegra186-hsp.yaml +3 -0
@@ -82,6 +82,13 @@ properties:
       - items:
           - const: doorbell
 
+      - items:
+          - const: doorbell
+          - pattern: "^shared([0-9]|1[0-5])$"

Here and...

Documentation/devicetree/bindings/mailbox/nvidia,tegra186-hsp.yaml properties: · line 90

Quoted 3 lines
Documentation/devicetree/bindings/mailbox/nvidia,tegra186-hsp.yaml +3 -0
+
+      - items:
+          - pattern: "^shared([0-9]|1[0-5])$"

here: Commit msg says shared0, here you say up to shared15.

Best regards,
Krzysztof

author
#6 lore raw

PATCH 4/4 arm64: tegra: add e2426-1099+e2423-1099 support

In reply to Chun Ng

Add the Tegra238 SoC device tree (tegra238.dtsi) and a minimal device tree for the Tegra238 E2426-1099+E2423-1099 engineering reference platform. The device-tree is not yet bootable and further enablement will be added in follow-up patches.

---
 arch/arm64/boot/dts/nvidia/Makefile           |   2 +
 .../nvidia/tegra238-e2426-1099+e2423-1099.dts |  16 ++
 arch/arm64/boot/dts/nvidia/tegra238.dtsi      | 190 ++++++++++++++++++
 3 files changed, 208 insertions(+)
 create mode 100644 arch/arm64/boot/dts/nvidia/tegra238-e2426-1099+e2423-1099.dts
 create mode 100644 arch/arm64/boot/dts/nvidia/tegra238.dtsi
arch/arm64/boot/dts/nvidia/Makefile +2 -0
index b139cbd14442..a5357809e222 100644
@@ -13,6 +13,7 @@ DTC_FLAGS_tegra234-p3737-0000+p3701-0000 := -@
 DTC_FLAGS_tegra234-p3740-0002+p3701-0008 := -@
 DTC_FLAGS_tegra234-p3768-0000+p3767-0000 := -@
 DTC_FLAGS_tegra234-p3768-0000+p3767-0005 := -@
+DTC_FLAGS_tegra238-e2426-1099+e2423-1099 := -@
 DTC_FLAGS_tegra264-p3971-0089+p3834-0008 := -@
 
 dtb-$(CONFIG_ARCH_TEGRA_132_SOC) += tegra132-norrin.dtb
@@ -34,4 +35,5 @@ dtb-$(CONFIG_ARCH_TEGRA_234_SOC) += tegra234-p3737-0000+p3701-0008.dtb
 dtb-$(CONFIG_ARCH_TEGRA_234_SOC) += tegra234-p3740-0002+p3701-0008.dtb
 dtb-$(CONFIG_ARCH_TEGRA_234_SOC) += tegra234-p3768-0000+p3767-0000.dtb
 dtb-$(CONFIG_ARCH_TEGRA_234_SOC) += tegra234-p3768-0000+p3767-0005.dtb
+dtb-$(CONFIG_ARCH_TEGRA_238_SOC) += tegra238-e2426-1099+e2423-1099.dtb
 dtb-$(CONFIG_ARCH_TEGRA_264_SOC) += tegra264-p3971-0089+p3834-0008.dtb
arch/arm64/boot/dts/nvidia/tegra238-e2426-1099+e2423-1099.dts new file +16 -0
new file mode 100644
index 000000000000..d69ea2114e23
@@ -0,0 +1,16 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
+
+/dts-v1/;
+
+#include "tegra238.dtsi"
+
+/ {
+	model = "NVIDIA Tegra238 E2426-1099+E2423-1099";
+	compatible = "nvidia,e2426-1099+e2423-1099", "nvidia,tegra238";
+
+	bus@0 {
+		uarta: serial@3100000 {
+			status = "okay";
+		};
+	};
+};
arch/arm64/boot/dts/nvidia/tegra238.dtsi new file +190 -0

190 lines not on this page · raw message

Signature · 1 line
2.43.0
#7 lore raw

Re: [PATCH 4/4] arm64: tegra: add e2426-1099+e2423-1099 support

Quoted 3 lines · Chun Ng

Add the Tegra238 SoC device tree (tegra238.dtsi) and a minimal device tree for the Tegra238 E2426-1099+E2423-1099 engineering reference platform. The device-tree is not yet bootable and further enablement

Then drop it. If this cannot be booted then it is pointless in the kernel, no benefit, no one can ever use it.

Quoted 90 lines

will be added in follow-up patches.

---
 arch/arm64/boot/dts/nvidia/Makefile           |   2 +
 .../nvidia/tegra238-e2426-1099+e2423-1099.dts |  16 ++
 arch/arm64/boot/dts/nvidia/tegra238.dtsi      | 190 ++++++++++++++++++
 3 files changed, 208 insertions(+)
 create mode 100644 arch/arm64/boot/dts/nvidia/tegra238-e2426-1099+e2423-1099.dts
 create mode 100644 arch/arm64/boot/dts/nvidia/tegra238.dtsi
arch/arm64/boot/dts/nvidia/Makefile +2 -0
index b139cbd14442..a5357809e222 100644
@@ -13,6 +13,7 @@ DTC_FLAGS_tegra234-p3737-0000+p3701-0000 := -@
 DTC_FLAGS_tegra234-p3740-0002+p3701-0008 := -@
 DTC_FLAGS_tegra234-p3768-0000+p3767-0000 := -@
 DTC_FLAGS_tegra234-p3768-0000+p3767-0005 := -@
+DTC_FLAGS_tegra238-e2426-1099+e2423-1099 := -@
 DTC_FLAGS_tegra264-p3971-0089+p3834-0008 := -@
 
 dtb-$(CONFIG_ARCH_TEGRA_132_SOC) += tegra132-norrin.dtb
@@ -34,4 +35,5 @@ dtb-$(CONFIG_ARCH_TEGRA_234_SOC) += tegra234-p3737-0000+p3701-0008.dtb
 dtb-$(CONFIG_ARCH_TEGRA_234_SOC) += tegra234-p3740-0002+p3701-0008.dtb
 dtb-$(CONFIG_ARCH_TEGRA_234_SOC) += tegra234-p3768-0000+p3767-0000.dtb
 dtb-$(CONFIG_ARCH_TEGRA_234_SOC) += tegra234-p3768-0000+p3767-0005.dtb
+dtb-$(CONFIG_ARCH_TEGRA_238_SOC) += tegra238-e2426-1099+e2423-1099.dtb
 dtb-$(CONFIG_ARCH_TEGRA_264_SOC) += tegra264-p3971-0089+p3834-0008.dtb
arch/arm64/boot/dts/nvidia/tegra238-e2426-1099+e2423-1099.dts new file +16 -0
new file mode 100644
index 000000000000..d69ea2114e23
@@ -0,0 +1,16 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
+
+/dts-v1/;
+
+#include "tegra238.dtsi"
+
+/ {
+	model = "NVIDIA Tegra238 E2426-1099+E2423-1099";
+	compatible = "nvidia,e2426-1099+e2423-1099", "nvidia,tegra238";
+
+	bus@0 {
+		uarta: serial@3100000 {
+			status = "okay";
+		};
+	};
+};
arch/arm64/boot/dts/nvidia/tegra238.dtsi new file +33 -0
new file mode 100644
index 000000000000..0570c3b20e62
@@ -0,0 +1,190 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
+
+#include <dt-bindings/clock/nvidia,tegra238.h>
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <dt-bindings/mailbox/tegra186-hsp.h>
+#include <dt-bindings/reset/nvidia,tegra238.h>
+
+/ {
+	compatible = "nvidia,tegra238";
+	interrupt-parent = <&gic>;
+	#address-cells = <2>;
+	#size-cells = <2>;
+
+	bus@0 {
+		compatible = "simple-bus";
+
+		#address-cells = <2>;
+		#size-cells = <2>;
+		ranges = <0x0 0x0 0x0 0x0 0x0 0x80000000>;
+
+		uarta: serial@3100000 {
+			compatible = "arm,pl011", "arm,primecell";
+			reg = <0x0 0x3100000 0x0 0x10000>;
+			interrupts = <GIC_SPI 112 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&bpmp TEGRA238_CLK_UARTA>,
+				 <&bpmp TEGRA238_CLK_PLLP_OUT0>;
+			clock-names = "uartclk", "apb_pclk";
+			assigned-clocks = <&bpmp TEGRA238_CLK_UARTA>;
+			assigned-clock-parents = <&bpmp TEGRA238_CLK_PLLP_OUT0>;
+			resets = <&bpmp TEGRA238_RESET_UARTA>;
+			arm,primecell-periphid = <0x00051011>;
+			status = "disabled";
+		};

arch/arm64/boot/dts/nvidia/tegra238.dtsi line 43

Quoted 10 lines
arch/arm64/boot/dts/nvidia/tegra238.dtsi new file +10 -0
+
+		fuse@3810000 {
+			compatible = "nvidia,tegra234-efuse";
+			reg = <0x0 0x03810000 0x0 0x19000>;
+			clocks = <&bpmp TEGRA238_CLK_FUSE>;
+			clock-names = "fuse";
+		};
+
+		hsp_top0: tegra-hsp@3c00000 {
+			compatible = "nvidia,tegra234-hsp", "nvidia,tegra194-hsp";

DTSI says 238, compatible says 234.

Best regards,
Krzysztof

maintainer
#8 lore raw

Re: [PATCH 4/4] arm64: tegra: add e2426-1099+e2423-1099 support

Quoted 7 lines · Krzysztof Kozlowski
Quoted 3 lines · Chun Ng

Add the Tegra238 SoC device tree (tegra238.dtsi) and a minimal device tree for the Tegra238 E2426-1099+E2423-1099 engineering reference platform. The device-tree is not yet bootable and further enablement

Then drop it. If this cannot be booted then it is pointless in the kernel, no benefit, no one can ever use it.

The purpose of this series is to establish a common baseline that people can use to work on top off. We expect the non-bootable state to be very temporary, but for practical reasons I want to get this merged so we can make quicker progress.

[...]

Quoted 4 lines

arch/arm64/boot/dts/nvidia/tegra238.dtsi line 43

Quoted 2 lines
arch/arm64/boot/dts/nvidia/tegra238.dtsi new file +2 -0
+		hsp_top0: tegra-hsp@3c00000 {
+			compatible = "nvidia,tegra234-hsp", "nvidia,tegra194-hsp";

DTSI says 238, compatible says 234.

Tegra238 is a derivative of Tegra234, so there's even more similarities than we typically have across generational gaps. Your recent comments suggested that you'd like to see new compatible strings no matter how minimal (or even non-existent) the differences might be, so I suppose we could prepend a Tegra238-specific compatible to this.

Thierry

#9 lore raw

Re: [PATCH 4/4] arm64: tegra: add e2426-1099+e2423-1099 support

Quoted 6 lines · Thierry Reding
Quoted 5 lines · Krzysztof Kozlowski
Quoted 3 lines · Chun Ng

Add the Tegra238 SoC device tree (tegra238.dtsi) and a minimal device tree for the Tegra238 E2426-1099+E2423-1099 engineering reference platform. The device-tree is not yet bootable and further enablement

Quoted 7 lines
Quoted 2 lines

Then drop it. If this cannot be booted then it is pointless in the kernel, no benefit, no one can ever use it.

The purpose of this series is to establish a common baseline that people can use to work on top off. We expect the non-bootable state to be very temporary, but for practical reasons I want to get this merged so we can make quicker progress.

If this cannot be booted, then there are no practical reasons - no one will be able to develop on top of it.

The only way anyone could use it is to have additional patch on top, to make it booting. Thus if you have already patches on top, which you need to share with every team/person, then you can as well share this one.

What is the benefit for the community of having this patch in the kernel? =

Best regards,
Krzysztof