ARM: kirkwood: convert the mv88f6281gtw_ge board to DT
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>
This commit is contained in:
Родитель
0230bd441e
Коммит
37ae08c939
|
@ -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 \
|
||||
|
|
|
@ -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>;
|
||||
};
|
||||
};
|
||||
};
|
|
@ -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
|
||||
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
|
@ -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);
|
||||
|
|
|
@ -1,172 +0,0 @@
|
|||
/*
|
||||
* arch/arm/mach-kirkwood/mv88f6281gtw_ge-setup.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/pci.h>
|
||||
#include <linux/irq.h>
|
||||
#include <linux/mtd/physmap.h>
|
||||
#include <linux/timer.h>
|
||||
#include <linux/mv643xx_eth.h>
|
||||
#include <linux/ethtool.h>
|
||||
#include <linux/gpio.h>
|
||||
#include <linux/leds.h>
|
||||
#include <linux/input.h>
|
||||
#include <linux/gpio_keys.h>
|
||||
#include <linux/spi/flash.h>
|
||||
#include <linux/spi/spi.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"
|
||||
#include "mpp.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,
|
||||
};
|
||||
|
||||
static const struct flash_platform_data mv88f6281gtw_ge_spi_slave_data = {
|
||||
.type = "mx25l12805d",
|
||||
};
|
||||
|
||||
static struct spi_board_info __initdata mv88f6281gtw_ge_spi_slave_info[] = {
|
||||
{
|
||||
.modalias = "m25p80",
|
||||
.platform_data = &mv88f6281gtw_ge_spi_slave_data,
|
||||
.irq = -1,
|
||||
.max_speed_hz = 50000000,
|
||||
.bus_num = 0,
|
||||
.chip_select = 0,
|
||||
},
|
||||
};
|
||||
|
||||
static struct gpio_keys_button mv88f6281gtw_ge_button_pins[] = {
|
||||
{
|
||||
.code = KEY_RESTART,
|
||||
.gpio = 47,
|
||||
.desc = "SWR Button",
|
||||
.active_low = 1,
|
||||
}, {
|
||||
.code = KEY_WPS_BUTTON,
|
||||
.gpio = 46,
|
||||
.desc = "WPS Button",
|
||||
.active_low = 1,
|
||||
},
|
||||
};
|
||||
|
||||
static struct gpio_keys_platform_data mv88f6281gtw_ge_button_data = {
|
||||
.buttons = mv88f6281gtw_ge_button_pins,
|
||||
.nbuttons = ARRAY_SIZE(mv88f6281gtw_ge_button_pins),
|
||||
};
|
||||
|
||||
static struct platform_device mv88f6281gtw_ge_buttons = {
|
||||
.name = "gpio-keys",
|
||||
.id = -1,
|
||||
.num_resources = 0,
|
||||
.dev = {
|
||||
.platform_data = &mv88f6281gtw_ge_button_data,
|
||||
},
|
||||
};
|
||||
|
||||
static struct gpio_led mv88f6281gtw_ge_led_pins[] = {
|
||||
{
|
||||
.name = "gtw:green:Status",
|
||||
.gpio = 20,
|
||||
.active_low = 0,
|
||||
}, {
|
||||
.name = "gtw:red:Status",
|
||||
.gpio = 21,
|
||||
.active_low = 0,
|
||||
}, {
|
||||
.name = "gtw:green:USB",
|
||||
.gpio = 12,
|
||||
.active_low = 0,
|
||||
},
|
||||
};
|
||||
|
||||
static struct gpio_led_platform_data mv88f6281gtw_ge_led_data = {
|
||||
.leds = mv88f6281gtw_ge_led_pins,
|
||||
.num_leds = ARRAY_SIZE(mv88f6281gtw_ge_led_pins),
|
||||
};
|
||||
|
||||
static struct platform_device mv88f6281gtw_ge_leds = {
|
||||
.name = "leds-gpio",
|
||||
.id = -1,
|
||||
.dev = {
|
||||
.platform_data = &mv88f6281gtw_ge_led_data,
|
||||
},
|
||||
};
|
||||
|
||||
static unsigned int mv88f6281gtw_ge_mpp_config[] __initdata = {
|
||||
MPP12_GPO, /* Status#_USB pin */
|
||||
MPP20_GPIO, /* Status#_GLED pin */
|
||||
MPP21_GPIO, /* Status#_RLED pin */
|
||||
MPP46_GPIO, /* WPS_Switch pin */
|
||||
MPP47_GPIO, /* SW_Init pin */
|
||||
0
|
||||
};
|
||||
|
||||
static void __init mv88f6281gtw_ge_init(void)
|
||||
{
|
||||
/*
|
||||
* Basic setup. Needs to be called early.
|
||||
*/
|
||||
kirkwood_init();
|
||||
kirkwood_mpp_conf(mv88f6281gtw_ge_mpp_config);
|
||||
|
||||
kirkwood_ehci_init();
|
||||
kirkwood_ge00_init(&mv88f6281gtw_ge_ge00_data);
|
||||
kirkwood_ge00_switch_init(&mv88f6281gtw_ge_switch_plat_data, NO_IRQ);
|
||||
spi_register_board_info(mv88f6281gtw_ge_spi_slave_info,
|
||||
ARRAY_SIZE(mv88f6281gtw_ge_spi_slave_info));
|
||||
kirkwood_spi_init();
|
||||
kirkwood_uart0_init();
|
||||
platform_device_register(&mv88f6281gtw_ge_leds);
|
||||
platform_device_register(&mv88f6281gtw_ge_buttons);
|
||||
}
|
||||
|
||||
static int __init mv88f6281gtw_ge_pci_init(void)
|
||||
{
|
||||
if (machine_is_mv88f6281gtw_ge())
|
||||
kirkwood_pcie_init(KW_PCIE0);
|
||||
|
||||
return 0;
|
||||
}
|
||||
subsys_initcall(mv88f6281gtw_ge_pci_init);
|
||||
|
||||
MACHINE_START(MV88F6281GTW_GE, "Marvell 88F6281 GTW GE Board")
|
||||
/* Maintainer: Lennert Buytenhek <buytenh@marvell.com> */
|
||||
.atag_offset = 0x100,
|
||||
.init_machine = mv88f6281gtw_ge_init,
|
||||
.map_io = kirkwood_map_io,
|
||||
.init_early = kirkwood_init_early,
|
||||
.init_irq = kirkwood_init_irq,
|
||||
.init_time = kirkwood_timer_init,
|
||||
.restart = kirkwood_restart,
|
||||
MACHINE_END
|
Загрузка…
Ссылка в новой задаче