Skip to content

Commit

Permalink
ARM: kirkwood: convert the mv88f6281gtw_ge board to DT
Browse files Browse the repository at this point in the history
This commit converts the mv88f6281gtw_ge Kirkwood board to use a
Device Tree representation, except for the Ethernet devices and the
DSA switch. Even though the mv643xx_eth driver has a DT binding,
converting this board to use it is for now left on the side because it
doesn't use a simple PHY, but a DSA switch instead.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Jason Cooper <jason@lakedaemon.net>
  • Loading branch information
Thomas Petazzoni authored and Jason Cooper committed Aug 6, 2013
1 parent 0230bd4 commit 37ae08c
Show file tree
Hide file tree
Showing 8 changed files with 193 additions and 180 deletions.
1 change: 1 addition & 0 deletions arch/arm/boot/dts/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@ dtb-$(CONFIG_ARCH_KIRKWOOD) += kirkwood-cloudbox.dtb \
kirkwood-lschlv2.dtb \
kirkwood-lsxhl.dtb \
kirkwood-mplcec4.dtb \
kirkwood-mv88f6281gtw-ge.dtb \
kirkwood-netgear_readynas_duo_v2.dtb \
kirkwood-ns2.dtb \
kirkwood-ns2lite.dtb \
Expand Down
125 changes: 125 additions & 0 deletions arch/arm/boot/dts/kirkwood-mv88f6281gtw-ge.dts
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
/*
* Marvell 88F6281 GTW GE Board
*
* Lennert Buytenhek <buytenh@marvell.com>
* Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
*
* This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any
* warranty of any kind, whether express or implied.
*
* This file contains the definitions that are common between the 6281
* and 6282 variants of the Marvell Kirkwood Development Board.
*/

/dts-v1/;

/include/ "kirkwood.dtsi"
/include/ "kirkwood-6281.dtsi"

/ {
model = "Marvell 88F6281 GTW GE Board";
compatible = "marvell,mv88f6281gtw-ge", "marvell,kirkwood-88f6281", "marvell,kirkwood";

memory {
device_type = "memory";
reg = <0x00000000 0x20000000>; /* 512 MB */
};

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

ocp@f1000000 {
pinctrl@10000 {
pmx_usb_led: pmx-usb-led {
marvell,pins = "mpp12";
marvell,function = "gpo";
};

pmx_leds: pmx-leds {
marvell,pins = "mpp20", "mpp21";
marvell,function = "gpio";
};

pmx_keys: pmx-keys {
marvell,pins = "mpp46", "mpp47";
marvell,function = "gpio";
};
};

spi@10600 {
pinctrl-0 = <&pmx_spi>;
pinctrl-names = "default";
status = "okay";

flash@0 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "mx25l12805d";
reg = <0>;
spi-max-frequency = <50000000>;
mode = <0>;
};
};

serial@12000 {
pinctrl-0 = <&pmx_uart0>;
pinctrl-names = "default";
clock-frequency = <200000000>;
status = "ok";
};

ehci@50000 {
status = "okay";
};

pcie-controller {
status = "okay";

pcie@1,0 {
status = "okay";
};
};
};

gpio-leds {
compatible = "gpio-leds";
pinctrl-0 = <&pmx_leds &pmx_usb_led>;
pinctrl-names = "default";

green-status {
label = "gtw:green:Status";
gpios = <&gpio0 20 0>;
};

red-status {
label = "gtw:red:Status";
gpios = <&gpio0 21 0>;
};

green-usb {
label = "gtw:green:USB";
gpios = <&gpio0 12 0>;
};
};

gpio_keys {
compatible = "gpio-keys";
#address-cells = <1>;
#size-cells = <0>;
pinctrl-0 = <&pmx_keys>;
pinctrl-names = "default";

button@1 {
label = "SWR Button";
linux,code = <0x198>; /* KEY_RESTART */
gpios = <&gpio1 15 1>;
};
button@2 {
label = "WPS Button";
linux,code = <0x211>; /* KEY_WPS_BUTTON */
gpios = <&gpio1 14 1>;
};
};
};
14 changes: 7 additions & 7 deletions arch/arm/mach-kirkwood/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,6 @@ config MACH_D2NET_V2
Say 'Y' here if you want your kernel to support the
LaCie d2 Network v2 NAS.

config MACH_MV88F6281GTW_GE
bool "Marvell 88F6281 GTW GE Board"
select KIRKWOOD_LEGACY
help
Say 'Y' here if you want your kernel to support the
Marvell 88F6281 GTW GE Board.

