diff options
Diffstat (limited to 'target/linux/kirkwood/patches-3.10/0016-arm-kirkwood-convert-db-88f6281-db-88f6282-to-the-De.patch')
-rw-r--r-- | target/linux/kirkwood/patches-3.10/0016-arm-kirkwood-convert-db-88f6281-db-88f6282-to-the-De.patch | 462 |
1 files changed, 462 insertions, 0 deletions
diff --git a/target/linux/kirkwood/patches-3.10/0016-arm-kirkwood-convert-db-88f6281-db-88f6282-to-the-De.patch b/target/linux/kirkwood/patches-3.10/0016-arm-kirkwood-convert-db-88f6281-db-88f6282-to-the-De.patch new file mode 100644 index 0000000000..a86c071790 --- /dev/null +++ b/target/linux/kirkwood/patches-3.10/0016-arm-kirkwood-convert-db-88f6281-db-88f6282-to-the-De.patch @@ -0,0 +1,462 @@ +From 32f9dd19f7c859205440a8734cb6ab1295c78015 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> +Date: Wed, 27 Mar 2013 18:56:40 +0100 +Subject: [PATCH 16/29] arm: kirkwood: convert db-88f6281/db-88f6282 to the + Device Tree + +This commit converts the Marvell DB-88F6281/DB-88F6282 board to the +Device Tree. In fact, the code was supporting two different boards: +one with the 6281 SoC variant, and one with the 6282 SoC variant. The +difference between the two being that the 6281 has one PCIe interface, +and the 6282 has two PCIe interfaces. + +In order to handle that with the Device Tree, we create a +'kirkwood-db.dtsi' file that contains the definitions common to both +boards, and 'kirkwood-db-88f6281.dts' and 'kirkwood-db-88f6282.dts' +for the definitions specific to each board. This is similar to what is +done for the QNAP TS219 Kirkwood platform. + +We have kept one single Kconfig option, just like it was before. + +Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> +--- + arch/arm/boot/dts/Makefile | 2 + + arch/arm/boot/dts/kirkwood-db-88f6281.dts | 30 ++++++++ + arch/arm/boot/dts/kirkwood-db-88f6282.dts | 34 +++++++++ + arch/arm/boot/dts/kirkwood-db.dtsi | 89 +++++++++++++++++++++++ + arch/arm/mach-kirkwood/Kconfig | 13 ++-- + arch/arm/mach-kirkwood/Makefile | 2 +- + arch/arm/mach-kirkwood/board-db88f628x-bp.c | 24 +++++++ + arch/arm/mach-kirkwood/board-dt.c | 6 ++ + arch/arm/mach-kirkwood/common.h | 6 ++ + arch/arm/mach-kirkwood/db88f6281-bp-setup.c | 108 ---------------------------- + 10 files changed, 199 insertions(+), 115 deletions(-) + create mode 100644 arch/arm/boot/dts/kirkwood-db-88f6281.dts + create mode 100644 arch/arm/boot/dts/kirkwood-db-88f6282.dts + create mode 100644 arch/arm/boot/dts/kirkwood-db.dtsi + create mode 100644 arch/arm/mach-kirkwood/board-db88f628x-bp.c + delete mode 100644 arch/arm/mach-kirkwood/db88f6281-bp-setup.c + +diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile +index f0895c5..3844ef2 100644 +--- a/arch/arm/boot/dts/Makefile ++++ b/arch/arm/boot/dts/Makefile +@@ -64,6 +64,8 @@ dtb-$(CONFIG_ARCH_INTEGRATOR) += integratorap.dtb \ + integratorcp.dtb + dtb-$(CONFIG_ARCH_LPC32XX) += ea3250.dtb phy3250.dtb + dtb-$(CONFIG_ARCH_KIRKWOOD) += kirkwood-cloudbox.dtb \ ++ kirkwood-db-88f6281.dtb \ ++ kirkwood-db-88f6282.dtb \ + kirkwood-dns320.dtb \ + kirkwood-dns325.dtb \ + kirkwood-dockstar.dtb \ +diff --git a/arch/arm/boot/dts/kirkwood-db-88f6281.dts b/arch/arm/boot/dts/kirkwood-db-88f6281.dts +new file mode 100644 +index 0000000..9d777ed +--- /dev/null ++++ b/arch/arm/boot/dts/kirkwood-db-88f6281.dts +@@ -0,0 +1,30 @@ ++/* ++ * Marvell DB-88F6281-BP Development Board Setup ++ * ++ * Saeed Bishara <saeed@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. ++ */ ++ ++/dts-v1/; ++ ++/include/ "kirkwood-db.dtsi" ++/include/ "kirkwood-6281.dtsi" ++ ++/ { ++ model = "Marvell DB-88F6281-BP Development Board"; ++ compatible = "marvell,db-88f6281-bp", "marvell,kirkwood-88f6281", "marvell,kirkwood"; ++ ++ ocp@f1000000 { ++ pcie-controller { ++ status = "okay"; ++ ++ pcie@1,0 { ++ status = "okay"; ++ }; ++ }; ++ }; ++}; +diff --git a/arch/arm/boot/dts/kirkwood-db-88f6282.dts b/arch/arm/boot/dts/kirkwood-db-88f6282.dts +new file mode 100644 +index 0000000..f4c8528 +--- /dev/null ++++ b/arch/arm/boot/dts/kirkwood-db-88f6282.dts +@@ -0,0 +1,34 @@ ++/* ++ * Marvell DB-88F6282-BP Development Board Setup ++ * ++ * Saeed Bishara <saeed@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. ++ */ ++ ++/dts-v1/; ++ ++/include/ "kirkwood-db.dtsi" ++/include/ "kirkwood-6282.dtsi" ++ ++/ { ++ model = "Marvell DB-88F6282-BP Development Board"; ++ compatible = "marvell,db-88f6282-bp", "marvell,kirkwood-88f6282", "marvell,kirkwood"; ++ ++ ocp@f1000000 { ++ pcie-controller { ++ status = "okay"; ++ ++ pcie@1,0 { ++ status = "okay"; ++ }; ++ ++ pcie@2,0 { ++ status = "okay"; ++ }; ++ }; ++ }; ++}; +diff --git a/arch/arm/boot/dts/kirkwood-db.dtsi b/arch/arm/boot/dts/kirkwood-db.dtsi +new file mode 100644 +index 0000000..c87cfb8 +--- /dev/null ++++ b/arch/arm/boot/dts/kirkwood-db.dtsi +@@ -0,0 +1,89 @@ ++/* ++ * Marvell DB-{88F6281,88F6282}-BP Development Board Setup ++ * ++ * Saeed Bishara <saeed@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. ++ */ ++ ++/include/ "kirkwood.dtsi" ++ ++/ { ++ memory { ++ device_type = "memory"; ++ reg = <0x00000000 0x20000000>; /* 512 MB */ ++ }; ++ ++ chosen { ++ bootargs = "console=ttyS0,115200n8 earlyprintk"; ++ }; ++ ++ ocp@f1000000 { ++ pinctrl@10000 { ++ pmx_sdio_gpios: pmx-sdio-gpios { ++ marvell,pins = "mpp37", "mpp38"; ++ marvell,function = "gpio"; ++ }; ++ }; ++ ++ serial@12000 { ++ pinctrl-0 = <&pmx_uart0>; ++ pinctrl-names = "default"; ++ clock-frequency = <200000000>; ++ status = "ok"; ++ }; ++ ++ nand@3000000 { ++ pinctrl-0 = <&pmx_nand>; ++ pinctrl-names = "default"; ++ chip-delay = <25>; ++ status = "okay"; ++ ++ partition@0 { ++ label = "uboot"; ++ reg = <0x0 0x100000>; ++ }; ++ ++ partition@100000 { ++ label = "uImage"; ++ reg = <0x100000 0x400000>; ++ }; ++ ++ partition@500000 { ++ label = "root"; ++ reg = <0x500000 0x1fb00000>; ++ }; ++ }; ++ ++ sata@80000 { ++ nr-ports = <2>; ++ status = "okay"; ++ }; ++ ++ ehci@50000 { ++ status = "okay"; ++ }; ++ ++ mvsdio@90000 { ++ pinctrl-0 = <&pmx_sdio_gpios>; ++ pinctrl-names = "default"; ++ wp-gpios = <&gpio1 5 0>; ++ cd-gpios = <&gpio1 6 0>; ++ status = "okay"; ++ }; ++ ++ pcie-controller { ++ status = "okay"; ++ ++ pcie@1,0 { ++ status = "okay"; ++ }; ++ }; ++ }; ++}; +diff --git a/arch/arm/mach-kirkwood/Kconfig b/arch/arm/mach-kirkwood/Kconfig +index 267ca95..b56bd3d 100644 +--- a/arch/arm/mach-kirkwood/Kconfig ++++ b/arch/arm/mach-kirkwood/Kconfig +@@ -8,12 +8,6 @@ config MACH_D2NET_V2 + Say 'Y' here if you want your kernel to support the + LaCie d2 Network v2 NAS. + +-config MACH_DB88F6281_BP +- bool "Marvell DB-88F6281-BP Development Board" +- help +- Say 'Y' here if you want your kernel to support the +- Marvell DB-88F6281-BP Development Board. +- + config MACH_DOCKSTAR + bool "Seagate FreeAgent DockStar" + help +@@ -153,6 +147,13 @@ config MACH_CLOUDBOX_DT + Say 'Y' here if you want your kernel to support the LaCie + CloudBox NAS, using Flattened Device Tree. + ++config MACH_DB88F628X_BP_DT ++ bool "Marvell DB-88F628x-BP Development Board (Flattened Device Tree)" ++ help ++ Say 'Y' here if you want your kernel to support the Marvell ++ DB-88F6281-BP and DB-88F6282-BP Development Board (Flattened ++ Device Tree). ++ + config MACH_DLINK_KIRKWOOD_DT + bool "D-Link Kirkwood-based NAS (Flattened Device Tree)" + select ARCH_KIRKWOOD_DT +diff --git a/arch/arm/mach-kirkwood/Makefile b/arch/arm/mach-kirkwood/Makefile +index 794366e..2fdc3a7 100644 +--- a/arch/arm/mach-kirkwood/Makefile ++++ b/arch/arm/mach-kirkwood/Makefile +@@ -1,7 +1,6 @@ + obj-y += common.o irq.o pcie.o mpp.o + + obj-$(CONFIG_MACH_D2NET_V2) += d2net_v2-setup.o lacie_v2-common.o +-obj-$(CONFIG_MACH_DB88F6281_BP) += db88f6281-bp-setup.o + obj-$(CONFIG_MACH_DOCKSTAR) += dockstar-setup.o + obj-$(CONFIG_MACH_ESATA_SHEEVAPLUG) += sheevaplug-setup.o + obj-$(CONFIG_MACH_GURUPLUG) += guruplug-setup.o +@@ -21,6 +20,7 @@ obj-$(CONFIG_MACH_TS41X) += ts41x-setup.o tsx1x-common.o + + obj-$(CONFIG_ARCH_KIRKWOOD_DT) += board-dt.o + obj-$(CONFIG_MACH_CLOUDBOX_DT) += board-ns2.o ++obj-$(CONFIG_MACH_DB88F628X_BP_DT) += board-db88f628x-bp.o + obj-$(CONFIG_MACH_DLINK_KIRKWOOD_DT) += board-dnskw.o + obj-$(CONFIG_MACH_DOCKSTAR_DT) += board-dockstar.o + obj-$(CONFIG_MACH_DREAMPLUG_DT) += board-dreamplug.o +diff --git a/arch/arm/mach-kirkwood/board-db88f628x-bp.c b/arch/arm/mach-kirkwood/board-db88f628x-bp.c +new file mode 100644 +index 0000000..2f574bc +--- /dev/null ++++ b/arch/arm/mach-kirkwood/board-db88f628x-bp.c +@@ -0,0 +1,24 @@ ++/* ++ * Saeed Bishara <saeed@marvell.com> ++ * ++ * Marvell DB-88F628{1,2}-BP Development 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/of.h> ++#include <linux/mv643xx_eth.h> ++#include "common.h" ++ ++static struct mv643xx_eth_platform_data db88f628x_ge00_data = { ++ .phy_addr = MV643XX_ETH_PHY_ADDR(8), ++}; ++ ++void __init db88f628x_init(void) ++{ ++ kirkwood_ge00_init(&db88f628x_ge00_data); ++} +diff --git a/arch/arm/mach-kirkwood/board-dt.c b/arch/arm/mach-kirkwood/board-dt.c +index e9647b8..f5aed1f 100644 +--- a/arch/arm/mach-kirkwood/board-dt.c ++++ b/arch/arm/mach-kirkwood/board-dt.c +@@ -147,6 +147,10 @@ static void __init kirkwood_dt_init(void) + of_machine_is_compatible("lacie,netspace_v2")) + ns2_init(); + ++ if (of_machine_is_compatible("marvell,db-88f6281-bp") || ++ of_machine_is_compatible("marvell,db-88f6282-bp")) ++ db88f628x_init(); ++ + if (of_machine_is_compatible("mpl,cec4")) + mplcec4_init(); + +@@ -181,6 +185,8 @@ static const char * const kirkwood_dt_board_compat[] = { + "lacie,netspace_max_v2", + "lacie,netspace_mini_v2", + "lacie,netspace_v2", ++ "marvell,db-88f6281-bp", ++ "marvell,db-88f6282-bp", + "mpl,cec4", + "netgear,readynas-duo-v2", + "plathome,openblocks-a6", +diff --git a/arch/arm/mach-kirkwood/common.h b/arch/arm/mach-kirkwood/common.h +index 21da3b1..cbbc0b8 100644 +--- a/arch/arm/mach-kirkwood/common.h ++++ b/arch/arm/mach-kirkwood/common.h +@@ -119,6 +119,12 @@ void km_kirkwood_init(void); + static inline void km_kirkwood_init(void) {}; + #endif + ++#ifdef CONFIG_MACH_DB88F628X_BP_DT ++void db88f628x_init(void); ++#else ++static inline void db88f628x_init(void) {}; ++#endif ++ + #ifdef CONFIG_MACH_MPLCEC4_DT + void mplcec4_init(void); + #else +diff --git a/arch/arm/mach-kirkwood/db88f6281-bp-setup.c b/arch/arm/mach-kirkwood/db88f6281-bp-setup.c +deleted file mode 100644 +index 5a369fe..0000000 +--- a/arch/arm/mach-kirkwood/db88f6281-bp-setup.c ++++ /dev/null +@@ -1,108 +0,0 @@ +-/* +- * arch/arm/mach-kirkwood/db88f6281-bp-setup.c +- * +- * Marvell DB-88F6281-BP Development 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/sizes.h> +-#include <linux/platform_device.h> +-#include <linux/mtd/partitions.h> +-#include <linux/ata_platform.h> +-#include <linux/mv643xx_eth.h> +-#include <asm/mach-types.h> +-#include <asm/mach/arch.h> +-#include <mach/kirkwood.h> +-#include <linux/platform_data/mmc-mvsdio.h> +-#include "common.h" +-#include "mpp.h" +- +-static struct mtd_partition db88f6281_nand_parts[] = { +- { +- .name = "u-boot", +- .offset = 0, +- .size = SZ_1M +- }, { +- .name = "uImage", +- .offset = MTDPART_OFS_NXTBLK, +- .size = SZ_4M +- }, { +- .name = "root", +- .offset = MTDPART_OFS_NXTBLK, +- .size = MTDPART_SIZ_FULL +- }, +-}; +- +-static struct mv643xx_eth_platform_data db88f6281_ge00_data = { +- .phy_addr = MV643XX_ETH_PHY_ADDR(8), +-}; +- +-static struct mv_sata_platform_data db88f6281_sata_data = { +- .n_ports = 2, +-}; +- +-static struct mvsdio_platform_data db88f6281_mvsdio_data = { +- .gpio_write_protect = 37, +- .gpio_card_detect = 38, +-}; +- +-static unsigned int db88f6281_mpp_config[] __initdata = { +- MPP0_NF_IO2, +- MPP1_NF_IO3, +- MPP2_NF_IO4, +- MPP3_NF_IO5, +- MPP4_NF_IO6, +- MPP5_NF_IO7, +- MPP18_NF_IO0, +- MPP19_NF_IO1, +- MPP37_GPIO, +- MPP38_GPIO, +- 0 +-}; +- +-static void __init db88f6281_init(void) +-{ +- /* +- * Basic setup. Needs to be called early. +- */ +- kirkwood_init(); +- kirkwood_mpp_conf(db88f6281_mpp_config); +- +- kirkwood_nand_init(ARRAY_AND_SIZE(db88f6281_nand_parts), 25); +- kirkwood_ehci_init(); +- kirkwood_ge00_init(&db88f6281_ge00_data); +- kirkwood_sata_init(&db88f6281_sata_data); +- kirkwood_uart0_init(); +- kirkwood_sdio_init(&db88f6281_mvsdio_data); +-} +- +-static int __init db88f6281_pci_init(void) +-{ +- if (machine_is_db88f6281_bp()) { +- u32 dev, rev; +- +- kirkwood_pcie_id(&dev, &rev); +- if (dev == MV88F6282_DEV_ID) +- kirkwood_pcie_init(KW_PCIE1 | KW_PCIE0); +- else +- kirkwood_pcie_init(KW_PCIE0); +- } +- return 0; +-} +-subsys_initcall(db88f6281_pci_init); +- +-MACHINE_START(DB88F6281_BP, "Marvell DB-88F6281-BP Development Board") +- /* Maintainer: Saeed Bishara <saeed@marvell.com> */ +- .atag_offset = 0x100, +- .init_machine = db88f6281_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 +-- +1.8.4.rc1 + |