[U-Boot] [PATCH 0/6] davinci: omapl138_lcdk: add SPL NAND boot support

The default AIS image generated contains the SPL, but the latter is not able to load u-boot because the NAND configuration is missing. This series adds SPL NAND boot support and results in the AIS image that is generated able to boot from NAND.
Fabien Parent (6): NAND: davinci: add support for NAND chips with 16 bits bus davinci: omapl138_lcdk: use correct define for 16 bit NAND chips davinci: omapl138_lcdk: use correct name for CONFIG_SYS_NAND_MASK_CLE davinci: omapl138_lcdk: use correct name for CONFIG_SYS_NAND_MASK_ALE davinci: omapl138_lck: remove obsolete define davinci: omapl138_lcdk: add NAND SPL boot support
board/davinci/da8xxevm/README.omapl138-lcdk | 28 ------------------------ configs/omapl138_lcdk_defconfig | 3 +++ drivers/mtd/nand/davinci_nand.c | 3 +++ include/configs/omapl138_lcdk.h | 34 +++++++++++++++++++++++++---- scripts/config_whitelist.txt | 3 --- 5 files changed, 36 insertions(+), 35 deletions(-) delete mode 100644 board/davinci/da8xxevm/README.omapl138-lcdk

The OMAPL138-LCD board uses a NAND chip with a 16 bits bus. Add support into the davinci driver for 16 bit bus NAND chips.
Signed-off-by: Fabien Parent fparent@baylibre.com --- drivers/mtd/nand/davinci_nand.c | 3 +++ 1 file changed, 3 insertions(+)
diff --git a/drivers/mtd/nand/davinci_nand.c b/drivers/mtd/nand/davinci_nand.c index 48a8ca7..0624644 100644 --- a/drivers/mtd/nand/davinci_nand.c +++ b/drivers/mtd/nand/davinci_nand.c @@ -799,6 +799,9 @@ void davinci_nand_init(struct nand_chip *nand) #ifdef CONFIG_SYS_NAND_NO_SUBPAGE_WRITE nand->options |= NAND_NO_SUBPAGE_WRITE; #endif +#ifdef CONFIG_SYS_NAND_BUSWIDTH_16BIT + nand->options |= NAND_BUSWIDTH_16; +#endif #ifdef CONFIG_SYS_NAND_HW_ECC nand->ecc.mode = NAND_ECC_HW; nand->ecc.size = 512;

On Tue, Nov 29, 2016 at 02:31:29PM +0100, Fabien Parent wrote:
The OMAPL138-LCD board uses a NAND chip with a 16 bits bus. Add support into the davinci driver for 16 bit bus NAND chips.
Signed-off-by: Fabien Parent fparent@baylibre.com
Reviewed-by: Tom Rini trini@konsulko.com

On Tue, Nov 29, 2016 at 02:31:29PM +0100, Fabien Parent wrote:
The OMAPL138-LCD board uses a NAND chip with a 16 bits bus. Add support into the davinci driver for 16 bit bus NAND chips.
Signed-off-by: Fabien Parent fparent@baylibre.com Reviewed-by: Tom Rini trini@konsulko.com
Applied to u-boot/master, thanks!

The omapl138_lcdk header defines CONFIG_SYS_NAND_BUSWIDTH_16_BIT while the correct name is CONFIG_SYS_NAND_BUSWIDTH_16BIT. While renaming the only occurrence of CONFIG_SYS_NAND_BUSWIDTH_16_BIT, let's also remove it from the config_whitelist.txt file.
Signed-off-by: Fabien Parent fparent@baylibre.com --- include/configs/omapl138_lcdk.h | 2 +- scripts/config_whitelist.txt | 1 - 2 files changed, 1 insertion(+), 2 deletions(-)
diff --git a/include/configs/omapl138_lcdk.h b/include/configs/omapl138_lcdk.h index 854fc47..b4bcd8f 100644 --- a/include/configs/omapl138_lcdk.h +++ b/include/configs/omapl138_lcdk.h @@ -124,7 +124,7 @@ #define CONFIG_SYS_NAND_USE_FLASH_BBT #define CONFIG_SYS_NAND_4BIT_HW_ECC_OOBFIRST #define CONFIG_SYS_NAND_PAGE_2K -#define CONFIG_SYS_NAND_BUSWIDTH_16_BIT +#define CONFIG_SYS_NAND_BUSWIDTH_16BIT #define CONFIG_SYS_NAND_CS 3 #define CONFIG_SYS_NAND_BASE DAVINCI_ASYNC_EMIF_DATA_CE3_BASE #define CONFIG_SYS_CLE_MASK 0x10 diff --git a/scripts/config_whitelist.txt b/scripts/config_whitelist.txt index d0b5e7f..0c7d3cd 100644 --- a/scripts/config_whitelist.txt +++ b/scripts/config_whitelist.txt @@ -6654,7 +6654,6 @@ CONFIG_SYS_NAND_BLOCK_SIZE CONFIG_SYS_NAND_BOOT CONFIG_SYS_NAND_BR_PRELIM CONFIG_SYS_NAND_BUSWIDTH_16 -CONFIG_SYS_NAND_BUSWIDTH_16_BIT CONFIG_SYS_NAND_CE CONFIG_SYS_NAND_CLE CONFIG_SYS_NAND_CS

