From: "Eugene San (eugenesan)" <[email protected]>

Signed-off-by: Eugene San (eugenesan) <[email protected]>
---
 target/linux/orion/README                          |   30 +++++++++++++++
 target/linux/orion/image/generic.mk                |   38 +++++++++++++++++--
 target/linux/orion/image/harddisk.mk               |    6 ++-
 .../patches/102-rd88f5181l-ge_partition_map.patch  |   33 +++++++++++++++++
 .../patches/103-rd88f5181l-fxo_partition_map.patch |   33 +++++++++++++++++
 .../patches/104-rd88f5181l-force_cardbus.patch     |   27 ++++++++++++++
 6 files changed, 161 insertions(+), 6 deletions(-)
 create mode 100644 target/linux/orion/README
 create mode 100644 
target/linux/orion/patches/102-rd88f5181l-ge_partition_map.patch
 create mode 100644 
target/linux/orion/patches/103-rd88f5181l-fxo_partition_map.patch
 create mode 100644 
target/linux/orion/patches/104-rd88f5181l-force_cardbus.patch

diff --git a/target/linux/orion/README b/target/linux/orion/README
new file mode 100644
index 0000000..7ea1147
--- /dev/null
+++ b/target/linux/orion/README
@@ -0,0 +1,30 @@
+This orion target is intended to be used with devices based on Marvell Orion 
5181 ARM-compatible CPU (aka Feroceon).
+
+Among supported devices are:
+       * WRT350N v2
+       * WNR854T
+       * RD88F5181L_GE
+       * RD88F5181L_FXO
+       * DT2
+
+Marvell RD88F5181L Reference Boards currently utilize OpenWRT native 
squashfs+jffs2overlay scheme.
+Currently only manual install/upgrade procedure tested.
+To perform manual/initial installation you will need a TFTP server and board 
specific image,
+for example: openwrt-rd88f5181l_fxo-squashfs.img.
+
+Follow below steps to install firmware in to device's NOR flash.
+(Remember to use apropriate network parameters)
+
+1. Prepare uBoot environment (In uBoot):
+       >>resetenv; reset
+       >>setenv ipaddr 192.168.2.200; setenv serverip 192.168.2.100
+       >>setenv loadaddr 0x400000; setenv console 'console=ttyS0,115200 
panic=30'
+       >>setenv bootargs; setenv bootargs_root 'root=/dev/mtd1 ro'
+       >>setenv image_name openwrt-rd88f5181l_fxo-squashfs.img
+       >>setenv update 'tftpboot $(loadaddr) $(image_name); erase 0xFF800000 
0xFFEFFFFF; cp.b $(loadaddr) 0xFF800000 0x6FFFFF'
+       >>setenv bootcmd 'setenv bootargs $(console) $(bootargs_root); bootm 
0xFF800000'
+       >>save
+
+2. Update firmare (In uBoot):
+       >>run update
+
diff --git a/target/linux/orion/image/generic.mk 
b/target/linux/orion/image/generic.mk
index c3bd601..670bed5 100644
--- a/target/linux/orion/image/generic.mk
+++ b/target/linux/orion/image/generic.mk
@@ -5,6 +5,8 @@
 # See /LICENSE for more information.
 #
 
+JFFS2_BLOCKSIZE = 128k
+
 define Image/Prepare
        cp $(LINUX_DIR)/arch/arm/boot/uImage $(KDIR)/uImage
 endef
@@ -25,6 +27,20 @@ define Image/BuildKernel
        -C none -a 0x00008000 -e 0x00008000 -n 'Linux-$(LINUX_VERSION)' \
        -d $(KDIR)/wnr854t-zImage $(KDIR)/wnr854t-uImage
        cp $(KDIR)/wnr854t-uImage $(BIN_DIR)/openwrt-wnr854t-uImage
+ # RD88F5181L_GE: mach id 1812 (0x714)"
+       echo -en "\x07\x1c\xa0\xe3\x14\x10\x81\xe3" > 
$(KDIR)/rd88f5181l_ge-zImage
+       cat $(LINUX_DIR)/arch/arm/boot/zImage >> $(KDIR)/rd88f5181l_ge-zImage
+       $(STAGING_DIR_HOST)/bin/mkimage -A arm -O linux -T kernel \
+       -C none -a 0x00008000 -e 0x00008000 -n 'Linux-$(LINUX_VERSION)' \
+       -d $(KDIR)/rd88f5181l_ge-zImage $(KDIR)/rd88f5181l_ge-uImage
+       cp $(KDIR)/rd88f5181l_ge-uImage $(BIN_DIR)/openwrt-rd88f5181l_ge-uImage
+ # RD88F5181L_FXO: mach id 1818 (0x71a)"
+       echo -en "\x07\x1c\xa0\xe3\x1a\x10\x81\xe3" > 
$(KDIR)/rd88f5181l_fxo-zImage
+       cat $(LINUX_DIR)/arch/arm/boot/zImage >> $(KDIR)/rd88f5181l_fxo-zImage
+       $(STAGING_DIR_HOST)/bin/mkimage -A arm -O linux -T kernel \
+       -C none -a 0x00008000 -e 0x00008000 -n 'Linux-$(LINUX_VERSION)' \
+       -d $(KDIR)/rd88f5181l_fxo-zImage $(KDIR)/rd88f5181l_fxo-uImage
+       cp $(KDIR)/rd88f5181l_fxo-uImage 
$(BIN_DIR)/openwrt-rd88f5181l_fxo-uImage
 endef
 
 define Image/Build/Netgear
