[PATCH v6 2/3] arm64: dts: freescale: Add basic dtsi for imx943

Shawn Guo shawnguo2 at yeah.net
Fri May 9 02:49:10 PDT 2025


On Mon, Apr 21, 2025 at 02:51:38PM +0800, Jacky Bai wrote:
> Add the minimal dtsi support for i.MX943. i.MX943 is the first SoC of
> i.MX94 Family, create a common dtsi for the whole i.MX94 family, and the
> specific dtsi part for i.MX943.
> 
> The clock, power domain and perf index need to be used by the device nodes
> for resource reference, add them along with the dtsi support.
> 
> Signed-off-by: Jacky Bai <ping.bai at nxp.com>
> ---
>  - v6 changes:
>   - refine the indentation of edma irq property.
> 
>  - v5 changes:
>   - remove the err irq of edma node as the err irq support in driver is not
>     ready. We can add it back when the driver is ready. No impact for current
>     edma support.
> 
>  - v4 changes:
>   - reorder the cpu node compatible string property as suggested by Frank
> 
>  - v3 changes:
>   - remove the blank line
>   - add PAD config macro define as suggested by Frank Li
>   - update the device nodes compatible strings for imx94 as suggested by Krzysztof
> 
>  - v2 changes:
>   - remove the unnecessary macro define in clock header as suggested by Krzysztof
>   - split the dtsi into imx94.dtsi and imx943.dtsi
>   - use low case in the pinfunc header as Frank suggested
>   - reorder the device nodes and properties
> ---
>  arch/arm64/boot/dts/freescale/imx94-clock.h   |  195 ++

I forgot to ask when imx95-clock.h was first introduced.  But how will
clk drivers use these clock IDs, or will clk drivers have their own copy
of definitions?

>  arch/arm64/boot/dts/freescale/imx94-pinfunc.h | 1570 +++++++++++++++++
>  arch/arm64/boot/dts/freescale/imx94-power.h   |   41 +

Same question on the power IDs.

>  arch/arm64/boot/dts/freescale/imx94.dtsi      | 1148 ++++++++++++
>  arch/arm64/boot/dts/freescale/imx943.dtsi     |  148 ++
>  5 files changed, 3102 insertions(+)
>  create mode 100644 arch/arm64/boot/dts/freescale/imx94-clock.h
>  create mode 100644 arch/arm64/boot/dts/freescale/imx94-pinfunc.h
>  create mode 100644 arch/arm64/boot/dts/freescale/imx94-power.h
>  create mode 100644 arch/arm64/boot/dts/freescale/imx94.dtsi
>  create mode 100644 arch/arm64/boot/dts/freescale/imx943.dtsi
> 
> diff --git a/arch/arm64/boot/dts/freescale/imx94-clock.h b/arch/arm64/boot/dts/freescale/imx94-clock.h
> new file mode 100644
> index 000000000000..84ad3d53c29b
> --- /dev/null
> +++ b/arch/arm64/boot/dts/freescale/imx94-clock.h
> @@ -0,0 +1,195 @@
> +/* SPDX-License-Identifier: GPL-2.0-only OR MIT */
> +/*
> + * Copyright 2024-2025 NXP
> + */
> +
> +#ifndef __CLOCK_IMX94_H
> +#define __CLOCK_IMX94_H

Can we name it __IMX94_CLOCK_H to match the file name?

