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.

AM335x GPMC Timing Optimal Settings

Hello,


I'm working with a custom am335x board, using kernel version 3.6.12, a MT29F1G08ABBDAH4-IT:D NAND memory, and JFFS2 partitions, and I'm currently trying to optimize the memory throughput.

Currently, this is my average write speed:

root@AM335x:/mnt/extra# dd if=/dev/urandom of=test bs=256k count=40
40+0 records in
40+0 records out
10485760 bytes (10.0MB) copied, 14.042668 seconds, 729.2KB/s

I had a worse results before, but I messed around with the GPMC timing settings and managed to improve them to the current level. :)

This is my current gpmc_timing configuration (values are in nanoseconds and GPMC_FCLK is 100MHz):

static struct gpmc_timings am335x_nand_timings = {
   .sync_clk = 0,

   .cs_on = 0,
   .cs_rd_off = 20,
   .cs_wr_off = 20,

   .adv_on = 0,
   .adv_rd_off = 20,
   .adv_wr_off = 20,
   .we_off = 10,     
   .oe_off = 10,     

   .access = 20,
   .rd_cycle = 20,
   .wr_cycle = 20,

   .wr_access = 20,
   .wr_data_mux_bus = 0,
};

I know that the GPMC timing configuration depends on a set of rules that must be followed, and that multiple configurations may work (with better or worse performances). So, this is my question: is there a guide showing how to obtain the optimal configuration values?

Regards,

Guilherme