Commit f236f5aa authored by Arnaud Ebalard's avatar Arnaud Ebalard Committed by Jason Cooper

ARM: kirkwood: Add support for NETGEAR ReadyNAS Duo v2 using DT

Add support for NETGEAR ReadyNAS Duo v2 (Hardware specs available
here: http://natisbad.org/NAS/). Almost everything is supported via
provided .dts. A board-readynas.c file is nonetheless required for
device not only converted to DT (Gbit controller).
Signed-off-by: default avatarArnaud Ebalard <arno@natisbad.org>
Tested-By: default avatarArnaud Ebalard <arno@natisbad.org>
Acked-by: default avatarAndrew Lunn <andrew@lunn.ch>
Signed-off-by: default avatarJason Cooper <jason@lakedaemon.net>
parent 8bb96604
...@@ -65,6 +65,7 @@ dtb-$(CONFIG_ARCH_KIRKWOOD) += kirkwood-dns320.dtb \ ...@@ -65,6 +65,7 @@ dtb-$(CONFIG_ARCH_KIRKWOOD) += kirkwood-dns320.dtb \
kirkwood-lschlv2.dtb \ kirkwood-lschlv2.dtb \
kirkwood-lsxhl.dtb \ kirkwood-lsxhl.dtb \
kirkwood-mplcec4.dtb \ kirkwood-mplcec4.dtb \
kirkwood-netgear_readynas_duo_v2.dtb \
kirkwood-ns2.dtb \ kirkwood-ns2.dtb \
kirkwood-ns2lite.dtb \ kirkwood-ns2lite.dtb \
kirkwood-ns2max.dtb \ kirkwood-ns2max.dtb \
......
/dts-v1/;
/include/ "kirkwood.dtsi"
/include/ "kirkwood-6282.dtsi"
/ {
model = "NETGEAR ReadyNAS Duo v2";
compatible = "netgear,readynas-duo-v2", "netgear,readynas", "marvell,kirkwood-88f6282", "marvell,kirkwood";
memory { /* 256 MB */
device_type = "memory";
reg = <0x00000000 0x10000000>;
};
chosen {
bootargs = "console=ttyS0,115200n8 earlyprintk";
};
ocp@f1000000 {
pinctrl: pinctrl@10000 {
pinctrl-0 = < &pmx_uart0
&pmx_button_power
&pmx_button_backup
&pmx_button_reset
&pmx_led_blue_power
&pmx_led_blue_activity
&pmx_led_blue_disk1
&pmx_led_blue_disk2
&pmx_led_blue_backup >;
pinctrl-names = "default";
pmx_button_power: pmx-button-power {
marvell,pins = "mpp47";
marvell,function = "gpio";
};
pmx_button_backup: pmx-button-backup {
marvell,pins = "mpp45";
marvell,function = "gpio";
};
pmx_button_reset: pmx-button-reset {
marvell,pins = "mpp13";
marvell,function = "gpio";
};
pmx_led_blue_power: pmx-led-blue-power {
marvell,pins = "mpp31";
marvell,function = "gpio";
};
pmx_led_blue_activity: pmx-led-blue-activity {
marvell,pins = "mpp38";
marvell,function = "gpio";
};
pmx_led_blue_disk1: pmx-led-blue-disk1 {
marvell,pins = "mpp23";
marvell,function = "gpio";
};
pmx_led_blue_disk2: pmx-led-blue-disk2 {
marvell,pins = "mpp22";
marvell,function = "gpio";
};
pmx_led_blue_backup: pmx-led-blue-backup {
marvell,pins = "mpp29";
marvell,function = "gpio";
};
};
i2c@11000 {
status = "okay";
rs5c372a: rs5c372a@32 {
compatible = "ricoh,rs5c372a";
reg = <0x32>;
};
};
serial@12000 {
status = "okay";
};
nand@3000000 {
status = "okay";
partition@0 {
label = "u-boot";
reg = <0x0000000 0x180000>;
read-only;
};
partition@180000 {
label = "u-boot-env";
reg = <0x180000 0x20000>;
};
partition@200000 {
label = "uImage";
reg = <0x0200000 0x600000>;
};
partition@800000 {
label = "minirootfs";
reg = <0x0800000 0x1000000>;
};
partition@1800000 {
label = "jffs2";
reg = <0x1800000 0x6800000>;
};
};
sata@80000 {
status = "okay";
nr-ports = <2>;
};
};
gpio-leds {
compatible = "gpio-leds";
power_led {
label = "status:blue:power_led";
gpios = <&gpio0 31 1>; /* GPIO 31 Active Low */
linux,default-trigger = "default-on";
};
activity_led {
label = "status:blue:activity_led";
gpios = <&gpio1 6 1>; /* GPIO 38 Active Low */
};
disk1_led {
label = "status:blue:disk1_led";
gpios = <&gpio0 23 1>; /* GPIO 23 Active Low */
};
disk2_led {
label = "status:blue:disk2_led";
gpios = <&gpio0 22 1>; /* GPIO 22 Active Low */
};
backup_led {
label = "status:blue:backup_led";
gpios = <&gpio0 29 1>; /* GPIO 29 Active Low*/
};
};
gpio_keys {
compatible = "gpio-keys";
#address-cells = <1>;
#size-cells = <0>;
button@1 {
label = "Power Button";
linux,code = <116>; /* KEY_POWER */
gpios = <&gpio1 15 1>;
};
button@2 {
label = "Reset Button";
linux,code = <0x198>; /* KEY_RESTART */
gpios = <&gpio0 13 1>;
};
button@3 {
label = "Backup Button";
linux,code = <133>; /* KEY_COPY */
gpios = <&gpio1 13 1>;
};
};
regulators {
compatible = "simple-bus";
#address-cells = <1>;
#size-cells = <0>;
usb_power: regulator@1 {
compatible = "regulator-fixed";
reg = <1>;
regulator-name = "USB 3.0 Power";
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
enable-active-high;
regulator-always-on;
regulator-boot-on;
gpio = <&gpio1 14 0>;
};
};
};
...@@ -34,6 +34,7 @@ CONFIG_MACH_NETSPACE_MAX_V2_DT=y ...@@ -34,6 +34,7 @@ CONFIG_MACH_NETSPACE_MAX_V2_DT=y
CONFIG_MACH_NETSPACE_LITE_V2_DT=y CONFIG_MACH_NETSPACE_LITE_V2_DT=y
CONFIG_MACH_NETSPACE_MINI_V2_DT=y CONFIG_MACH_NETSPACE_MINI_V2_DT=y
CONFIG_MACH_OPENBLOCKS_A6_DT=y CONFIG_MACH_OPENBLOCKS_A6_DT=y
CONFIG_MACH_READYNAS_DT=y
CONFIG_MACH_TOPKICK_DT=y CONFIG_MACH_TOPKICK_DT=y
CONFIG_MACH_TS219=y CONFIG_MACH_TS219=y
CONFIG_MACH_TS41X=y CONFIG_MACH_TS41X=y
......
...@@ -194,6 +194,15 @@ config MACH_OPENBLOCKS_A6_DT ...@@ -194,6 +194,15 @@ config MACH_OPENBLOCKS_A6_DT
Say 'Y' here if you want your kernel to support the Say 'Y' here if you want your kernel to support the
Plat'Home OpenBlocks A6 (Flattened Device Tree). Plat'Home OpenBlocks A6 (Flattened Device Tree).
config MACH_READYNAS_DT
bool "NETGEAR ReadyNAS Duo v2 (Flattened Device Tree)"
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
NETGEAR ReadyNAS Duo v2 using Fattened Device Tree.
config MACH_TOPKICK_DT config MACH_TOPKICK_DT
bool "USI Topkick (Flattened Device Tree)" bool "USI Topkick (Flattened Device Tree)"
select ARCH_KIRKWOOD_DT select ARCH_KIRKWOOD_DT
......
...@@ -39,4 +39,5 @@ obj-$(CONFIG_MACH_NETSPACE_LITE_V2_DT) += board-ns2.o ...@@ -39,4 +39,5 @@ obj-$(CONFIG_MACH_NETSPACE_LITE_V2_DT) += board-ns2.o
obj-$(CONFIG_MACH_NETSPACE_MINI_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_NSA310_DT) += board-nsa310.o
obj-$(CONFIG_MACH_OPENBLOCKS_A6_DT) += board-openblocks_a6.o obj-$(CONFIG_MACH_OPENBLOCKS_A6_DT) += board-openblocks_a6.o
obj-$(CONFIG_MACH_READYNAS_DT) += board-readynas.o
obj-$(CONFIG_MACH_TOPKICK_DT) += board-usi_topkick.o obj-$(CONFIG_MACH_TOPKICK_DT) += board-usi_topkick.o
...@@ -149,6 +149,9 @@ static void __init kirkwood_dt_init(void) ...@@ -149,6 +149,9 @@ static void __init kirkwood_dt_init(void)
if (of_machine_is_compatible("mpl,cec4")) if (of_machine_is_compatible("mpl,cec4"))
mplcec4_init(); mplcec4_init();
if (of_machine_is_compatible("netgear,readynas-duo-v2"))
netgear_readynas_init();
if (of_machine_is_compatible("plathome,openblocks-a6")) if (of_machine_is_compatible("plathome,openblocks-a6"))
openblocks_a6_init(); openblocks_a6_init();
...@@ -177,6 +180,7 @@ static const char * const kirkwood_dt_board_compat[] = { ...@@ -177,6 +180,7 @@ static const char * const kirkwood_dt_board_compat[] = {
"lacie,netspace_lite_v2", "lacie,netspace_lite_v2",
"lacie,netspace_mini_v2", "lacie,netspace_mini_v2",
"mpl,cec4", "mpl,cec4",
"netgear,readynas-duo-v2",
"plathome,openblocks-a6", "plathome,openblocks-a6",
"usi,topkick", "usi,topkick",
"zyxel,nsa310", "zyxel,nsa310",
......
/*
* NETGEAR ReadyNAS Duo v2 Board setup for drivers not already
* converted to DT.
*
* Copyright (C) 2013, Arnaud EBALARD <arno@natisbad.org>
*
* 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 <mach/kirkwood.h>
#include "common.h"
static struct mv643xx_eth_platform_data netgear_readynas_ge00_data = {
.phy_addr = MV643XX_ETH_PHY_ADDR(0),
};
void __init netgear_readynas_init(void)
{
kirkwood_ge00_init(&netgear_readynas_ge00_data);
kirkwood_pcie_init(KW_PCIE0);
}
...@@ -141,6 +141,12 @@ void openblocks_a6_init(void); ...@@ -141,6 +141,12 @@ void openblocks_a6_init(void);
static inline void openblocks_a6_init(void) {}; static inline void openblocks_a6_init(void) {};
#endif #endif
#ifdef CONFIG_MACH_READYNAS_DT
void netgear_readynas_init(void);
#else
static inline void netgear_readynas_init(void) {};
#endif
#ifdef CONFIG_MACH_TOPKICK_DT #ifdef CONFIG_MACH_TOPKICK_DT
void usi_topkick_init(void); void usi_topkick_init(void);
#else #else
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment