arm: orion5x: convert 'LaCie Ethernet Disk mini v2' to Device Tree
authorThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Fri, 16 Nov 2012 15:39:46 +0000 (16:39 +0100)
committerJason Cooper <jason@lakedaemon.net>
Wed, 21 Nov 2012 21:00:51 +0000 (21:00 +0000)
This commit converts the 'LaCie Ethernet Disk mini v2' board to the
Device Tree. All devices that have existing Device Tree bindings are
converted over to the Device Tree, the other devices remain
instantiated in the old way, until the respective drivers get the
needed Device Tree bindings.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Tested by: Maxime Hadjinlian <mhadjinlian@lacie.com>
Acked-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: Jason Cooper <jason@lakedaemon.net>
arch/arm/boot/dts/Makefile
arch/arm/boot/dts/orion5x-lacie-ethernet-disk-mini-v2.dts [new file with mode: 0644]
arch/arm/mach-orion5x/Kconfig
arch/arm/mach-orion5x/Makefile
arch/arm/mach-orion5x/board-dt.c
arch/arm/mach-orion5x/common.h
arch/arm/mach-orion5x/edmini_v2-setup.c

index eef6545f65eed6ad5af6820b7c7c86cf0efe2693..f1ba69c2496a27d7a225770835a6ea9115dac626 100644 (file)
@@ -81,6 +81,7 @@ dtb-$(CONFIG_ARCH_OMAP2PLUS) += omap2420-h4.dtb \
        omap5-evm.dtb \
        am335x-evm.dtb \
        am335x-bone.dtb
+dtb-$(CONFIG_ARCH_ORION5X) += orion5x-lacie-ethernet-disk-mini-v2.dtb
 dtb-$(CONFIG_ARCH_PRIMA2) += prima2-evb.dtb
 dtb-$(CONFIG_ARCH_U8500) += snowball.dtb
 dtb-$(CONFIG_ARCH_SHMOBILE) += emev2-kzm9d.dtb \
diff --git a/arch/arm/boot/dts/orion5x-lacie-ethernet-disk-mini-v2.dts b/arch/arm/boot/dts/orion5x-lacie-ethernet-disk-mini-v2.dts
new file mode 100644 (file)
index 0000000..5a3a58b
--- /dev/null
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2012 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/ "orion5x.dtsi"
+
+/ {
+       model = "LaCie Ethernet Disk mini V2";
+       compatible = "lacie,ethernet-disk-mini-v2", "marvell-orion5x-88f5182", "marvell,orion5x";
+
+       memory {
+               reg = <0x00000000 0x4000000>; /* 64 MB */
+       };
+
+       chosen {
+               bootargs = "console=ttyS0,115200n8 earlyprintk";
+       };
+
+       ocp@f1000000 {
+               serial@12000 {
+                       clock-frequency = <166666667>;
+                       status = "okay";
+               };
+
+               sata@80000 {
+                       status = "okay";
+                       nr-ports = <2>;
+               };
+       };
+
+       gpio_keys {
+               compatible = "gpio-keys";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               button@1 {
+                       label = "Power-on Switch";
+                       linux,code = <116>; /* KEY_POWER */
+                       gpios = <&gpio0 18 0>;
+               };
+       };
+
+       gpio_leds {
+               compatible = "gpio-leds";
+
+               led@1 {
+                       label = "power:blue";
+                       gpios = <&gpio0 16 1>;
+               };
+       };
+};
index 0910c3bd0c996c9df53bef3386d1988e2979d855..2cb2f06c20f59130e2b34fc793c67b2a65be3043 100644 (file)
@@ -103,12 +103,13 @@ config MACH_MV2120
          Say 'Y' here if you want your kernel to support the
          HP Media Vault mv2120 or mv5100.
 
-config MACH_EDMINI_V2
-       bool "LaCie Ethernet Disk mini V2"
+config MACH_EDMINI_V2_DT
+       bool "LaCie Ethernet Disk mini V2 (Flattened Device Tree)"
        select I2C_BOARDINFO
+       select ARCH_ORION5X_DT
        help
          Say 'Y' here if you want your kernel to support the
-         LaCie Ethernet Disk mini V2.
+         LaCie Ethernet Disk mini V2 (Flattened Device Tree).
 
 config MACH_D2NET
        bool "LaCie d2 Network"
index 843e6deb66d049c13775b4082c11d8abd7b6b5f3..9e809a7c05c0c607b00433fc6a95047ac1365e7c 100644 (file)
@@ -12,7 +12,6 @@ obj-$(CONFIG_MACH_TS409)      += ts409-setup.o tsx09-common.o
 obj-$(CONFIG_MACH_WRT350N_V2)  += wrt350n-v2-setup.o
 obj-$(CONFIG_MACH_TS78XX)      += ts78xx-setup.o
 obj-$(CONFIG_MACH_MV2120)      += mv2120-setup.o
-obj-$(CONFIG_MACH_EDMINI_V2)   += edmini_v2-setup.o
 obj-$(CONFIG_MACH_D2NET)       += d2net-setup.o
 obj-$(CONFIG_MACH_BIGDISK)     += d2net-setup.o
 obj-$(CONFIG_MACH_NET2BIG)     += net2big-setup.o
@@ -24,3 +23,4 @@ obj-$(CONFIG_MACH_RD88F6183AP_GE)     += rd88f6183ap-ge-setup.o
 obj-$(CONFIG_MACH_LINKSTATION_LSCHL)   += ls-chl-setup.o
 
 obj-$(CONFIG_ARCH_ORION5X_DT)          += board-dt.o
+obj-$(CONFIG_MACH_EDMINI_V2_DT)        += edmini_v2-setup.o
index a26397f58f1f85817e9bb7ec868cdb96fa917aba..32e5c211a89b8790ff3255e381b54d8615a691ba 100644 (file)
@@ -55,6 +55,9 @@ static void __init orion5x_dt_init(void)
                disable_hlt();
        }
 
+       if (of_machine_is_compatible("lacie,ethernet-disk-mini-v2"))
+               edmini_v2_init();
+
        of_platform_populate(NULL, of_default_bus_match_table,
                             orion5x_auxdata_lookup, NULL);
 }
index 2033b79089a7a920596a7fb51ea7de45d8c730fd..7db5cdd9c4b791812c0a717ef921d7678602ae20 100644 (file)
@@ -56,6 +56,13 @@ int orion5x_pci_sys_setup(int nr, struct pci_sys_data *sys);
 struct pci_bus *orion5x_pci_sys_scan_bus(int nr, struct pci_sys_data *sys);
 int orion5x_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin);
 
+/* board init functions for boards not fully converted to fdt */
+#ifdef CONFIG_MACH_EDMINI_V2_DT
+void edmini_v2_init(void);
+#else
+static inline void edmini_v2_init(void) {};
+#endif
+
 struct meminfo;
 struct tag;
 extern void __init tag_fixup_mem32(struct tag *, char **, struct meminfo *);
index 355e962137c7cbee346142f7a66756c063bd4f19..d675e727803d214f49320db72f5b059e54d076b2 100644 (file)
@@ -114,69 +114,6 @@ static struct i2c_board_info __initdata edmini_v2_i2c_rtc = {
        .irq = 0,
 };
 
-/*****************************************************************************
- * Sata
- ****************************************************************************/
-
-static struct mv_sata_platform_data edmini_v2_sata_data = {
-       .n_ports        = 2,
-};
-
-/*****************************************************************************
- * GPIO LED (simple - doesn't use hardware blinking support)
- ****************************************************************************/
-
-#define EDMINI_V2_GPIO_LED_POWER       16
-
-static struct gpio_led edmini_v2_leds[] = {
-       {
-               .name = "power:blue",
-               .gpio = EDMINI_V2_GPIO_LED_POWER,
-               .active_low = 1,
-       },
-};
-
-static struct gpio_led_platform_data edmini_v2_led_data = {
-       .num_leds = ARRAY_SIZE(edmini_v2_leds),
-       .leds = edmini_v2_leds,
-};
-
-static struct platform_device edmini_v2_gpio_leds = {
-       .name           = "leds-gpio",
-       .id             = -1,
-       .dev            = {
-               .platform_data  = &edmini_v2_led_data,
-       },
-};
-
-/****************************************************************************
- * GPIO key
- ****************************************************************************/
-
-#define EDMINI_V2_GPIO_KEY_POWER       18
-
-static struct gpio_keys_button edmini_v2_buttons[] = {
-       {
-               .code           = KEY_POWER,
-               .gpio           = EDMINI_V2_GPIO_KEY_POWER,
-               .desc           = "Power Button",
-               .active_low     = 0,
-       },
-};
-
-static struct gpio_keys_platform_data edmini_v2_button_data = {
-       .buttons        = edmini_v2_buttons,
-       .nbuttons       = ARRAY_SIZE(edmini_v2_buttons),
-};
-
-static struct platform_device edmini_v2_gpio_buttons = {
-       .name           = "gpio-keys",
-       .id             = -1,
-       .dev            = {
-               .platform_data  = &edmini_v2_button_data,
-       },
-};
-
 /*****************************************************************************
  * General Setup
  ****************************************************************************/
@@ -207,13 +144,8 @@ static unsigned int edminiv2_mpp_modes[] __initdata = {
        0,
 };
 
-static void __init edmini_v2_init(void)
+void __init edmini_v2_init(void)
 {
-       /*
-        * Setup basic Orion functions. Need to be called early.
-        */
-       orion5x_init();
-
        orion5x_mpp_conf(edminiv2_mpp_modes);
 
        /*
@@ -221,15 +153,10 @@ static void __init edmini_v2_init(void)
         */
        orion5x_ehci0_init();
        orion5x_eth_init(&edmini_v2_eth_data);
-       orion5x_i2c_init();
-       orion5x_sata_init(&edmini_v2_sata_data);
-       orion5x_uart0_init();
 
        orion5x_setup_dev_boot_win(EDMINI_V2_NOR_BOOT_BASE,
                                EDMINI_V2_NOR_BOOT_SIZE);
        platform_device_register(&edmini_v2_nor_flash);
-       platform_device_register(&edmini_v2_gpio_leds);
-       platform_device_register(&edmini_v2_gpio_buttons);
 
        pr_notice("edmini_v2: USB device port, flash write and power-off "
                  "are not yet supported.\n");
@@ -247,16 +174,3 @@ static void __init edmini_v2_init(void)
 
        i2c_register_board_info(0, &edmini_v2_i2c_rtc, 1);
 }
-
-/* Warning: LaCie use a wrong mach-type (0x20e=526) in their bootloader. */
-MACHINE_START(EDMINI_V2, "LaCie Ethernet Disk mini V2")
-       /* Maintainer: Christopher Moore <moore@free.fr> */
-       .atag_offset    = 0x100,
-       .init_machine   = edmini_v2_init,
-       .map_io         = orion5x_map_io,
-       .init_early     = orion5x_init_early,
-       .init_irq       = orion5x_init_irq,
-       .timer          = &orion5x_timer,
-       .fixup          = tag_fixup_mem32,
-       .restart        = orion5x_restart,
-MACHINE_END