svn commit: r331123 - head/sys/dev/flash

Ian Lepore ian at FreeBSD.org
Sun Mar 18 15:56:10 UTC 2018


Author: ian
Date: Sun Mar 18 15:56:10 2018
New Revision: 331123
URL: https://svnweb.freebsd.org/changeset/base/331123

Log:
  Do not overwrite the contents of BIO_WRITE buffers.  SPI inherently
  transfers data in both directions at once.  When writing to the device,
  use a dummy buffer for the incoming data, not the same buffer as the
  outgoing data.  Writes are done in FLASH_PAGE_SIZE chunks, which is only
  256 bytes, so just put the dummy buffer into the softc.

Modified:
  head/sys/dev/flash/mx25l.c

Modified: head/sys/dev/flash/mx25l.c
==============================================================================
--- head/sys/dev/flash/mx25l.c	Sun Mar 18 15:44:07 2018	(r331122)
+++ head/sys/dev/flash/mx25l.c	Sun Mar 18 15:56:10 2018	(r331123)
@@ -90,6 +90,7 @@ struct mx25l_softc 
 	struct bio_queue_head sc_bio_queue;
 	unsigned int	sc_flags;
 	unsigned int	sc_taskstate;
+	uint8_t		sc_dummybuf[FLASH_PAGE_SIZE];
 };
 
 #define	TSTATE_STOPPED	0
@@ -344,7 +345,7 @@ mx25l_write(device_t dev, off_t offset, caddr_t data, 
 		cmd.rx_cmd = rxBuf;
 		cmd.tx_data = data + bytes_writen;
 		cmd.tx_data_sz = bytes_to_write;
-		cmd.rx_data = data + bytes_writen;
+		cmd.rx_data = sc->sc_dummybuf;
 		cmd.rx_data_sz = bytes_to_write;
 
 		/*


More information about the svn-src-head mailing list