@@ -40,6 +56,15 @@ define Image/Build/Netgear
        $(STAGING_DIR_HOST)/bin/add_header $(3) 
$(BIN_DIR)/openwrt-$(2)-$(1).img $(BIN_DIR)/openwrt-$(2)-$(1)-webupgrade.img
 endef
 
+define Image/Build/Marvell
+       # Orion Marvell Images
+       ( \
+               dd if=$(BIN_DIR)/openwrt-$(2)-uImage bs=1024k conv=sync; \
+               dd if=$(KDIR)/root.$(1) bs=128k conv=sync; \
+       ) > $(BIN_DIR)/openwrt-$(2)-$(1).img
+       $(STAGING_DIR_HOST)/bin/add_header $(3) 
$(BIN_DIR)/openwrt-$(2)-$(1).img $(BIN_DIR)/openwrt-$(2)-$(1)-webupgrade.img
+endef
+
 define Image/Build/Linksys
        # Orion Linksys Images
  # sysupgrade image
@@ -70,15 +95,20 @@ define Image/Build/Linksys
 endef
 
 define Image/Build
-$(call Image/Build/$(1),$(1))
-$(call Image/Build/Netgear,$(1),wnr854t,NG_WNR854T,$(1))
+       $(call Image/Build/$(1),$(1))
+       $(call Image/Build/Netgear,$(1),wnr854t,NG_WNR854T,$(1))
+       $(call Image/Build/Marvell,$(1),rd88f5181l_ge,RD88F5181L_GE,$(1))
+       $(call Image/Build/Marvell,$(1),rd88f5181l_fxo,RD88F5181L_FXO,$(1))
  # Leave WRT350Nv2 at last position due to webimage dependency for zip
+ # and too big image without squashfs
+ifeq ($(1),squashfs)
  # 5th parameter is kernel mtd size, e.g. 0x00100000 = 1048576 or 0x001A0000 = 
1703936
-$(call Image/Build/Linksys,$(1),wrt350nv2,WNR350Nv2,$(1),1048576)
+       $(call Image/Build/Linksys,$(1),wrt350nv2,WNR350Nv2,$(1),1048576)
+endif
 endef
 
 define Image/Build/squashfs
