Hi all,

we have developed new board WBD222. It is very similar to WBD111 and is based on SL3512 CPU. New board has two ethernet interfaces, two mini-PCI, one SATA, one mini-PCIe and two USB 2.0 interfaces. At the moment we have only few prototypes. Below is attached patch to add support for this board to OpenWRT. All comments are appreciated.

Darius A.

Index: target/linux/gemini/image/Makefile
===================================================================
--- target/linux/gemini/image/Makefile  (revision 20251)
+++ target/linux/gemini/image/Makefile  (working copy)
@@ -11,12 +11,17 @@
 # WBD111: mach id 1690 (0x69a)
        echo -en "\x06\x1c\xa0\xe3\x9a\x10\x81\xe3" > 
$(KDIR)/openwrt-$(BOARD)-wbd111-zImage
        cat $(LINUX_DIR)/arch/arm/boot/zImage >> 
$(KDIR)/openwrt-$(BOARD)-wbd111-zImage
+# WBD222: mach id 2753 (0xAC1)
+       echo -en "\x0a\x1c\xa0\xe3\xc1\x10\x81\xe3" > 
$(KDIR)/openwrt-$(BOARD)-wbd222-zImage
+       cat $(LINUX_DIR)/arch/arm/boot/zImage >> 
$(KDIR)/openwrt-$(BOARD)-wbd222-zImage
 endef
 
 define Image/BuildKernel
 # workaround the bootloader's bug with extra nops
        echo -en 
"\x00\x00\xa0\xe1\x00\x00\xa0\xe1\x00\x00\xa0\xe1\x00\x00\xa0\xe1" > 
$(BIN_DIR)/openwrt-$(BOARD)-wbd111-zImage
+       echo -en 
"\x00\x00\xa0\xe1\x00\x00\xa0\xe1\x00\x00\xa0\xe1\x00\x00\xa0\xe1" > 
$(BIN_DIR)/openwrt-$(BOARD)-wbd222-zImage
        cat $(KDIR)/openwrt-$(BOARD)-wbd111-zImage >> 
$(BIN_DIR)/openwrt-$(BOARD)-wbd111-zImage
+       cat $(KDIR)/openwrt-$(BOARD)-wbd222-zImage >> 
$(BIN_DIR)/openwrt-$(BOARD)-wbd222-zImage
 endef
 
 define Image/Build/jffs2-64k
@@ -41,6 +46,14 @@
                -o $(BIN_DIR)/openwrt-$(BOARD)-wbd111-$(1).bin \
                -p 
Kernel:0x020000:0x100000:0:0:$(BIN_DIR)/openwrt-$(BOARD)-wbd111-zImage \
                -p 
Ramdisk:0x120000:0x500000:0:0:$(BIN_DIR)/openwrt-$(BOARD)-$(1).img
+
+       -$(STAGING_DIR_HOST)/bin/mkfwimage2 \
+                -m GEOS -f 0x30000000 -z \
+                -v WILI-S.WBD222.v5.00.SL3512.OpenWrt.00000.000000.000000 \
+                -o $(BIN_DIR)/openwrt-$(BOARD)-wbd222-$(1).bin \
+                -p 
Kernel:0x020000:0x100000:0:0:$(BIN_DIR)/openwrt-$(BOARD)-wbd222-zImage \
+                -p 
Ramdisk:0x120000:0x500000:0:0:$(BIN_DIR)/openwrt-$(BOARD)-$(1).img
+
 endef
 
 $(eval $(call BuildImage))
