Subject: [PATCHv3 2/2] ARM: dts: Add dts files for Exynos4415 SoC

From: [email-masked] (Kukjin Kim)
Date: Tue, 28 Oct 2014 19:50:46 +0900

Chanwoo Choi wrote:
Hi,

> This patch adds new exynos4415.dtsi to support Exynos4415 SoC
> based on Cortex-A9 quad cores and includes following dt nodes:
> 
> - GIC interrupt controller (GIC-400)
> - Pinctrl to control three GPIO parts
> - CMU (Clock Management Unit) for CMU/CMU_DMC/AUDSS
> - CPU information (Cortex-A9 quad cores)
> - UART to support serial port
> - MCT (Multi Core Timer)
> - ADC (Analog Digital Converter)
> - RTC (Real Time Clock)
> - I2C/SPI busses
> - Power domains (CAM, TV, MFC, G3D, LCD0, ISP0/1)
> - PMU (Performance Monitoring Unit)
> - MSHC (Mobile Storage Host Controller)
> - EHCI (Enhanced Host Controller Interface)
> - OHIC (Open Host Controller Interface)
> - USB 2.0 device with hsotg
> - PWM (Pluse Width Modulation) Timer
> - AMBA bus for PDMA0/1
> - SYSRAM node for memory mapping
> - SYSREG node for memory mapping
> - PMU (Power Management Unit) node for memory mapping
> 
> Cc: Kukjin Kim <[email-masked]>
> Cc: Ben Dooks <[email-masked]>
> Cc: Russell King <[email-masked]>
> Cc: Mark Rutland <[email-masked]>
> Cc: Olof Johansson <[email-masked]>
> Cc: Arnd Bergmann <[email-masked]>
> Signed-off-by: Chanwoo Choi <[email-masked]>
> Signed-off-by: Seung-Woo Kim <[email-masked]>
> [m.szyprowski: Add OHCI node and correct EHCI node]
> Signed-off-by: Marek Szyprowski <[email-masked]>
> [yj44.cho: Add mipi-phy node]
> Signed-off-by: YoungJun Cho <[email-masked]>
> [jaewon02: Add EHCI and SPI_2 node]
> Signed-off-by: Jaewon Kim <[email-masked]>
> [ideal.song: Add I2S0 node for audio interface]
> Signed-off-by: Inha Song <[email-masked]>
> [tomasz.figa: Add L2 cache node]
> Signed-off-by: Tomasz Figa <[email-masked]>
> Acked-by: Kyungmin Park <Kyungmin [email-masked]>
> ---
>  arch/arm/boot/dts/exynos4415-pinctrl.dtsi | 613 +++++++++++++++++++++++++++++
>  arch/arm/boot/dts/exynos4415.dtsi         | 627 ++++++++++++++++++++++++++++++
>  2 files changed, 1240 insertions(+)
>  create mode 100644 arch/arm/boot/dts/exynos4415-pinctrl.dtsi
>  create mode 100644 arch/arm/boot/dts/exynos4415.dtsi

[...]

> +
> +	mp00: mp00 {
> +		gpio-controller;
> +		#gpio-cells = <2>;
> +	};

After talking about above gpio ports in intranet, I thought again. And I'm still
thinking just to remove them would be better because it will not be used. Let's
remove useless mp related gpio ports (nodes) here.

> +
> +	mp01: mp01 {
> +		gpio-controller;
> +		#gpio-cells = <2>;
> +	};
> +
> +	mp02: mp02 {
> +		gpio-controller;
> +		#gpio-cells = <2>;
> +	};
> +
> +	mp03: mp03 {
> +		gpio-controller;
> +		#gpio-cells = <2>;
> +	};
> +
> +	mp04: mp04 {
> +		gpio-controller;
> +		#gpio-cells = <2>;
> +	};
> +
> +	mp05: mp05 {
> +		gpio-controller;
> +		#gpio-cells = <2>;
> +	};
> +
> +	mp06: mp06 {
> +		gpio-controller;
> +		#gpio-cells = <2>;
> +	};

Same as above.

[...]

> +	etc: etc {
> +		gpio-controller;
> +		#gpio-cells = <2>;
> +	};