> +
> +#define IMX94_CLK_EXT				0
> +#define IMX94_CLK_32K				1
> +#define IMX94_CLK_24M				2
> +#define IMX94_CLK_FRO				3
> +#define IMX94_CLK_SYSPLL1_VCO			4
> +#define IMX94_CLK_SYSPLL1_PFD0_UNGATED		5
> +#define IMX94_CLK_SYSPLL1_PFD0			6
> +#define IMX94_CLK_SYSPLL1_PFD0_DIV2		7
> +#define IMX94_CLK_SYSPLL1_PFD1_UNGATED		8
> +#define IMX94_CLK_SYSPLL1_PFD1			9
> +#define IMX94_CLK_SYSPLL1_PFD1_DIV2		10
> +#define IMX94_CLK_SYSPLL1_PFD2_UNGATED		11
> +#define IMX94_CLK_SYSPLL1_PFD2			12
> +#define IMX94_CLK_SYSPLL1_PFD2_DIV2		13
> +#define IMX94_CLK_AUDIOPLL1_VCO			14
> +#define IMX94_CLK_AUDIOPLL1			15
> +#define IMX94_CLK_AUDIOPLL2_VCO			16
> +#define IMX94_CLK_AUDIOPLL2			17
> +#define IMX94_CLK_RESERVED18			18
> +#define IMX94_CLK_RESERVED19			19
> +#define IMX94_CLK_RESERVED20			20
> +#define IMX94_CLK_RESERVED21			21
> +#define IMX94_CLK_RESERVED22			22
> +#define IMX94_CLK_RESERVED23			23
> +#define IMX94_CLK_ENCPLL_VCO			24
> +#define IMX94_CLK_ENCPLL_PFD0_UNGATED		25
> +#define IMX94_CLK_ENCPLL_PFD0			26
> +#define IMX94_CLK_ENCPLL_PFD1_UNGATED		27
> +#define IMX94_CLK_ENCPLL_PFD1			28
> +#define IMX94_CLK_ARMPLL_VCO			29
> +#define IMX94_CLK_ARMPLL_PFD0_UNGATED		30
> +#define IMX94_CLK_ARMPLL_PFD0			31
> +#define IMX94_CLK_ARMPLL_PFD1_UNGATED		32
> +#define IMX94_CLK_ARMPLL_PFD1			33
> +#define IMX94_CLK_ARMPLL_PFD2_UNGATED		34
> +#define IMX94_CLK_ARMPLL_PFD2			35
> +#define IMX94_CLK_ARMPLL_PFD3_UNGATED		36
> +#define IMX94_CLK_ARMPLL_PFD3			37
> +#define IMX94_CLK_DRAMPLL_VCO			38
> +#define IMX94_CLK_DRAMPLL			39
> +#define IMX94_CLK_HSIOPLL_VCO			40
> +#define IMX94_CLK_HSIOPLL			41
> +#define IMX94_CLK_LDBPLL_VCO			42
> +#define IMX94_CLK_LDBPLL			43
> +#define IMX94_CLK_EXT1				44
> +#define IMX94_CLK_EXT2				45
> +

Why this newline?

