Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit afcad884 authored by Tero Jaasko's avatar Tero Jaasko Committed by Jason Cooper
Browse files

arm: kirkwood: add support for ZyXEL NSA310



Hello, Andrew

> > +#define NSA310_GPIO_LED_ESATA_GREEN	12
> > <..>
> > +#define NSA310_GPIO_POWER_OFF		48
>
> It looks like most of these are not used. Please remove them.

True. Fixed.

> > +static struct mtd_partition nsa310_mtd_parts[] = {
> > +	{
> > +		.name	= "uboot",
> > +		.offset	= 0,
> > +		.size	= 0x100000,
> > +		.mask_flags = MTD_WRITEABLE,
> > +	}, {
> > <..>
> You should be able to put all that into DT. Take a look at

Correct. I did the conversion and tested that the partitions
can be read with dd and produce exactly the same data before and
after conversion. So, the partition offsets at least should be fine.

> > +static struct i2c_board_info __initdata nsa310_i2c_info[] = {
> > +	{ I2C_BOARD_INFO("adt7476", 0x2e) },
> > +};
>
> You can also do this in DT as well. kirkwood-ts219.dtsi has
>
>                 i2c@11000 {
>                         status = "okay";
>                         clock-frequency = <400000>;

Ok, I did convert the i2c definition to use the devicetree.
The adt7476 device itself is not at reach of device tree,
AFAIK and requires more work at there?

Thanks for your valuable comments. Following is a new patch that
should address the problems and mistakes you pointed and also
some of the pointed by Jason Cooper. The nand and i2c are now
defined at DT and I also removed the pointless defines and
ARM_APPENDED_DTB. It is based against the Linus' official
3.6 version.

Best regards,
Tero

Signed-off-by: default avatarJason Cooper <jason@lakedaemon.net>
parent 767fc1ea
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -44,6 +44,7 @@ dtb-$(CONFIG_ARCH_KIRKWOOD) += kirkwood-dns320.dtb \
	kirkwood-ns2lite.dtb \
	kirkwood-ns2max.dtb \
	kirkwood-ns2mini.dtb \
	kirkwood-nsa310.dtb \
	kirkwood-topkick.dtb \
	kirkwood-ts219-6281.dtb \
	kirkwood-ts219-6282.dtb
+144 −0
Original line number Diff line number Diff line
/dts-v1/;

/include/ "kirkwood.dtsi"

/ {
	model = "ZyXEL NSA310";
	compatible = "zyxel,nsa310", "marvell,kirkwood-88f6281", "marvell,kirkwood";

	memory {
		device_type = "memory";
		reg = <0x00000000 0x10000000>;
	};

	chosen {
		bootargs = "console=ttyS0,115200";
	};

	ocp@f1000000 {

		serial@12000 {
			clock-frequency = <200000000>;
			status = "ok";
		};

		sata@80000 {
			status = "okay";
			nr-ports = <2>;
		};

		i2c@11000 {
			status = "okay";
		};

		nand@3000000 {
			status = "okay";
			chip-delay = <35>;

			partition@0 {
				label = "uboot";
				reg = <0x0000000 0x0100000>;
				read-only;
			};
			partition@100000 {
				label = "uboot_env";
				reg = <0x0100000 0x0080000>;
			};
			partition@180000 {
				label = "key_store";
				reg = <0x0180000 0x0080000>;
			};
			partition@200000 {
				label = "info";
				reg = <0x0200000 0x0080000>;
			};
			partition@280000 {
				label = "etc";
				reg = <0x0280000 0x0a00000>;
			};
			partition@c80000 {
				label = "kernel_1";
				reg = <0x0c80000 0x0a00000>;
			};
			partition@1680000 {
				label = "rootfs1";
				reg = <0x1680000 0x2fc0000>;
			};
			partition@4640000 {
				label = "kernel_2";
				reg = <0x4640000 0x0a00000>;
			};
			partition@5040000 {
				label = "rootfs2";
				reg = <0x5040000 0x2fc0000>;
			};
		};
	};

	gpio_keys {
		compatible = "gpio-keys";
		#address-cells = <1>;
		#size-cells = <0>;

		button@1 {
			label = "Power Button";
			linux,code = <116>;
			gpios = <&gpio1 14 0>;
		};
		button@2 {
			label = "Copy Button";
			linux,code = <133>;
			gpios = <&gpio1 5 1>;
		};
		button@3 {
			label = "Reset Button";
			linux,code = <0x198>;
			gpios = <&gpio1 4 1>;
		};
	};

	gpio-leds {
		compatible = "gpio-leds";

		green-sys {
			label = "nsa310:green:sys";
			gpios = <&gpio0 28 0>;
		};
		red-sys {
			label = "nsa310:red:sys";
			gpios = <&gpio0 29 0>;
		};
		green-hdd {
			label = "nsa310:green:hdd";
			gpios = <&gpio1 9 0>;
		};
		red-hdd {
			label = "nsa310:red:hdd";
			gpios = <&gpio1 10 0>;
		};
		green-esata {
			label = "nsa310:green:esata";
			gpios = <&gpio0 12 0>;
		};
		red-esata {
			label = "nsa310:red:esata";
			gpios = <&gpio0 13 0>;
		};
		green-usb {
			label = "nsa310:green:usb";
			gpios = <&gpio0 15 0>;
		};
		red-usb {
			label = "nsa310:red:usb";
			gpios = <&gpio0 16 0>;
		};
		green-copy {
			label = "nsa310:green:copy";
			gpios = <&gpio1 7 0>;
		};
		red-copy {
			label = "nsa310:red:copy";
			gpios = <&gpio1 8 0>;
		};
	};
};
+8 −0
Original line number Diff line number Diff line
@@ -259,6 +259,14 @@ config MACH_T5325
	  Say 'Y' here if you want your kernel to support the
	  HP t5325 Thin Client.

config MACH_NSA310_DT
	bool "ZyXEL NSA-310 (Flattened Device Tree)"
	select ARCH_KIRKWOOD_DT
	select ARM_ATAG_DTB_COMPAT
	help
	  Say 'Y' here if you want your kernel to support the
	  ZyXEL NSA-310 board (Flattened Device Tree).

endmenu

endif
+1 −0
Original line number Diff line number Diff line
@@ -36,4 +36,5 @@ obj-$(CONFIG_MACH_NETSPACE_V2_DT) += board-ns2.o
obj-$(CONFIG_MACH_NETSPACE_MAX_V2_DT)	+= board-ns2.o
obj-$(CONFIG_MACH_NETSPACE_LITE_V2_DT)	+= board-ns2.o
obj-$(CONFIG_MACH_NETSPACE_MINI_V2_DT)	+= board-ns2.o
obj-$(CONFIG_MACH_NSA310_DT)		+= board-nsa310.o
obj-$(CONFIG_MACH_TOPKICK_DT)		+= board-usi_topkick.o
+4 −0
Original line number Diff line number Diff line
@@ -106,6 +106,9 @@ static void __init kirkwood_dt_init(void)
	if (of_machine_is_compatible("usi,topkick"))
		usi_topkick_init();

	if (of_machine_is_compatible("zyxel,nsa310"))
		nsa310_init();

	of_platform_populate(NULL, kirkwood_dt_match_table,
			     kirkwood_auxdata_lookup, NULL);
}
@@ -128,6 +131,7 @@ static const char *kirkwood_dt_board_compat[] = {
	"lacie,netspace_lite_v2",
	"lacie,netspace_mini_v2",
	"usi,topkick",
	"zyxel,nsa310",
	NULL
};

Loading