Add initial version of new QC/A SPI FLASH driver
authorPiotr Dymacz <pepe2k@gmail.com>
Sun, 22 Nov 2015 21:51:58 +0000 (22:51 +0100)
committerPiotr Dymacz <pepe2k@gmail.com>
Sun, 22 Nov 2015 21:51:58 +0000 (22:51 +0100)
commit1e39274601566d11c1cb94a9032a425c699e4874
tree87767a519a68ecc9c51e4afb08367e96f4d61532
parent64fa5fcad0992174a02650e9846824c3800a9198
Add initial version of new QC/A SPI FLASH driver

Instead of using so called bit banging/blasting mode, as the old one driver from Atheros SDK does, this driver utilizes SPI shift registers.
With this approach, we need to only setup one register and let the built-in SPI controller do the rest.

SPI shift registers and how they work exactly are not described very well in QC/A WiSoCs datasheets, so som things had to be tested in practice.

This driver has been already successfully tested on all supported platforms, including:
- Atheros AR933x (SPI shift registers are not mentioned in its datasheet!)
- Atheros AR9341/4
- Qualcomm Atheros QCA953x

Tests on scope showed that with this driver, clock for SPI is the same as the one set in SPI_CONTROL register (depends on platform, between 25 and 30 MHz).
With old driver, clock was around 4-6 MHz, which means that new driver may drastically increase SPI operations speed.

In practical tests, for operations like sector erase, time needed by chip to finish the operation, is more significant, so there is no difference at all.
Comparison for other operations, like page program, has not been done yet.
u-boot/cpu/mips/ar7240/qca_sf.c [new file with mode: 0644]
u-boot/include/soc/qca_soc_common.h