> +#define IMX94_CLK_ADC				46
> +#define IMX94_CLK_BUSAON			47
> +#define IMX94_CLK_CAN1				48
> +#define IMX94_CLK_GLITCHFILTER			49
> +#define IMX94_CLK_GPT1				50
> +#define IMX94_CLK_I3C1SLOW			51
> +#define IMX94_CLK_LPI2C1			52
> +#define IMX94_CLK_LPI2C2			53
> +#define IMX94_CLK_LPSPI1			54
> +#define IMX94_CLK_LPSPI2			55
> +#define IMX94_CLK_LPTMR1			56
> +#define IMX94_CLK_LPUART1			57
> +#define IMX94_CLK_LPUART2			58
> +#define IMX94_CLK_M33				59
> +#define IMX94_CLK_M33SYSTICK			60
> +#define IMX94_CLK_PDM				61
> +#define IMX94_CLK_SAI1				62
> +#define IMX94_CLK_TPM2				63
> +#define IMX94_CLK_A55				64
> +#define IMX94_CLK_A55MTRBUS			65
> +#define IMX94_CLK_A55PERIPH			66
> +#define IMX94_CLK_DRAMALT			67
> +#define IMX94_CLK_DRAMAPB			68
> +#define IMX94_CLK_DISPAPB			69
> +#define IMX94_CLK_DISPAXI			70
> +#define IMX94_CLK_DISPPIX			71
> +#define IMX94_CLK_HSIOACSCAN480M		72
> +#define IMX94_CLK_HSIOACSCAN80M			73
> +#define IMX94_CLK_HSIO				74
> +#define IMX94_CLK_HSIOPCIEAUX			75
> +#define IMX94_CLK_HSIOPCIETEST160M		76
> +#define IMX94_CLK_HSIOPCIETEST400M		77
> +#define IMX94_CLK_HSIOPCIETEST500M		78
> +#define IMX94_CLK_HSIOPCIETEST50M		79
> +#define IMX94_CLK_HSIOUSBTEST60M		80
> +#define IMX94_CLK_BUSM70			81
> +#define IMX94_CLK_M70				82
> +#define IMX94_CLK_M70SYSTICK			83
> +#define IMX94_CLK_BUSM71			84
> +#define IMX94_CLK_M71				85
> +#define IMX94_CLK_M71SYSTICK			86
> +#define IMX94_CLK_BUSNETCMIX			87
> +#define IMX94_CLK_ECAT				88
> +#define IMX94_CLK_ENET				89
> +#define IMX94_CLK_ENETPHYTEST200M		90
> +#define IMX94_CLK_ENETPHYTEST500M		91
> +#define IMX94_CLK_ENETPHYTEST667M		92
> +#define IMX94_CLK_ENETREF			93
> +#define IMX94_CLK_ENETTIMER1			94
> +#define IMX94_CLK_ENETTIMER2			95
> +#define IMX94_CLK_ENETTIMER3			96
> +#define IMX94_CLK_FLEXIO3			97
> +#define IMX94_CLK_FLEXIO4			98
> +#define IMX94_CLK_M33SYNC			99
> +#define IMX94_CLK_M33SYNCSYSTICK		100
> +#define IMX94_CLK_MAC0				101
> +#define IMX94_CLK_MAC1				102
> +#define IMX94_CLK_MAC2				103
> +#define IMX94_CLK_MAC3				104
> +#define IMX94_CLK_MAC4				105
> +#define IMX94_CLK_MAC5				106
> +#define IMX94_CLK_NOCAPB			107
> +#define IMX94_CLK_NOC				108
> +#define IMX94_CLK_NPUAPB			109
> +#define IMX94_CLK_NPU				110
> +#define IMX94_CLK_CCMCKO1			111
> +#define IMX94_CLK_CCMCKO2			112
> +#define IMX94_CLK_CCMCKO3			113
> +#define IMX94_CLK_CCMCKO4			114
> +#define IMX94_CLK_BISS				115
> +#define IMX94_CLK_BUSWAKEUP			116
> +#define IMX94_CLK_CAN2				117
> +#define IMX94_CLK_CAN3				118
> +#define IMX94_CLK_CAN4				119
> +#define IMX94_CLK_CAN5				120
> +#define IMX94_CLK_ENDAT21			121
> +#define IMX94_CLK_ENDAT22			122
> +#define IMX94_CLK_ENDAT31FAST			123
> +#define IMX94_CLK_ENDAT31SLOW			124
> +#define IMX94_CLK_FLEXIO1			125
> +#define IMX94_CLK_FLEXIO2			126
> +#define IMX94_CLK_GPT2				127
> +#define IMX94_CLK_GPT3				128
> +#define IMX94_CLK_GPT4				129
> +#define IMX94_CLK_HIPERFACE1			130
> +#define IMX94_CLK_HIPERFACE1SYNC		131
> +#define IMX94_CLK_HIPERFACE2			132
> +#define IMX94_CLK_HIPERFACE2SYNC		133
> +#define IMX94_CLK_I3C2SLOW			134
> +#define IMX94_CLK_LPI2C3			135
> +#define IMX94_CLK_LPI2C4			136
> +#define IMX94_CLK_LPI2C5			137
> +#define IMX94_CLK_LPI2C6			138
> +#define IMX94_CLK_LPI2C7			139
> +#define IMX94_CLK_LPI2C8			140
> +#define IMX94_CLK_LPSPI3			141
> +#define IMX94_CLK_LPSPI4			142
> +#define IMX94_CLK_LPSPI5			143
> +#define IMX94_CLK_LPSPI6			144
> +#define IMX94_CLK_LPSPI7			145
> +#define IMX94_CLK_LPSPI8			146
> +#define IMX94_CLK_LPTMR2			147
> +#define IMX94_CLK_LPUART10			148
> +#define IMX94_CLK_LPUART11			149
> +#define IMX94_CLK_LPUART12			150
> +#define IMX94_CLK_LPUART3			151
> +#define IMX94_CLK_LPUART4			152
> +#define IMX94_CLK_LPUART5			153
> +#define IMX94_CLK_LPUART6			154
> +#define IMX94_CLK_LPUART7			155
> +#define IMX94_CLK_LPUART8			156
> +#define IMX94_CLK_LPUART9			157
> +#define IMX94_CLK_SAI2				158
> +#define IMX94_CLK_SAI3				159
> +#define IMX94_CLK_SAI4				160
> +#define IMX94_CLK_SWOTRACE			161
> +#define IMX94_CLK_TPM4				162
> +#define IMX94_CLK_TPM5				163
> +#define IMX94_CLK_TPM6				164
> +#define IMX94_CLK_USBPHYBURUNIN			165
> +#define IMX94_CLK_USDHC1			166
> +#define IMX94_CLK_USDHC2			167
> +#define IMX94_CLK_USDHC3			168
> +#define IMX94_CLK_V2XPK				169
> +#define IMX94_CLK_WAKEUPAXI			170
> +#define IMX94_CLK_XSPISLVROOT			171
> +#define IMX94_CLK_XSPI1				172
> +#define IMX94_CLK_XSPI2				173
> +

