From 921da8d0b239f53b4da02e4d5037e53384573ce2 Mon Sep 17 00:00:00 2001 From: Sham Muthayyan Date: Tue, 24 Oct 2017 22:04:09 +0530 Subject: [PATCH] ipq807x: Add SMEM_SPI_ADDR_LEN support for SPI flash This SMEM type is to determine the spi flash addr is in 3 byte or 4 byte. Change-Id: I705a9c5c6f760b93e112a873ead41cd76520501b Signed-off-by: Sham Muthayyan --- arch/arm/cpu/armv7/qca/common/smem.c | 19 +++++++++++++++++++ arch/arm/include/asm/arch-qca-common/smem.h | 1 + board/qca/arm/ipq807x/ipq807x.h | 5 +++-- 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/arch/arm/cpu/armv7/qca/common/smem.c b/arch/arm/cpu/armv7/qca/common/smem.c index 8920248ce4..156e2822a1 100644 --- a/arch/arm/cpu/armv7/qca/common/smem.c +++ b/arch/arm/cpu/armv7/qca/common/smem.c @@ -253,6 +253,25 @@ unsigned int get_rootfs_active_partition(void) return 0; /* alt partition not available */ } +/* + * To determine the spi flash addr is in 3 byte + * or 4 byte. + */ +unsigned int get_smem_spi_addr_len(void) +{ + int ret; + uint32_t spi_flash_addr_len; + + ret = smem_read_alloc_entry(SMEM_SPI_FLASH_ADDR_LEN, + &spi_flash_addr_len, sizeof(uint32_t)); + if (ret != 0) { + printf("smem: read spi flash address len failed\n"); + spi_flash_addr_len = 0; + } + + return spi_flash_addr_len; +} + unsigned int get_partition_table_offset(void) { int ret; diff --git a/arch/arm/include/asm/arch-qca-common/smem.h b/arch/arm/include/asm/arch-qca-common/smem.h index 661e0c8179..91b4f84937 100644 --- a/arch/arm/include/asm/arch-qca-common/smem.h +++ b/arch/arm/include/asm/arch-qca-common/smem.h @@ -144,6 +144,7 @@ typedef struct extern qca_smem_bootconfig_info_t qca_smem_bootconfig_info; int smem_bootconfig_info(void); +unsigned int get_smem_spi_addr_len(void); unsigned int get_rootfs_active_partition(void); unsigned int get_mibib_active_partition(void); void qca_smem_part_to_mtdparts(char *mtdid); diff --git a/board/qca/arm/ipq807x/ipq807x.h b/board/qca/arm/ipq807x/ipq807x.h index e48f982308..84e4d09027 100644 --- a/board/qca/arm/ipq807x/ipq807x.h +++ b/board/qca/arm/ipq807x/ipq807x.h @@ -223,9 +223,10 @@ typedef enum { SMEM_BOOT_FLASH_DENSITY = 502, SMEM_BOOT_DUALPARTINFO = 503, SMEM_PARTITION_TABLE_OFFSET = 504, + SMEM_SPI_FLASH_ADDR_LEN = 505, SMEM_FIRST_VALID_TYPE = SMEM_SPINLOCK_ARRAY, - SMEM_LAST_VALID_TYPE = SMEM_PARTITION_TABLE_OFFSET, - SMEM_MAX_SIZE = SMEM_PARTITION_TABLE_OFFSET + 1, + SMEM_LAST_VALID_TYPE = SMEM_SPI_FLASH_ADDR_LEN, + SMEM_MAX_SIZE = SMEM_SPI_FLASH_ADDR_LEN + 1, } smem_mem_type_t; /* Reserved-memory node names*/