[PATCH] arm: orion5x: convert Netgear WNR854T to device tree
Jason Cooper
jason at lakedaemon.net
Mon Nov 19 15:46:41 EST 2012
On Mon, Nov 19, 2012 at 05:27:31PM +0100, Imre Kaloz wrote:
> This commit converts the Netgear WNR854T to device tree
>
> Signed-off-by: Imre Kaloz <kaloz at openwrt.org>
> ---
> arch/arm/boot/dts/Makefile | 3 +-
> arch/arm/boot/dts/orion5x-netgear-wnr854t.dts | 83 +++++++++++++++++++++++++
> arch/arm/mach-orion5x/Kconfig | 7 +-
> arch/arm/mach-orion5x/Makefile | 2 +-
> arch/arm/mach-orion5x/board-dt.c | 3 +
> arch/arm/mach-orion5x/common.h | 5 ++
> arch/arm/mach-orion5x/wnr854t-setup.c | 59 +-----------------
> 7 files changed, 99 insertions(+), 63 deletions(-)
> create mode 100644 arch/arm/boot/dts/orion5x-netgear-wnr854t.dts
One last thing, could you use savedefconfig and update orion5x_defconfig
to include your new board? It can be a part of the same patch.
thx,
Jason.
>
> diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
> index 6cb3b3c..a6c8e9a 100644
> --- a/arch/arm/boot/dts/Makefile
> +++ b/arch/arm/boot/dts/Makefile
> @@ -73,7 +73,8 @@ 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_ORION5X) += orion5x-lacie-ethernet-disk-mini-v2.dtb \
> + orion5x-netgear-wnr854t.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-netgear-wnr854t.dts b/arch/arm/boot/dts/orion5x-netgear-wnr854t.dts
> new file mode 100644
> index 0000000..502ac49
> --- /dev/null
> +++ b/arch/arm/boot/dts/orion5x-netgear-wnr854t.dts
> @@ -0,0 +1,83 @@
> +/*
> + * Copyright (C) 2012 Imre Kaloz <kaloz at openwrt.org>
> + *
> + * 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 = "Netgear WNR854T";
> + compatible = "netgear,wnr854t", "marvell-orion5x-88f5180n", "marvell,orion5x";
> +
> + memory {
> + reg = <0x00000000 0x2000000>; /* 32 MB */
> + };
> +
> + chosen {
> + bootargs = "console=ttyS0,115200n8 earlyprintk";
> + };
> +
> + ocp at f1000000 {
> + serial at 12000 {
> + clock-frequency = <166666667>;
> + status = "okay";
> + };
> + };
> +
> + nor_flash at f4000000 {
> + compatible = "cfi-flash";
> + bank-width = <2>;
> + reg = <0xf4000000 0x800000>;
> + #address-cells = <1>;
> + #size-cells = <1>;
> +
> + partition at 0 {
> + label = "kernel";
> + reg = <0x0 0x100000>;
> + };
> +
> + partition at 100000 {
> + label = "rootfs";
> + reg = <0x100000 0x660000>;
> + };
> +
> + partition at 760000 {
> + label = "uboot_env";
> + reg = <0x760000 0x10000>;
> + };
> +
> + partition at 770000 {
> + label = "uboot";
> + reg = <0x770000 0x90000>;
> + };
> + };
> +
> + gpio_keys {
> + compatible = "gpio-keys";
> + #address-cells = <1>;
> + #size-cells = <0>;
> + button at 1 {
> + label = "reset";
> + linux,code = <198>;
> + gpios = <&gpio0 1 0>;
> + };
> + };
> +
> + gpio_leds {
> + compatible = "gpio-leds";
> +
> + power {
> + label = "power:green";
> + gpios = <&gpio0 0 1>;
> + };
> +
> + wan {
> + label = "wan:amber";
> + gpios = <&gpio0 3 0>;
> + };
> + };
> +};
> diff --git a/arch/arm/mach-orion5x/Kconfig b/arch/arm/mach-orion5x/Kconfig
> index 2cb2f06..2c2dc79 100644
> --- a/arch/arm/mach-orion5x/Kconfig
> +++ b/arch/arm/mach-orion5x/Kconfig
> @@ -138,11 +138,12 @@ config MACH_MSS2
> Say 'Y' here if you want your kernel to support the
> Maxtor Shared Storage II platform.
>
> -config MACH_WNR854T
> - bool "Netgear WNR854T"
> +config MACH_WNR854T_DT
> + bool "Netgear WNR854T (Flattened Device Tree)"
> + select ARCH_ORION5X_DT
> help
> Say 'Y' here if you want your kernel to support the
> - Netgear WNR854T platform.
> + Netgear WNR854T platform (Flattened Device Tree).
>
> config MACH_RD88F5181L_GE
> bool "Marvell Orion-VoIP GE Reference Design"
> diff --git a/arch/arm/mach-orion5x/Makefile b/arch/arm/mach-orion5x/Makefile
> index 9e809a7..391cacc 100644
> --- a/arch/arm/mach-orion5x/Makefile
> +++ b/arch/arm/mach-orion5x/Makefile
> @@ -16,7 +16,6 @@ obj-$(CONFIG_MACH_D2NET) += d2net-setup.o
> obj-$(CONFIG_MACH_BIGDISK) += d2net-setup.o
> obj-$(CONFIG_MACH_NET2BIG) += net2big-setup.o
> obj-$(CONFIG_MACH_MSS2) += mss2-setup.o
> -obj-$(CONFIG_MACH_WNR854T) += wnr854t-setup.o
> obj-$(CONFIG_MACH_RD88F5181L_GE) += rd88f5181l-ge-setup.o
> obj-$(CONFIG_MACH_RD88F5181L_FXO) += rd88f5181l-fxo-setup.o
> obj-$(CONFIG_MACH_RD88F6183AP_GE) += rd88f6183ap-ge-setup.o
> @@ -24,3 +23,4 @@ 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
> +obj-$(CONFIG_MACH_WNR854T_DT) += wnr854t-setup.o
> diff --git a/arch/arm/mach-orion5x/board-dt.c b/arch/arm/mach-orion5x/board-dt.c
> index 32e5c21..70fd830 100644
> --- a/arch/arm/mach-orion5x/board-dt.c
> +++ b/arch/arm/mach-orion5x/board-dt.c
> @@ -58,6 +58,9 @@ static void __init orion5x_dt_init(void)
> if (of_machine_is_compatible("lacie,ethernet-disk-mini-v2"))
> edmini_v2_init();
>
> + if (of_machine_is_compatible("netgear,wnr854t"))
> + wnr854t_init();
> +
> of_platform_populate(NULL, of_default_bus_match_table,
> orion5x_auxdata_lookup, NULL);
> }
> diff --git a/arch/arm/mach-orion5x/common.h b/arch/arm/mach-orion5x/common.h
> index 7db5cdd..e24e716 100644
> --- a/arch/arm/mach-orion5x/common.h
> +++ b/arch/arm/mach-orion5x/common.h
> @@ -62,6 +62,11 @@ void edmini_v2_init(void);
> #else
> static inline void edmini_v2_init(void) {};
> #endif
> +#ifdef CONFIG_MACH_WNR854T_DT
> +void wnr854t_init(void);
> +#else
> +static inline void wnr854t_init(void) {};
> +#endif
>
> struct meminfo;
> struct tag;
> diff --git a/arch/arm/mach-orion5x/wnr854t-setup.c b/arch/arm/mach-orion5x/wnr854t-setup.c
> index 754c12b..2009a6d 100644
> --- a/arch/arm/mach-orion5x/wnr854t-setup.c
> +++ b/arch/arm/mach-orion5x/wnr854t-setup.c
> @@ -53,44 +53,6 @@ static unsigned int wnr854t_mpp_modes[] __initdata = {
> #define WNR854T_NOR_BOOT_BASE 0xf4000000
> #define WNR854T_NOR_BOOT_SIZE SZ_8M
>
> -static struct mtd_partition wnr854t_nor_flash_partitions[] = {
> - {
> - .name = "kernel",
> - .offset = 0x00000000,
> - .size = 0x00100000,
> - }, {
> - .name = "rootfs",
> - .offset = 0x00100000,
> - .size = 0x00660000,
> - }, {
> - .name = "uboot",
> - .offset = 0x00760000,
> - .size = 0x00040000,
> - },
> -};
> -
> -static struct physmap_flash_data wnr854t_nor_flash_data = {
> - .width = 2,
> - .parts = wnr854t_nor_flash_partitions,
> - .nr_parts = ARRAY_SIZE(wnr854t_nor_flash_partitions),
> -};
> -
> -static struct resource wnr854t_nor_flash_resource = {
> - .flags = IORESOURCE_MEM,
> - .start = WNR854T_NOR_BOOT_BASE,
> - .end = WNR854T_NOR_BOOT_BASE + WNR854T_NOR_BOOT_SIZE - 1,
> -};
> -
> -static struct platform_device wnr854t_nor_flash = {
> - .name = "physmap-flash",
> - .id = 0,
> - .dev = {
> - .platform_data = &wnr854t_nor_flash_data,
> - },
> - .num_resources = 1,
> - .resource = &wnr854t_nor_flash_resource,
> -};
> -
> static struct mv643xx_eth_platform_data wnr854t_eth_data = {
> .phy_addr = MV643XX_ETH_PHY_NONE,
> .speed = SPEED_1000,
> @@ -111,13 +73,8 @@ static struct dsa_platform_data wnr854t_switch_plat_data = {
> .chip = &wnr854t_switch_chip_data,
> };
>
> -static void __init wnr854t_init(void)
> +void __init wnr854t_init(void)
> {
> - /*
> - * Setup basic Orion functions. Need to be called early.
> - */
> - orion5x_init();
> -
> orion5x_mpp_conf(wnr854t_mpp_modes);
>
> /*
> @@ -125,11 +82,9 @@ static void __init wnr854t_init(void)
> */
> orion5x_eth_init(&wnr854t_eth_data);
> orion5x_eth_switch_init(&wnr854t_switch_plat_data, NO_IRQ);
> - orion5x_uart0_init();
>
> orion5x_setup_dev_boot_win(WNR854T_NOR_BOOT_BASE,
> WNR854T_NOR_BOOT_SIZE);
> - platform_device_register(&wnr854t_nor_flash);
> }
>
> static int __init wnr854t_pci_map_irq(const struct pci_dev *dev, u8 slot,
> @@ -168,15 +123,3 @@ static int __init wnr854t_pci_init(void)
> return 0;
> }
> subsys_initcall(wnr854t_pci_init);
> -
> -MACHINE_START(WNR854T, "Netgear WNR854T")
> - /* Maintainer: Imre Kaloz <kaloz at openwrt.org> */
> - .atag_offset = 0x100,
> - .init_machine = wnr854t_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
> --
> 1.7.1
>
>
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
More information about the linux-arm-kernel
mailing list