spi: nxp_fspi: new driver for the FlexSPI controller
authorMichael Walle <michael@walle.cc>
Tue, 17 Dec 2019 23:09:58 +0000 (00:09 +0100)
committerJagan Teki <jagan@amarulasolutions.com>
Mon, 27 Jan 2020 16:57:21 +0000 (22:27 +0530)
commit383fded70c4f14370bc5525bdb9f547393876e31
tree70a4d26bc57be59da851a0adaa156f0c38cafacf
parent051e03c0d76b7ce9d4649f76f5be979d8f88e765
spi: nxp_fspi: new driver for the FlexSPI controller

This is a port of the kernel's spi-nxp-fspi driver. It uses the new
spi-mem interface and does not expose the more generic spi-xfer
interface. The source was taken from the v5.3-rc3 tag.

The port was straightforward:
 - remove the interrupt handling and the completion by busy polling the
   controller
 - remove locks
 - move the setup of the memory windows into claim_bus()
 - move the setup of the speed into set_speed()
 - port the device tree bindings from the original fspi_probe() to
   ofdata_to_platdata()

There were only some style change fixes, no change in any logic. For
example, there are busy loops where the return code is not handled
correctly, eg. only prints a warning with WARN_ON(). This port
intentionally left most functions unchanged to ease future bugfixes.

This was tested on a custom LS1028A board. Because the LS1028A doesn't
have proper clock framework support, changing the clock speed was not
tested. This also means that it is not possible to change the SPI
speed on LS1028A for now (neither is it possible in the linux driver).

Signed-off-by: Michael Walle <michael@walle.cc>
Reviewed-by: Jagan Teki <jagan@amarulasolutions.com>
Tested-by: Kuldeep Singh <kuldeep.singh@nxp.com>
drivers/spi/Kconfig
drivers/spi/Makefile
drivers/spi/nxp_fspi.c [new file with mode: 0644]