mirror of https://github.com/hak5/openwrt.git
ar71xx: Enable mtdsplit support for RB SPI NOR devices
This patch enables mtdsplit for the MikroTik subtarget. It converts mach-rbspi.c to use a single "firmware" partition. Finally, it converts the SPI NOR profile to metadata images: the original combined-image format is gone, the images are now "standard" sysupgrade images with metadata appended. Note: kernel2minor apparently pads the kernel container to erase-block boundary, but this is undocumented behaviour, so we do not rely on it and call pad-to anyway. Note: in platform.sh, the boards are tested last in platform_check_image() as this should eventually become the "*)" default case when more devices switch to metadata images. Signed-off-by: Thibaut VARENE <hacks@slashdirt.org>openwrt-18.06
parent
53c862705d
commit
f6a52bf337
|
@ -344,11 +344,6 @@ platform_check_image() {
|
||||||
ls-sr71|\
|
ls-sr71|\
|
||||||
pb42|\
|
pb42|\
|
||||||
pb44|\
|
pb44|\
|
||||||
rb-750-r2|\
|
|
||||||
rb-750up-r2|\
|
|
||||||
rb-941-2nd|\
|
|
||||||
rb-951ui-2nd|\
|
|
||||||
rb-mapl-2nd|\
|
|
||||||
routerstation-pro|\
|
routerstation-pro|\
|
||||||
routerstation|\
|
routerstation|\
|
||||||
wp543|\
|
wp543|\
|
||||||
|
@ -637,6 +632,14 @@ platform_check_image() {
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
;;
|
;;
|
||||||
|
# these boards use metadata images
|
||||||
|
rb-750-r2|\
|
||||||
|
rb-750up-r2|\
|
||||||
|
rb-941-2nd|\
|
||||||
|
rb-951ui-2nd|\
|
||||||
|
rb-mapl-2nd)
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
echo "Sysupgrade is not yet supported on $board."
|
echo "Sysupgrade is not yet supported on $board."
|
||||||
|
@ -707,14 +710,6 @@ platform_do_upgrade() {
|
||||||
local board=$(ar71xx_board_name)
|
local board=$(ar71xx_board_name)
|
||||||
|
|
||||||
case "$board" in
|
case "$board" in
|
||||||
rb-750-r2|\
|
|
||||||
rb-750up-r2|\
|
|
||||||
rb-941-2nd|\
|
|
||||||
rb-951ui-2nd|\
|
|
||||||
rb-mapl-2nd)
|
|
||||||
PLATFORM_DO_UPGRADE_COMBINED_SEPARATE_MTD=1
|
|
||||||
platform_do_upgrade_combined "$ARGV"
|
|
||||||
;;
|
|
||||||
all0258n)
|
all0258n)
|
||||||
platform_do_upgrade_allnet "0x9f050000" "$ARGV"
|
platform_do_upgrade_allnet "0x9f050000" "$ARGV"
|
||||||
;;
|
;;
|
||||||
|
|
|
@ -380,6 +380,7 @@ CONFIG_MTD_SPLIT_LZMA_FW=y
|
||||||
CONFIG_MTD_SPLIT_SEAMA_FW=y
|
CONFIG_MTD_SPLIT_SEAMA_FW=y
|
||||||
CONFIG_MTD_SPLIT_UIMAGE_FW=y
|
CONFIG_MTD_SPLIT_UIMAGE_FW=y
|
||||||
CONFIG_MTD_SPLIT_WRGG_FW=y
|
CONFIG_MTD_SPLIT_WRGG_FW=y
|
||||||
|
CONFIG_MTD_SPLIT_MINOR_FW=y
|
||||||
CONFIG_MTD_TPLINK_PARTS=y
|
CONFIG_MTD_TPLINK_PARTS=y
|
||||||
CONFIG_MYLOADER=y
|
CONFIG_MYLOADER=y
|
||||||
CONFIG_NEED_DMA_MAP_STATE=y
|
CONFIG_NEED_DMA_MAP_STATE=y
|
||||||
|
|
|
@ -60,7 +60,6 @@
|
||||||
#define RB_ROUTERBOOT_OFFSET 0x0000
|
#define RB_ROUTERBOOT_OFFSET 0x0000
|
||||||
#define RB_BIOS_SIZE 0x1000
|
#define RB_BIOS_SIZE 0x1000
|
||||||
#define RB_SOFT_CFG_SIZE 0x1000
|
#define RB_SOFT_CFG_SIZE 0x1000
|
||||||
#define RB_KERNEL_SIZE (2 * 1024 * 1024) /* 2MB kernel */
|
|
||||||
|
|
||||||
/* Flash partitions indexes */
|
/* Flash partitions indexes */
|
||||||
enum {
|
enum {
|
||||||
|
@ -69,8 +68,7 @@ enum {
|
||||||
RBSPI_PART_BIOS,
|
RBSPI_PART_BIOS,
|
||||||
RBSPI_PART_RBOOT2,
|
RBSPI_PART_RBOOT2,
|
||||||
RBSPI_PART_SCONF,
|
RBSPI_PART_SCONF,
|
||||||
RBSPI_PART_KERN,
|
RBSPI_PART_FIRMW,
|
||||||
RBSPI_PART_ROOT,
|
|
||||||
RBSPI_PARTS
|
RBSPI_PARTS
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -79,8 +77,6 @@ static struct mtd_partition rbspi_spi_partitions[RBSPI_PARTS];
|
||||||
/*
|
/*
|
||||||
* Setup the SPI flash partition table based on initial parsing.
|
* Setup the SPI flash partition table based on initial parsing.
|
||||||
* The kernel can be at any aligned position and have any size.
|
* The kernel can be at any aligned position and have any size.
|
||||||
* The size of the kernel partition is the desired RB_KERNEL_SIZE
|
|
||||||
* minus the size of the preceding partitions (128KB).
|
|
||||||
*/
|
*/
|
||||||
static void __init rbspi_init_partitions(const struct rb_info *info)
|
static void __init rbspi_init_partitions(const struct rb_info *info)
|
||||||
{
|
{
|
||||||
|
@ -114,16 +110,10 @@ static void __init rbspi_init_partitions(const struct rb_info *info)
|
||||||
parts[RBSPI_PART_SCONF].offset = info->soft_cfg_offs;
|
parts[RBSPI_PART_SCONF].offset = info->soft_cfg_offs;
|
||||||
parts[RBSPI_PART_SCONF].size = RB_SOFT_CFG_SIZE;
|
parts[RBSPI_PART_SCONF].size = RB_SOFT_CFG_SIZE;
|
||||||
|
|
||||||
parts[RBSPI_PART_KERN].name = "kernel";
|
parts[RBSPI_PART_FIRMW].name = "firmware";
|
||||||
parts[RBSPI_PART_KERN].offset = parts[RBSPI_PART_SCONF].offset
|
parts[RBSPI_PART_FIRMW].offset = parts[RBSPI_PART_SCONF].offset
|
||||||
+ parts[RBSPI_PART_SCONF].size;
|
+ parts[RBSPI_PART_SCONF].size;
|
||||||
parts[RBSPI_PART_KERN].size = RB_KERNEL_SIZE
|
parts[RBSPI_PART_FIRMW].size = MTDPART_SIZ_FULL;
|
||||||
- parts[RBSPI_PART_KERN].offset;
|
|
||||||
|
|
||||||
parts[RBSPI_PART_ROOT].name = "rootfs";
|
|
||||||
parts[RBSPI_PART_ROOT].offset = parts[RBSPI_PART_KERN].offset
|
|
||||||
+ parts[RBSPI_PART_KERN].size;
|
|
||||||
parts[RBSPI_PART_ROOT].size = MTDPART_SIZ_FULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct flash_platform_data rbspi_spi_flash_data = {
|
static struct flash_platform_data rbspi_spi_flash_data = {
|
||||||
|
|
|
@ -27,14 +27,13 @@ TARGET_DEVICES += nand-64m nand-large
|
||||||
define Device/rb-nor-flash-16M
|
define Device/rb-nor-flash-16M
|
||||||
DEVICE_TITLE := MikroTik RouterBoard with 16 MB SPI NOR flash
|
DEVICE_TITLE := MikroTik RouterBoard with 16 MB SPI NOR flash
|
||||||
DEVICE_PACKAGES := rbcfg
|
DEVICE_PACKAGES := rbcfg
|
||||||
BLOCKSIZE := 64k
|
|
||||||
IMAGE_SIZE := 16000k
|
IMAGE_SIZE := 16000k
|
||||||
LOADER_TYPE := elf
|
LOADER_TYPE := elf
|
||||||
KERNEL_INSTALL := 1
|
KERNEL_INSTALL := 1
|
||||||
KERNEL := kernel-bin | lzma | loader-kernel | kernel2minor -s 1024 -e
|
KERNEL := kernel-bin | lzma | loader-kernel
|
||||||
KERNEL_INITRAMFS := kernel-bin | lzma | loader-kernel
|
SUPPORTED_DEVICES := rb-750-r2 rb-750up-r2 rb-941-2nd rb-951ui-2nd rb-mapl-2nd
|
||||||
IMAGES := sysupgrade.bin
|
IMAGE/sysupgrade.bin = append-kernel | kernel2minor -s 1024 -e | pad-to $$$$(BLOCKSIZE) | \
|
||||||
IMAGE/sysupgrade.bin = append-rootfs | pad-rootfs | combined-image | check-size $$$$(IMAGE_SIZE)
|
append-rootfs | pad-rootfs | append-metadata | check-size $$$$(IMAGE_SIZE)
|
||||||
endef
|
endef
|
||||||
|
|
||||||
TARGET_DEVICES += rb-nor-flash-16M
|
TARGET_DEVICES += rb-nor-flash-16M
|
||||||
|
|
Loading…
Reference in New Issue