Hi, On 7 June 2016 at 05:28, Siarhei Siamashka <siarhei.siamas...@gmail.com> wrote: > Allwinner devices support SPI flash as one of the possible > bootable media type. The SPI flash chip needs to be connected > to SPI0 pins (port C) to make this work. More information is > available at: > > https://linux-sunxi.org/Bootable_SPI_flash > > This patch adds the initial support for booting from SPI flash. > The existing SPI frameworks are not used in order to reduce the > SPL code size. Right now the SPL size grows by ~370 bytes when > CONFIG_SPL_SPI_SUNXI option is enabled. > > While there are no popular Allwinner devices with SPI flash at > the moment, testing can be done using a SPI flash module (it > can be bought for ~2$ on ebay) and jumper wires with the boards, > which expose relevant pins on the expansion header. The SPI flash > chips themselves are very cheap (some prices are even listed as > low as 4 cents) and should not cost much if somebody decides to > design a development board with an SPI flash chip soldered on > the PCB. > > Another nice feature of the SPI flash is that it can be safely > accessed in a device-independent way (since we know that the > boot ROM is already probing these pins during the boot time). > And if, for example, Olimex boards opted to use SPI flash instead > of EEPROM, then they would have been able to have U-Boot installed > in the SPI flash now and boot the rest of the system from the SATA > hard drive. Hopefully we may see new interesting Allwinner based > development boards in the future, now that the software support > for the SPI flash is in a better shape :-) > > Testing can be done by enabling the CONFIG_SPL_SPI_SUNXI option > in a board defconfig, then building U-Boot and finally flashing > the resulting u-boot-sunxi-with-spl.bin binary over USB OTG with > a help of the sunxi-fel tool: > > sunxi-fel spiflash-write 0 u-boot-sunxi-with-spl.bin > > The device needs to be switched into FEL (USB recovery) mode first. > The most suitable boards for testing are Orange Pi PC and Pine64. > Because these boards are cheap, have no built-in NAND/eMMC and > expose SPI0 pins on the Raspberry Pi compatible expansion header. > The A13-OLinuXino-Micro board also can be used. > > Signed-off-by: Siarhei Siamashka <siarhei.siamas...@gmail.com> > --- > > Changes in v2: > - Add Kconfig option (CONFIG_SPL_SPI_SUNXI) and move the SPI flash > support code into a separate source file > - Use CONFIG_SYS_SPI_U_BOOT_OFFS instead of the hardcoded constant > - Deinitialize the SPI controller and undo pin muxing after the job > is done > - Size reduction of the SPI transfer function > - Add delay after each SPI transfer to ensure that the chip select > deassert timing requirements (tSHSL) are always satisfied > - More comments in the code > > > arch/arm/include/asm/arch-sunxi/gpio.h | 3 + > arch/arm/mach-sunxi/board.c | 5 + > common/spl/spl.c | 4 +- > drivers/mtd/spi/Kconfig | 12 ++ > drivers/mtd/spi/Makefile | 1 + > drivers/mtd/spi/sunxi_spi_spl.c | 283 > +++++++++++++++++++++++++++++++++ > include/configs/sunxi-common.h | 5 + > 7 files changed, 311 insertions(+), 2 deletions(-) > create mode 100644 drivers/mtd/spi/sunxi_spi_spl.c
Shouldn't this be a normal SPI driver? Then you could put this in common/spl/spl_spi.c. Regards, Simon _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot