kernel: m25p80: allow fallback from spi_flash_read to regular SPI transfer
Signed-off-by: Felix Fietkau <nbd@nbd.name>
This commit is contained in:
		@@ -0,0 +1,36 @@
 | 
			
		||||
From: Felix Fietkau <nbd@nbd.name>
 | 
			
		||||
Date: Fri, 23 Feb 2018 17:12:16 +0100
 | 
			
		||||
Subject: [PATCH] mtd: m25p80: allow fallback from spi_flash_read to regular
 | 
			
		||||
 SPI transfer
 | 
			
		||||
 | 
			
		||||
Some flash controllers, e.g. on the ath79 platform can support a fast
 | 
			
		||||
flash read via memory mapping, but only if the flash chip is in
 | 
			
		||||
3-byte address mode.
 | 
			
		||||
 | 
			
		||||
Since spi_flash_read_supported does not have access to the same data as
 | 
			
		||||
spi_flash_read, the driver can't detect an unsupported call until m25p80
 | 
			
		||||
has decided to use spi_flash_read.
 | 
			
		||||
 | 
			
		||||
Allow the driver to indicate a fallback to a regular SPI transfer by
 | 
			
		||||
returning -EOPNOTSUPP
 | 
			
		||||
 | 
			
		||||
Signed-off-by: Felix Fietkau <nbd@nbd.name>
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
--- a/drivers/mtd/devices/m25p80.c
 | 
			
		||||
+++ b/drivers/mtd/devices/m25p80.c
 | 
			
		||||
@@ -155,9 +155,11 @@ static ssize_t m25p80_read(struct spi_no
 | 
			
		||||
 		msg.data_nbits = m25p80_rx_nbits(nor);
 | 
			
		||||
 
 | 
			
		||||
 		ret = spi_flash_read(spi, &msg);
 | 
			
		||||
-		if (ret < 0)
 | 
			
		||||
-			return ret;
 | 
			
		||||
-		return msg.retlen;
 | 
			
		||||
+		if (ret != -EOPNOTSUPP) {
 | 
			
		||||
+			if (ret < 0)
 | 
			
		||||
+				return ret;
 | 
			
		||||
+			return msg.retlen;
 | 
			
		||||
+		}
 | 
			
		||||
 	}
 | 
			
		||||
 
 | 
			
		||||
 	spi_message_init(&m);
 | 
			
		||||
		Reference in New Issue
	
	Block a user