I’m sorry, I’ve just realized there’s one change that I missed in the patch I sent, which is necessary for it to work:
Signed-off-by: Thibaut VARENE <ha...@slashdirt.org> --- include/image.mk | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/include/image.mk b/include/image.mk index 93c3bbd..1405f46 100644 --- a/include/image.mk +++ b/include/image.mk @@ -309,6 +309,13 @@ define Device/InitProfile DEVICE_DESCRIPTION = Build firmware images for $$(DEVICE_TITLE) endef +define Build/kernel2minor + if [ -x $(STAGING_DIR_HOST)/bin/kernel2minor ]; then \ + $(STAGING_DIR_HOST)/bin/kernel2minor -k $@ -r $@.new $(1); \ + mv $@.new $@; \ + fi +endef + define Device/Init DEVICE_NAME := $(1) KERNEL:= > Le 4 janv. 2017 à 23:04, "Thibaut VARENE > <ha...@slashdirt.org>"@vps.slashdirt.org a écrit : > > From e55aa1ddff1563d582b456807f20c0457fcaed77 Mon Sep 17 00:00:00 2001 > From: Thibaut VARENE <ha...@slashdirt.org> > Date: Wed, 4 Jan 2017 22:44:54 +0100 > Subject: [PATCH] ar71xx: add support for RB-941-2nD > > Add full support for Mikrotik RB-941-2nD (hAP lite) > > Original patch by Sergey Sergeev <ad...@yapic.net> and > more information is available here: > https://wiki.openwrt.org/toh/mikrotik/rb941_2nd > I updated and adapted the patch to apply cleanly to LEDE trunk > and added proper numbering for the switch ports (matching case > labels). > Tested working on actual hardware with the information > provided in the above webpage. Sysupgrade works. > > Signed-off-by: Thibaut VARENE <ha...@slashdirt.org> > --- > target/linux/ar71xx/base-files/etc/board.d/01_leds | 3 + > .../linux/ar71xx/base-files/etc/board.d/02_network | 4 + > target/linux/ar71xx/base-files/etc/diag.sh | 2 +- > target/linux/ar71xx/base-files/lib/ar71xx.sh | 3 + > .../ar71xx/base-files/lib/upgrade/platform.sh | 29 +++- > target/linux/ar71xx/config-4.4 | 1 + > .../ar71xx/files/arch/mips/ath79/Kconfig.openwrt | 10 ++ > target/linux/ar71xx/files/arch/mips/ath79/Makefile | 1 + > .../ar71xx/files/arch/mips/ath79/mach-rb941.c | 174 +++++++++++++++++++++ > .../linux/ar71xx/files/arch/mips/ath79/machtypes.h | 1 + > target/linux/ar71xx/image/legacy.mk | 23 +++ > .../linux/ar71xx/mikrotik/profiles/03-norflash.mk | 16 ++ > 12 files changed, 263 insertions(+), 4 deletions(-) > create mode 100644 target/linux/ar71xx/files/arch/mips/ath79/mach-rb941.c > create mode 100644 target/linux/ar71xx/mikrotik/profiles/03-norflash.mk > > diff --git a/target/linux/ar71xx/base-files/etc/board.d/01_leds > b/target/linux/ar71xx/base-files/etc/board.d/01_leds > index c6dcf36..75b5142 100755 > --- a/target/linux/ar71xx/base-files/etc/board.d/01_leds > +++ b/target/linux/ar71xx/base-files/etc/board.d/01_leds > @@ -199,6 +199,9 @@ rb-750) > ucidef_set_led_switch "port4" "port4" "rb750:green:port4" "switch0" > "0x04" > ucidef_set_led_switch "port5" "port5" "rb750:green:port5" "switch0" > "0x02" > ;; > +rb-941-2nd) > + ucidef_set_led_timer "act" "act" "rb:green:act" "1000" "1000" > + ;; > rb-2011l|\ > rb-2011uas|\ > rb-2011uias|\ > diff --git a/target/linux/ar71xx/base-files/etc/board.d/02_network > b/target/linux/ar71xx/base-files/etc/board.d/02_network > index 8acd214..6fd9601 100755 > --- a/target/linux/ar71xx/base-files/etc/board.d/02_network > +++ b/target/linux/ar71xx/base-files/etc/board.d/02_network > @@ -237,6 +237,10 @@ ar71xx_setup_interfaces() > dap-2695-a1) > ucidef_add_switch "switch0" "0@eth0" "2:lan" "3:wan" "6@eth1" > ;; > + rb-941-2nd) > + ucidef_add_switch "switch0" \ > + "0@eth0" "1:lan:4" "2:lan:3" "3:lan:2" "4:wan:1" > + ;; > db120|\ > rb-2011l|\ > rb-2011uas|\ > diff --git a/target/linux/ar71xx/base-files/etc/diag.sh > b/target/linux/ar71xx/base-files/etc/diag.sh > index d060ccf..75c6c9a 100644 > --- a/target/linux/ar71xx/base-files/etc/diag.sh > +++ b/target/linux/ar71xx/base-files/etc/diag.sh > @@ -288,7 +288,7 @@ get_status_led() { > rb-912uag-5hpnd) > status_led="rb:green:user" > ;; > - rb-951ui-2hnd) > + rb-951ui-2hnd | rb-941-2nd) > status_led="rb:green:act" > ;; > rb-sxt2n|\ > diff --git a/target/linux/ar71xx/base-files/lib/ar71xx.sh > b/target/linux/ar71xx/base-files/lib/ar71xx.sh > index 3241100..527112b 100755 > --- a/target/linux/ar71xx/base-files/lib/ar71xx.sh > +++ b/target/linux/ar71xx/base-files/lib/ar71xx.sh > @@ -827,6 +827,9 @@ ar71xx_board_detect() { > *"RouterBOARD 912UAG-5HPnD") > name="rb-912uag-5hpnd" > ;; > + *"RouterBOARD 941-2nD") > + name="rb-941-2nd" > + ;; > *"RouterBOARD 951G-2HnD") > name="rb-951g-2hnd" > ;; > diff --git a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh > b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh > index 570aa68..5847125 100755 > --- a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh > +++ b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh > @@ -11,6 +11,8 @@ RAMFS_COPY_DATA=/lib/ar71xx.sh > CI_BLKSZ=65536 > CI_LDADR=0x80060000 > > +PLATFORM_DO_UPGRADE_COMBINED_SEPARATE_MTD=0 > + > platform_find_partitions() { > local first dev size erasesize name > while read dev size erasesize name; do > @@ -40,6 +42,13 @@ platform_find_kernelpart() { > done > } > > +platform_find_rootfspart() { > + local part > + for part in "${1%:*}" "${1#*:}"; do > + [ "$part" != "$2" ] && echo "$part"; break > + done > +} > + > platform_do_upgrade_combined() { > local partitions=$(platform_find_partitions) > local kernelpart=$(platform_find_kernelpart "${partitions#*:}") > @@ -53,13 +62,22 @@ platform_do_upgrade_combined() { > [ ${root_blocks:-0} -gt 0 ] && \ > [ ${erase_size:-0} -gt 0 ]; > then > + local rootfspart=$(platform_find_rootfspart "$partitions" > "$kernelpart") > local append="" > [ -f "$CONF_TAR" -a "$SAVE_CONFIG" -eq 1 ] && append="-j > $CONF_TAR" > > - ( dd if="$1" bs=$CI_BLKSZ skip=1 count=$kern_blocks > 2>/dev/null; \ > - dd if="$1" bs=$CI_BLKSZ skip=$((1+$kern_blocks)) > count=$root_blocks 2>/dev/null ) | \ > - mtd -r $append > -F$kernelpart:$kern_length:$CI_LDADR,rootfs write - $partitions > + if [ "$PLATFORM_DO_UPGRADE_COMBINED_SEPARATE_MTD" -ne 1 ]; then > + ( dd if="$1" bs=$CI_BLKSZ skip=1 count=$kern_blocks > 2>/dev/null; \ > + dd if="$1" bs=$CI_BLKSZ skip=$((1+$kern_blocks)) > count=$root_blocks 2>/dev/null ) | \ > + mtd -r $append > -F$kernelpart:$kern_length:$CI_LDADR,rootfs write - $partitions > + elif [ -n "$rootfspart" ]; then > + dd if="$1" bs=$CI_BLKSZ skip=1 count=$kern_blocks > 2>/dev/null | \ > + mtd write - $kernelpart > + dd if="$1" bs=$CI_BLKSZ skip=$((1+$kern_blocks)) > count=$root_blocks 2>/dev/null | \ > + mtd -r $append write - $rootfspart > + fi > fi > + PLATFORM_DO_UPGRADE_COMBINED_SEPARATE_MTD=0 > } > > tplink_get_image_hwid() { > @@ -308,6 +326,7 @@ platform_check_image() { > ls-sr71|\ > pb42|\ > pb44|\ > + rb-941-2nd|\ > routerstation-pro|\ > routerstation|\ > wp543|\ > @@ -586,6 +605,10 @@ platform_do_upgrade() { > local board=$(ar71xx_board_name) > > case "$board" in > + rb-941-2nd) > + PLATFORM_DO_UPGRADE_COMBINED_SEPARATE_MTD=1 > + platform_do_upgrade_combined "$ARGV" > + ;; > all0258n) > platform_do_upgrade_allnet "0x9f050000" "$ARGV" > ;; > diff --git a/target/linux/ar71xx/config-4.4 b/target/linux/ar71xx/config-4.4 > index 4b2f736..a79d53e 100644 > --- a/target/linux/ar71xx/config-4.4 > +++ b/target/linux/ar71xx/config-4.4 > @@ -143,6 +143,7 @@ CONFIG_ATH79_MACH_R6100=y > # CONFIG_ATH79_MACH_RB750 is not set > # CONFIG_ATH79_MACH_RB91X is not set > # CONFIG_ATH79_MACH_RB922 is not set > +# CONFIG_ATH79_MACH_RB941 is not set > # CONFIG_ATH79_MACH_RB95X is not set > # CONFIG_ATH79_MACH_RBSXTLITE is not set > CONFIG_ATH79_MACH_RE450=y > diff --git a/target/linux/ar71xx/files/arch/mips/ath79/Kconfig.openwrt > b/target/linux/ar71xx/files/arch/mips/ath79/Kconfig.openwrt > index 21d6b51..b38c30a 100644 > --- a/target/linux/ar71xx/files/arch/mips/ath79/Kconfig.openwrt > +++ b/target/linux/ar71xx/files/arch/mips/ath79/Kconfig.openwrt > @@ -860,6 +860,16 @@ config ATH79_MACH_RB922 > select ATH79_ROUTERBOOT > select RLE_DECOMPRESS > > +config ATH79_MACH_RB941 > + bool "MikroTik RouterBOARD 941-2nd support" > + select SOC_QCA953X > + select ATH79_DEV_ETH > + select ATH79_DEV_GPIO_BUTTONS > + select ATH79_DEV_LEDS_GPIO > + select ATH79_DEV_M25P80 > + select ATH79_DEV_WMAC > + select ATH79_ROUTERBOOT > + > config ATH79_MACH_RB95X > bool "MikroTik RouterBOARD 95X support" > select SOC_AR934X > diff --git a/target/linux/ar71xx/files/arch/mips/ath79/Makefile > b/target/linux/ar71xx/files/arch/mips/ath79/Makefile > index 6384c06..03bbe21 100644 > --- a/target/linux/ar71xx/files/arch/mips/ath79/Makefile > +++ b/target/linux/ar71xx/files/arch/mips/ath79/Makefile > @@ -147,6 +147,7 @@ obj-$(CONFIG_ATH79_MACH_RB4XX) += > mach-rb4xx.o > obj-$(CONFIG_ATH79_MACH_RB750) += mach-rb750.o > obj-$(CONFIG_ATH79_MACH_RB91X) += mach-rb91x.o > obj-$(CONFIG_ATH79_MACH_RB922) += mach-rb922.o > +obj-$(CONFIG_ATH79_MACH_RB941) += mach-rb941.o > obj-$(CONFIG_ATH79_MACH_RB95X) += mach-rb95x.o > obj-$(CONFIG_ATH79_MACH_RBSXTLITE) += mach-rbsxtlite.o > obj-$(CONFIG_ATH79_MACH_RE450) += mach-re450.o > diff --git a/target/linux/ar71xx/files/arch/mips/ath79/mach-rb941.c > b/target/linux/ar71xx/files/arch/mips/ath79/mach-rb941.c > new file mode 100644 > index 0000000..5a8c7c0 > --- /dev/null > +++ b/target/linux/ar71xx/files/arch/mips/ath79/mach-rb941.c > @@ -0,0 +1,174 @@ > +/* > + * MikroTik RouterBOARD 941-2nD support > + * > + * Copyright (C) 2016 Sergey Sergeev <ad...@yapic.net> > + * > + * This program is free software; you can redistribute it and/or modify it > + * under the terms of the GNU General Public License version 2 as published > + * by the Free Software Foundation. > + */ > + > +#include <linux/export.h> > +#include <linux/pci.h> > +#include <linux/ath9k_platform.h> > +#include <linux/platform_device.h> > +#include <linux/phy.h> > +#include <linux/ar8216_platform.h> > +#include <linux/rle.h> > +#include <linux/routerboot.h> > +#include <linux/gpio.h> > + > +#include <linux/mtd/mtd.h> > +//#include <linux/mtd/nand.h> > +#include <linux/mtd/partitions.h> > + > +#include <asm/mach-ath79/ar71xx_regs.h> > +#include <asm/mach-ath79/ath79.h> > +#include <asm/mach-ath79/irq.h> > + > +#include "common.h" > +#include "dev-ap9x-pci.h" > +#include "dev-eth.h" > +#include "dev-spi.h" > +#include "dev-gpio-buttons.h" > +#include "dev-leds-gpio.h" > +#include "dev-m25p80.h" > +//#include "dev-usb.h" > +#include "dev-wmac.h" > +#include "machtypes.h" > +#include "routerboot.h" > + > +#define RB941_GPIO_LED_ACT 14 > +#define RB941_GPIO_BTN_RESET 16 > + > +#define RB941_KEYS_POLL_INTERVAL 20 /* msecs */ > +#define RB941_KEYS_DEBOUNCE_INTERVAL (3 * RB941_KEYS_POLL_INTERVAL) > + > +#define RB_ROUTERBOOT_OFFSET 0x0000 > +#define RB_ROUTERBOOT_SIZE 0xe000 > +#define RB_HARD_CFG_OFFSET 0xe000 > +#define RB_HARD_CFG_SIZE 0x1000 > +#define RB_BIOS_OFFSET 0xf000 > +#define RB_BIOS_SIZE 0x1000 > +#define RB_ROUTERBOOT2_OFFSET 0x10000 > +#define RB_ROUTERBOOT2_SIZE 0xf000 > +#define RB_SOFT_CFG_OFFSET 0x1f000 > +#define RB_SOFT_CFG_SIZE 0x1000 > +#define RB_ROOTFS_OFFSET 0x20000 > +#define RB_ROOTFS_SIZE 0x9e0000 > +#define RB_KERNEL_OFFSET 0xa00000 > +#define RB_KERNEL_SIZE MTDPART_SIZ_FULL > + > +void __init rb941_wlan_init(void) > +{ > + char *art_buf; > + u8 wlan_mac[ETH_ALEN]; > + > + art_buf = rb_get_wlan_data(); > + if (art_buf == NULL) > + return; > + > + ath79_init_mac(wlan_mac, ath79_mac_base, 11); > + ath79_register_wmac(art_buf + 0x1000, wlan_mac); > + > + kfree(art_buf); > +} > + > +static struct mtd_partition rb941_spi_partitions[] = { > + { > + .name = "routerboot", > + .offset = RB_ROUTERBOOT_OFFSET, > + .mask_flags = MTD_WRITEABLE, > + .size = RB_ROUTERBOOT_SIZE, > + }, { > + .name = "hard_config", > + .offset = RB_HARD_CFG_OFFSET, > + .size = RB_HARD_CFG_SIZE, > + .mask_flags = MTD_WRITEABLE, > + }, { > + .name = "bios", > + .offset = RB_BIOS_OFFSET, > + .size = RB_BIOS_SIZE, > + .mask_flags = MTD_WRITEABLE, > + }, { > + .name = "routerboot2", > + .offset = RB_ROUTERBOOT2_OFFSET, > + .size = RB_ROUTERBOOT2_SIZE, > + .mask_flags = MTD_WRITEABLE, > + }, { > + .name = "soft_config", > + .offset = RB_SOFT_CFG_OFFSET, > + .size = RB_SOFT_CFG_SIZE, > + .mask_flags = MTD_WRITEABLE, > + }, { > + .name = "rootfs", > + .offset = RB_ROOTFS_OFFSET, > + .size = RB_ROOTFS_SIZE, > + }, { > + .name = "kernel", > + .offset = RB_KERNEL_OFFSET, > + .size = RB_KERNEL_SIZE, > + } > +}; > + > +static struct flash_platform_data rb941_spi_flash_data = { > + .parts = rb941_spi_partitions, > + .nr_parts = ARRAY_SIZE(rb941_spi_partitions), > +}; > + > +static struct gpio_led rb941_leds[] __initdata = { > + { > + .name = "rb:green:act", > + .gpio = RB941_GPIO_LED_ACT, > + .active_low = 1, > + }, > +}; > + > +static struct gpio_keys_button rb941_gpio_keys[] __initdata = { > + { > + .desc = "Reset button", > + .type = EV_KEY, > + .code = KEY_RESTART, > + .debounce_interval = RB941_KEYS_DEBOUNCE_INTERVAL, > + .gpio = RB941_GPIO_BTN_RESET, > + .active_low = 1, > + }, > +}; > + > +static void __init rb941_setup(void) > +{ > + const struct rb_info *info; > + //try to get rb_info data > + info = rb_init_info((void *)(KSEG1ADDR(AR71XX_SPI_BASE)), 0x20000); > + if (!info){ > + pr_err("%s: Can't get rb_info data from flash!\n", __func__); > + //return -EINVAL; //Not critical ... continue! > + } > + ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_SW_ONLY_MODE); > + ath79_register_m25p80(&rb941_spi_flash_data); > + ath79_register_mdio(0, 0x0); > + > + /* WAN. We have no WAN. Only LAN. */ > + /*ath79_switch_data.phy4_mii_en = 1; > + ath79_switch_data.phy_poll_mask = BIT(4); > + ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII; > + ath79_eth0_data.phy_mask = BIT(4); > + ath79_init_mac(ath79_eth0_data.mac_addr, ath79_mac_base, 0); > + ath79_register_eth(0); */ > + > + /* LAN */ > + ath79_init_mac(ath79_eth1_data.mac_addr, ath79_mac_base, 0); > + ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_GMII; > + ath79_register_eth(1); > + > + //ath79_register_usb(); > + > + rb941_wlan_init(); > + > + ath79_register_leds_gpio(-1, ARRAY_SIZE(rb941_leds), rb941_leds); > + ath79_register_gpio_keys_polled(-1, RB941_KEYS_POLL_INTERVAL, > + ARRAY_SIZE(rb941_gpio_keys), > + rb941_gpio_keys); > +} > + > +MIPS_MACHINE(ATH79_MACH_RB_941, "H951L", "MikroTik RouterBOARD 941-2nD", > rb941_setup); > diff --git a/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h > b/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h > index d18a71c..f64031a 100644 > --- a/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h > +++ b/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h > @@ -162,6 +162,7 @@ enum ath79_mach_type { > ATH79_MACH_RB_751, /* MikroTik RouterBOARD 751 */ > ATH79_MACH_RB_751G, /* Mikrotik RouterBOARD 751G */ > ATH79_MACH_RB_922GS, /* Mikrotik RouterBOARD > 911/922GS boards */ > + ATH79_MACH_RB_941, /* MikroTik RouterBOARD 941-2nD > */ > ATH79_MACH_RB_951G, /* Mikrotik RouterBOARD 951G */ > ATH79_MACH_RB_951U, /* Mikrotik RouterBOARD > 951Ui-2HnD */ > ATH79_MACH_RB_SXTLITE2ND, /* Mikrotik RouterBOARD SXT > Lite 2nD */ > diff --git a/target/linux/ar71xx/image/legacy.mk > b/target/linux/ar71xx/image/legacy.mk > index 3259016..b64d79e 100644 > --- a/target/linux/ar71xx/image/legacy.mk > +++ b/target/linux/ar71xx/image/legacy.mk > @@ -847,6 +847,29 @@ define Image/Build/Zcomax > fi > endef > > +ifeq ($(SUBTARGET),mikrotik) > + > +define Device/rb-nor-flash-16M > + DEVICE_PROFILE := MikrotikDefault MikrotikNorFlash > + BLOCKSIZE := 64k > + IMAGE_SIZE := 16000k > + KERNEL2MINOR_ARGS := -s 1024 -e > + LOADER_TYPE := elf > + KERNEL_INSTALL := 1 > + KERNEL := kernel-bin | lzma | loader-kernel | kernel2minor > $$(KERNEL2MINOR_ARGS) > + KERNEL_INITRAMFS := kernel-bin | lzma | loader-kernel > + IMAGES := sysupgrade.bin > + IMAGE/sysupgrade.bin = append-rootfs | pad-rootfs | combined-image | > check-size $$$$(IMAGE_SIZE) > +endef > + > +define Device/rb-941-2nd > +$(Device/rb-nor-flash-16M) > + BOARDNAME:= rb-941-2nd > +endef > +TARGET_DEVICES += rb-941-2nd > + > +endif # ifeq ($(SUBTARGET),mikrotik) > + > > # $(1): template name to be defined. > # $(2): squashfs suffix to be used. > diff --git a/target/linux/ar71xx/mikrotik/profiles/03-norflash.mk > b/target/linux/ar71xx/mikrotik/profiles/03-norflash.mk > new file mode 100644 > index 0000000..aa5c891 > --- /dev/null > +++ b/target/linux/ar71xx/mikrotik/profiles/03-norflash.mk > @@ -0,0 +1,16 @@ > +# > +# Copyright (C) 2009 OpenWrt.org > +# > +# This is free software, licensed under the GNU General Public License v2. > +# See /LICENSE for more information. > +# > + > +define Profile/MikrotikNorFlash > + NAME:=NorFlash Profile > + PACKAGES:=kmod-ath9k > +endef > + > +define Profile/MikrotikNorFlash/Description > + Package set optimized for the Mikrotik's boards with single NOR > flash(16MB or more). > +endef > +$(eval $(call Profile,MikrotikNorFlash)) > -- > 2.1.4 > _______________________________________________ Lede-dev mailing list Lede-dev@lists.infradead.org http://lists.infradead.org/mailman/listinfo/lede-dev