-$(call prepare_generic_squashfs,$(KDIR)/root.squashfs)
+       $(call prepare_generic_squashfs,$(KDIR)/root.squashfs)
        ( \
                dd if=$(KDIR)/uImage bs=1024k conv=sync; \
                dd if=$(KDIR)/root.$(1) bs=128k conv=sync; \
diff --git a/target/linux/orion/image/harddisk.mk 
b/target/linux/orion/image/harddisk.mk
index 9f2efad..8b3f0eb 100644
--- a/target/linux/orion/image/harddisk.mk
+++ b/target/linux/orion/image/harddisk.mk
@@ -5,6 +5,8 @@
 # See /LICENSE for more information.
 #
 
+JFFS2_BLOCKSIZE = 128k
+
 define Image/Prepare
        cp $(LINUX_DIR)/arch/arm/boot/uImage $(KDIR)/uImage
 endef
@@ -42,8 +44,8 @@ define Image/Build/Freecom
 endef
 
 define Image/Build
-$(call Image/Build/$(1),$(1))
-$(call Image/Build/Freecom,$(1),dt2,DT,$(1))
+       $(call Image/Build/$(1),$(1))
+       $(call Image/Build/Freecom,$(1),dt2,DT,$(1))
 endef
 
 define Image/Build/squashfs
diff --git a/target/linux/orion/patches/102-rd88f5181l-ge_partition_map.patch 
b/target/linux/orion/patches/102-rd88f5181l-ge_partition_map.patch
new file mode 100644
index 0000000..c0824d4
--- /dev/null
+++ b/target/linux/orion/patches/102-rd88f5181l-ge_partition_map.patch
@@ -0,0 +1,33 @@
+--- a/arch/arm/mach-orion5x/rd88f5181l-ge-setup.c
++++ b/arch/arm/mach-orion5x/rd88f5181l-ge-setup.c
+@@ -36,12 +36,30 @@
+ #define RD88F5181L_GE_NOR_BOOT_BASE           0xff000000
+ #define RD88F5181L_GE_NOR_BOOT_SIZE           SZ_16M
+ 
++static struct mtd_partition rd88f5181l_ge_partitions[] = {
++      {
++              .name   = "kernel",
++              .offset = 0,
++              .size   = SZ_1M,
++      }, {
++              .name   = "rootfs",
++              .offset = SZ_1M,
++              .size   = (SZ_16M - SZ_2M),
++      }, {
++              .name   = "uboot",
++              .offset = (SZ_16M - SZ_1M),
++              .size   = SZ_1M,
++              .mask_flags     = MTD_WRITEABLE,
++      },
++};
+ 
+ /*****************************************************************************
+  * 16M NOR Flash on Device bus Boot chip select
+  ****************************************************************************/
+ static struct physmap_flash_data rd88f5181l_ge_nor_boot_flash_data = {
+       .width          = 1,
++      .nr_parts       = ARRAY_SIZE(rd88f5181l_ge_partitions),
++      .parts          = rd88f5181l_ge_partitions,
+ };
+ 
+ static struct resource rd88f5181l_ge_nor_boot_flash_resource = {
diff --git a/target/linux/orion/patches/103-rd88f5181l-fxo_partition_map.patch 
b/target/linux/orion/patches/103-rd88f5181l-fxo_partition_map.patch
new file mode 100644
index 0000000..d6f1351
--- /dev/null
+++ b/target/linux/orion/patches/103-rd88f5181l-fxo_partition_map.patch
@@ -0,0 +1,33 @@
+--- a/arch/arm/mach-orion5x/rd88f5181l-fxo-setup.c
++++ b/arch/arm/mach-orion5x/rd88f5181l-fxo-setup.c
+@@ -35,12 +35,30 @@
+ #define RD88F5181L_FXO_NOR_BOOT_BASE          0xff800000
+ #define RD88F5181L_FXO_NOR_BOOT_SIZE          SZ_8M
+ 
++static struct mtd_partition rd88f5181l_fxo_partitions[] = {
++      {
++              .name   = "kernel",
++              .offset = 0,
++              .size   = SZ_1M,
++      }, {
++              .name   = "rootfs",
++              .offset = SZ_1M,
++              .size   = (SZ_8M - SZ_2M),
++      }, {
++              .name   = "uboot",
++              .offset = (SZ_8M - SZ_1M),
++              .size   = SZ_1M,
++              .mask_flags     = MTD_WRITEABLE,
++      },
++};
+ 
+ /*****************************************************************************
+  * 8M NOR Flash on Device bus Boot chip select
+  ****************************************************************************/
+ static struct physmap_flash_data rd88f5181l_fxo_nor_boot_flash_data = {
+       .width          = 1,
++      .nr_parts       = ARRAY_SIZE(rd88f5181l_fxo_partitions),
++      .parts          = rd88f5181l_fxo_partitions,
+ };
+ 
+ static struct resource rd88f5181l_fxo_nor_boot_flash_resource = {
diff --git a/target/linux/orion/patches/104-rd88f5181l-force_cardbus.patch 
b/target/linux/orion/patches/104-rd88f5181l-force_cardbus.patch
new file mode 100644
index 0000000..9167d47
--- /dev/null
+++ b/target/linux/orion/patches/104-rd88f5181l-force_cardbus.patch
@@ -0,0 +1,27 @@
+--- linux-2.6.37.6.orig/arch/arm/mach-orion5x/Kconfig
++++ linux-2.6.37.6/arch/arm/mach-orion5x/Kconfig
+@@ -157,4 +157,12 @@
+ 
+ endmenu
+ 
++config RD88F5181L_FORCE_CB
++      bool "Enforce Cardbus over miniPCI slot"
++      depends on MACH_RD88F5181L_GE || MACH_RD88F5181L_FXO
++      default y
++      help
++        Say 'Y' here if you want to use CardBus instead of
++        MiniPCI slot on Marvell Orion-VoIP GE/FXO (88F5181L) RDs.
++
+ endif
+--- linux-2.6.37.6.orig/arch/arm/mach-orion5x/pci.c    2011-03-27 
21:01:41.000000000 +0200
++++ linux-2.6.37.6/arch/arm/mach-orion5x/pci.c 2011-06-11 11:12:01.181318413 
+0300
+@@ -553,7 +553,9 @@
+ 
+ void __init orion5x_pci_set_cardbus_mode(void)
+ {
++#ifdef CONFIG_RD88F5181L_FORCE_CB
+       orion5x_pci_cardbus_mode = 1;
++#endif
+ }
+ 
+ int __init orion5x_pci_sys_setup(int nr, struct pci_sys_data *sys)
-- 
1.7.6

_______________________________________________
openwrt-devel mailing list
[email protected]
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to