[PATCH 7/7] ARM: mach-shmobile: kzm9g: Reference DT implementation

Tetsuyuki Kobayashi koba at kmckk.co.jp
Mon Nov 26 03:34:59 EST 2012


Hello Simon-san,

(2012/11/26 9:16), Simon Horman wrote:
> Provide alternate board code for the kzm9g to demonstrate
> how DT may be used given the current state of driver
> device tree support. This is intended to act as a reference
> for mach-shmobile developers.
> 
> Some notes:
> 
> * Brings up the GIC interrupt handler using device tree
> * Brings up the following devices using device tree
>    - ST1232 (Touchscreen)
>    - MMCIF (MMC)
>    - SDHI (MMC)
> * Does not bring up the INTC interrupt controller at all,
>    thus external devices may not be used
> * Uses existing C code and not device tree to initialise the following,
>    which are needed for a working board:
>    - SCIF (Serial)
>    - CMT (Clock)
>    - PFC (GPIO)
> 
> To use this alternate board code instead of the normal board code,
> CONFIG_MACH_KZM9G_REFERENCE should be selected in the kernel config.
> And the sh73a0-kzm9g-reference.dtb flattened device tree blob should be used.
> 
> Signed-off-by: Simon Horman <horms at verge.net.au>
> ---
>   arch/arm/boot/dts/Makefile                     |    3 +-
>   arch/arm/boot/dts/sh73a0-kzm9g-reference.dts   |  153 ++++++++++++++++++++++++
>   arch/arm/mach-shmobile/Kconfig                 |   10 ++
>   arch/arm/mach-shmobile/Makefile                |    8 +-
>   arch/arm/mach-shmobile/board-kzm9g-reference.c |  142 ++++++++++++++++++++++
>   5 files changed, 314 insertions(+), 2 deletions(-)
>   create mode 100644 arch/arm/boot/dts/sh73a0-kzm9g-reference.dts
>   create mode 100644 arch/arm/mach-shmobile/board-kzm9g-reference.c
> 
> diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
> index c1ce813..b6c4fa2 100644
> --- a/arch/arm/boot/dts/Makefile
> +++ b/arch/arm/boot/dts/Makefile
> @@ -75,7 +75,8 @@ dtb-$(CONFIG_ARCH_PRIMA2) += prima2-evb.dtb
>   dtb-$(CONFIG_ARCH_U8500) += snowball.dtb
>   dtb-$(CONFIG_ARCH_SHMOBILE) += emev2-kzm9d.dtb \
>   	r8a7740-armadillo800eva.dtb \
> -	sh73a0-kzm9g.dtb
> +	sh73a0-kzm9g.dtb \
> +	sh73a0-kzm9g-reference.dtb
>   dtb-$(CONFIG_ARCH_SPEAR13XX) += spear1310-evb.dtb \
>   	spear1340-evb.dtb
>   dtb-$(CONFIG_ARCH_SPEAR3XX)+= spear300-evb.dtb \
> diff --git a/arch/arm/boot/dts/sh73a0-kzm9g-reference.dts b/arch/arm/boot/dts/sh73a0-kzm9g-reference.dts
> new file mode 100644
> index 0000000..978892a
> --- /dev/null
> +++ b/arch/arm/boot/dts/sh73a0-kzm9g-reference.dts
> @@ -0,0 +1,153 @@
> +/*
> + * Device Tree Source for the KZM-A9-GT board
> + *
> + * Copyright (C) 2012 Horms Solutions Ltd.
> + *
> + * Based on sh73a0-kzm9g.dts
> + * Copyright (C) 2012 Renesas Solutions Corp.
> + *
> + * This file is licensed under the terms of the GNU General Public License
> + * version 2.  This program is licensed "as is" without any warranty of any
> + * kind, whether express or implied.
> + */
> +
> +/dts-v1/;
> +/include/ "skeleton.dtsi"
> +
> +/ {
> +	model = "KZM-A9-GT";
> +	compatible = "renesas,kzm9g-reference", "renesas,sh73a0";
> +
> +	memory {
> +		device_type = "memory";
> +		reg = <0x41000000 0x1e800000>;
> +	};
> +
> +	gic: interrupt-controller at f0001000 {
> +		compatible = "arm,cortex-a9-gic";
> +		#interrupt-cells = <3>;
> +		#address-cells = <1>;
> +		interrupt-controller;
> +		reg = <0xf0001000 0x1000>,
> +		      <0xf0000100 0x100>;
> +	};
> +
> +	i2c0: i2c at 0xe6820000 {
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +		compatible = "renesas,rmobile-iic";
> +		reg = <0xe6820000 0x425>;
> +		interrupt-parent = <&gic>;
> +		interrupts = <0 167 0x4
> +			      0 170 0x4>;
> +	};

I reported /dev/i2c-0 seems not working. I found the reason.
About i2c0 interrupt, it should be:

 		interrupts = <0 167 0x4
			      0 168 0x4
			      0 169 0x4
 			      0 170 0x4>;

The same as i2c1 - ic24. There are 4 interrupts each.

> +
> +	i2c1: i2c at 0xe6822000 {
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +		compatible = "renesas,rmobile-iic";
> +		reg = <0xe6822000 0x425>;
> +		interrupt-parent = <&gic>;
> +		interrupts = <0 51 0x4
> +			      0 44 0x4>;

		interrupts = <0 51 0x4
			      0 52 0x4
			      0 53 0x4
		              0 54 0x4>;

> +
> +		touchscreen at 55 {
> +			compatible = "sitronix,st1232";
> +			reg = <0x55>;
> +			interrupt-parent = <&gic>;
> +			interrupts = <0 9 0x4>;
> +		};
> +	};
> +
> +	i2c2: i2c at 0xe6824000 {
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +		compatible = "renesas,rmobile-iic";
> +		reg = <0xe6824000 0x425>;
> +		interrupt-parent = <&gic>;
> +		interrupts = <0 171 0x4
			      0 172 0x4
			      0 173 0x4
> +			      0 174 0x4>;
> +	};
> +
> +	i2c3: i2c at 0xe6826000 {
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +		compatible = "renesas,rmobile-iic";
> +		reg = <0xe6826000 0x425>;
> +		interrupt-parent = <&gic>;
> +		interrupts = <0 183 0x4
			      0 184 0x4
			      0 185 0x4
> +			      0 186 0x4>;
> +	};
> +
> +	i2c4: i2c at 0xe6828000 {
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +		compatible = "renesas,rmobile-iic";
> +		reg = <0xe6828000 0x425>;
> +		interrupt-parent = <&gic>;
> +		interrupts = <0 187 0x4
			      0 188 0x4
			      0 189 0x4
> +			      0 190 0x4>;
> +	};




More information about the linux-arm-kernel mailing list