config MACH_NET2BIG_V2
bool "LaCie 2Big Network v2 NAS Board"
select KIRKWOOD_LEGACY
Expand Down Expand Up @@ -120,6 +113,13 @@ config MACH_DLINK_KIRKWOOD_DT
Kirkwood-based D-Link NASes such as DNS-320 & DNS-325,
using Flattened Device Tree.

config MACH_MV88F6281GTW_GE_DT
bool "Marvell 88F6281 GTW GE Board (Flattened Device Tree)"
select ARCH_KIRKWOOD_DT
help
Say 'Y' here if you want your kernel to support the
Marvell 88F6281 GTW GE Board (Flattened Device Tree).

endmenu

endif
2 changes: 1 addition & 1 deletion arch/arm/mach-kirkwood/Makefile
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
obj-y += common.o pcie.o
obj-$(CONFIG_KIRKWOOD_LEGACY) += irq.o mpp.o
obj-$(CONFIG_MACH_D2NET_V2) += d2net_v2-setup.o lacie_v2-common.o
obj-$(CONFIG_MACH_MV88F6281GTW_GE) += mv88f6281gtw_ge-setup.o
obj-$(CONFIG_MACH_NET2BIG_V2) += netxbig_v2-setup.o lacie_v2-common.o
obj-$(CONFIG_MACH_NET5BIG_V2) += netxbig_v2-setup.o lacie_v2-common.o
obj-$(CONFIG_MACH_OPENRD) += openrd-setup.o
Expand All @@ -13,3 +12,4 @@ obj-$(CONFIG_MACH_TS41X) += ts41x-setup.o tsx1x-common.o

obj-$(CONFIG_ARCH_KIRKWOOD_DT) += board-dt.o
obj-$(CONFIG_MACH_DLINK_KIRKWOOD_DT) += board-dnskw.o
obj-$(CONFIG_MACH_MV88F6281GTW_GE_DT) += board-mv88f6281gtw_ge.o
3 changes: 3 additions & 0 deletions arch/arm/mach-kirkwood/board-dt.c
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,9 @@ static void __init kirkwood_dt_init(void)
if (of_machine_is_compatible("dlink,dns-kirkwood"))
dnskw_init();

if (of_machine_is_compatible("marvell,mv88f6281gtw-ge"))
mv88f6281gtw_ge_init();

of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
}

Expand Down
50 changes: 50 additions & 0 deletions arch/arm/mach-kirkwood/board-mv88f6281gtw_ge.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
/*
* arch/arm/mach-kirkwood/board-mv88f6281gtw_ge.c
*
* Marvell 88F6281 GTW GE Board Setup
*
* This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any
* warranty of any kind, whether express or implied.
*/

#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/platform_device.h>
#include <linux/irq.h>
#include <linux/timer.h>
#include <linux/mv643xx_eth.h>
#include <linux/ethtool.h>
#include <linux/gpio.h>
#include <net/dsa.h>
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
#include <asm/mach/pci.h>
#include <mach/kirkwood.h>
#include "common.h"

static struct mv643xx_eth_platform_data mv88f6281gtw_ge_ge00_data = {
.phy_addr = MV643XX_ETH_PHY_NONE,
.speed = SPEED_1000,
.duplex = DUPLEX_FULL,
};

static struct dsa_chip_data mv88f6281gtw_ge_switch_chip_data = {
.port_names[0] = "lan1",
.port_names[1] = "lan2",
.port_names[2] = "lan3",
.port_names[3] = "lan4",
.port_names[4] = "wan",
.port_names[5] = "cpu",
};

static struct dsa_platform_data mv88f6281gtw_ge_switch_plat_data = {
.nr_chips = 1,
.chip = &mv88f6281gtw_ge_switch_chip_data,
};

void __init mv88f6281gtw_ge_init(void)
{
kirkwood_ge00_init(&mv88f6281gtw_ge_ge00_data);
kirkwood_ge00_switch_init(&mv88f6281gtw_ge_switch_plat_data, NO_IRQ);
}
6 changes: 6 additions & 0 deletions arch/arm/mach-kirkwood/common.h
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,12 @@ void dnskw_init(void);
static inline void dnskw_init(void) {};
#endif

#ifdef CONFIG_MACH_MV88F6281GTW_GE_DT
void mv88f6281gtw_ge_init(void);
#else
static inline void mv88f6281gtw_ge_init(void) {};
#endif

/* early init functions not converted to fdt yet */
char *kirkwood_id(void);
void kirkwood_l2_init(void);
Expand Down
Loading

0 comments on commit 37ae08c

Please sign in to comment.