Hello,
We have a custom AM625 design using an MT35XU02GCBA1G12-0AAT.
We have configured the FLASH device for the OSPI device tree according to the snippet below.
In linux, the device is detected and we are able to access memory using various mtd tools (mtd_debug, nandtest, etc). However, we are getting some intermittent failures.
On a block write request, (e.g., running an erase, then a transfer of 256 KBytes of random data using mtd_debug and then reading it back per the test examples provided by TI), we will occasionally see a run of 8 or 16 bytes which are not matching and show "0xFF" as the value. It is like the write request for that run of bytes was lost. If we (without erasing again) rewrite the same data pattern, then generally the values get updated and the blocks will subsequently match.
We have noticed that phy calibration logic is not running (we enabled debugging on the driver to check) because the cqspi_phy_op_eligible() driver call is returning false. Looking at the micro-st.c file, there appears to be different fixups applied "mt35xu512aba" that are not applied to the "mt35xu02g" devices, which is probably leading to the cqspi_phy_op_eligible() to fail. Could that be the issue?
We have tried reducing the clock speed a bit (to 10 MHz, and up to 33 MHz) so see if the issue changes. It does not.
Any suggestions for debugging? We will check the clock on the OSPI line, but it is terminated per the design guidelines recieved by TI.
With regards,
Mike
OSPI device tree snippet: