[PATCH v2 1/3] arm64: dts: add initial dts for Samsung GH7 SoC and SSDK-GH7 board

Kukjin Kim kgene.kim at samsung.com
Wed Mar 12 00:31:56 EDT 2014


Mark Rutland wrote:
> 
Hi Mark,

> On Mon, Mar 10, 2014 at 10:51:17PM +0000, Kukjin Kim wrote:
> > Signed-off-by: Kukjin Kim <kgene.kim at samsung.com>
> > Reviewed-by: Thomas Abraham <thomas.ab at samsung.com>
> > Cc: Catalin Marinas <catalin.marinas at arm.com>
> > ---
> >  arch/arm64/boot/dts/samsung-gh7.dtsi     | 106
> +++++++++++++++++++++++++++++++
> >  arch/arm64/boot/dts/samsung-ssdk-gh7.dts |  26 ++++++++
> >  2 files changed, 132 insertions(+)
> >  create mode 100644 arch/arm64/boot/dts/samsung-gh7.dtsi
> >  create mode 100644 arch/arm64/boot/dts/samsung-ssdk-gh7.dts
> >
> > diff --git a/arch/arm64/boot/dts/samsung-gh7.dtsi
> b/arch/arm64/boot/dts/samsung-gh7.dtsi
> > new file mode 100644
> > index 0000000..b5e8488
> > --- /dev/null
> > +++ b/arch/arm64/boot/dts/samsung-gh7.dtsi
> > @@ -0,0 +1,106 @@
> > +/*
> > + * SAMSUNG GH7 SoC device tree source
> > + *
> > + * Copyright (c) 2014 Samsung Electronics Co., Ltd.
> > + *		http://www.samsung.com
> > + *
> > + * 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.
> > +*/
> > +
> > +/memreserve/ 0x80000000 0x0C400000;
> 
> Please have a comment as to what this memreserve is intended to protect.
> This is very large, and we don't want pointless memreserves.
> 
Well, you mean I need to comment about each reserved memory area?

We need the reserved memory for EL3 monitor, UEFI services, secure
interpreter, hypervisor and Scan-chain for debug...BTW isn't it depending on
each hardware platform and usage model?

Just note, I will change the reserve memory area and size. From at
0xf8000000 and size is 128MB(0x8000000).

> What address does the kernel end up getting loaded at on this board?
> 
We load the kernel image from at 0x80080000 after changing the reserve
memory area.

> > +
> > +/ {
> > +	interrupt-parent = <&gic>;
> > +	#address-cells = <2>;
> > +	#size-cells = <2>;
> > +
> > +	aliases {
> > +		serial0 = "/amba/uart at 12c00000";
> > +	};
> > +
> > +	cpus {
> > +		#address-cells = <2>;
> > +		#size-cells = <0>;
> > +
> > +		cpu at 000 {
> > +			device_type = "cpu";
> > +			compatible = "arm,armv8";
> 
> The "arm,armv8" should be a fallback rather than the only entry. The
> precise core should be first (see arch/arm64/boot/dts/apm-storm.dtsi for
> an example).
> 
Well, do I really need another name if GH7 has just 'ARMv8 core' exactly?

> > +			reg = <0x0 0x000>;
> 
> Any reason for padding these to three hexadecimal digits (in both the
> reg and unit-address)?
> 
Yes, I already commented on Olof's question before, other cores will be
added and it should be separated from this.

> > +			enable-method = "spin-table";
> > +			cpu-release-addr = <0x0 0x8000fff8>;
> > +		};
> > +		cpu at 001 {
> > +			device_type = "cpu";
> > +			compatible = "arm,armv8";
> > +			reg = <0x0 0x001>;
> > +			enable-method = "spin-table";
> > +			cpu-release-addr = <0x0 0x8000fff8>;
> > +		};
> > +		cpu at 002 {
> > +			device_type = "cpu";
> > +			compatible = "arm,armv8";
> > +			reg = <0x0 0x002>;
> > +			enable-method = "spin-table";
> > +			cpu-release-addr = <0x0 0x8000fff8>;
> > +		};
> > +		cpu at 003 {
> > +			device_type = "cpu";
> > +			compatible = "arm,armv8";
> > +			reg = <0x0 0x003>;
> > +			enable-method = "spin-table";
> > +			cpu-release-addr = <0x0 0x8000fff8>;
> > +		};
> > +	};
> > +
> > +	gic: interrupt-controller at 1C000000 {
> > +		compatible = "arm,cortex-a15-gic";
> 
> We should have a more specific compatible string early in the list here
> too.
> 
Well, I think more specific compatible string is not required for gic, there
were discussion about using another compatible string for gic-v2. And
cortex-a15-gic should be fine at this moment and if another name is required
as per previous discussion, we will then.

> > +		#interrupt-cells = <3>;
> > +		interrupt-controller;
> > +		reg = <0x0 0x1C001000 0 0x1000>,	/* GIC Dist */
> > +		      <0x0 0x1C002000 0 0x1000>,	/* GIC CPU */
> > +		      <0x0 0x1C004000 0 0x2000>,	/* GIC VCPU Control
*/
> > +		      <0x0 0x1C006000 0 0x2000>;	/* GIC VCPU */
> > +		interrupts = <1 9 0xf04>;	/* GIC Maintenence IRQ */
> > +	};
> > +
> > +	timer {
> > +		compatible = "arm,armv8-timer";
> > +		interrupts = <1 13 0xff01>,	/* Secure Phys IRQ */
> > +			     <1 14 0xff01>,	/* Non-secure Phys IRQ */
> > +			     <1 11 0xff01>,	/* Virt IRQ */
> > +			     <1 10 0xff01>;	/* Hyp IRQ */
> > +	};
> > +
> > +	pmu {
> > +		compatible = "arm,armv8-pmuv3";
> 
> This is missing a specific compatible string.
> 
I don't know why I need another specific compatible string here because I
thought the 'armv8-pmuv3' is enough.

> > +		interrupts = <0 294 0>,
> > +			     <0 295 0>,
> > +			     <0 296 0>,
> > +			     <0 297 0>,
> > +			     <0 298 0>,
> > +			     <0 299 0>,
> > +			     <0 300 0>,
> > +			     <0 301 0>;
> > +	};
> 
> There are four CPUs described, yet eight interrupts here. There should
> be one per CPU.
> 
Yes right. I added them here by mistake, the other four interrupts will be
used for other 4 cores will be added later though.

> > +
> > +	amba {
> > +		compatible = "arm,amba-bus";
> > +		#address-cells = <2>;
> > +		#size-cells = <2>;
> > +		ranges;
> > +
> > +		serial at 12c00000 {
> > +			compatible = "arm,pl011", "arm,primecell";
> > +			reg = <0 0x12c00000 0 0x10000>;
> > +			interrupts = <0 418 0>;
> > +		};
> > +
> > +		serial at 12c20000 {
> > +			compatible = "arm,pl011", "arm,primecell";
> > +			reg = <0 0x12c20000 0 0x10000>;
> > +			interrupts = <0 420 0>;
> > +		};
> 
> These are both missing required clocks.
> 
Yes right.

> > +	};
> > +};
> > diff --git a/arch/arm64/boot/dts/samsung-ssdk-gh7.dts
> b/arch/arm64/boot/dts/samsung-ssdk-gh7.dts
> > new file mode 100644
> > index 0000000..47afbc4
> > --- /dev/null
> > +++ b/arch/arm64/boot/dts/samsung-ssdk-gh7.dts
> > @@ -0,0 +1,26 @@
> > +/*
> > + * SAMSUNG SSDK-GH7 board device tree source
> > + *
> > + * Copyright (c) 2014 Samsung Electronics Co., Ltd.
> > + *		http://www.samsung.com
> > + *
> > + * 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.
> > +*/
> > +
> > +/dts-v1/;
> > +#include "samsung-gh7.dtsi"
> > +
> > +/ {
> > +	model = "SAMSUNG SSDK-GH7 board based on GH7 SoC";
> 
> Is the "based on GH7 SoC" part necessary? Does the "SSDK-GH7" not give
> that away?
> 
In this case, yes, SSDK-GH7 is enough but I though, in case of different
board adding what SoC is used on the board in that is useful. Anyway, OK.

Thanks,
Kukjin




More information about the linux-arm-kernel mailing list