Re: [PATCH 2/3] arm64: dts: exynos: add initial support for exynosautov9 SoC

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 07/10/2021 14:08, 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 contol them so far.

Thanks for the patch.

s/contol/control/

> 
> [1]: https://www.samsung.com/semiconductor/minisite/exynos/products/automotiveprocessor/exynos-auto-v9/>
> Signed-off-by: Chanho Park <chanho61.park@xxxxxxxxxxx>
> ---
>  .../boot/dts/exynos/exynosautov9-pinctrl.dtsi | 1206 +++++++++++++++++
>  arch/arm64/boot/dts/exynos/exynosautov9.dtsi  |  290 ++++
>  2 files changed, 1496 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/arch/arm64/boot/dts/exynos/exynosautov9-pinctrl.dtsi b/arch/arm64/boot/dts/exynos/exynosautov9-pinctrl.dtsi
> new file mode 100644
> index 000000000000..d8c5210ddba4
> --- /dev/null
> +++ b/arch/arm64/boot/dts/exynos/exynosautov9-pinctrl.dtsi
> @@ -0,0 +1,1206 @@
> +// 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: dp0-hpd {

Suffix all node names with pin configuration with "-pins", just like Rob
suggested for Exynos850.
https://lore.kernel.org/linux-samsung-soc/YRwDETpe019RFU%2Fq@xxxxxxxxxxxxxxxxxx/

