From 9d9eb999e17f98809f2e698f01fa2acff87f83b0 Mon Sep 17 00:00:00 2001 From: Hauke Mehrtens Date: Sun, 6 Jun 2010 10:51:52 +0000 Subject: orion: Update Orion in trunk to kernel 2.6.34. Was flashed on WRT350Nv2, booted and is running for several days. Closes #7405 Thank you maddes for your patch. git-svn-id: svn://svn.openwrt.org/openwrt/trunk@21682 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- target/linux/orion/Makefile | 2 +- .../patches-2.6.32/010-ignore_atag_cmdline.patch | 11 +++ .../050-wrt350nv2_cfi_workaround.patch | 14 +++ .../090-wrt350nv2_gpio_leds_buttons.patch | 102 +++++++++++++++++++++ .../patches-2.6.32/100-openwrt_partition_map.patch | 32 +++++++ .../patches-2.6.32/101-wnr854t_partition_map.patch | 13 +++ .../patches-2.6.32/200-dt2_board_support.patch | 23 +++++ .../orion/patches-2.6.32/300-skb_cb_align.patch | 11 +++ .../orion/patches/010-ignore_atag_cmdline.patch | 2 +- .../patches/090-wrt350nv2_gpio_leds_buttons.patch | 102 --------------------- .../orion/patches/200-dt2_board_support.patch | 2 +- target/linux/orion/patches/300-skb_cb_align.patch | 11 --- 12 files changed, 209 insertions(+), 116 deletions(-) create mode 100644 target/linux/orion/patches-2.6.32/010-ignore_atag_cmdline.patch create mode 100644 target/linux/orion/patches-2.6.32/050-wrt350nv2_cfi_workaround.patch create mode 100644 target/linux/orion/patches-2.6.32/090-wrt350nv2_gpio_leds_buttons.patch create mode 100644 target/linux/orion/patches-2.6.32/100-openwrt_partition_map.patch create mode 100644 target/linux/orion/patches-2.6.32/101-wnr854t_partition_map.patch create mode 100644 target/linux/orion/patches-2.6.32/200-dt2_board_support.patch create mode 100644 target/linux/orion/patches-2.6.32/300-skb_cb_align.patch delete mode 100644 target/linux/orion/patches/090-wrt350nv2_gpio_leds_buttons.patch delete mode 100644 target/linux/orion/patches/300-skb_cb_align.patch (limited to 'target/linux/orion') diff --git a/target/linux/orion/Makefile b/target/linux/orion/Makefile index 8ab12cf627..1eb372555d 100644 --- a/target/linux/orion/Makefile +++ b/target/linux/orion/Makefile @@ -13,7 +13,7 @@ FEATURES:=squashfs SUBTARGETS=generic harddisk CFLAGS=-Os -pipe -march=armv5t -mtune=xscale -funit-at-a-time -LINUX_VERSION:=2.6.32.14 +LINUX_VERSION:=2.6.34 include $(INCLUDE_DIR)/target.mk diff --git a/target/linux/orion/patches-2.6.32/010-ignore_atag_cmdline.patch b/target/linux/orion/patches-2.6.32/010-ignore_atag_cmdline.patch new file mode 100644 index 0000000000..9df21f1eb5 --- /dev/null +++ b/target/linux/orion/patches-2.6.32/010-ignore_atag_cmdline.patch @@ -0,0 +1,11 @@ +--- a/arch/arm/kernel/setup.c ++++ b/arch/arm/kernel/setup.c +@@ -629,7 +629,7 @@ __tagtable(ATAG_REVISION, parse_tag_revi + + static int __init parse_tag_cmdline(const struct tag *tag) + { +- strlcpy(default_command_line, tag->u.cmdline.cmdline, COMMAND_LINE_SIZE); ++// strlcpy(default_command_line, tag->u.cmdline.cmdline, COMMAND_LINE_SIZE); + return 0; + } + diff --git a/target/linux/orion/patches-2.6.32/050-wrt350nv2_cfi_workaround.patch b/target/linux/orion/patches-2.6.32/050-wrt350nv2_cfi_workaround.patch new file mode 100644 index 0000000000..f10f89e789 --- /dev/null +++ b/target/linux/orion/patches-2.6.32/050-wrt350nv2_cfi_workaround.patch @@ -0,0 +1,14 @@ +--- a/drivers/mtd/chips/cfi_cmdset_0002.c ++++ b/drivers/mtd/chips/cfi_cmdset_0002.c +@@ -374,8 +374,9 @@ struct mtd_info *cfi_cmdset_0002(struct + + cfi_fixup_major_minor(cfi, extp); + +- if (extp->MajorVersion < '0' || extp->MajorVersion > '3' || +- (extp->MinorVersion < '0' || extp->MinorVersion > '4')) { ++ if ((extp->MajorVersion != '0' && extp->MinorVersion != '0') && ++ (extp->MajorVersion < '0' || extp->MajorVersion > '3' || ++ (extp->MinorVersion < '0' || extp->MinorVersion > '4'))) { + if (cfi->mfr == MANUFACTURER_SAMSUNG && + (extp->MajorVersion == '3' && extp->MinorVersion == '3')) { + printk(KERN_NOTICE " Newer Samsung flash detected, " diff --git a/target/linux/orion/patches-2.6.32/090-wrt350nv2_gpio_leds_buttons.patch b/target/linux/orion/patches-2.6.32/090-wrt350nv2_gpio_leds_buttons.patch new file mode 100644 index 0000000000..30f75fc8af --- /dev/null +++ b/target/linux/orion/patches-2.6.32/090-wrt350nv2_gpio_leds_buttons.patch @@ -0,0 +1,102 @@ +--- a/arch/arm/mach-orion5x/wrt350n-v2-setup.c ++++ b/arch/arm/mach-orion5x/wrt350n-v2-setup.c +@@ -15,6 +15,9 @@ + #include + #include + #include ++#include ++#include ++#include + #include + #include + #include +@@ -24,6 +27,80 @@ + #include "common.h" + #include "mpp.h" + ++/* ++ * LEDs attached to GPIO ++ */ ++static struct gpio_led wrt350n_v2_led_pins[] = { ++ { ++ .name = "wrt350nv2:green:power", ++ .gpio = 0, ++ .active_low = 1, ++ }, { ++ .name = "wrt350nv2:green:security", ++ .gpio = 1, ++ .active_low = 1, ++ }, { ++ .name = "wrt350nv2:orange:power", ++ .gpio = 5, ++ .active_low = 1, ++ }, { ++ .name = "wrt350nv2:green:usb", ++ .gpio = 6, ++ .active_low = 1, ++ }, { ++ .name = "wrt350nv2:green:wireless", ++ .gpio = 7, ++ .active_low = 1, ++ }, ++}; ++ ++static struct gpio_led_platform_data wrt350n_v2_led_data = { ++ .leds = wrt350n_v2_led_pins, ++ .num_leds = ARRAY_SIZE(wrt350n_v2_led_pins), ++}; ++ ++static struct platform_device wrt350n_v2_leds = { ++ .name = "leds-gpio", ++ .id = -1, ++ .dev = { ++ .platform_data = &wrt350n_v2_led_data, ++ }, ++}; ++ ++/* ++ * Buttons attached to GPIO ++ */ ++static struct gpio_keys_button wrt350n_v2_buttons[] = { ++ { ++ .code = KEY_RESTART, ++ .gpio = 3, ++ .desc = "Reset Button", ++ .active_low = 1, ++ }, { ++ .code = KEY_WLAN, ++ .gpio = 2, ++ .desc = "WPS Button", ++ .active_low = 1, ++ }, ++}; ++ ++static struct gpio_keys_platform_data wrt350n_v2_button_data = { ++ .buttons = wrt350n_v2_buttons, ++ .nbuttons = ARRAY_SIZE(wrt350n_v2_buttons), ++}; ++ ++static struct platform_device wrt350n_v2_button_device = { ++ .name = "gpio-keys", ++ .id = -1, ++ .num_resources = 0, ++ .dev = { ++ .platform_data = &wrt350n_v2_button_data, ++ }, ++}; ++ ++/* ++ * General setup ++ */ + static struct orion5x_mpp_mode wrt350n_v2_mpp_modes[] __initdata = { + { 0, MPP_GPIO }, /* Power LED green (0=on) */ + { 1, MPP_GPIO }, /* Security LED (0=on) */ +@@ -140,6 +217,8 @@ static void __init wrt350n_v2_init(void) + orion5x_setup_dev_boot_win(WRT350N_V2_NOR_BOOT_BASE, + WRT350N_V2_NOR_BOOT_SIZE); + platform_device_register(&wrt350n_v2_nor_flash); ++ platform_device_register(&wrt350n_v2_button_device); ++ platform_device_register(&wrt350n_v2_leds); + } + + static int __init wrt350n_v2_pci_map_irq(struct pci_dev *dev, u8 slot, u8 pin) diff --git a/target/linux/orion/patches-2.6.32/100-openwrt_partition_map.patch b/target/linux/orion/patches-2.6.32/100-openwrt_partition_map.patch new file mode 100644 index 0000000000..f179a053d6 --- /dev/null +++ b/target/linux/orion/patches-2.6.32/100-openwrt_partition_map.patch @@ -0,0 +1,32 @@ +--- a/arch/arm/mach-orion5x/wrt350n-v2-setup.c ++++ b/arch/arm/mach-orion5x/wrt350n-v2-setup.c +@@ -135,11 +135,11 @@ static struct mtd_partition wrt350n_v2_n + { + .name = "kernel", + .offset = 0x00000000, +- .size = 0x00760000, ++ .size = 0x00100000, // change to kernel mtd size here (1/3) + }, { + .name = "rootfs", +- .offset = 0x001a0000, +- .size = 0x005c0000, ++ .offset = 0x00100000, // change to kernel mtd size here (2/3) ++ .size = 0x00650000, // adopt to kernel mtd size here (3/3) = 0x00750000 - + }, { + .name = "lang", + .offset = 0x00760000, +@@ -152,6 +152,14 @@ static struct mtd_partition wrt350n_v2_n + .name = "u-boot", + .offset = 0x007c0000, + .size = 0x00040000, ++ }, { ++ .name = "eRcOmM_do_not_touch", ++ .offset = 0x00750000, ++ .size = 0x00010000, // erasesize ++ }, { ++ .name = "image", // for sysupgrade ++ .offset = 0x00000000, ++ .size = 0x00750000, + }, + }; + diff --git a/target/linux/orion/patches-2.6.32/101-wnr854t_partition_map.patch b/target/linux/orion/patches-2.6.32/101-wnr854t_partition_map.patch new file mode 100644 index 0000000000..c754106d28 --- /dev/null +++ b/target/linux/orion/patches-2.6.32/101-wnr854t_partition_map.patch @@ -0,0 +1,13 @@ +--- a/arch/arm/mach-orion5x/wnr854t-setup.c ++++ b/arch/arm/mach-orion5x/wnr854t-setup.c +@@ -67,6 +67,10 @@ static struct mtd_partition wnr854t_nor_ + .name = "uboot", + .offset = 0x00760000, + .size = 0x00040000, ++ }, { ++ .name = "image", // for sysupgrade ++ .offset = 0x00000000, ++ .size = 0x00760000, + }, + }; + diff --git a/target/linux/orion/patches-2.6.32/200-dt2_board_support.patch b/target/linux/orion/patches-2.6.32/200-dt2_board_support.patch new file mode 100644 index 0000000000..27154723e1 --- /dev/null +++ b/target/linux/orion/patches-2.6.32/200-dt2_board_support.patch @@ -0,0 +1,23 @@ +--- a/arch/arm/mach-orion5x/Kconfig ++++ b/arch/arm/mach-orion5x/Kconfig +@@ -16,6 +16,13 @@ config MACH_RD88F5182 + Say 'Y' here if you want your kernel to support the + Marvell Orion-NAS (88F5182) RD2 + ++config MACH_DT2 ++ bool "Freecom DataTank Gateway" ++ select I2C_BOARDINFO ++ help ++ Say 'Y' here if you want your kernel to support the ++ Freecom DataTank Gateway ++ + config MACH_KUROBOX_PRO + bool "KuroBox Pro" + select I2C_BOARDINFO +--- a/arch/arm/mach-orion5x/Makefile ++++ b/arch/arm/mach-orion5x/Makefile +@@ -20,3 +20,4 @@ obj-$(CONFIG_MACH_WNR854T) += wnr854t-se + 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 ++obj-$(CONFIG_MACH_DT2) += dt2-setup.o diff --git a/target/linux/orion/patches-2.6.32/300-skb_cb_align.patch b/target/linux/orion/patches-2.6.32/300-skb_cb_align.patch new file mode 100644 index 0000000000..3fefa4de39 --- /dev/null +++ b/target/linux/orion/patches-2.6.32/300-skb_cb_align.patch @@ -0,0 +1,11 @@ +--- a/include/linux/skbuff.h ++++ b/include/linux/skbuff.h +@@ -332,7 +332,7 @@ struct sk_buff { + * want to keep them across layers you have to do a skb_clone() + * first. This is owned by whoever has the skb queued ATM. + */ +- char cb[48]; ++ char cb[48] __attribute__((aligned(8))); + #if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE) + void *cb_next; + #endif diff --git a/target/linux/orion/patches/010-ignore_atag_cmdline.patch b/target/linux/orion/patches/010-ignore_atag_cmdline.patch index 9df21f1eb5..08a6b1fdac 100644 --- a/target/linux/orion/patches/010-ignore_atag_cmdline.patch +++ b/target/linux/orion/patches/010-ignore_atag_cmdline.patch @@ -1,6 +1,6 @@ --- a/arch/arm/kernel/setup.c +++ b/arch/arm/kernel/setup.c -@@ -629,7 +629,7 @@ __tagtable(ATAG_REVISION, parse_tag_revi +@@ -595,7 +595,7 @@ __tagtable(ATAG_REVISION, parse_tag_revi static int __init parse_tag_cmdline(const struct tag *tag) { diff --git a/target/linux/orion/patches/090-wrt350nv2_gpio_leds_buttons.patch b/target/linux/orion/patches/090-wrt350nv2_gpio_leds_buttons.patch deleted file mode 100644 index 30f75fc8af..0000000000 --- a/target/linux/orion/patches/090-wrt350nv2_gpio_leds_buttons.patch +++ /dev/null @@ -1,102 +0,0 @@ ---- a/arch/arm/mach-orion5x/wrt350n-v2-setup.c -+++ b/arch/arm/mach-orion5x/wrt350n-v2-setup.c -@@ -15,6 +15,9 @@ - #include - #include - #include -+#include -+#include -+#include - #include - #include - #include -@@ -24,6 +27,80 @@ - #include "common.h" - #include "mpp.h" - -+/* -+ * LEDs attached to GPIO -+ */ -+static struct gpio_led wrt350n_v2_led_pins[] = { -+ { -+ .name = "wrt350nv2:green:power", -+ .gpio = 0, -+ .active_low = 1, -+ }, { -+ .name = "wrt350nv2:green:security", -+ .gpio = 1, -+ .active_low = 1, -+ }, { -+ .name = "wrt350nv2:orange:power", -+ .gpio = 5, -+ .active_low = 1, -+ }, { -+ .name = "wrt350nv2:green:usb", -+ .gpio = 6, -+ .active_low = 1, -+ }, { -+ .name = "wrt350nv2:green:wireless", -+ .gpio = 7, -+ .active_low = 1, -+ }, -+}; -+ -+static struct gpio_led_platform_data wrt350n_v2_led_data = { -+ .leds = wrt350n_v2_led_pins, -+ .num_leds = ARRAY_SIZE(wrt350n_v2_led_pins), -+}; -+ -+static struct platform_device wrt350n_v2_leds = { -+ .name = "leds-gpio", -+ .id = -1, -+ .dev = { -+ .platform_data = &wrt350n_v2_led_data, -+ }, -+}; -+ -+/* -+ * Buttons attached to GPIO -+ */ -+static struct gpio_keys_button wrt350n_v2_buttons[] = { -+ { -+ .code = KEY_RESTART, -+ .gpio = 3, -+ .desc = "Reset Button", -+ .active_low = 1, -+ }, { -+ .code = KEY_WLAN, -+ .gpio = 2, -+ .desc = "WPS Button", -+ .active_low = 1, -+ }, -+}; -+ -+static struct gpio_keys_platform_data wrt350n_v2_button_data = { -+ .buttons = wrt350n_v2_buttons, -+ .nbuttons = ARRAY_SIZE(wrt350n_v2_buttons), -+}; -+ -+static struct platform_device wrt350n_v2_button_device = { -+ .name = "gpio-keys", -+ .id = -1, -+ .num_resources = 0, -+ .dev = { -+ .platform_data = &wrt350n_v2_button_data, -+ }, -+}; -+ -+/* -+ * General setup -+ */ - static struct orion5x_mpp_mode wrt350n_v2_mpp_modes[] __initdata = { - { 0, MPP_GPIO }, /* Power LED green (0=on) */ - { 1, MPP_GPIO }, /* Security LED (0=on) */ -@@ -140,6 +217,8 @@ static void __init wrt350n_v2_init(void) - orion5x_setup_dev_boot_win(WRT350N_V2_NOR_BOOT_BASE, - WRT350N_V2_NOR_BOOT_SIZE); - platform_device_register(&wrt350n_v2_nor_flash); -+ platform_device_register(&wrt350n_v2_button_device); -+ platform_device_register(&wrt350n_v2_leds); - } - - static int __init wrt350n_v2_pci_map_irq(struct pci_dev *dev, u8 slot, u8 pin) diff --git a/target/linux/orion/patches/200-dt2_board_support.patch b/target/linux/orion/patches/200-dt2_board_support.patch index 27154723e1..aa645ea499 100644 --- a/target/linux/orion/patches/200-dt2_board_support.patch +++ b/target/linux/orion/patches/200-dt2_board_support.patch @@ -16,7 +16,7 @@ select I2C_BOARDINFO --- a/arch/arm/mach-orion5x/Makefile +++ b/arch/arm/mach-orion5x/Makefile -@@ -20,3 +20,4 @@ obj-$(CONFIG_MACH_WNR854T) += wnr854t-se +@@ -21,3 +21,4 @@ obj-$(CONFIG_MACH_WNR854T) += wnr854t-se 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 diff --git a/target/linux/orion/patches/300-skb_cb_align.patch b/target/linux/orion/patches/300-skb_cb_align.patch deleted file mode 100644 index 3fefa4de39..0000000000 --- a/target/linux/orion/patches/300-skb_cb_align.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/include/linux/skbuff.h -+++ b/include/linux/skbuff.h -@@ -332,7 +332,7 @@ struct sk_buff { - * want to keep them across layers you have to do a skb_clone() - * first. This is owned by whoever has the skb queued ATM. - */ -- char cb[48]; -+ char cb[48] __attribute__((aligned(8))); - #if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE) - void *cb_next; - #endif -- cgit v1.2.3