From 1df5cd41f66d5d249ceda649eac1d4d3ad953470 Mon Sep 17 00:00:00 2001 From: Vandhiadevan Karunamoorthy Date: Tue, 28 Apr 2020 12:14:13 +0530 Subject: [PATCH 1/5] ipq5018: Tiny U-boot: Remove unwanted features. This code changes remove the list of features given below which is not required for tiny u-boot. 1.CONFIG_EFI_PARTITION 2.CONFIG_RBTREE 3.CONFIG_CMD_CACHE 4.CONFIG_CMD_BOOTZ Signed-off-by: Vandhiadevan Karunamoorthy Change-Id: I8174686db1e30334512fb2c77e77aa9ae101e023 --- include/configs/ipq5018.h | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/include/configs/ipq5018.h b/include/configs/ipq5018.h index 699734bd0d..73e4569775 100644 --- a/include/configs/ipq5018.h +++ b/include/configs/ipq5018.h @@ -24,7 +24,6 @@ #define CONFIG_SPI_FLASH_CYPRESS #define CONFIG_SYS_NO_FLASH #define CONFIG_SYS_CACHELINE_SIZE 64 -#define CONFIG_CMD_CACHE #define CONFIG_IPQ_NO_RELOC #define CONFIG_SYS_VSNPRINTF @@ -177,7 +176,6 @@ extern loff_t board_env_size; #define CONFIG_IPQ_4B_ADDR_SWITCH_REQD #define CONFIG_QUP_SPI_USE_DMA 1 -#define CONFIG_EFI_PARTITION #define CONFIG_QCA_BAM 1 /* @@ -194,6 +192,7 @@ extern loff_t board_env_size; #define CONFIG_SYS_MMC_ENV_DEV 0 #define CONFIG_SDHCI_SUPPORT #define CONFIG_MMC_ADMA +#define CONFIG_EFI_PARTITION /* * eMMC controller support only 4-bit * force SDHC driver to 4-bit mode @@ -299,9 +298,11 @@ extern loff_t board_env_size; #define CONFIG_MTD_PARTITIONS #define NUM_ALT_PARTITION 16 -#define CONFIG_RBTREE - +#ifndef CONFIG_IPQ_TINY #define CONFIG_CMD_BOOTZ +#define CONFIG_CMD_CACHE +#endif + #define CONFIG_FDT_FIXUP_PARTITIONS #define CONFIG_IPQ_FDT_FIXUP @@ -353,6 +354,7 @@ extern loff_t board_env_size; */ #ifdef CONFIG_UBI_WRITE #define CONFIG_CMD_UBI +#define CONFIG_RBTREE #define IPQ_UBI_VOL_WRITE_SUPPORT #endif From dc75984fccc7d841599ecca7e8ea260ea28a1a5d Mon Sep 17 00:00:00 2001 From: Vandhiadevan Karunamoorthy Date: Tue, 28 Apr 2020 12:36:46 +0530 Subject: [PATCH 2/5] ipq5018: Remove default unwanted configuration This code changes remove boot support for netbsd, vxworks and rtems. Signed-off-by: Vandhiadevan Karunamoorthy Change-Id: I1f435fc80f29ad1f8e52e4b18d832e120ac9a503 --- include/configs/ipq5018.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/include/configs/ipq5018.h b/include/configs/ipq5018.h index 73e4569775..52a3cf98cb 100644 --- a/include/configs/ipq5018.h +++ b/include/configs/ipq5018.h @@ -358,4 +358,9 @@ extern loff_t board_env_size; #define IPQ_UBI_VOL_WRITE_SUPPORT #endif +#undef CONFIG_BOOTM_NETBSD +#undef CONFIG_BOOTM_PLAN9 +#undef CONFIG_BOOTM_RTEMS +#undef CONFIG_BOOTM_VXWORKS + #endif /* _IPQ5018_H */ From f5f074b49e5b2497fecbb7fef14191d4e5ed32c3 Mon Sep 17 00:00:00 2001 From: Vandhiadevan Karunamoorthy Date: Tue, 28 Apr 2020 16:15:57 +0530 Subject: [PATCH 3/5] ipq5018: Tiny U-boot: Remove nor from MTD This code changes remove initializing nor as sudo NAND in mtd framework and add sf command support to read from ART partition Signed-off-by: Vandhiadevan Karunamoorthy Change-Id: I39a27a72d9ab966f95d58adb4274660e147df67c --- board/ipq5018/Kconfig | 7 ++++++- board/qca/arm/common/ethaddr.c | 23 +++++++++++++++++++++++ board/qca/arm/ipq5018/ipq5018.c | 4 ++++ configs/ipq5018_defconfig | 2 ++ configs/ipq5018_tiny_defconfig | 2 ++ 5 files changed, 37 insertions(+), 1 deletion(-) diff --git a/board/ipq5018/Kconfig b/board/ipq5018/Kconfig index ef6368ccb5..21b01de09a 100644 --- a/board/ipq5018/Kconfig +++ b/board/ipq5018/Kconfig @@ -36,5 +36,10 @@ config QPIC_SERIAL config IPQ_TINY bool "Enable Tiny support for ipq5018" -endif +config IPQ_MTD_NOR + bool "Register nor in MTD framework for ipq5018" +config IPQ_TINY_SPI_NOR + bool "This config helps to update spi-nor related updated in ipq5018" + +endif diff --git a/board/qca/arm/common/ethaddr.c b/board/qca/arm/common/ethaddr.c index cd7af73610..aa06357a98 100644 --- a/board/qca/arm/common/ethaddr.c +++ b/board/qca/arm/common/ethaddr.c @@ -19,6 +19,10 @@ #include #include #include +#ifdef CONFIG_IPQ_TINY_SPI_NOR +#include +#include +#endif #ifdef CONFIG_QCA_MMC #ifndef CONFIG_SDHCI_SUPPORT @@ -46,6 +50,10 @@ int get_eth_mac_address(uchar *enetaddr, uint no_of_macs) struct mmc *mmc; char mmc_blks[512]; #endif +#ifdef CONFIG_IPQ_TINY_SPI_NOR + struct spi_flash *flash = NULL; +#endif + if (sfi->flash_type != SMEM_BOOT_MMC_FLASH) { if (qca_smem_flash_info.flash_type == SMEM_BOOT_SPI_FLASH) flash_type = CONFIG_SPI_FLASH_INFO_IDX; @@ -70,8 +78,23 @@ int get_eth_mac_address(uchar *enetaddr, uint no_of_macs) art_offset = ((loff_t) qca_smem_flash_info.flash_block_size * start_blocks); +#ifdef CONFIG_IPQ_TINY_SPI_NOR + flash = spi_flash_probe(CONFIG_SF_DEFAULT_BUS, CONFIG_SF_DEFAULT_CS, + CONFIG_SF_DEFAULT_SPEED, CONFIG_SF_DEFAULT_MODE); + if (flash == NULL){ + printf("No SPI flash device found\n"); + ret = -1; + } else { + ret = spi_flash_read(flash, art_offset, length, enetaddr); + } + /* + * Avoid unused warning + */ + (void)flash_type; +#else ret = nand_read(&nand_info[flash_type], art_offset, &length, enetaddr); +#endif if (ret < 0) printf("ART partition read failed..\n"); #ifdef CONFIG_QCA_MMC diff --git a/board/qca/arm/ipq5018/ipq5018.c b/board/qca/arm/ipq5018/ipq5018.c index 75b9a02f98..9e43304bed 100644 --- a/board/qca/arm/ipq5018/ipq5018.c +++ b/board/qca/arm/ipq5018/ipq5018.c @@ -42,7 +42,9 @@ DECLARE_GLOBAL_DATA_PTR; struct sdhci_host mmc_host; #endif +#ifdef CONFIG_IPQ_MTD_NOR extern int ipq_spi_init(u16); +#endif const char *rsvd_node = "/reserved-memory"; const char *del_node[] = {"uboot", @@ -528,7 +530,9 @@ void board_nand_init(void) gpio_node = fdt_path_offset(gd->fdt_blob, "/spi/spi_gpio"); if (gpio_node >= 0) { qca_gpio_init(gpio_node); +#ifdef CONFIG_IPQ_MTD_NOR ipq_spi_init(CONFIG_IPQ_SPI_NOR_INFO_IDX); +#endif } #endif } diff --git a/configs/ipq5018_defconfig b/configs/ipq5018_defconfig index 04249e0f1c..6fcee0f7d8 100644 --- a/configs/ipq5018_defconfig +++ b/configs/ipq5018_defconfig @@ -223,6 +223,8 @@ CONFIG_QPIC_SERIAL=y # CONFIG_DM_ETH is not set # CONFIG_PHYLIB is not set # CONFIG_NETDEVICES is not set +CONFIG_IPQ_MTD_NOR=y +# CONFIG_IPQ_TINY_SPI_NOR is not set # # PCI diff --git a/configs/ipq5018_tiny_defconfig b/configs/ipq5018_tiny_defconfig index f788444024..597a2610aa 100644 --- a/configs/ipq5018_tiny_defconfig +++ b/configs/ipq5018_tiny_defconfig @@ -223,6 +223,8 @@ CONFIG_SIMPLE_BUS=y # CONFIG_DM_ETH is not set # CONFIG_PHYLIB is not set # CONFIG_NETDEVICES is not set +# CONFIG_IPQ_MTD_NOR is not set +CONFIG_IPQ_TINY_SPI_NOR=y # # PCI From fed441d78c70974287e57118d7a70de20c5316a1 Mon Sep 17 00:00:00 2001 From: Vandhiadevan Karunamoorthy Date: Thu, 23 Apr 2020 20:35:57 +0530 Subject: [PATCH 4/5] ipq5018: Tiny U-boot: Remove NAND features This changes remove nand command and Env support Signed-off-by: Vandhiadevan Karunamoorthy Change-Id: I6c59f8259306ef79499420afe4da17a2674e98be --- board/ipq5018/Kconfig | 3 +++ board/qca/arm/common/board_init.c | 9 ++++++++- board/qca/arm/common/crashdump.c | 9 ++++++--- board/qca/arm/common/env.c | 8 ++++++-- board/qca/arm/ipq5018/ipq5018.c | 4 +++- common/Makefile | 2 ++ configs/ipq5018_defconfig | 1 + configs/ipq5018_tiny_defconfig | 1 + drivers/mtd/nand/Makefile | 5 ++++- include/configs/ipq5018.h | 17 ++++++++++------- 10 files changed, 44 insertions(+), 15 deletions(-) diff --git a/board/ipq5018/Kconfig b/board/ipq5018/Kconfig index 21b01de09a..d5bd0d79bd 100644 --- a/board/ipq5018/Kconfig +++ b/board/ipq5018/Kconfig @@ -42,4 +42,7 @@ config IPQ_MTD_NOR config IPQ_TINY_SPI_NOR bool "This config helps to update spi-nor related updated in ipq5018" +config NAND_FLASH + bool "Enable NAND driver for ipq5018" + endif diff --git a/board/qca/arm/common/board_init.c b/board/qca/arm/common/board_init.c index d4b98280d2..b219433eae 100644 --- a/board/qca/arm/common/board_init.c +++ b/board/qca/arm/common/board_init.c @@ -24,10 +24,11 @@ #include DECLARE_GLOBAL_DATA_PTR; - +#ifdef CONFIG_ENV_IS_IN_NAND extern int nand_env_device; extern env_t *nand_env_ptr; extern char *nand_env_name_spec; +#endif extern char *sf_env_name_spec; extern int nand_saveenv(void); extern int sf_saveenv(void); @@ -138,12 +139,16 @@ int board_init(void) #ifndef CONFIG_ENV_IS_NOWHERE switch (sfi->flash_type) { +#ifdef CONFIG_ENV_IS_IN_NAND case SMEM_BOOT_NAND_FLASH: case SMEM_BOOT_QSPI_NAND_FLASH: nand_env_device = CONFIG_NAND_FLASH_INFO_IDX; break; +#endif case SMEM_BOOT_SPI_FLASH: +#ifdef CONFIG_ENV_IS_IN_NAND nand_env_device = CONFIG_SPI_FLASH_INFO_IDX; +#endif break; case SMEM_BOOT_MMC_FLASH: case SMEM_BOOT_NO_FLASH: @@ -196,9 +201,11 @@ int board_init(void) env_name_spec = mmc_env_name_spec; #endif } else { +#ifdef CONFIG_ENV_IS_IN_NAND saveenv = nand_saveenv; env_ptr = nand_env_ptr; env_name_spec = nand_env_name_spec; +#endif } #endif ret = ipq_board_usb_init(); diff --git a/board/qca/arm/common/crashdump.c b/board/qca/arm/common/crashdump.c index 6da019088c..9a97fe5d20 100644 --- a/board/qca/arm/common/crashdump.c +++ b/board/qca/arm/common/crashdump.c @@ -118,8 +118,9 @@ struct crashdump_flash_emmc_cxt { }; #endif - +#ifdef CONFIG_MTD_DEVICE static struct crashdump_flash_nand_cxt crashdump_nand_cnxt; +#endif #ifdef CONFIG_QCA_SPI static struct spi_flash *crashdump_spi_flash; static struct crashdump_flash_spi_cxt crashdump_flash_spi_cnxt; @@ -734,7 +735,7 @@ void dump_func(unsigned int dump_level) reset: reset_board(); } - +#ifdef CONFIG_MTD_DEVICE /* * Init function for NAND flash writing. It intializes its own context * and erases the required sectors @@ -879,7 +880,7 @@ int crashdump_nand_flash_write_data(void *cnxt, return 0; } - +#endif #ifdef CONFIG_QCA_SPI /* Init function for SPI NOR flash writing. It erases the required sectors */ int init_crashdump_spi_flash_write(void *cnxt, @@ -1121,11 +1122,13 @@ static int qca_wdt_write_crashdump_data( */ if (((flash_type == SMEM_BOOT_NAND_FLASH) || (flash_type == SMEM_BOOT_QSPI_NAND_FLASH))) { +#ifdef CONFIG_MTD_DEVICE crashdump_cnxt = (void *)&crashdump_nand_cnxt; crashdump_flash_write_init = init_crashdump_nand_flash_write; crashdump_flash_write = crashdump_nand_flash_write_data; crashdump_flash_write_deinit = deinit_crashdump_nand_flash_write; +#endif #ifdef CONFIG_QCA_SPI } else if (flash_type == SMEM_BOOT_SPI_FLASH) { if (!crashdump_spi_flash) { diff --git a/board/qca/arm/common/env.c b/board/qca/arm/common/env.c index 3050b82f57..a28c076203 100644 --- a/board/qca/arm/common/env.c +++ b/board/qca/arm/common/env.c @@ -18,10 +18,10 @@ #ifdef CONFIG_SDHCI_SUPPORT #include #endif - +#ifdef CONFIG_ENV_IS_IN_NAND extern void nand_env_relocate_spec(void); extern int nand_env_init(void); - +#endif #ifdef CONFIG_ENV_IS_IN_SPI_FLASH extern void sf_env_relocate_spec(void); extern int sf_env_init(void); @@ -58,7 +58,9 @@ int env_init(void) ret = mmc_env_init(); #endif } else { +#ifdef CONFIG_ENV_IS_IN_NAND ret = nand_env_init(); +#endif } return ret; @@ -85,7 +87,9 @@ void env_relocate_spec(void) mmc_env_relocate_spec(); #endif } else { +#ifdef CONFIG_ENV_IS_IN_NAND nand_env_relocate_spec(); +#endif } }; diff --git a/board/qca/arm/ipq5018/ipq5018.c b/board/qca/arm/ipq5018/ipq5018.c index 9e43304bed..32c37aab9e 100644 --- a/board/qca/arm/ipq5018/ipq5018.c +++ b/board/qca/arm/ipq5018/ipq5018.c @@ -17,7 +17,6 @@ #include #include #include -#include #include #include #include @@ -30,6 +29,9 @@ #ifdef CONFIG_USB_XHCI_IPQ #include #endif +#ifdef CONFIG_QPIC_NAND +#include +#endif #define DLOAD_MAGIC_COOKIE 0x10 #define DLOAD_DISABLED 0x40 diff --git a/common/Makefile b/common/Makefile index c8f28287af..5287a19e3e 100644 --- a/common/Makefile +++ b/common/Makefile @@ -141,7 +141,9 @@ obj-$(CONFIG_CMD_MMC) += cmd_mmc.o obj-$(CONFIG_CMD_MMC_SPI) += cmd_mmc_spi.o obj-$(CONFIG_MP) += cmd_mp.o obj-$(CONFIG_CMD_MTDPARTS) += cmd_mtdparts.o +ifndef CONFIG_IPQ_TINY obj-$(CONFIG_CMD_NAND) += cmd_nand.o +endif obj-$(CONFIG_CMD_NET) += cmd_net.o obj-$(CONFIG_CMD_ONENAND) += cmd_onenand.o obj-$(CONFIG_CMD_OTP) += cmd_otp.o diff --git a/configs/ipq5018_defconfig b/configs/ipq5018_defconfig index 6fcee0f7d8..675e717f87 100644 --- a/configs/ipq5018_defconfig +++ b/configs/ipq5018_defconfig @@ -209,6 +209,7 @@ CONFIG_MMC_FLASH=y # # Generic NAND options # +CONFIG_NAND_FLASH=y # # Serial NAND diff --git a/configs/ipq5018_tiny_defconfig b/configs/ipq5018_tiny_defconfig index 597a2610aa..c6578183ee 100644 --- a/configs/ipq5018_tiny_defconfig +++ b/configs/ipq5018_tiny_defconfig @@ -209,6 +209,7 @@ CONFIG_SIMPLE_BUS=y # # Generic NAND options # +# CONFIG_NAND_FLASH is not set # # Serial NAND diff --git a/drivers/mtd/nand/Makefile b/drivers/mtd/nand/Makefile index 64eb742ac9..0fea98de4c 100644 --- a/drivers/mtd/nand/Makefile +++ b/drivers/mtd/nand/Makefile @@ -27,6 +27,9 @@ else # not spl NORMAL_DRIVERS=y +ifdef CONFIG_IPQ_TINY +obj-y += nand.o +else obj-y += nand.o obj-y += nand_bbt.o obj-y += nand_ids.o @@ -34,7 +37,7 @@ obj-y += nand_util.o obj-y += nand_ecc.o obj-y += nand_base.o obj-y += nand_timings.o - +endif endif # not spl ifdef NORMAL_DRIVERS diff --git a/include/configs/ipq5018.h b/include/configs/ipq5018.h index 52a3cf98cb..e6fd13eddc 100644 --- a/include/configs/ipq5018.h +++ b/include/configs/ipq5018.h @@ -137,8 +137,6 @@ extern loff_t board_env_size; #define CONFIG_ENV_RANGE board_env_range #define CONFIG_SYS_MALLOC_LEN (CONFIG_ENV_SIZE_MAX + (1024 << 10)) -#define CONFIG_ENV_IS_IN_NAND 1 - /* * NAND Flash Configs */ @@ -147,11 +145,19 @@ extern loff_t board_env_size; * CONFIG_IPQ_NAND: QPIC NAND in FIFO/block mode. * BAM is enabled by default. */ -#define CONFIG_QPIC_NAND #define CONFIG_CMD_NAND -#define CONFIG_CMD_NAND_YAFFS #define CONFIG_SYS_NAND_SELF_INIT +#define CONFIG_CMD_MTDPARTS + +#ifdef CONFIG_NAND_FLASH +#define CONFIG_ENV_IS_IN_NAND 1 +#define CONFIG_QPIC_NAND #define CONFIG_SYS_NAND_ONFI_DETECTION +#define CONFIG_CMD_NAND_YAFFS +#define CONFIG_MTD_DEVICE +#define CONFIG_MTD_PARTITIONS +#endif + #ifdef CONFIG_QPIC_SERIAL #define CONFIG_PAGE_SCOPE_MULTI_PAGE_READ #endif @@ -293,9 +299,6 @@ extern loff_t board_env_size; #define CONFIG_BOOTDELAY 2 -#define CONFIG_MTD_DEVICE -#define CONFIG_CMD_MTDPARTS -#define CONFIG_MTD_PARTITIONS #define NUM_ALT_PARTITION 16 #ifndef CONFIG_IPQ_TINY From 08c5aec6817972ac55402a3974ce50a62420034c Mon Sep 17 00:00:00 2001 From: Vandhiadevan Karunamoorthy Date: Tue, 28 Apr 2020 21:30:41 +0530 Subject: [PATCH 5/5] ipq5018: Tiny U-boot: Add thumb2 support Signed-off-by: Vandhiadevan Karunamoorthy Change-Id: Id4e04f98edee3a710ced1481815f29d83a44200c --- configs/ipq5018_tiny_defconfig | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/configs/ipq5018_tiny_defconfig b/configs/ipq5018_tiny_defconfig index c6578183ee..c766ee5ca7 100644 --- a/configs/ipq5018_tiny_defconfig +++ b/configs/ipq5018_tiny_defconfig @@ -325,3 +325,8 @@ CONFIG_LZMA=y # CONFIG_ERRNO_STR is not set # CONFIG_UNIT_TEST is not set +# +# Thumb2 mode support +# +CONFIG_SYS_THUMB_BUILD=y +CONFIG_HAS_THUMB2=y