> +		samsung,pins = "gpa1-0";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +	};
> +
> +	dp1_hpd: dp10hpd {

Typo - dp1-hpd

> +		samsung,pins = "gpa1-1";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +	};
> +
> +	gpq0: gpq0 {
> +		gpio-controller;
> +		#gpio-cells = <2>;
> +
> +		interrupt-controller;
> +		#interrupt-cells = <2>;
> +	};
> +
> +	speedy0_bus: speedy0-bus {
> +		samsung,pins = "gpq0-0";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
> +	};
> +
> +	speedy1_bus: speedy1-bus {
> +		samsung,pins = "gpa0-3";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
> +	};
> +
> +	pmic_m_irq: pmic-m-irq {

This does not look like typical pin for SoC. Should be in board DTS.

> +		samsung,pins = "gpa0-1";
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
> +		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV4>;
> +	};
> +
> +	pmic_s_irq: pmic-s-irq {
> +		samsung,pins = "gpa0-7";
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
> +		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV4>;
> +	};
> +};
> +
> +&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: aud-codec-mclk {
> +		samsung,pins = "gpb0-4";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
> +	};
> +
> +	aud_codec_mclk_idle: aud-codec-mclk-idle {
> +		samsung,pins = "gpb0-4";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
> +	};
> +
> +	aud_i2s0_bus: aud-i2s0-bus {
> +		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: aud-i2s0-idle {
> +		samsung,pins = "gpb0-0", "gpb0-1", "gpb0-2", "gpb0-3";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
> +	};
> +
> +	aud_i2s1_bus: aud-i2s1-bus {
> +		samsung,pins = "gpb1-0", "gpb1-1", "gpb1-2", "gpb1-3";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
> +	};
> +
> +	aud_i2s1_idle: aud-i2s1-idle {
> +		samsung,pins = "gpb1-0", "gpb1-1", "gpb1-2", "gpb1-3";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
> +	};
> +
> +	aud_i2s2_bus: aud-i2s2-bus {
> +		samsung,pins = "gpb1-4", "gpb1-5", "gpb1-6", "gpb1-7";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
> +	};
> +
> +	aud_i2s2_idle: aud-i2s2-idle {
> +		samsung,pins = "gpb1-4", "gpb1-5", "gpb1-6", "gpb1-7";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
> +	};
> +
> +	aud_i2s3_bus: aud-i2s3-bus {
> +		samsung,pins = "gpb2-0", "gpb2-1", "gpb2-2", "gpb2-3";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
> +	};
> +
> +	aud_i2s3_idle: aud-i2s3-idle {
> +		samsung,pins = "gpb2-0", "gpb2-1", "gpb2-2", "gpb2-3";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
> +	};
> +
> +	aud_i2s4_bus: aud-i2s4-bus {
> +		samsung,pins = "gpb2-4", "gpb2-5", "gpb2-6", "gpb2-7";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
> +	};
> +
> +	aud_i2s4_idle: aud-i2s4-idle {
> +		samsung,pins = "gpb2-4", "gpb2-5", "gpb2-6", "gpb2-7";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
> +	};
> +
> +	aud_i2s5_bus: aud-i2s5-bus {
> +		samsung,pins = "gpb3-0", "gpb3-1", "gpb3-2", "gpb3-3";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
> +	};
> +
> +	aud_i2s5_idle: aaud-i2s5-idle {
> +		samsung,pins = "gpb3-0", "gpb3-1", "gpb3-2", "gpb3-3";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
> +	};
> +
> +	aud_i2s6_bus: aud-i2s6-bus {
> +		samsung,pins = "gpb3-4", "gpb3-5", "gpb3-6", "gpb3-7";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
> +	};
> +
> +	aud_i2s6_idle: aaud-i2s6-idle {
> +		samsung,pins = "gpb3-4", "gpb3-5", "gpb3-6", "gpb3-7";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
> +	};
> +};
> +
> +&pinctrl_fsys0 {
> +	gpf0: gpf0 {
> +		gpio-controller;
> +		#gpio-cells = <2>;
> +
> +		interrupt-controller;
> +		#interrupt-cells = <2>;
> +	};
> +
> +	gpf1: gpf1 {
> +		gpio-controller;
> +		#gpio-cells = <2>;
> +
> +		interrupt-controller;
> +		#interrupt-cells = <2>;
> +	};
> +
> +	pcie_clkreq0: pcie_clkreq0 {

Hyphens (-) for node names. Pluse prefix -pins.

> +		samsung,pins = "gpf0-0";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
> +		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV4>;
> +		samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
> +		samsung,pin-pud-pdn = <EXYNOS_PIN_PULL_UP>;
> +	};
> +
> +	pcie_perst0_out: pcie_perst0_out {
> +		samsung,pins = "gpf0-1";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
> +		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV4>;
> +		samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
> +	};
> +
> +	pcie_perst0_in: pcie_perst0_in {
> +		samsung,pins = "gpf0-1";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
> +		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV4>;
> +		samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
> +	};
> +
> +	pcie_clkreq1: pcie_clkreq1 {
> +		samsung,pins = "gpf0-2";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
> +		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV4>;
> +		samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
> +		samsung,pin-pud-pdn = <EXYNOS_PIN_PULL_UP>;
> +	};
> +
> +	pcie_perst1_out: pcie_perst1_out {
> +		samsung,pins = "gpf0-3";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
> +		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV4>;
> +		samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
> +	};
> +
> +	pcie_perst1_in: pcie_perst1_in {
> +		samsung,pins = "gpf0-3";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
> +		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV4>;
> +		samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
> +	};
> +
> +	pcie_clkreq2: pcie_clkreq2 {
> +		samsung,pins = "gpf0-4";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
> +		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV4>;
> +		samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
> +		samsung,pin-pud-pdn = <EXYNOS_PIN_PULL_UP>;
> +	};
> +
> +	pcie_perst2_out: pcie_perst2_out {
> +		samsung,pins = "gpf0-5";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
> +		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV4>;
> +		samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
> +	};
> +
> +	pcie_perst2_in: pcie_perst2_in {
> +		samsung,pins = "gpf0-5";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
> +		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV4>;
> +		samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
> +	};
> +
> +	pcie_clkreq3: pcie_clkreq3 {
> +		samsung,pins = "gpf1-0";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
> +		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV4>;
> +		samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
> +		samsung,pin-pud-pdn = <EXYNOS_PIN_PULL_UP>;
> +	};
> +
> +	pcie_perst3_out: pcie_perst3_out {
> +		samsung,pins = "gpf1-1";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
> +		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV4>;
> +		samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
> +	};
> +
> +	pcie_perst3_in: pcie_perst3_in {
> +		samsung,pins = "gpf1-1";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
> +		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV4>;
> +		samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
> +	};
> +
> +	pcie_clkreq4: pcie_clkreq4 {
> +		samsung,pins = "gpf1-2";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
> +		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV4>;
> +		samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
> +		samsung,pin-pud-pdn = <EXYNOS_PIN_PULL_UP>;
> +	};
> +
> +	pcie_perst4_out: pcie_perst4_out {
> +		samsung,pins = "gpf1-3";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
> +		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV4>;
> +		samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
> +	};
> +
> +	pcie_perst4_in: pcie_perst4_in {
> +		samsung,pins = "gpf1-1";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
> +		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV4>;
> +		samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
> +	};
> +
> +	pcie_clkreq5: pcie_clkreq5 {
> +		samsung,pins = "gpf1-4";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
> +		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV4>;
> +		samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
> +		samsung,pin-pud-pdn = <EXYNOS_PIN_PULL_UP>;
> +	};
> +
> +	pcie_perst5_out: pcie_perst5_out {
> +		samsung,pins = "gpf1-5";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
> +		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV4>;
> +		samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
> +	};
> +
> +	pcie_perst5_in: pcie_perst5_in {
> +		samsung,pins = "gpf1-5";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
> +		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV4>;
> +		samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
> +	};
> +};
> +
> +&pinctrl_fsys1 {
> +	gpf8: gpf8 {
> +		gpio-controller;
> +		#gpio-cells = <2>;
> +
> +		interrupt-controller;
> +		#interrupt-cells = <2>;
> +	};
> +
> +	sd2_clk: sd2-clk {
> +		samsung,pins = "gpf8-0";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +		samsung,pin-drv = <2>;	/* 2x drive strength */
> +	};
> +
> +	sd2_cmd: sd2-cmd {
> +		samsung,pins = "gpf8-1";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
> +		samsung,pin-drv = <2>;	/* 2x drive strength */
> +	};
> +
> +	sd2_bus1: sd2-bus-width1 {
> +		samsung,pins = "gpf8-2";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
> +		samsung,pin-drv = <2>;	/* 2x drive strength */
> +	};
> +
> +	sd2_bus4: sd2-bus-width4 {
> +		samsung,pins = "gpf8-3", "gpf8-4", "gpf8-5";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
> +		samsung,pin-drv = <2>;	/* 2x drive strength */
> +	};
> +};
> +
> +&pinctrl_fsys2 {
> +	gpf2: gpf2 {
> +		gpio-controller;
> +		#gpio-cells = <2>;
> +
> +		interrupt-controller;
> +		#interrupt-cells = <2>;
> +	};
> +
> +	gpf3: gpf3 {
> +		gpio-controller;
> +		#gpio-cells = <2>;
> +
> +		interrupt-controller;
> +		#interrupt-cells = <2>;
> +	};
> +
> +	gpf4: gpf4 {
> +		gpio-controller;
> +		#gpio-cells = <2>;
> +
> +		interrupt-controller;
> +		#interrupt-cells = <2>;
> +	};
> +
> +	gpf5: gpf5 {
> +		gpio-controller;
> +		#gpio-cells = <2>;
> +
> +		interrupt-controller;
> +		#interrupt-cells = <2>;
> +	};
> +
> +	gpf6: gpf6 {
> +		gpio-controller;
> +		#gpio-cells = <2>;
> +
> +		interrupt-controller;
> +		#interrupt-cells = <2>;
> +	};
> +
> +	ufs_rst_n: ufs-rst-n {
> +		samsung,pins = "gpf2-1";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +		samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
> +	};
> +
> +	ufs_refclk_out: ufs-refclk-out {
> +		samsung,pins = "gpf2-0";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +		samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
> +	};
> +
> +	ufs_rst_n_1: ufs-rst-n-1 {
> +		samsung,pins = "gpf2-3";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +		samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
> +	};
> +
> +	ufs_refclk_out_1: ufs-refclk-out-1 {
> +		samsung,pins = "gpf2-2";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +		samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
> +	};
> +
> +	eth0_mdc_mdio: eth0_mdc_mdio {
> +		samsung,pins = "gpf4-5", "gpf4-6";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +	};
> +
> +	eth0_rgmii: eth0_rgmii {
> +		samsung,pins = "gpf3-1", "gpf3-2", "gpf3-3", "gpf3-4",
> +			       "gpf3-5", "gpf3-6", "gpf3-7", "gpf4-0",
> +			       "gpf4-1", "gpf4-2", "gpf4-3", "gpf4-4";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +	};
> +
> +	eth0_pps_out: eth0_pps_out {
> +		samsung,pins = "gpf3-0";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +	};
> +
> +	eth1_mdc_mdio: eth1_mdc_mdio {
> +		samsung,pins = "gpf6-5", "gpf6-6";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +	};
> +
> +	eth1_rgmii: eth1_rgmii {
> +		samsung,pins = "gpf5-1", "gpf5-2", "gpf5-3", "gpf5-4",
> +			       "gpf5-5", "gpf5-6", "gpf5-7", "gpf6-0",
> +			       "gpf6-1", "gpf6-2", "gpf6-3", "gpf6-4";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +	};
> +
> +	eth1_pps_out: eth1_pps_out {
> +		samsung,pins = "gpf5-0";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +	};
> +};
> +
> +&pinctrl_peric0 {
> +	gpp0: gpp0 {
> +		gpio-controller;
> +		#gpio-cells = <2>;
> +
> +		interrupt-controller;
> +		#interrupt-cells = <2>;
> +	};
> +
> +	gpp1: gpp1 {
> +		gpio-controller;
> +		#gpio-cells = <2>;
> +
> +		interrupt-controller;
> +		#interrupt-cells = <2>;
> +	};
> +
> +	gpp2: gpp2 {
> +		gpio-controller;
> +		#gpio-cells = <2>;
> +
> +		interrupt-controller;
> +		#interrupt-cells = <2>;
> +	};
> +
> +	gpg0: gpg0 {
> +		gpio-controller;
> +		#gpio-cells = <2>;
> +
> +		interrupt-controller;
> +		#interrupt-cells = <2>;
> +	};
> +
> +	pwm_tout0: pwm-tout0 {
> +		samsung,pins = "gpg0-0";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_4>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +	};
> +
> +	pwm_tout1: pwm-tout1 {
> +		samsung,pins = "gpg0-1";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_4>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +	};
> +
> +	pwm_tout2: pwm-tout2 {
> +		samsung,pins = "gpg0-2";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_4>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +	};
> +
> +	pwm_tout3: pwm-tout3 {
> +		samsung,pins = "gpg0-3";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_4>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +	};
> +
> +	/* PERIC0 USI00  */
> +	hsi2c0_bus: hsi2c0-bus {
> +		samsung,pins = "gpp0-0", "gpp0-1";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +	};
> +
> +	/* PERIC0 USI00_I2C */
> +	hsi2c1_bus: hsi2c1-bus {
> +		samsung,pins = "gpp0-2", "gpp0-3";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +	};
> +
> +	/* PERIC0 USI01 */
> +	hsi2c2_bus: hsi2c2-bus {
> +		samsung,pins = "gpp0-4", "gpp0-5";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +	};
> +
> +	/* PERIC0 USI01_I2C */
> +	hsi2c3_bus: hsi2c3-bus {
> +		samsung,pins = "gpp0-6", "gpp0-7";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +	};
> +
> +	/* PERIC0 USI02 */
> +	hsi2c4_bus: hsi2c4-bus {
> +		samsung,pins = "gpp1-0", "gpp1-1";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +	};
> +
> +	/* PERIC0 USI02_I2C */
> +	hsi2c5_bus: hsi2c5-bus {
> +		samsung,pins = "gpp1-2", "gpp1-3";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +	};
> +
> +	/* PERIC0 USI03 */
> +	hsi2c6_bus: hsi2c6-bus {
> +		samsung,pins = "gpp1-4", "gpp1-5";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +	};
> +
> +	/* PERIC0 USI03_I2C */
> +	hsi2c7_bus: hsi2c7-bus {
> +		samsung,pins = "gpp1-6", "gpp1-7";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +	};
> +
> +	/* PERIC0 USI04 */
> +	hsi2c8_bus: hsi2c8-bus {
> +		samsung,pins = "gpp2-0", "gpp2-1";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +	};
> +
> +	/* PERIC0 USI04_I2C */
> +	hsi2c9_bus: hsi2c9-bus {
> +		samsung,pins = "gpp2-2", "gpp2-3";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +	};
> +
> +	/* PERIC0 USI05 */
> +	hsi2c10_bus: hsi2c10-bus {
> +		samsung,pins = "gpp2-4", "gpp2-5";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +	};
> +
> +	/* PERIC0 USI05_I2C */
> +	hsi2c11_bus: hsi2c11-bus {
> +		samsung,pins = "gpp2-6", "gpp2-7";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +	};
> +
> +	/* SPI USI_PERIC0_USI00_SPI */
> +	spi0_bus: spi0-bus {
> +		samsung,pins = "gpp0-2", "gpp0-1", "gpp0-0";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +	};
> +
> +	spi0_cs: spi0-cs {
> +		samsung,pins = "gpp0-3";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +	};
> +
> +	spi0_cs_func: spi0-cs-func {
> +		samsung,pins = "gpp0-3";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +	};
> +
> +	/* PERIC0 USI01_SPI */
> +	spi1_bus: spi1-bus {
> +		samsung,pins = "gpp0-6", "gpp0-5", "gpp0-4";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +	};
> +
> +	spi1_cs: spi1-cs {
> +		samsung,pins = "gpp0-7";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +	};
> +
> +	spi1_cs_func: spi1-cs-func {
> +		samsung,pins = "gpp0-7";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +	};
> +
> +	/* PERIC0 USI02_SPI */
> +	spi2_bus: spi2-bus {
> +		samsung,pins = "gpp1-2", "gpp1-1", "gpp1-0";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +	};
> +
> +	spi2_cs: spi2-cs {
> +		samsung,pins = "gpp1-3";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +	};
> +
> +	spi2_cs_func: spi2-cs-func {
> +		samsung,pins = "gpp1-3";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +	};
> +
> +	/* PERIC0 USI03_SPI */
> +	spi3_bus: spi3-bus {
> +		samsung,pins = "gpp1-6", "gpp1-5", "gpp1-4";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +	};
> +
> +	spi3_cs: spi3-cs {
> +		samsung,pins = "gpp1-7";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +	};
> +
> +	spi3_cs_func: spi3-cs-func {
> +		samsung,pins = "gpp1-7";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +	};
> +
> +	/* PERIC0 USI04_SPI */
> +	spi4_bus: spi4-bus {
> +		samsung,pins = "gpp2-2", "gpp2-1", "gpp2-0";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +	};
> +
> +	spi4_cs: spi4-cs {
> +		samsung,pins = "gpp2-3";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +	};
> +
> +	spi4_cs_func: spi4-cs-func {
> +		samsung,pins = "gpp2-3";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +	};
> +
> +	/* PERIC0 USI05_SPI */
> +	spi5_bus: spi5-bus {
> +		samsung,pins = "gpp2-6", "gpp2-5", "gpp2-4";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +	};
> +
> +	spi5_cs: spi5-cs {
> +		samsung,pins = "gpp2-7";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +	};
> +
> +	spi5_cs_func: spi5-cs-func {
> +		samsung,pins = "gpp2-7";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +	};
> +
> +	/* USI_PERIC0_USI00_UART */
> +	uart0_bus_single: uart0-bus {
> +		samsung,pins = "gpp0-0", "gpp0-1", "gpp0-2", "gpp0-3";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +	};
> +
> +	uart0_bus_dual: uart0-bus-dual {
> +		samsung,pins = "gpp0-0", "gpp0-1";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +	};
> +
> +	/* USI_PERIC0_USI01_UART */
> +	uart1_bus_single: uart1-bus {
> +		samsung,pins = "gpp0-4", "gpp0-5", "gpp0-6", "gpp0-7";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +	};
> +
> +	uart1_bus_dual: uart1-bus-dual {
> +		samsung,pins = "gpp0-4", "gpp0-5";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +	};
> +
> +	/* USI_PERIC0_USI02_UART */
> +	uart2_bus_single: uart2-bus {
> +		samsung,pins = "gpp1-0", "gpp1-1", "gpp1-2", "gpp1-3";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +	};
> +
> +	uart2_bus_dual: uart2-bus-dual {
> +		samsung,pins = "gpp1-0", "gpp1-1";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +	};
> +
> +	/* USI_PERIC0_USI03_UART */
> +	uart3_bus_single: uart3-bus {
> +		samsung,pins = "gpp1-4", "gpp1-5", "gpp1-6", "gpp1-7";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +	};
> +
> +	uart3_bus_dual: uart3-bus-dual {
> +		samsung,pins = "gpp1-4", "gpp1-5";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +	};
> +
> +	/* USI_PERIC0_USI04_UART */
> +	uart4_bus_single: uart4-bus {
> +		samsung,pins = "gpp2-0", "gpp2-1", "gpp2-2", "gpp2-3";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +	};
> +
> +	uart4_bus_dual: uart4-bus-dual {
> +		samsung,pins = "gpp2-0", "gpp2-1";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +	};
> +
> +	/* USI_PERIC0_USI05_UART */
> +	uart5_bus_single: uart5-bus {
> +		samsung,pins = "gpp2-4", "gpp2-5", "gpp2-6", "gpp2-7";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +	};
> +
> +	uart5_bus_dual: uart5-bus-dual {
> +		samsung,pins = "gpp2-4", "gpp2-5";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +	};
> +};
> +
> +&pinctrl_peric1 {
> +	gpp3: gpp3 {
> +		gpio-controller;
> +		#gpio-cells = <2>;
> +
> +		interrupt-controller;
> +		#interrupt-cells = <2>;
> +	};
> +
> +	gpp4: gpp4 {
> +		gpio-controller;
> +		#gpio-cells = <2>;
> +
> +		interrupt-controller;
> +		#interrupt-cells = <2>;
> +	};
> +
> +	gpp5: gpp5 {
> +		gpio-controller;
> +		#gpio-cells = <2>;
> +
> +		interrupt-controller;
> +		#interrupt-cells = <2>;
> +	};
> +
> +	gpg1: gpg1 {
> +		gpio-controller;
> +		#gpio-cells = <2>;
> +
> +		interrupt-controller;
> +		#interrupt-cells = <2>;
> +	};
> +
> +	gpg2: gpg2 {
> +		gpio-controller;
> +		#gpio-cells = <2>;
> +
> +		interrupt-controller;
> +		#interrupt-cells = <2>;
> +	};
> +
> +	gpg3: gpg3 {
> +		gpio-controller;
> +		#gpio-cells = <2>;
> +
> +		interrupt-controller;
> +		#interrupt-cells = <2>;
> +	};
> +
> +	/* PERIC1 USI06 */
> +	hsi2c12_bus: hsi2c12-bus {
> +		samsung,pins = "gpp3-0", "gpp3-1";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
> +	};
> +
> +	/* PERIC1 USI06_I2C */
> +	hsi2c13_bus: hsi2c13-bus {
> +		samsung,pins = "gpp3-2", "gpp3-3";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
> +	};
> +
> +	/* PERIC1 USI07 */
> +	hsi2c14_bus: hsi2c14-bus {
> +		samsung,pins = "gpp3-4", "gpp3-5";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
> +	};
> +
> +	/* PERIC1 USI07_I2C */
> +	hsi2c15_bus: hsi2c15-bus {
> +		samsung,pins = "gpp3-6", "gpp3-7";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
> +	};
> +
> +	/* PERIC1 USI08 */
> +	hsi2c16_bus: hsi2c16-bus {
> +		samsung,pins = "gpp4-0", "gpp4-1";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
> +	};
> +
> +	/* PERIC1 USI08_I2C */
> +	hsi2c17_bus: hsi2c17-bus {
> +		samsung,pins = "gpp4-2", "gpp4-3";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
> +	};
> +
> +	/* PERIC1 USI09 */
> +	hsi2c18_bus: hsi2c18-bus {
> +		samsung,pins = "gpp4-4", "gpp4-5";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
> +	};
> +
> +	/* PERIC1 USI09_I2C */
> +	hsi2c19_bus: hsi2c19-bus {
> +		samsung,pins = "gpp4-6", "gpp4-7";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
> +	};
> +
> +	/* PERIC1 USI10 */
> +	hsi2c20_bus: hsi2c20-bus {
> +		samsung,pins = "gpp5-0", "gpp5-1";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
> +	};
> +
> +	/* PERIC1 USI10_I2C */
> +	hsi2c21_bus: hsi2c21-bus {
> +		samsung,pins = "gpp5-2", "gpp5-3";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
> +	};
> +
> +	/* PERIC1 USI11 */
> +	hsi2c22_bus: hsi2c22-bus {
> +		samsung,pins = "gpp5-4", "gpp5-5";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
> +	};
> +
> +	/* PERIC1 USI11_I2C */
> +	hsi2c23_bus: hsi2c23-bus {
> +		samsung,pins = "gpp5-6", "gpp5-7";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
> +	};
> +
> +	/* PERIC1 USI06_SPI */
> +	spi6_bus: spi6-bus {
> +		samsung,pins = "gpp3-2", "gpp3-1", "gpp3-0";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
> +	};
> +
> +	spi6_cs: spi6-cs {
> +		samsung,pins = "gpp3-3";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
> +	};
> +
> +	spi6_cs_func: spi6-cs-func {
> +		samsung,pins = "gpp3-3";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
> +	};
> +
> +	/* PERIC1 USI07_SPI */
> +	spi7_bus: spi7-bus {
> +		samsung,pins = "gpp3-6", "gpp3-5", "gpp3-4";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
> +	};
> +
> +	spi7_cs: spi7-cs {
> +		samsung,pins = "gpp3-7";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
> +	};
> +
> +	spi7_cs_func: spi7-cs-func {
> +		samsung,pins = "gpp3-7";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
> +	};
> +
> +	/* PERIC1 USI08_SPI */
> +	spi8_bus: spi8-bus {
> +		samsung,pins = "gpp4-2", "gpp4-1", "gpp4-0";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
> +	};
> +
> +	spi8_cs: spi8-cs {
> +		samsung,pins = "gpp4-3";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
> +	};
> +
> +	spi8_cs_func: spi8-cs-func {
> +		samsung,pins = "gpp4-3";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
> +	};
> +
> +	/* PERIC1 USI09_SPI */
> +	spi9_bus: spi9-bus {
> +		samsung,pins = "gpp4-6", "gpp4-5", "gpp4-4";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
> +	};
> +
> +	spi9_cs: spi9-cs {
> +		samsung,pins = "gpp4-7";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
> +	};
> +
> +	spi9_cs_func: spi9-cs-func {
> +		samsung,pins = "gpp4-7";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
> +	};
> +
> +	/* PERIC1 USI10_SPI */
> +	spi10_bus: spi10-bus {
> +		samsung,pins = "gpp5-2", "gpp5-1", "gpp5-0";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
> +	};
> +
> +	spi10_cs: spi10-cs {
> +		samsung,pins = "gpp5-3";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
> +	};
> +
> +	spi10_cs_func: spi10-cs-func {
> +		samsung,pins = "gpp5-3";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
> +	};
> +
> +	/* PERIC1 USI11_SPI */
> +	spi11_bus: spi11-bus {
> +		samsung,pins = "gpp3-6", "gpp3-5", "gpp3-4";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
> +	};
> +
> +	spi11_cs: spi11-cs {
> +		samsung,pins = "gpp3-7";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
> +	};
> +
> +	spi11_cs_func: spi11-cs-func {
> +		samsung,pins = "gpp3-7";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
> +	};
> +
> +	/* USI_PERIC1_USI06_UART */
> +	uart6_bus_single: uart6-bus {
> +		samsung,pins = "gpp3-3", "gpp3-2", "gpp3-1", "gpp3-0";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +	};
> +
> +	uart6_bus_dual: uart6-bus-dual {
> +		samsung,pins = "gpp3-0", "gpp3-1";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +	};
> +
> +	/* USI_PERIC1_USI07_UART */
> +	uart7_bus_single: uart7-bus {
> +		samsung,pins = "gpp3-7", "gpp3-6", "gpp3-5", "gpp3-4";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +	};
> +
> +	uart7_bus_dual: uart7-bus-dual {
> +		samsung,pins = "gpp3-4", "gpp3-5";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +	};
> +
> +	/* USI_PERIC1_USI08_UART */
> +	uart8_bus_single: uart8-bus {
> +		samsung,pins = "gpp4-3", "gpp4-2", "gpp4-1", "gpp4-0";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +	};
> +
> +	uart8_bus_dual: uart8-bus-dual {
> +		samsung,pins = "gpp4-0", "gpp4-1";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +	};
> +
> +	/* USI_PERIC1_USI09_UART */
> +	uart9_bus_single: uart9-bus {
> +		samsung,pins = "gpp4-7", "gpp4-6", "gpp4-5", "gpp4-4";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +	};
> +
> +	uart9_bus_dual: uart9-bus-dual {
> +		samsung,pins = "gpp4-4", "gpp4-5";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +	};
> +
> +	/* USI_PERIC1_USI10_UART */
> +	uart10_bus_single: uart10-bus {
> +		samsung,pins = "gpp5-3", "gpp5-2", "gpp5-1", "gpp5-0";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +	};
> +
> +	uart10_bus_dual: uart10-bus-dual {
> +		samsung,pins = "gpp5-0", "gpp5-1";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +	};
> +
> +	/* USI_PERIC1_USI11_UART */
> +	uart11_bus_single: uart11-bus {
> +		samsung,pins = "gpp5-7", "gpp5-6", "gpp5-5", "gpp5-4";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +	};
> +
> +	uart11_bus_dual: uart11-bus-dual {
> +		samsung,pins = "gpp5-4", "gpp5-5";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> +	};
> +
> +	pm_wrsti: pm-wrsti {
> +		samsung,pins = "gpg2-3";
> +		samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
> +	};
> +};
> diff --git a/arch/arm64/boot/dts/exynos/exynosautov9.dtsi b/arch/arm64/boot/dts/exynos/exynosautov9.dtsi
> new file mode 100644
> index 000000000000..a74fb7785bb3
> --- /dev/null
> +++ b/arch/arm64/boot/dts/exynos/exynosautov9.dtsi
> @@ -0,0 +1,290 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/*
> + * Samsung's ExynosAuto9 SoC device tree source
> + */
> +
> +#include <dt-bindings/gpio/gpio.h>
> +#include <dt-bindings/interrupt-controller/arm-gic.h>
> +
> +/ {
> +	compatible = "samsung,exynosautov9";
> +	#address-cells = <2>;
> +	#size-cells = <1>;
> +
> +	interrupt-parent = <&gic>;
> +
> +	aliases {
> +		pinctrl0 = &pinctrl_alive;
> +		pinctrl1 = &pinctrl_aud;
> +		pinctrl2 = &pinctrl_fsys0;
> +		pinctrl3 = &pinctrl_fsys1;
> +		pinctrl4 = &pinctrl_fsys2;
> +		pinctrl5 = &pinctrl_peric0;
> +		pinctrl6 = &pinctrl_peric1;
> +	};
> +
> +	arm-pmu {
> +		compatible = "arm,armv8-pmuv3";
> +		interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>,
> +			     <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>,
> +			     <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>,
> +			     <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>,
> +			     <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>,
> +			     <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>,
> +			     <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>,
> +			     <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>;
> +		interrupt-affinity = <&cpu0>, <&cpu1>, <&cpu2>, <&cpu3>,
> +				     <&cpu4>, <&cpu5>, <&cpu6>, <&cpu7>;
> +	};
> +
> +	cpus {
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +
> +		cpu-map {
> +			cluster0 {
> +				core0 {
> +					cpu = <&cpu0>;
> +				};
> +				core1 {
> +					cpu = <&cpu1>;
> +				};
> +				core2 {
> +					cpu = <&cpu2>;
> +				};
> +				core3 {
> +					cpu = <&cpu3>;
> +				};
> +			};
> +
> +			cluster1 {
> +				core0 {
> +					cpu = <&cpu4>;
> +				};
> +				core1 {
> +					cpu = <&cpu5>;
> +				};
> +				core2 {
> +					cpu = <&cpu6>;
> +				};
> +				core3 {
> +					cpu = <&cpu7>;
> +				};
> +			};
> +		};
> +
> +		cpu0: cpu@000000 {
> +			device_type = "cpu";
> +			compatible = "arm,armv8";

Compatible is not specific enough. It's valid only for SW models. You
must define here proper Cortex or some other type.

> +			reg = <0x0>;
> +			enable-method = "psci";
> +		};
> +
> +		cpu1: cpu@000100 {
> +			device_type = "cpu";
> +			compatible = "arm,armv8";
> +			reg = <0x100>;
> +			enable-method = "psci";
> +		};
> +
> +		cpu2: cpu@000200 {
> +			device_type = "cpu";
> +			compatible = "arm,armv8";
> +			reg = <0x200>;
> +			enable-method = "psci";
> +		};
> +
> +		cpu3: cpu@000300 {
> +			device_type = "cpu";
> +			compatible = "arm,armv8";
> +			reg = <0x300>;
> +			enable-method = "psci";
> +		};
> +
> +		cpu4: cpu@10000 {
> +			device_type = "cpu";
> +			compatible = "arm,armv8";
> +			reg = <0x10000>;
> +			enable-method = "psci";
> +		};
> +
> +		cpu5: cpu@10100 {
> +			device_type = "cpu";
> +			compatible = "arm,armv8";
> +			reg = <0x10100>;
> +			enable-method = "psci";
> +		};
> +
> +		cpu6: cpu@10200 {
> +			device_type = "cpu";
> +			compatible = "arm,armv8";
> +			reg = <0x10200>;
> +			enable-method = "psci";
> +		};
> +
> +		cpu7: cpu@10300 {
> +			device_type = "cpu";
> +			compatible = "arm,armv8";
> +			reg = <0x10300>;
> +			enable-method = "psci";
> +		};
> +	};
> +
> +	psci {
> +		compatible = "arm,psci-1.0";
> +		method = "smc";
> +		cpu_suspend = <0xC4000001>;
> +		cpu_off = <0x84000002>;
> +		cpu_on = <0xC4000003>;
> +	};
> +
> +	timer {
> +		compatible = "arm,armv8-timer";
> +		interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_LOW)>,
> +			     <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_LOW)>,
> +			     <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_LOW)>,
> +			     <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_LOW)>;
> +	};
> +
> +	soc: soc@0 {
> +		compatible = "simple-bus";
> +		#address-cells = <1>;
> +		#size-cells = <1>;
> +		ranges = <0x0 0x0 0x0 0x20000000>;
> +
> +		gic: interrupt-controller@11001000 {
> +			compatible = "arm,gic-400";
> +			#interrupt-cells = <3>;
> +			#address-cells = <0>;
> +			interrupt-controller;
> +			reg = <0x10101000 0x1000>,
> +			      <0x10102000 0x2000>,
> +			      <0x10104000 0x2000>,
> +			      <0x10106000 0x2000>;
> +			interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(8) |
> +						 IRQ_TYPE_LEVEL_HIGH)>;
> +		};
> +
> +		pinctrl_alive: pinctrl@10450000 {
> +			compatible = "samsung,exynosautov9-pinctrl";
> +			reg = <0x10450000 0x1000>;
> +
> +			wakeup-interrupt-controller {
> +				compatible = "samsung,exynos7-wakeup-eint";
> +			};
> +		};
> +
> +		pinctrl_aud: pinctrl@19C60000{

Some of the addresses (unit address and reg) have uppercase hex, some
lowercase. Please unify to lowercase.

> +			compatible = "samsung,exynosautov9-pinctrl";
> +			reg = <0x19C60000 0x1000>;
> +		};
> +
> +		pinctrl_fsys0: pinctrl@17740000 {
> +			compatible = "samsung,exynosautov9-pinctrl";
> +			reg = <0x17740000 0x1000>;
> +			interrupts = <GIC_SPI 163 IRQ_TYPE_LEVEL_HIGH>;
> +		};
> +
> +		pinctrl_fsys1: pinctrl@17060000 {
> +			compatible = "samsung,exynosautov9-pinctrl";
> +			reg = <0x17060000 0x1000>;
> +			interrupts = <GIC_SPI 188 IRQ_TYPE_LEVEL_HIGH>;
> +		};
> +
> +		pinctrl_fsys2: pinctrl@17C30000 {
> +			compatible = "samsung,exynosautov9-pinctrl";
> +			reg = <0x17C30000 0x1000>;
> +			interrupts = <GIC_SPI 217 IRQ_TYPE_LEVEL_HIGH>;
> +		};
> +
> +		pinctrl_peric0: pinctrl@10230000 {
> +			compatible = "samsung,exynosautov9-pinctrl";
> +			reg = <0x10230000 0x1000>;
> +			interrupts = <GIC_SPI 338 IRQ_TYPE_LEVEL_HIGH>;
> +		};
> +
> +		pinctrl_peric1: pinctrl@10830000 {
> +			compatible = "samsung,exynosautov9-pinctrl";
> +			reg = <0x10830000 0x1000>;
> +			interrupts = <GIC_SPI 356 IRQ_TYPE_LEVEL_HIGH>;
> +		};
> +
> +		pmu_system_controller: system-controller@10460000 {
> +			compatible = "syscon", "simple-mfd";

You need also SoC-specific compatible (plus document it). Extend
existing exynos-pmu, so you can get rid of simple-mfd.

> +			reg = <0x10460000 0x10000>;
> +		};
> +
> +		syscon_fsys2: syscon@17c20000 {
> +			compatible = "syscon";

This should not pass the schema. You need to use SoC-compatible (add new).

Please run dtbs_check and fix all errors.

> +			reg = <0x17c20000 0x1000>;
> +		};
> +
> +		fixed-rate-clocks {
> +			oscclk: oscclk {

This won't pass dtbs W=1, I think. Anyway, this is external clock so
please put it outside of soc@0 (same as Exynos5433), could be under the
fixed-rate-clocks node if you have more than one.

Generic node name, so just "clock".

> +				compatible = "fixed-clock";
> +				#clock-cells = <0>;
> +				clock-frequency = <26000000>;
> +			};
> +
> +			uart_clock: uart-clock {
> +				compatible = "fixed-clock";

These look like workarounds for missing clock driver. Please add a
comment to both of them that they are temporary workarounds.


> +				#clock-cells = <0>;
> +				clock-frequency = <133250000>;
> +				clock-output-names = "uart";
> +			};
> +
> +			ufs_core_clock: uart-core-clock {
> +				compatible = "fixed-clock";
> +				#clock-cells = <0>;
> +				clock-frequency = <166562500>;
> +			};
> +		};
> +
> +		/* USI: UART */
> +		serial_0: uart@103000000 {
> +			compatible = "samsung,exynos850-uart";
> +			reg = <0x10300000 0x100>;
> +			interrupts = <GIC_SPI 345 IRQ_TYPE_LEVEL_HIGH>;
> +			pinctrl-names = "default";
> +			pinctrl-0 = <&uart0_bus_dual>;
> +			clocks = <&uart_clock>, <&uart_clock>;
> +			clock-names = "uart", "clk_uart_baud0";
> +			status = "disabled";
> +		};
> +
> +		ufs_0_phy: ufs0-phy@17e04000 {
> +			compatible = "samsung,exynosautov9-ufs-phy";
> +			reg = <0x17e04000 0xc00>;
> +			reg-names = "phy-pma";
> +			samsung,pmu-syscon = <&pmu_system_controller>;
> +			#phy-cells = <0>;
> +			clocks = <&oscclk>;
> +			clock-names = "ref_clk";
> +			status = "disabled";
> +		};
> +
> +		ufs_0: ufs0@17e00000 {
> +			compatible ="samsung,exynosautov9-ufs";
> +
> +			reg = <0x17e00000 0x100>,  /* 0: HCI standard */
> +				<0x17e01100 0x410>,  /* 1: Vendor-specific */
> +				<0x17e80000 0x8000>,  /* 2: UNIPRO */
> +				<0x17dc0000 0x2200>;  /* 3: UFS protector */
> +			reg-names = "hci", "vs_hci", "unipro", "ufsp";
> +			interrupts = <GIC_SPI 227 IRQ_TYPE_LEVEL_HIGH>;
> +			clocks = <&ufs_core_clock>,
> +				<&ufs_core_clock>;
> +			clock-names = "core_clk", "sclk_unipro_main";
> +			freq-table-hz = <0 0>, <0 0>;
> +			pinctrl-names = "default";
> +			pinctrl-0 = <&ufs_rst_n &ufs_refclk_out>;
> +			phys = <&ufs_0_phy>;
> +			phy-names = "ufs-phy";
> +			samsung,sysreg = <&syscon_fsys2>;
> +			samsung,ufs-shareability-reg-offset = <0x710>;
> +			status = "disabled";
> +		};
> +	};
> +};
> +
> +#include "exynosautov9-pinctrl.dtsi"
> 


Best regards,
Krzysztof



[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]


  Powered by Linux