And this?

> +#define IMX94_CLK_SEL_EXT			174
> +#define IMX94_CLK_SEL_A55C0			175
> +#define IMX94_CLK_SEL_A55C1			176
> +#define IMX94_CLK_SEL_A55C2			177
> +#define IMX94_CLK_SEL_A55C3			178
> +#define IMX94_CLK_SEL_A55P			179
> +#define IMX94_CLK_SEL_DRAM			180
> +#define IMX94_CLK_SEL_TEMPSENSE			181
> +#define IMX94_CLK_NPU_CGC			182
> +
> +#endif /* __CLOCK_IMX94_H */
> diff --git a/arch/arm64/boot/dts/freescale/imx94-pinfunc.h b/arch/arm64/boot/dts/freescale/imx94-pinfunc.h
> new file mode 100644
> index 000000000000..00255db89185
> --- /dev/null
> +++ b/arch/arm64/boot/dts/freescale/imx94-pinfunc.h
> @@ -0,0 +1,1570 @@
> +/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
> +/*
> + * Copyright 2024-2025 NXP
> + */
> +
> +#ifndef __DTS_IMX94_PINFUNC_H
> +#define __DTS_IMX94_PINFUNC_H

<snip>

> +#endif /* __DTS_IMX94_PINFUNC_H */
> diff --git a/arch/arm64/boot/dts/freescale/imx94-power.h b/arch/arm64/boot/dts/freescale/imx94-power.h
> new file mode 100644
> index 000000000000..282167494a1d
> --- /dev/null
> +++ b/arch/arm64/boot/dts/freescale/imx94-power.h
> @@ -0,0 +1,41 @@
> +/* SPDX-License-Identifier: (GPL-2.0 OR MIT) */
> +/*
> + *  Copyright 2024-2025 NXP
> + */
> +
> +#ifndef __IMX94_POWER_H__
> +#define __IMX94_POWER_H__

Other headers in this patch use pattern of __XXX_YYY_H.  Can we get them
all aligned?

Shawn




More information about the linux-arm-kernel mailing list