Hi Teams,
I was confused by GPMC settings recently, in my opinion, what i should configure is just registers from GPMC_CONFIG1_i to GPMC_CONFIG7_i.
The following settings are from TI's LAN setting on GPMC, CS5 is used.
// Configure CS5 for LAN, Base Address 0x15000000
OUTREG32(&pGpmc->GPMC_CONFIG1_5, BSP_GPMC_LAN_CONFIG1_200);
OUTREG32(&pGpmc->GPMC_CONFIG2_5, BSP_GPMC_LAN_CONFIG2_200);
OUTREG32(&pGpmc->GPMC_CONFIG3_5, BSP_GPMC_LAN_CONFIG3_200);
OUTREG32(&pGpmc->GPMC_CONFIG4_5, BSP_GPMC_LAN_CONFIG4_200);
OUTREG32(&pGpmc->GPMC_CONFIG5_5, BSP_GPMC_LAN_CONFIG5_200);
OUTREG32(&pGpmc->GPMC_CONFIG6_5, BSP_GPMC_LAN_CONFIG6_200);
OUTREG32(&pGpmc->GPMC_CONFIG7_5, BSP_GPMC_LAN_CONFIG7);
And i tried to duplicate the LAN's setting for my CAN bus interface - SJA1000T,which connect with CS3 bank.
// Configure CS3 for SJA1000T,Base Address 0x20000000
OUTREG32(&pGpmc->GPMC_CONFIG1_3, BSP_GPMC_CAN_CONFIG1_200);
OUTREG32(&pGpmc->GPMC_CONFIG2_3, BSP_GPMC_CAN_CONFIG2_200);
OUTREG32(&pGpmc->GPMC_CONFIG3_3, BSP_GPMC_CAN_CONFIG3_200);
OUTREG32(&pGpmc->GPMC_CONFIG4_3, BSP_GPMC_CAN_CONFIG4_200);
OUTREG32(&pGpmc->GPMC_CONFIG5_3, BSP_GPMC_CAN_CONFIG5_200);
OUTREG32(&pGpmc->GPMC_CONFIG6_3, BSP_GPMC_CAN_CONFIG6_200);
OUTREG32(&pGpmc->GPMC_CONFIG7_3, BSP_GPMC_CAN_CONFIG7);
The macro above is listed as follows:
// CONFIGx for L3=200M
#define BSP_GPMC_LAN_CONFIG1_200 0x00001000 // no wait, 16 bit, non multiplexed
#define BSP_GPMC_LAN_CONFIG2_200 0x000A0A00 // CS OffTime 50ns
#define BSP_GPMC_LAN_CONFIG3_200 0x00020201 // we don't use ADV
#define BSP_GPMC_LAN_CONFIG4_200 0x0A000A00 // Deassert #WE, #OE at 50ns
#define BSP_GPMC_LAN_CONFIG5_200 0x01081414 // Cycle time 100ns, access time 40ns
#define BSP_GPMC_LAN_CONFIG6_200 0x00000F80 // Delay 75ns between successive accesses to meet minimum cycle time
#define BSP_GPMC_LAN_CONFIG7 ((BSP_LAN9115_REGS_PA >> 24) | BSP_LAN9115_MASKADDRESS | GPMC_CSVALID)
// SJA1000T settings
// xxns minimum cycle time for back to back accesses
// 40ns min CS,OE,WE assertion
// 15ns min deassertion
// CONFIGx for L3 200M
#define BSP_GPMC_CAN_CONFIG1_200 0x00000000 // no wait, 8 bit, non multiplexed
#define BSP_GPMC_CAN_CONFIG2_200 0x000A0A00 // CS OffTime 50ns
#define BSP_GPMC_CAN_CONFIG3_200 0x00020201 // we don't use ADV
#define BSP_GPMC_CAN_CONFIG4_200 0x0A000A00 // Deassert #WE, #OE at 50ns
#define BSP_GPMC_CAN_CONFIG5_200 0x01081414 // Cycle time 100ns, access time 40ns
#define BSP_GPMC_CAN_CONFIG6_200 0x00000F80 // Delay 75ns between successive accesses to meet minimum cycle time
#define BSP_GPMC_CAN_CONFIG7 ((0x20000000 >> 24) | GPMC_MASKADDRESS_16MB | GPMC_CSVALID)
However, the NK generated can not boot successfully, it halt during CS3 configuration phase. It seemed my settings for CS3 is incorrect, could anyone tell me is there anything wrong or missing?