• Chuanhong Guo's avatar
    spi: spi-mtk-nor: make use of full capability of prg mode · e7edd2cf
    Chuanhong Guo authored
    "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: default avatarChuanhong Guo <gch981213@gmail.com>
    Link: https://lore.kernel.org/r/20200924152730.733243-2-gch981213@gmail.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
    e7edd2cf
spi-mtk-nor.c 19.2 KB