Index: target/linux/gemini/patches/200-wbd222_support.patch
===================================================================
--- target/linux/gemini/patches/200-wbd222_support.patch        (revision 0)
+++ target/linux/gemini/patches/200-wbd222_support.patch        (revision 0)
@@ -0,0 +1,211 @@
+Index: linux-2.6.32.8/arch/arm/mach-gemini/board-wbd222.c
+===================================================================
+--- /dev/null
++++ linux-2.6.32.8/arch/arm/mach-gemini/board-wbd222.c
+@@ -0,0 +1,170 @@
++/*
++ *  Support for Wiliboard WBD-222
++ *
++ *  Copyright (C) 2009 Imre Kaloz <ka...@openwrt.org>
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ */
++#include <linux/kernel.h>
++#include <linux/init.h>
++#include <linux/platform_device.h>
++#include <linux/leds.h>
++#include <linux/input.h>
++#include <linux/skbuff.h>
++#include <linux/gpio_keys.h>
++#include <linux/mdio-gpio.h>
++#include <linux/mtd/mtd.h>
++#include <linux/mtd/partitions.h>
++#include <asm/mach-types.h>
++#include <asm/mach/arch.h>
++#include <asm/mach/time.h>
++
++#include <mach/gmac.h>
++
++#include "common.h"
++
++static struct mdio_gpio_platform_data wbd222_mdio = {
++      .mdc            = 22,
++      .mdio           = 21,
++      .phy_mask       = ~((1 << 1) | (1 << 3)),
++};
++
++static struct platform_device wbd222_phy_device = {
++      .name   = "mdio-gpio",
++      .id     = 0,
++      .dev    = {
++              .platform_data = &wbd222_mdio,
++      },
++};
++
++static struct gemini_gmac_platform_data gmac_data = {
++      .bus_id[0] = "0:01",
++      .interface[0] = PHY_INTERFACE_MODE_MII,
++      .bus_id[1] = "0:03",
++        .interface[1] = PHY_INTERFACE_MODE_MII,
++};
++
++static struct gpio_keys_button wbd222_keys[] = {
++      {
++              .code           = KEY_SETUP,
++              .gpio           = 5,
++              .active_low     = 1,
++              .desc           = "reset",
++              .type           = EV_KEY,
++      },
++};
++
++static struct gpio_keys_platform_data wbd222_keys_data = {
++      .buttons        = wbd222_keys,
++      .nbuttons       = ARRAY_SIZE(wbd222_keys),
++};
++
++static struct platform_device wbd222_keys_device = {
++      .name   = "gpio-keys",
++      .id     = -1,
++      .dev    = {
++              .platform_data = &wbd222_keys_data,
++      },
++};
++
++static struct gpio_led wbd222_leds[] = {
++      {
++              .name                   = "L3red",
++              .gpio                   = 1,
++      },
++      {
++              .name                   = "L4green",
++              .gpio                   = 2,
++      },
++      {
++              .name                   = "L4red",
++              .gpio                   = 3,
++      },
++      {
++              .name                   = "L3green",
++              .gpio                   = 5,
++      },
++};
++
++static struct gpio_led_platform_data wbd222_leds_data = {
++      .num_leds       = ARRAY_SIZE(wbd222_leds),
++      .leds           = wbd222_leds,
++};
++
++static struct platform_device wbd222_leds_device = {
++      .name   = "leds-gpio",
++      .id     = -1,
++      .dev    = {
++              .platform_data = &wbd222_leds_data,
++      },
++};
++
++static struct sys_timer wbd222_timer = {
++      .init   = gemini_timer_init,
++};
++
++#ifdef CONFIG_MTD_PARTITIONS
++static struct mtd_partition wbd222_partitions[] = {
++      {
++              .name           = "RedBoot",
++              .offset         = 0,
++              .size           = 0x020000,
++              .mask_flags     = MTD_WRITEABLE,
++      } , {
++              .name           = "kernel",
++              .offset         = 0x020000,
++              .size           = 0x100000,
++      } , {
++              .name           = "rootfs",
++              .offset         = 0x120000,
++              .size           = 0x6a0000,
++      } , {
++              .name           = "VCTL",
++              .offset         = 0x7c0000,
++              .size           = 0x010000,
++              .mask_flags     = MTD_WRITEABLE,
++      } , {
++              .name           = "cfg",
++              .offset         = 0x7d0000,
++              .size           = 0x010000,
++              .mask_flags     = MTD_WRITEABLE,
++      } , {
++              .name           = "FIS",
++              .offset         = 0x7e0000,
++              .size           = 0x010000,
++              .mask_flags     = MTD_WRITEABLE,
++      }
++};
++#define wbd222_num_partitions ARRAY_SIZE(wbd222_partitions)
++#else
++#define wbd222_partitions     NULL
++#define wbd222_num_partitions 0
++#endif /* CONFIG_MTD_PARTITIONS */
++
++static void __init wbd222_init(void)
++{
++      gemini_gpio_init();
++      platform_register_uart();
++      platform_register_watchdog();
++      platform_register_pflash(SZ_8M, wbd222_partitions,
++                               wbd222_num_partitions);
++      platform_device_register(&wbd222_leds_device);
++      platform_device_register(&wbd222_keys_device);
++      platform_device_register(&wbd222_phy_device);
++      platform_register_ethernet(&gmac_data);
++      platform_register_usb(0);
++        platform_register_usb(1);
++}
++
++MACHINE_START(WBD222, "Wiliboard WBD-222")
++      .phys_io        = 0x7fffc000,
++      .io_pg_offst    = ((0xffffc000) >> 18) & 0xfffc,
++      .boot_params    = 0x100,
++      .map_io         = gemini_map_io,
++      .init_irq       = gemini_init_irq,
++      .timer          = &wbd222_timer,
++      .init_machine   = wbd222_init,
++MACHINE_END
+Index: linux-2.6.32.8/arch/arm/mach-gemini/Kconfig
+===================================================================
+--- linux-2.6.32.8.orig/arch/arm/mach-gemini/Kconfig
++++ linux-2.6.32.8/arch/arm/mach-gemini/Kconfig
+@@ -23,6 +23,13 @@ config MACH_WBD111
+         Say Y here if you intend to run this kernel on a
+         Wiliboard WBD-111.
+ 
++config MACH_WBD222
++        bool "Wiliboard WBD-222"
++        select GEMINI_MEM_SWAP
++        help
++          Say Y here if you intend to run this kernel on a
++          Wiliboard WBD-222.
++
+ endmenu
+ 
+ config GEMINI_MEM_SWAP
+Index: linux-2.6.32.8/arch/arm/mach-gemini/Makefile
+===================================================================
+--- linux-2.6.32.8.orig/arch/arm/mach-gemini/Makefile
++++ linux-2.6.32.8/arch/arm/mach-gemini/Makefile
+@@ -12,3 +12,4 @@ obj-$(CONFIG_PCI)    += pci.o
+ obj-$(CONFIG_MACH_NAS4220B)   += board-nas4220b.o
+ obj-$(CONFIG_MACH_RUT100)     += board-rut1xx.o
+ obj-$(CONFIG_MACH_WBD111)     += board-wbd111.o
++obj-$(CONFIG_MACH_WBD222)       += board-wbd222.o
+Index: linux-2.6.32.8/arch/arm/tools/mach-types
+===================================================================
+--- linux-2.6.32.8.orig/arch/arm/tools/mach-types
++++ linux-2.6.32.8/arch/arm/tools/mach-types
+@@ -2536,3 +2536,4 @@ c3ax03                   MACH_C3AX03             C3AX03  
                2549
+ mxt_td60              MACH_MXT_TD60           MXT_TD60                2550
+ esyx                  MACH_ESYX               ESYX                    2551
+ bulldog                       MACH_BULLDOG            BULLDOG                 
2553
++wbd222                  MACH_WBD222             WBD222                  2753
Index: target/linux/gemini/config-default
===================================================================
--- target/linux/gemini/config-default  (revision 20251)
+++ target/linux/gemini/config-default  (working copy)
@@ -91,6 +91,7 @@
 # CONFIG_MACH_NAS4220B is not set
 # CONFIG_MACH_RUT100 is not set
 CONFIG_MACH_WBD111=y
+CONFIG_MACH_WBD222=y
 CONFIG_MDIO_BITBANG=y
 CONFIG_MDIO_GPIO=y
 # CONFIG_MG_DISK is not set
_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to