On 08/10/2021 11:14, Chanho Park wrote: > Add minimal support for ExynosAuto v9 SoC[1]. > > - Enumarate all pinctrl nodes > - UART with exynos850 compatible > - UFS0 HCI + Phy > > Like exynos850, this also uses fixed-rate clock nodes until clock driver > has been supported. The clock nodes are initialized on bootloader stage > thus we don't need to control them so far. > > [1]: https://www.samsung.com/semiconductor/minisite/exynos/products/automotiveprocessor/exynos-auto-v9/ > > Signed-off-by: Chanho Park <chanho61.park@xxxxxxxxxxx> > --- > .../devicetree/bindings/mfd/syscon.yaml | 1 + > .../boot/dts/exynos/exynosautov9-pinctrl.dtsi | 1189 +++++++++++++++++ > arch/arm64/boot/dts/exynos/exynosautov9.dtsi | 301 +++++ > 3 files changed, 1491 insertions(+) > create mode 100644 arch/arm64/boot/dts/exynos/exynosautov9-pinctrl.dtsi > create mode 100644 arch/arm64/boot/dts/exynos/exynosautov9.dtsi > > diff --git a/Documentation/devicetree/bindings/mfd/syscon.yaml b/Documentation/devicetree/bindings/mfd/syscon.yaml > index abe3fd817e0b..75dcbb741010 100644 > --- a/Documentation/devicetree/bindings/mfd/syscon.yaml > +++ b/Documentation/devicetree/bindings/mfd/syscon.yaml > @@ -55,6 +55,7 @@ properties: > - samsung,exynos4-sysreg > - samsung,exynos5-sysreg > - samsung,exynos5433-sysreg > + - samsung,exynosautov9-sysreg > > - const: syscon This has to be a separate patch. > > diff --git a/arch/arm64/boot/dts/exynos/exynosautov9-pinctrl.dtsi b/arch/arm64/boot/dts/exynos/exynosautov9-pinctrl.dtsi > new file mode 100644 > index 000000000000..8489b9bea3c9 > --- /dev/null > +++ b/arch/arm64/boot/dts/exynos/exynosautov9-pinctrl.dtsi > @@ -0,0 +1,1189 @@ > +// SPDX-License-Identifier: GPL-2.0 > +/* > + * Samsung's ExynosAutov9 SoC pin-mux and pin-config device tree source > + * > + * Copyright (c) 2021 Samsung Electronics Co., Ltd. > + * > + * Samsung's ExynosAutov9 SoC pin-mux and pin-config options are listed as > + * device tree nodes in this file. > + */ > + > +#include <dt-bindings/pinctrl/samsung.h> > + > +&pinctrl_alive { > + gpa0: gpa0 { > + gpio-controller; > + #gpio-cells = <2>; > + interrupt-controller; > + #interrupt-cells = <2>; > + interrupt-parent = <&gic>; > + interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>, > + <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>, > + <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>, > + <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>, > + <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>, > + <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>, > + <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>, > + <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>; > + }; > + > + gpa1: gpa1 { > + gpio-controller; > + #gpio-cells = <2>; > + interrupt-controller; > + #interrupt-cells = <2>; > + interrupt-parent = <&gic>; > + interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>, > + <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>; > + }; > + > + dp0_hpd_pin: dp0-hpd-pin { Keep same suffix everywhere, so "-pins", even if there is just one pin. However no need for suffix in the label - schema does not care about labels, so: dp0_hpd: dp0-hpd-pins { > + samsung,pins = "gpa1-0"; > + samsung,pin-function = <EXYNOS_PIN_FUNC_2>; > + }; > + > + dp1_hpd_pin: dp1-hpd-pin { > + samsung,pins = "gpa1-1"; > + samsung,pin-function = <EXYNOS_PIN_FUNC_2>; > + }; > + > + gpq0: gpq0 { > + gpio-controller; > + #gpio-cells = <2>; > + > + interrupt-controller; > + #interrupt-cells = <2>; > + }; > + > + speedy0_pin: speedy0-pin { > + samsung,pins = "gpq0-0"; > + samsung,pin-function = <EXYNOS_PIN_FUNC_2>; > + samsung,pin-pud = <EXYNOS_PIN_PULL_UP>; > + }; > + > + speedy1_pin: speedy1-pin { > + samsung,pins = "gpa0-3"; > + samsung,pin-function = <EXYNOS_PIN_FUNC_2>; > + samsung,pin-pud = <EXYNOS_PIN_PULL_UP>; > + }; > +}; > + > +&pinctrl_aud { > + gpb0: gpb0 { > + gpio-controller; > + #gpio-cells = <2>; > + > + interrupt-controller; > + #interrupt-cells = <2>; > + }; > + > + gpb1: gpb1 { > + gpio-controller; > + #gpio-cells = <2>; > + > + interrupt-controller; > + #interrupt-cells = <2>; > + }; > + > + gpb2: gpb2 { > + gpio-controller; > + #gpio-cells = <2>; > + > + interrupt-controller; > + #interrupt-cells = <2>; > + }; > + > + gpb3: gpb3 { > + gpio-controller; > + #gpio-cells = <2>; > + > + interrupt-controller; > + #interrupt-cells = <2>; > + }; > + > + aud_codec_mclk_pin: aud-codec-mclk-pin { > + samsung,pins = "gpb0-4"; > + samsung,pin-function = <EXYNOS_PIN_FUNC_2>; > + samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>; > + }; > + > + aud_codec_mclk_idle_pin: aud-codec-mclk-idle-pin { > + samsung,pins = "gpb0-4"; > + samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>; > + samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>; > + }; > + > + aud_i2s0_pins: aud-i2s0-pins { > + samsung,pins = "gpb0-0", "gpb0-1", "gpb0-2", "gpb0-3"; > + samsung,pin-function = <EXYNOS_PIN_FUNC_2>; > + samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>; > + }; > + > + aud_i2s0_idle_pins_pins: aud-i2s0-idle-pins-pins { Duplicates pins pins. Best regards, Krzysztof