I can only see this issue with the main-line driver above; more over only the mainline has the infra-structure to set the input clock to the NFC. I guess if you edit the 'u-boot' source to change the NFC clock, you would see the issue with the TimeSys 3.0 driver; but I have not tried this. The way the 'u-boot' and 'Linux' combination is setup with TimeSys, there is no way to clock the NFC above ~13MHz unless the source is modified. With the mainline driver I have above, altering 'vf610-twr.dts' nfc '<clock>' line, you can change the frequency in divisors of 133Mhz (66, 44, 33, 26, 22, 19, 16, etc). To verify with the TimeSys driver, the u-boot's CONFIG_SYS_CLKCTRL_CSCDR2 and CONFIG_SYS_CLKCTRL_CSCDR3 can change to alter the divisor and the 'FAST_FLASH' should be enabled (EDO flash mode). The software ECC should work at 66MHz and 44Mhz, but the hardware ECC would fail (as per my observations). I have dumped the buffers and the 2nd word is corrupt always. I think that the ECC controller goes crazy with it's 'correction' if it is clocked above 33MHz, which is a magic number for the 'FAST_FLASH' to work. Clocking above 33Mhz does not significantly improve read/write/erase performance as the controller make NFC access CPU bound. However, below 33MHz, the time to move data from the flash starts to be more significant. tR_ECC is typical 45uS, max 70 uS for the Micron flash (move data from NAND cell to NAND buffer); during this time the NFC is waiting for READY/BUSY. The interface timing is ~16nS*1k -> 16uS (the minimum time for the NFC to act during a page read). This is the time related to NFC clock input; but I don't know how. It seems that 33MHz gives a read speed of ~15MB/s and 66MHz gives a read speed of 16.6MB/s. The Hardware ECC @33MHz gives 16.2MB/s as in the numbers above; it is in-between as the software doesn't run the ECC, but the interface time runs slower (the NFC moving data from flash to buffers time increased). If you could confirm the hardware ECC busts above 33MHz, that would help. If I confirm, can we get someone from Freescale to answer/act or should I open a service request with Freescale or something?
Also things may work as in HardwareECC@33MHz; but that doesn't mean they are right. I don't want the code to fail on one out of every 1000 units, especially on a hot day in some dirty location that I have to visit to diagnose the issue. I would like some official confirmation on the timing for the chip. Usually you must do a timing budget for the system, which is the flash chip, the flash controller and the PCB inter-connect. Each new Vybrid design using NAND flash should have the information on the controller so an appropriate clock can be picked (no matter what software is used). There really is no timing documentation on this NFC controller? The same controller seems to be used for the MPC5125 (PowerPC) and the MCF54418 (ColdFire) SOCs. Is there an NDA or public timing diagram for these SOC and the NFC in those implementations? I think the Hardware ECC failing above 33MHz is an errata, but only a system designer could say if it may reliably work at 33MHz under different voltage/temperatures. Or maybe I have set something up wrong; but if this is the case, it is most likely related to timing which I have no information on.
EDIT: The timing is available in Vybrid Fact sheet section 9.5.2. This was the electrical/timing data that I wanted. Now section 9.10.4 NFC clocking of the software user manual makes no sense. There is no mention of high/low time there. The clock inversion parameter makes more sense with the fact sheet timing. However, this additional information doesn't explain the Hardware ECC failure above 33MHz.
2nd EDIT: Apparently the Vybrid Fact sheet is a copy of the Kinetis parts? See: MQX and Kinetis. Also the MK70FN1M0VMJ12 data sheet, section 6.4.3. which is the same as the Vybrid document. This part seems to have a SIM_CLKDIV4; probably the Vybrid supplies tH/tL in a different way? So I still do not know of any definitive answer on the Vybrid timing. I think part of the story is in the fact sheet timing.
3rd Edit: I have open Service Request SR 1-1262845281. This confirms that the electrical data sheet does not have the complete information. Ie, the SIM_CLKDIV4 register doesn't exist on the Vybrid and there is some other timing source to the NFC controller; probably 9.10.4, but is the clock ever asymmetric. Ie, Is there still GLUE between these? Or is NFC clock feed direct, which makes the NFC_CLK_INV bit in CCM_CSCDR2[14] rather confusing unless there is some phase relation. I believe the MQX driver divides the platform clock by 5 for a 26MHz source and it does not set FASTFLASH, which also indicates a clocking under 33MHz. The MQX driver does enable hw-ecc by default.