This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

EMIFA ASYNC performance with NAND

We are struggling to get reasonable NAND performance via the OMAP L138 or L132 EMIFA subsystem.  Similar behaviour has been seen on both the TI LCDK board and our own in-house L132-based board.  Tracing the signals to the NAND chip via DSO shows signalling which does not match what would be expected for the clock being fed into the EMIFA.

Our board has a 24MHz crystal for CLKIN.   PLLM is set to max (i.e. 31 + 1 = x32) with POSTDIV of 3 + 1 =4.  All PLLDIV values are default.  I have (using OCSEL settings to send different clock signals to the CLKOUT pin) confirmed that various of the PLL0_SYSCLK frequencies match what I expect given the multiplier/divider settings. From that I am confident that the DIV4.5 value is as expected, giving an EMA_CLK of ~170MHz.  I am aware that this goes above the maximum of 150MHz for async, but I had it at that setting for the current set of DSO readings.  It was at max given I saw a slight improvement in early tests from 150MHz and noting appeared to suffer in short testing.   From this I would expect a clock period of ~6ns.  Based on the timing in figure 20-10 and setup, strobe, and hold values in the async configuration register to match (2, 3, 2) I would expect EMA_OE to be down for ~24ns.  Instead it is down for ~350ns, over an order of magnitude longer.  The result is a read rate of < 2MB/s, despite the NAND chips being able to cope with a far higher rate.


Below is a dump of the relevant register settings used (with no NAND access underway):


CFGCHIP3 0xff26  - Relevant bits are bits 1-2 enabling DIV4.5 and setting EMA_CLKSRC to the DIV4.5 clock                                                               

PLL registers:                                                                  
                                                        
PLLCTL 0x49    
PLLM 0x1f                                                               
PREDIV 0x8000                                                           
PLLDIV1 0x8000                                                          
PLLDIV2 0x8001                                                          
PLLDIV3 0x8002                                                          
PLLDIV4 0x8003                                                          
PLLDIV5 0x8002                                                          
PLLDIV6 0x8000                                                          
PLLDIV7 0x8005                                                          
OSCDIV 0x8000                                                           
POSTDIV 0x8003                                                          
PLLCMD 0x1                                                              
PLLSTAT 0x6                                                             
ALNCTL 0x1ff                                                            
DCHANGE 0x0                   
CKEN 0x3                              
SYSTAT 0x1fe                             

EMIFA registers                                                                 
 
AWCC        0xf0000080 (and 0x80)
CE3CFG     0xc466234                                                         
NANDFCR 0x12  - CS3 enabled, with 4-bit ECC                                                          
NANDFSR 0x3  - both EMA_WAIT pins high