On Sun, Jun 10, 2012 at 12:32:01PM +0200, Andrew Lunn wrote: > The two different variants of QNAP TS devices, varying by SoC, put the > GPIO keys on different GPIO lines. Hence we need two different DT > board descriptions, which share the same board-ts219.c file. > > Signed-off-by: Andrew Lunn <andrew@xxxxxxx> > --- > arch/arm/boot/dts/kirkwood-ts219-6281.dts | 21 +++++++ > arch/arm/boot/dts/kirkwood-ts219-6282.dts | 21 +++++++ > arch/arm/boot/dts/kirkwood-ts219.dtsi | 73 ++++++++++++++++++++++++ > arch/arm/mach-kirkwood/Kconfig | 15 +++++ > arch/arm/mach-kirkwood/Makefile | 1 + > arch/arm/mach-kirkwood/Makefile.boot | 1 + > arch/arm/mach-kirkwood/board-dt.c | 4 ++ > arch/arm/mach-kirkwood/board-ts219.c | 86 +++++++++++++++++++++++++++++ > arch/arm/mach-kirkwood/common.h | 5 ++ > 9 files changed, 227 insertions(+) > create mode 100644 arch/arm/boot/dts/kirkwood-ts219-6281.dts > create mode 100644 arch/arm/boot/dts/kirkwood-ts219-6282.dts > create mode 100644 arch/arm/boot/dts/kirkwood-ts219.dtsi > create mode 100644 arch/arm/mach-kirkwood/board-ts219.c > > diff --git a/arch/arm/boot/dts/kirkwood-ts219-6281.dts b/arch/arm/boot/dts/kirkwood-ts219-6281.dts > new file mode 100644 > index 0000000..ccbf327 > --- /dev/null > +++ b/arch/arm/boot/dts/kirkwood-ts219-6281.dts > @@ -0,0 +1,21 @@ > +/dts-v1/; > + > +/include/ "kirkwood-ts219.dtsi" > + > +/ { > + gpio_keys { > + compatible = "gpio-keys"; > + #address-cells = <1>; > + #size-cells = <0>; > + button@1 { > + label = "USB Copy"; > + linux,code = <133>; > + gpios = <&gpio0 15 1>; > + }; > + button@2 { > + label = "Reset"; > + linux,code = <0x198>; > + gpios = <&gpio0 16 1>; > + }; > + }; > +}; > \ No newline at end of file > diff --git a/arch/arm/boot/dts/kirkwood-ts219-6282.dts b/arch/arm/boot/dts/kirkwood-ts219-6282.dts > new file mode 100644 > index 0000000..fbe9932 > --- /dev/null > +++ b/arch/arm/boot/dts/kirkwood-ts219-6282.dts > @@ -0,0 +1,21 @@ > +/dts-v1/; > + > +/include/ "kirkwood-ts219.dtsi" > + > +/ { > + gpio_keys { > + compatible = "gpio-keys"; > + #address-cells = <1>; > + #size-cells = <0>; > + button@1 { > + label = "USB Copy"; > + linux,code = <133>; > + gpios = <&gpio1 11 1>; > + }; > + button@2 { > + label = "Reset"; > + linux,code = <0x198>; > + gpios = <&gpio1 5 1>; > + }; > + }; > +}; > \ No newline at end of file > diff --git a/arch/arm/boot/dts/kirkwood-ts219.dtsi b/arch/arm/boot/dts/kirkwood-ts219.dtsi > new file mode 100644 > index 0000000..e0520c3 > --- /dev/null > +++ b/arch/arm/boot/dts/kirkwood-ts219.dtsi > @@ -0,0 +1,73 @@ > +/include/ "kirkwood.dtsi" > + > +/ { > + model = "QNAP TS219 family"; > + compatible = "qnap,ts219", "mrvl,kirkwood"; > + > + memory { > + device_type = "memory"; > + reg = <0x00000000 0x20000000>; > + }; > + > + chosen { > + bootargs = "console=ttyS0,115200n8"; > + }; > + > + ocp@f1000000 { > + i2c@11000 { > + status = "okay"; > + > + s35390a: s35390a@30 { > + compatible = "s35390a"; > + reg = <0x30>; > + }; > + }; > + serial@12000 { > + clock-frequency = <200000000>; > + status = "okay"; > + }; > + serial@12100 { > + clock-frequency = <200000000>; > + status = "okay"; > + }; > + spi@10600 { > + status = "okay"; > + > + m25p128@0 { > + #address-cells = <1>; > + #size-cells = <1>; > + compatible = "m25p128"; > + reg = <0>; > + spi-max-frequency = <20000000>; > + mode = <0>; > + > + partition@0000000 { > + reg = <0x00000000 0x00080000>; > + label = "U-Boot"; > + }; > + > + partition@00200000 { > + reg = <0x00200000 0x00200000>; > + label = "Kernel"; > + }; > + > + partition@00400000 { > + reg = <0x00400000 0x00900000>; > + label = "RootFS1"; > + }; > + partition@00d00000 { > + reg = <0x00d00000 0x00300000>; > + label = "RootFS2"; > + }; > + partition@00040000 { > + reg = <0x00080000 0x00040000>; > + label = "U-Boot Config"; > + }; > + partition@000c0000 { > + reg = <0x000c0000 0x00140000>; > + label = "NAS Config"; > + }; > + }; > + }; > + }; > +}; > diff --git a/arch/arm/mach-kirkwood/Kconfig b/arch/arm/mach-kirkwood/Kconfig > index 199764f..8c6a5cd 100644 > --- a/arch/arm/mach-kirkwood/Kconfig > +++ b/arch/arm/mach-kirkwood/Kconfig > @@ -47,6 +47,7 @@ config MACH_GURUPLUG > config ARCH_KIRKWOOD_DT > bool "Marvell Kirkwood Flattened Device Tree" > select USE_OF > + select SERIAL_OF_PLATFORM Please remove as previously discussed. I'm in the process of updating kirkwood_defconfig (it will include this). Thanks. Other than that, Acked-by: Jason Cooper <jason@xxxxxxxxxxxxxx> thx, Jason. > help > Say 'Y' here if you want your kernel to support the > Marvell Kirkwood using flattened device tree. > @@ -80,6 +81,20 @@ config MACH_IB62X0_DT > RaidSonic IB-NAS6210 & IB-NAS6220 devices, using > Flattened Device Tree. > > +config MACH_TS219_DT > + bool "Device Tree for QNAP TS-110, TS-119, TS-119P+, TS-210, TS-219, TS-219P and TS-219P+ Turbo NAS" > + select ARCH_KIRKWOOD_DT > + select ARM_APPENDED_DTB > + select ARM_ATAG_DTB_COMPAT > + help > + Say 'Y' here if you want your kernel to support the QNAP > + TS-110, TS-119, TS-119P+, TS-210, TS-219, TS-219P and > + TS-219P+ Turbo NAS devices using Fattened Device Tree. > + There are two different Device Tree descriptions, depending > + on if the device is based on an if the board uses the MV6281 > + or MV6282. If you have the wrong one, the buttons will not > + work. > + > config MACH_TS219 > bool "QNAP TS-110, TS-119, TS-119P+, TS-210, TS-219, TS-219P and TS-219P+ Turbo NAS" > help > diff --git a/arch/arm/mach-kirkwood/Makefile b/arch/arm/mach-kirkwood/Makefile > index d2b0590..0468b23 100644 > --- a/arch/arm/mach-kirkwood/Makefile > +++ b/arch/arm/mach-kirkwood/Makefile > @@ -25,3 +25,4 @@ obj-$(CONFIG_MACH_DREAMPLUG_DT) += board-dreamplug.o > obj-$(CONFIG_MACH_ICONNECT_DT) += board-iconnect.o > obj-$(CONFIG_MACH_DLINK_KIRKWOOD_DT) += board-dnskw.o > obj-$(CONFIG_MACH_IB62X0_DT) += board-ib62x0.o > +obj-$(CONFIG_MACH_TS219_DT) += board-ts219.o > diff --git a/arch/arm/mach-kirkwood/Makefile.boot b/arch/arm/mach-kirkwood/Makefile.boot > index 02edbdf..4a1f66a 100644 > --- a/arch/arm/mach-kirkwood/Makefile.boot > +++ b/arch/arm/mach-kirkwood/Makefile.boot > @@ -7,3 +7,4 @@ dtb-$(CONFIG_MACH_DLINK_KIRKWOOD_DT) += kirkwood-dns320.dtb > dtb-$(CONFIG_MACH_DLINK_KIRKWOOD_DT) += kirkwood-dns325.dtb > dtb-$(CONFIG_MACH_ICONNECT_DT) += kirkwood-iconnect.dtb > dtb-$(CONFIG_MACH_IB62X0_DT) += kirkwood-ib62x0.dtb > +dtb-$(CONFIG_MACH_TS219_DT) += kirkwood-qnap-ts219.dtb > diff --git a/arch/arm/mach-kirkwood/board-dt.c b/arch/arm/mach-kirkwood/board-dt.c > index 5aa025d..5dfdfc3 100644 > --- a/arch/arm/mach-kirkwood/board-dt.c > +++ b/arch/arm/mach-kirkwood/board-dt.c > @@ -76,6 +76,9 @@ static void __init kirkwood_dt_init(void) > if (of_machine_is_compatible("raidsonic,ib-nas62x0")) > ib62x0_init(); > > + if (of_machine_is_compatible("qnap,ts219")) > + qnap_dt_ts219_init(); > + > of_platform_populate(NULL, kirkwood_dt_match_table, > kirkwood_auxdata_lookup, NULL); > } > @@ -86,6 +89,7 @@ static const char *kirkwood_dt_board_compat[] = { > "dlink,dns-325", > "iom,iconnect", > "raidsonic,ib-nas62x0", > + "qnap,ts219", > NULL > }; > > diff --git a/arch/arm/mach-kirkwood/board-ts219.c b/arch/arm/mach-kirkwood/board-ts219.c > new file mode 100644 > index 0000000..0a70b77 > --- /dev/null > +++ b/arch/arm/mach-kirkwood/board-ts219.c > @@ -0,0 +1,86 @@ > +/* > + * > + * QNAP TS-11x/TS-21x Turbo NAS Board Setup via DT > + * > + * Copyright (C) 2012 Andrew Lunn <andrew@xxxxxxx> > + * > + * Based on the board file ts219-setup.c: > + * > + * Copyright (C) 2009 Martin Michlmayr <tbm@xxxxxxxxxx> > + * Copyright (C) 2008 Byron Bradley <byron.bbradley@xxxxxxxxx> > + * > + * This program is free software; you can redistribute it and/or > + * modify it under the terms of the GNU General Public License > + * as published by the Free Software Foundation; either version > + * 2 of the License, or (at your option) any later version. > + */ > + > +#include <linux/kernel.h> > +#include <linux/init.h> > +#include <linux/platform_device.h> > +#include <linux/mv643xx_eth.h> > +#include <linux/ata_platform.h> > +#include <linux/gpio_keys.h> > +#include <linux/input.h> > +#include <asm/mach-types.h> > +#include <asm/mach/arch.h> > +#include <mach/kirkwood.h> > +#include "common.h" > +#include "mpp.h" > +#include "tsx1x-common.h" > + > +static struct mv643xx_eth_platform_data qnap_ts219_ge00_data = { > + .phy_addr = MV643XX_ETH_PHY_ADDR(8), > +}; > + > +static struct mv_sata_platform_data qnap_ts219_sata_data = { > + .n_ports = 2, > +}; > + > +static unsigned int qnap_ts219_mpp_config[] __initdata = { > + MPP0_SPI_SCn, > + MPP1_SPI_MOSI, > + MPP2_SPI_SCK, > + MPP3_SPI_MISO, > + MPP4_SATA1_ACTn, > + MPP5_SATA0_ACTn, > + MPP8_TW0_SDA, > + MPP9_TW0_SCK, > + MPP10_UART0_TXD, > + MPP11_UART0_RXD, > + MPP13_UART1_TXD, /* PIC controller */ > + MPP14_UART1_RXD, /* PIC controller */ > + MPP15_GPIO, /* USB Copy button (on devices with 88F6281) */ > + MPP16_GPIO, /* Reset button (on devices with 88F6281) */ > + MPP36_GPIO, /* RAM: 0: 256 MB, 1: 512 MB */ > + MPP37_GPIO, /* Reset button (on devices with 88F6282) */ > + MPP43_GPIO, /* USB Copy button (on devices with 88F6282) */ > + MPP44_GPIO, /* Board ID: 0: TS-11x, 1: TS-21x */ > + 0 > +}; > + > +void __init qnap_dt_ts219_init(void) > +{ > + u32 dev, rev; > + > + kirkwood_mpp_conf(qnap_ts219_mpp_config); > + > + kirkwood_pcie_id(&dev, &rev); > + if (dev == MV88F6282_DEV_ID) > + qnap_ts219_ge00_data.phy_addr = MV643XX_ETH_PHY_ADDR(0); > + > + kirkwood_ge00_init(&qnap_ts219_ge00_data); > + kirkwood_sata_init(&qnap_ts219_sata_data); > + kirkwood_ehci_init(); > + > + pm_power_off = qnap_tsx1x_power_off; > +} > + > +static int __init ts219_pci_init(void) > +{ > + if (machine_is_ts219()) > + kirkwood_pcie_init(KW_PCIE0); > + > + return 0; > +} > +subsys_initcall(ts219_pci_init); > diff --git a/arch/arm/mach-kirkwood/common.h b/arch/arm/mach-kirkwood/common.h > index 9248fa2..e0c2324 100644 > --- a/arch/arm/mach-kirkwood/common.h > +++ b/arch/arm/mach-kirkwood/common.h > @@ -58,6 +58,11 @@ void dreamplug_init(void); > #else > static inline void dreamplug_init(void) {}; > #endif > +#ifdef CONFIG_MACH_TS219_DT > +void qnap_dt_ts219_init(void); > +#else > +static inline void qnap_dt_ts219_init(void) {}; > +#endif > > #ifdef CONFIG_MACH_DLINK_KIRKWOOD_DT > void dnskw_init(void); > -- > 1.7.10 > -- To unsubscribe from this list: send the line "unsubscribe linux-i2c" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html