]> Pileus Git - ~andy/linux/commitdiff
arm: kirkwood: convert db-88f6281/db-88f6282 to the Device Tree
authorThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Wed, 15 May 2013 13:37:01 +0000 (15:37 +0200)
committerJason Cooper <jason@lakedaemon.net>
Mon, 27 May 2013 16:02:13 +0000 (16:02 +0000)
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>
Signed-off-by: Jason Cooper <jason@lakedaemon.net>
arch/arm/boot/dts/Makefile
arch/arm/boot/dts/kirkwood-db-88f6281.dts [new file with mode: 0644]
arch/arm/boot/dts/kirkwood-db-88f6282.dts [new file with mode: 0644]
arch/arm/boot/dts/kirkwood-db.dtsi [new file with mode: 0644]
arch/arm/mach-kirkwood/Kconfig
arch/arm/mach-kirkwood/Makefile
arch/arm/mach-kirkwood/board-db88f628x-bp.c [new file with mode: 0644]
arch/arm/mach-kirkwood/board-dt.c
arch/arm/mach-kirkwood/common.h
arch/arm/mach-kirkwood/db88f6281-bp-setup.c [deleted file]

index b9f7121e6ecf02c561e5b1b10308659aad23fb28..cc53176056d63c04a7c9b96bd29f0df765ee11d2 100644 (file)
@@ -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 (file)
index 0000000..9d777ed
--- /dev/null
@@ -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 (file)
index 0000000..f4c8528
--- /dev/null
@@ -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 (file)
index 0000000..c87cfb8
--- /dev/null
@@ -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";
+                       };
+               };
+       };
+};
index 267ca95d4e78f8d6f4d9a132228fdb3e4e503a0b..b56bd3d7ece35ad56f5c2ae6ce59c76901220d4f 100644 (file)
@@ -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
index 794366e7f72243c3a1a09a09fb05b7788893d87a..2fdc3a7ad226fa91e270bc97d6ec321f06107a90 100644 (file)
@@ -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 (file)
index 0000000..2f574bc
--- /dev/null
@@ -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);
+}
index e9647b80cb590d9d0131b9542a5e476da9cad459..f5aed1f4b080f8b40c63babcb8d31fef0e01e3b3 100644 (file)
@@ -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",
index 21da3b1ebd7bf843c2b9b1e11a8fd025b5e30287..cbbc0b80d4a1c4056414740079fa893eb010e2b1 100644 (file)
@@ -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 (file)
index 5a369fe..0000000
+++ /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