On Tue, Nov 29, 2016 at 02:31:30PM +0100, Fabien Parent wrote:
The omapl138_lcdk header defines CONFIG_SYS_NAND_BUSWIDTH_16_BIT while the correct name is CONFIG_SYS_NAND_BUSWIDTH_16BIT. While renaming the only occurrence of CONFIG_SYS_NAND_BUSWIDTH_16_BIT, let's also remove it from the config_whitelist.txt file.
Signed-off-by: Fabien Parent fparent@baylibre.com
Reviewed-by: Tom Rini trini@konsulko.com

On Tue, Nov 29, 2016 at 02:31:30PM +0100, Fabien Parent wrote:
The omapl138_lcdk header defines CONFIG_SYS_NAND_BUSWIDTH_16_BIT while the correct name is CONFIG_SYS_NAND_BUSWIDTH_16BIT. While renaming the only occurrence of CONFIG_SYS_NAND_BUSWIDTH_16_BIT, let's also remove it from the config_whitelist.txt file.
Signed-off-by: Fabien Parent fparent@baylibre.com Reviewed-by: Tom Rini trini@konsulko.com
Applied to u-boot/master, thanks!

CONFIG_SYS_CLE_MASK is not used anywhere. It has probably been renamed to CONFIG_SYS_NAND_MASK_CLE. Rename it and remove the former from the config_whitelist.txt file.
Signed-off-by: Fabien Parent fparent@baylibre.com --- include/configs/omapl138_lcdk.h | 2 +- scripts/config_whitelist.txt | 1 - 2 files changed, 1 insertion(+), 2 deletions(-)
diff --git a/include/configs/omapl138_lcdk.h b/include/configs/omapl138_lcdk.h index b4bcd8f..f92d6e0 100644 --- a/include/configs/omapl138_lcdk.h +++ b/include/configs/omapl138_lcdk.h @@ -127,7 +127,7 @@ #define CONFIG_SYS_NAND_BUSWIDTH_16BIT #define CONFIG_SYS_NAND_CS 3 #define CONFIG_SYS_NAND_BASE DAVINCI_ASYNC_EMIF_DATA_CE3_BASE -#define CONFIG_SYS_CLE_MASK 0x10 +#define CONFIG_SYS_NAND_MASK_CLE 0x10 #define CONFIG_SYS_ALE_MASK 0x8 #undef CONFIG_SYS_NAND_HW_ECC #define CONFIG_SYS_MAX_NAND_DEVICE 1 /* Max number of NAND devices */ diff --git a/scripts/config_whitelist.txt b/scripts/config_whitelist.txt index 0c7d3cd..b2ced15 100644 --- a/scripts/config_whitelist.txt +++ b/scripts/config_whitelist.txt @@ -4569,7 +4569,6 @@ CONFIG_SYS_CF_INTC_REG1 CONFIG_SYS_CF_SIZE CONFIG_SYS_CH7301_I2C CONFIG_SYS_CKEN -CONFIG_SYS_CLE_MASK CONFIG_SYS_CLK CONFIG_SYS_CLKDIV_CPU CONFIG_SYS_CLKDIV_HSB

On Tue, Nov 29, 2016 at 02:31:31PM +0100, Fabien Parent wrote:
CONFIG_SYS_CLE_MASK is not used anywhere. It has probably been renamed to CONFIG_SYS_NAND_MASK_CLE. Rename it and remove the former from the config_whitelist.txt file.
Signed-off-by: Fabien Parent fparent@baylibre.com
Reviewed-by: Tom Rini trini@konsulko.com

On Tue, Nov 29, 2016 at 02:31:31PM +0100, Fabien Parent wrote:
CONFIG_SYS_CLE_MASK is not used anywhere. It has probably been renamed to CONFIG_SYS_NAND_MASK_CLE. Rename it and remove the former from the config_whitelist.txt file.
Signed-off-by: Fabien Parent fparent@baylibre.com Reviewed-by: Tom Rini trini@konsulko.com
Applied to u-boot/master, thanks!

CONFIG_SYS_ALE_MASK is not used anywhere. It has probably been renamed to CONFIG_SYS_NAND_MASK_ALE. Rename it and remove the former from the config_whitelist.txt file.
Signed-off-by: Fabien Parent fparent@baylibre.com --- include/configs/omapl138_lcdk.h | 2 +- scripts/config_whitelist.txt | 1 - 2 files changed, 1 insertion(+), 2 deletions(-)
diff --git a/include/configs/omapl138_lcdk.h b/include/configs/omapl138_lcdk.h index f92d6e0..6262147 100644 --- a/include/configs/omapl138_lcdk.h +++ b/include/configs/omapl138_lcdk.h @@ -128,7 +128,7 @@ #define CONFIG_SYS_NAND_CS 3 #define CONFIG_SYS_NAND_BASE DAVINCI_ASYNC_EMIF_DATA_CE3_BASE #define CONFIG_SYS_NAND_MASK_CLE 0x10 -#define CONFIG_SYS_ALE_MASK 0x8 +#define CONFIG_SYS_NAND_MASK_ALE 0x8 #undef CONFIG_SYS_NAND_HW_ECC #define CONFIG_SYS_MAX_NAND_DEVICE 1 /* Max number of NAND devices */ #define NAND_MAX_CHIPS 1 diff --git a/scripts/config_whitelist.txt b/scripts/config_whitelist.txt index b2ced15..fc8d319 100644 --- a/scripts/config_whitelist.txt +++ b/scripts/config_whitelist.txt @@ -4402,7 +4402,6 @@ CONFIG_SYS_ACR_RPTCNT CONFIG_SYS_ADDRESS_MAP_A CONFIG_SYS_ADV7611_I2C CONFIG_SYS_AHB_BASE -CONFIG_SYS_ALE_MASK CONFIG_SYS_ALLOC_DPRAM CONFIG_SYS_ALT_BOOT CONFIG_SYS_ALT_FLASH

On Tue, Nov 29, 2016 at 02:31:32PM +0100, Fabien Parent wrote:
CONFIG_SYS_ALE_MASK is not used anywhere. It has probably been renamed to CONFIG_SYS_NAND_MASK_ALE. Rename it and remove the former from the config_whitelist.txt file.
Signed-off-by: Fabien Parent fparent@baylibre.com
Reviewed-by: Tom Rini trini@konsulko.com

On Tue, Nov 29, 2016 at 02:31:32PM +0100, Fabien Parent wrote:
CONFIG_SYS_ALE_MASK is not used anywhere. It has probably been renamed to CONFIG_SYS_NAND_MASK_ALE. Rename it and remove the former from the config_whitelist.txt file.
Signed-off-by: Fabien Parent fparent@baylibre.com Reviewed-by: Tom Rini trini@konsulko.com
Applied to u-boot/master, thanks!

NAND_MAX_CHIPS is not used anymore and has been replaced by CONFIG_SYS_MAX_NAND_DEVICE. There is no need to keep the former define.
Signed-off-by: Fabien Parent fparent@baylibre.com --- include/configs/omapl138_lcdk.h | 1 - 1 file changed, 1 deletion(-)
diff --git a/include/configs/omapl138_lcdk.h b/include/configs/omapl138_lcdk.h index 6262147..3e27778 100644 --- a/include/configs/omapl138_lcdk.h +++ b/include/configs/omapl138_lcdk.h @@ -131,7 +131,6 @@ #define CONFIG_SYS_NAND_MASK_ALE 0x8 #undef CONFIG_SYS_NAND_HW_ECC #define CONFIG_SYS_MAX_NAND_DEVICE 1 /* Max number of NAND devices */ -#define NAND_MAX_CHIPS 1 #endif
#ifdef CONFIG_SYS_USE_NOR

On Tue, Nov 29, 2016 at 02:31:33PM +0100, Fabien Parent wrote:
NAND_MAX_CHIPS is not used anymore and has been replaced by CONFIG_SYS_MAX_NAND_DEVICE. There is no need to keep the former define.
Signed-off-by: Fabien Parent fparent@baylibre.com
Reviewed-by: Tom Rini trini@konsulko.com

On Tue, Nov 29, 2016 at 02:31:33PM +0100, Fabien Parent wrote:
NAND_MAX_CHIPS is not used anymore and has been replaced by CONFIG_SYS_MAX_NAND_DEVICE. There is no need to keep the former define.
Signed-off-by: Fabien Parent fparent@baylibre.com Reviewed-by: Tom Rini trini@konsulko.com
Applied to u-boot/master, thanks!

NAND SPL boot was missing. Add it. The README specific to omapl138-lcdk is also removed because its content does not apply anymore, i.e. the generated AIS image can be flashed directly to the NAND without using any external tool to create and bootable AIS image.
Signed-off-by: Fabien Parent fparent@baylibre.com --- board/davinci/da8xxevm/README.omapl138-lcdk | 28 ---------------------------- configs/omapl138_lcdk_defconfig | 3 +++ include/configs/omapl138_lcdk.h | 27 +++++++++++++++++++++++++++ 3 files changed, 30 insertions(+), 28 deletions(-) delete mode 100644 board/davinci/da8xxevm/README.omapl138-lcdk
diff --git a/board/davinci/da8xxevm/README.omapl138-lcdk b/board/davinci/da8xxevm/README.omapl138-lcdk deleted file mode 100644 index ea0c53d..0000000 --- a/board/davinci/da8xxevm/README.omapl138-lcdk +++ /dev/null @@ -1,28 +0,0 @@ -Summary -======= -This README assumes you have read README.da850. It contains some additional -information specific to building the omapl138-lcdk. The AIS file as generated -by the build is, currently, not useable due to differences in the flash -available on this board, as compared to the da850evm boards. - -Flash Differences -================= -Refer to the discussion in [1] for more detail - basically the da850evm uses -SPI flash whereas the lcdk uses NAND flash to store the bootloader, and -the support isn't there in the SPL code. - -It should be possible to add the support in the SPL code should someone be -sufficiently motivated. - -Using the built image -===================== -The output image to use is u-boot.bin. This needs to be converted to an -AIS file as described in [1] and then flashed using the utitilty linked to -there and also described in README.da850. You _may_ be able to write using -u-boot itself, but the commands in README.da850 won't work as they write to -SPI rather than NAND. - -Links -===== -[1] - http://e2e.ti.com/support/dsp/omap_applications_processors/f/42/t/386829 \ No newline at end of file diff --git a/configs/omapl138_lcdk_defconfig b/configs/omapl138_lcdk_defconfig index bcd1acb..c5c978f 100644 --- a/configs/omapl138_lcdk_defconfig +++ b/configs/omapl138_lcdk_defconfig @@ -3,6 +3,7 @@ CONFIG_ARCH_DAVINCI=y CONFIG_TARGET_OMAPL138_LCDK=y CONFIG_SPL_LIBCOMMON_SUPPORT=y CONFIG_SPL_LIBGENERIC_SUPPORT=y +CONFIG_SPL_NAND_SUPPORT=y CONFIG_SPL_SERIAL_SUPPORT=y CONFIG_BOOTDELAY=3 CONFIG_VERSION_VARIABLE=y @@ -22,6 +23,8 @@ CONFIG_CMD_PING=y CONFIG_CMD_EXT2=y CONFIG_CMD_FAT=y CONFIG_CMD_UBI=y +CONFIG_SYS_NAND_U_BOOT_LOCATIONS=y +CONFIG_SYS_NAND_U_BOOT_OFFS=0x28000 CONFIG_SPI_FLASH=y CONFIG_SPI_FLASH_STMICRO=y CONFIG_SPI_FLASH_WINBOND=y diff --git a/include/configs/omapl138_lcdk.h b/include/configs/omapl138_lcdk.h index 3e27778..e3f8265 100644 --- a/include/configs/omapl138_lcdk.h +++ b/include/configs/omapl138_lcdk.h @@ -131,6 +131,33 @@ #define CONFIG_SYS_NAND_MASK_ALE 0x8 #undef CONFIG_SYS_NAND_HW_ECC #define CONFIG_SYS_MAX_NAND_DEVICE 1 /* Max number of NAND devices */ +#define CONFIG_SYS_NAND_HW_ECC_OOBFIRST +#define CONFIG_SYS_NAND_5_ADDR_CYCLE +#define CONFIG_SYS_NAND_PAGE_SIZE (2 << 10) +#define CONFIG_SYS_NAND_BLOCK_SIZE (128 << 10) +#define CONFIG_SYS_NAND_U_BOOT_SIZE 0x200 /*0x60000*/ +#define CONFIG_SYS_NAND_U_BOOT_DST 0xc1080000 +#define CONFIG_SYS_NAND_U_BOOT_START CONFIG_SYS_NAND_U_BOOT_DST +#define CONFIG_SYS_NAND_U_BOOT_RELOC_SP (CONFIG_SYS_NAND_U_BOOT_DST - \ + CONFIG_SYS_NAND_U_BOOT_SIZE - \ + CONFIG_SYS_MALLOC_LEN - \ + GENERATED_GBL_DATA_SIZE) +#define CONFIG_SYS_NAND_ECCPOS { \ + 24, 25, 26, 27, 28, \ + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, \ + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, \ + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, \ + 59, 60, 61, 62, 63 } +#define CONFIG_SYS_NAND_PAGE_COUNT 64 +#define CONFIG_SYS_NAND_BAD_BLOCK_POS 0 +#define CONFIG_SYS_NAND_ECCSIZE 512 +#define CONFIG_SYS_NAND_ECCBYTES 10 +#define CONFIG_SYS_NAND_OOBSIZE 64 +#define CONFIG_SPL_NAND_BASE +#define CONFIG_SPL_NAND_DRIVERS +#define CONFIG_SPL_NAND_ECC +#define CONFIG_SPL_NAND_SIMPLE +#define CONFIG_SPL_NAND_LOAD #endif
#ifdef CONFIG_SYS_USE_NOR

On Tue, Nov 29, 2016 at 02:31:34PM +0100, Fabien Parent wrote:
NAND SPL boot was missing. Add it. The README specific to omapl138-lcdk is also removed because its content does not apply anymore, i.e. the generated AIS image can be flashed directly to the NAND without using any external tool to create and bootable AIS image.
Signed-off-by: Fabien Parent fparent@baylibre.com
Reviewed-by: Tom Rini trini@konsulko.com

On Tue, Nov 29, 2016 at 02:31:34PM +0100, Fabien Parent wrote:
NAND SPL boot was missing. Add it. The README specific to omapl138-lcdk is also removed because its content does not apply anymore, i.e. the generated AIS image can be flashed directly to the NAND without using any external tool to create and bootable AIS image.
Signed-off-by: Fabien Parent fparent@baylibre.com Reviewed-by: Tom Rini trini@konsulko.com
Applied to u-boot/master, thanks!

On Tue, Nov 29, 2016 at 02:31:28PM +0100, Fabien Parent wrote:
The default AIS image generated contains the SPL, but the latter is not able to load u-boot because the NAND configuration is missing. This series adds SPL NAND boot support and results in the AIS image that is generated able to boot from NAND.
Fabien Parent (6): NAND: davinci: add support for NAND chips with 16 bits bus davinci: omapl138_lcdk: use correct define for 16 bit NAND chips davinci: omapl138_lcdk: use correct name for CONFIG_SYS_NAND_MASK_CLE davinci: omapl138_lcdk: use correct name for CONFIG_SYS_NAND_MASK_ALE davinci: omapl138_lck: remove obsolete define davinci: omapl138_lcdk: add NAND SPL boot support
board/davinci/da8xxevm/README.omapl138-lcdk | 28 ------------------------ configs/omapl138_lcdk_defconfig | 3 +++ drivers/mtd/nand/davinci_nand.c | 3 +++ include/configs/omapl138_lcdk.h | 34 +++++++++++++++++++++++++---- scripts/config_whitelist.txt | 3 --- 5 files changed, 36 insertions(+), 35 deletions(-) delete mode 100644 board/davinci/da8xxevm/README.omapl138-lcdk
Everything looks good, so I've reviewed-by'd it. But it also shows a number of things which should be converted to Kconfig (I stumbled onto in looking at why you didn't set SYS_NAND_BUSWIDTH_16BIT via defconfig). Do you have time to move the davinci NAND driver to Kconfig while in here? Thanks!
-- 2.10.2
participants (2)
-
Fabien Parent
-
Tom Rini