]> asedeno.scripts.mit.edu Git - linux.git/commit
mtd: m25p80: add support of SPI 1-2-2 and 1-4-4 protocols
authorCyrille Pitchen <cyrille.pitchen@atmel.com>
Tue, 25 Apr 2017 20:08:47 +0000 (22:08 +0200)
committerCyrille Pitchen <cyrille.pitchen@wedev4u.fr>
Mon, 15 May 2017 19:56:17 +0000 (21:56 +0200)
commit138f5dc61b63c3e89dc133c4faed6b6d0a91b7fd
treed59fc391bc80539f925e7508e80cdc89e0e55cf2
parentcfc5604c488ccd17936b69008af0c9ae050f4a08
mtd: m25p80: add support of SPI 1-2-2 and 1-4-4 protocols

Before this patch, m25p80_read() supported few SPI protocols:
- regular SPI 1-1-1
- SPI Dual Output 1-1-2
- SPI Quad Output 1-1-4
On the other hand, m25p80_write() only supported SPI 1-1-1.

This patch updates both m25p80_read() and m25p80_write() functions to let
them support SPI 1-2-2 and SPI 1-4-4 protocols for Fast Read and Page
Program SPI commands.

It adopts a conservative approach to avoid regressions. Hence the new
implementations try to be as close as possible to the old implementations,
so the main differences are:
- the tx_nbits values now being set properly for the spi_transfer
  structures carrying the (op code + address/dummy) bytes
- and the spi_transfer structure being split into 2 spi_transfer
  structures when the numbers of I/O lines are different for op code and
  for address/dummy byte transfers on the SPI bus.

Besides, the current spi-nor framework supports neither the SPI 2-2-2 nor
the SPI 4-4-4 protocols. So, for now, we don't need to update the
m25p80_{read|write}_reg() functions as SPI 1-1-1 is the only one possible
protocol.

Signed-off-by: Cyrille Pitchen <cyrille.pitchen@atmel.com>
Reviewed-by: Marek Vasut <marek.vasut@gmail.com>
drivers/mtd/devices/m25p80.c