spi: spi-mtk-nor: make use of full capability of prg mode
authorChuanhong Guo <gch981213@gmail.com>
Thu, 24 Sep 2020 15:27:28 +0000 (23:27 +0800)
committerMark Brown <broonie@kernel.org>
Thu, 1 Oct 2020 22:24:25 +0000 (23:24 +0100)
commite7edd2cf4c7d06c6ef3e2030f66eeefa5150f0ff
tree87bb67e248f41608275831161ef3243054e41387
parent9d3621525018dbff2795e2bab17572fd20431234
spi: spi-mtk-nor: make use of full capability of prg mode

"program" mode on this controller can trigger up to 56 bits of data
shifting. During the operation, data in PRGDATA[0-5] will be
shifted out from MOSI, and data from MISO will be continuously filling
SHREG[0-9].
Currently this mode is used to implement transfer_one_message for 6-byte
full-duplex transfer, but it can execute a transfer for up-to 7 bytes
as long as the last byte is read only.
transfer_one_message is expected to perform full-duplex transfer,
instead of transfer with specific format. mtk_nor_spi_mem_prg is
added here to use this extra byte.

Newer version of this controller can trigger longer data shifting with
shift bytes more than PRGDATA_MAX + SHREG_MAX. This patch is implemented
with that in mind and it checks against both SHREG_MAX and PRG_CNT_MAX
for future support of new controllers.

Signed-off-by: Chuanhong Guo <gch981213@gmail.com>
Link: https://lore.kernel.org/r/20200924152730.733243-2-gch981213@gmail.com
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/spi/spi-mtk-nor.c