This produces the same effect, and is what I had already implemented...
Can you explain the significance of the base address, and how it maps to the IFC memory, and can you explain the AMASK value, and what value it should have to produce a new CS for the second NAND flash part?
Using these default values:
#define BPC_NAND_BUFFER_BASE0 0x60000000
#define BPC_NAND_AMASK0 0
#define BPC_NAND_CSPR0_EXT (0x0)
#define BPC_NAND_CSPR0 \
(CSPR_PHYS_ADDR(BPC_NAND_BUFFER_BASE0) | CSPR_PORT_SIZE_8 | \
CSPR_MSEL_NAND | CSPR_V) // programmed value
#define CONFIG_SYS_CSPR0 BPC_NAND_CSPR0
#define CONFIG_SYS_CSPR0_EXT BPC_NAND_CSPR0_EXT
#define CONFIG_SYS_CSOR0 BPC_NAND_CSOR
#define CONFIG_SYS_AMASK0 BPC_NAND_AMASK0
#define CONFIG_SYS_CS0_FTIM0 BPC_NAND_FTIM0
#define CONFIG_SYS_CS0_FTIM1 BPC_NAND_FTIM1
#define CONFIG_SYS_CS0_FTIM2 BPC_NAND_FTIM2
#define CONFIG_SYS_CS0_FTIM3 BPC_NAND_FTIM3
#define CONFIG_SYS_CSOR0_EXT BPC_CSOR_EXT
// CONFIG_SYS_CSPR0_FINAL??? is this necessary?
// CONFIG_SYS_AMASK0_FINAL??? is this necessary?
The CS line is active on CS0 (as expected)...
Using these values:
#define BPC_NAND_BUFFER_BASE1 0x60000000
#define BPC_NAND_AMASK1 0
#define BPC_NAND_CSPR1_EXT (0x0)
#define BPC_NAND_CSPR1 \
(CSPR_PHYS_ADDR(BPC_NAND_BUFFER_BASE1) | CSPR_PORT_SIZE_8 | \
CSPR_MSEL_NAND | CSPR_V) // programmed value
#define CONFIG_SYS_CSPR1 BPC_NAND_CSPR1
#define CONFIG_SYS_CSPR1_EXT BPC_NAND_CSPR1_EXT
#define CONFIG_SYS_CSOR1 BPC_NAND_CSOR
#define CONFIG_SYS_AMASK1 BPC_NAND_AMASK1
#define CONFIG_SYS_CS1_FTIM0 BPC_NAND_FTIM0
#define CONFIG_SYS_CS1_FTIM1 BPC_NAND_FTIM1
#define CONFIG_SYS_CS1_FTIM2 BPC_NAND_FTIM2
#define CONFIG_SYS_CS1_FTIM3 BPC_NAND_FTIM3
#define CONFIG_SYS_CSOR1_EXT BPC_CSOR_EXT
// CONFIG_SYS_CSPR0_FINAL??? is this necessary?
// CONFIG_SYS_AMASK0_FINAL??? is this necessary?
The CS line is active on CS1 (as expected)...
The problem is creating definitions that allow me to put the 2 parts end to end, so the first part uses an address range below 0x80000000 and the second part uses an address range from 0x80000000 and above.
When I try to assign a base address of 06_80000000 by setting the EXT register to 0x06, the system generates "Error" handler, esr `0xbf000000`
Also, if I give them the same base address, from within u-boot, I get:
Daves_Garage_0-1700089302240.png
This is fine, but again - they both use the same CS0 line...
Thank you for your time in advance.