Thread (1 message) 1 message, 1 author, 2012-03-12

Re: [PATCH 1/2] ARM: kirkwood: Basic support for DNS-320 and DNS-325

From: Jason Cooper <hidden>
Date: 2012-03-12 03:17:51
Also in: linux-arm-kernel

On Sun, Mar 11, 2012 at 05:46:09PM +0000, Arnd Bergmann wrote:
On Sunday 11 March 2012, Jamie Lentin wrote:
quoted
Add support for the DNS-320 and DNS-325. Describe as much as currently possible
in the devicetree files, leave everything else in board-dt.c to be patched
later.

Signed-off-by: Jamie Lentin <jm-Pj/HzkgeCk7QXOPxS62xeg@public.gmane.org>
Great work!
quoted
+
+/ {
+	model = "D-Link DNS-320 NAS (Rev A1)";
+	compatible = "dlink,dns-320-a1", "dlink,dns-320", "dlink,dns-kirkwood", "marvell,kirkwood-88f6281", "marvell,kirkwood";
+
+	memory {
+		device_type = "memory";
+		reg = <0x00000000 0x8000000>;
+	};
+
+	chosen {
+		bootargs = "console=ttyS0,115200n8 earlyprintk";
+	};
+
+	wdt@fed20300 {
+		compatible = "mrvl,orion-wdt";
+		reg = <0xfed20300 0x28>;
+		clock-frequency = <166666667>;
+	};
+
+	serial@f1012000 {
+		compatible = "ns16550a";
+		reg = <0xf1012000 0xff>;
+		reg-shift = <2>;
+		interrupts = <33>;
+		clock-frequency = <166666667>;
+	};
+
+	serial@f1012100 {
+		compatible = "ns16550a";
+		reg = <0xf1012100 0xff>;
oops, I missed this earlier (and, I just corrected in my own code).
Arnd says Linux uses inclusive sizes, so the above should be 0x100.
Please correct for all register sizes.
quoted
+		reg-shift = <2>;
+		interrupts = <34>;
+		clock-frequency = <166666667>;
+	};
I think the generic kirkwood device nodes should all be part of
the kirkwood.dtsi file, except for any properties you want to
override.

You can add a status="disabled" property in device nodes
that may not be connected in individual boards, and then
just override it by listing status="enabled" in the board.dts
file, without having to duplicate all the other properties.
The clock-frequency property complicates that, since it is different
from board to board.  of_serial appears to print an error message if
clock-frequency isn't set, so would this work:

### blah.dtsi ###
...
	serial@f1012100 {
		compatible = "ns16550a";
		reg = <0xf1012100 0xff>;
		reg-shift = <2>;
		interrupts = <34>;
		/* no clock set */
		status = "disabled";
	}
#################

then,

### blah-foo.dts ###
...
	serial@f1012100 {
		status = "ok";
		clock-frequency = <166666667>;
	}
####################
I would also suggest to change the kirkwood.dtsi layout to
put all the on-chip peripherals from the 0xf1 section into
one bus in the device tree, like

	ocp@f1000000 {
		compatible = "simple-bus";
		ranges = <0xf1000000 0xf1000000 0x1000000>;
		#address-cells = 1;
		#size-cells = 1;

		serial@f1012000 {
			...
		};

		...
	};

Or even use the ranges property to remap everything into
a simpler address range:

	ocp@f1000000 {
		compatible = "simple-bus";
		ranges = <0 0xf1000000 0x1000000>;
		#address-cells = 1;
		#size-cells = 1;

		serial@12000 {
			reg = <0x12000 0x100>;
			...
		};

		...
	};
Okay, that's pretty slick.  The wdt and intc are at 0xfed00000, is that
another ocp bus?  Or, am I missing something?

thx,

Jason.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help