Same, above 'etc' port will not be used I think.

> +};
> diff --git a/arch/arm/boot/dts/exynos4415.dtsi b/arch/arm/boot/dts/exynos4415.dtsi
> new file mode 100644
> index 0000000..078b1b8
> --- /dev/null
> +++ b/arch/arm/boot/dts/exynos4415.dtsi
> @@ -0,0 +1,627 @@
> +/*
> + * Samsung's Exynos4415 SoC device tree source
> + *
> + * Copyright (c) 2014 Samsung Electronics Co., Ltd.
> + *
> + * Samsung's Exynos4415 SoC device nodes are listed in this file. Exynos4415
> + * based board files can include this file and provide values for board specfic
> + * bindings.
> + *
> + * Note: This file does not include device nodes for all the controllers in
> + * Exynos4415 SoC. As device tree coverage for Exynos4415 increases, additional
> + * nodes can be added to this file.
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 as
> + * published by the Free Software Foundation.
> + */
> +
> +#include "skeleton.dtsi"
> +#include <dt-bindings/clock/exynos4415.h>
> +#include <dt-bindings/clock/exynos-audss-clk.h>
> +
> +/ {
> +	compatible = "samsung,exynos4415";
> +	interrupt-parent = <&gic>;
> +
> +	aliases {
> +		pinctrl0 = &pinctrl_0;
> +		pinctrl1 = &pinctrl_1;
> +		pinctrl2 = &pinctrl_2;
> +		mshc0 = &mshc_0;
> +		mshc1 = &mshc_1;
> +		mshc2 = &mshc_2;
> +		spi0 = &spi_0;
> +		spi1 = &spi_1;
> +		spi2 = &spi_2;
> +		i2c0 = &i2c_0;
> +		i2c1 = &i2c_1;
> +		i2c2 = &i2c_2;
> +		i2c3 = &i2c_3;
> +		i2c4 = &i2c_4;
> +		i2c5 = &i2c_5;
> +		i2c6 = &i2c_6;
> +		i2c7 = &i2c_7;
> +	};
> +
> +	cpus {
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +
> +		cpu0: cpu at 0 {
> +			device_type = "cpu";
> +			compatible = "arm,cortex-a9";
> +			reg = <0xa00>;

This should be same with above value of 'cpu at 0', 0.

You need to use one of following:

	cpu0: cpu at a00 {
Or
	reg = <0x0>;

> +			clock-frequency = <1600000000>;
> +		};
> +
> +		cpu1: cpu at 1 {
> +			device_type = "cpu";
> +			compatible = "arm,cortex-a9";
> +			reg = <0xa01>;

Same as above.

> +			clock-frequency = <1600000000>;
> +		};
> +
> +		cpu2: cpu at 2 {
> +			device_type = "cpu";
> +			compatible = "arm,cortex-a9";
> +			reg = <0xa02>;

Same.

> +			clock-frequency = <1600000000>;
> +		};
> +
> +		cpu3: cpu at 3 {
> +			device_type = "cpu";
> +			compatible = "arm,cortex-a9";
> +			reg = <0xa03>;

Same.

> +			clock-frequency = <1600000000>;
> +		};
> +	};
> +
> +	soc: soc {
> +		compatible = "simple-bus";
> +		#address-cells = <1>;
> +		#size-cells = <1>;
> +		ranges;
> +
> +		fixed-rate-clocks {

Maybe 'fixed-rate-clocks' depends on board not SoC so need to move to board dt
file?

> +			#address-cells = <1>;
> +			#size-cells = <0>;
> +
> +			xusbxti: clock at 0 {
> +				compatible = "fixed-clock";
> +				#address-cells = <1>;
> +				#size-cells = <0>;
> +				reg = <0>;
> +				clock-frequency = <0>;
> +				#clock-cells = <0>;
> +				clock-output-names = "xusbxti";
> +			};
> +
> +			xxti: clock at 1 {
> +				compatible = "fixed-clock";
> +				reg = <1>;
> +				clock-frequency = <0>;
> +				#clock-cells = <0>;
> +				clock-output-names = "xxti";
> +			};
> +		};

[...]