[LEDE-DEV] [PATCH] cns3xxx: backport upstream SPI Flash partition sizes
John Crispin
john at phrozen.org
Thu Sep 15 02:49:45 PDT 2016
On 15/09/2016 11:34, Koen Vandeputte wrote:
> As indicated by Tim Harvey:
>
> The 4.4 kernel is not easily sized down to below the 1.5MB limit
> imposed by the SPI flash MTD partition mapping. Increase this
> to 2MB where it is for NOR flash devices.
> Additionally add a check that ensures the kernel fits within
> the 2MB limit.
>
> This resolves boot issues on SPI based boards such as the GW2380/82.
>
> https://github.com/Gateworks/openwrt/commit/17b860f32fe5739042445eb852109682d6ff7d99
>
> Signed-off-by: Koen Vandeputte <koen.vandeputte at ncentric.com>
this might break sysupgrade when upgrading from a small kernel partition
on a pre-4.4 kernel to a new 4.4+ kernel. did you try doing so ?
John
> ---
> .../linux/cns3xxx/files/arch/arm/mach-cns3xxx/laguna.c | 16 ++++++++--------
> target/linux/cns3xxx/image/Makefile | 6 +++++-
> 2 files changed, 13 insertions(+), 9 deletions(-)
>
> diff --git a/target/linux/cns3xxx/files/arch/arm/mach-cns3xxx/laguna.c b/target/linux/cns3xxx/files/arch/arm/mach-cns3xxx/laguna.c
> index fb519d2..3c21404 100644
> --- a/target/linux/cns3xxx/files/arch/arm/mach-cns3xxx/laguna.c
> +++ b/target/linux/cns3xxx/files/arch/arm/mach-cns3xxx/laguna.c
> @@ -168,12 +168,12 @@ static struct mtd_partition laguna_spi_partitions[] = {
> .offset = SZ_256K,
> }, {
> .name = "kernel",
> - .size = SZ_1M + SZ_512K,
> + .size = SZ_2M,
> .offset = SZ_512K,
> }, {
> .name = "rootfs",
> - .size = SZ_16M - SZ_2M,
> - .offset = SZ_2M,
> + .size = SZ_16M - SZ_2M - SZ_512K,
> + .offset = SZ_2M + SZ_512K,
> },
> };
>
> @@ -988,19 +988,19 @@ static int __init laguna_model_setup(void)
> if (laguna_info.config2_bitmap & (SPI_FLASH_LOAD)) {
> switch (laguna_info.spi_flash_size) {
> case 1:
> - laguna_spi_partitions[3].size = SZ_4M - SZ_2M;
> + laguna_spi_partitions[3].size = SZ_4M - SZ_2M - SZ_512K;
> break;
> case 2:
> - laguna_spi_partitions[3].size = SZ_8M - SZ_2M;
> + laguna_spi_partitions[3].size = SZ_8M - SZ_2M - SZ_512K;
> break;
> case 3:
> - laguna_spi_partitions[3].size = SZ_16M - SZ_2M;
> + laguna_spi_partitions[3].size = SZ_16M - SZ_2M - SZ_512K;
> break;
> case 4:
> - laguna_spi_partitions[3].size = SZ_32M - SZ_2M;
> + laguna_spi_partitions[3].size = SZ_32M - SZ_2M - SZ_512K;
> break;
> case 5:
> - laguna_spi_partitions[3].size = SZ_64M - SZ_2M;
> + laguna_spi_partitions[3].size = SZ_64M - SZ_2M - SZ_512K;
> break;
> }
> spi_register_board_info(ARRAY_AND_SIZE(laguna_spi_devices));
> diff --git a/target/linux/cns3xxx/image/Makefile b/target/linux/cns3xxx/image/Makefile
> index 8f29c6c..d71a860 100644
> --- a/target/linux/cns3xxx/image/Makefile
> +++ b/target/linux/cns3xxx/image/Makefile
> @@ -9,6 +9,10 @@ include $(INCLUDE_DIR)/image.mk
>
> define Image/Prepare
> mkimage -A arm -O linux -T kernel -C none -a 0x20008000 -e 0x20008000 -n 'OpenWrt Linux-$(LINUX_VERSION)' -d $(KDIR)/zImage $(KDIR)/uImage
> + @if [ `stat -c%s "$(KDIR)/uImage"` -gt `expr 2048 \* 1024` ]; then \
> + echo "Error: Kernel is too big" >&2; \
> + exit 1; \
> + fi
> endef
>
> # Build sysupgrade image
> @@ -39,7 +43,7 @@ define Image/Build/squashfs
> dd if=$(KDIR)/root.$(1) bs=128k conv=sync; \
> ) > $(BIN_DIR)/$(IMG_PREFIX)-$(1)_laguna_nor.bin
> ( \
> - dd if=$(KDIR)/uImage bs=1536k conv=sync; \
> + dd if=$(KDIR)/uImage bs=2048k conv=sync; \
> dd if=$(KDIR)/root.$(1) bs=256k conv=sync; \
> ) > $(BIN_DIR)/$(IMG_PREFIX)-$(1)_laguna_spi.bin
> endef
>
More information about the Lede-dev
mailing list