spi: fsl-espi: fix ioread16/iowrite16 endianness
authorHeiner Kallweit <hkallweit1@gmail.com>
Wed, 30 Nov 2016 19:28:09 +0000 (20:28 +0100)
committerMark Brown <broonie@kernel.org>
Thu, 1 Dec 2016 18:50:59 +0000 (18:50 +0000)
fsl_espi_read_reg16 / fsl_espi_write_reg16 are supposed to read / write
big endian values. Therefore ioread16be / iowrite16be have to be used.

Fixes:  058234328445 ("eliminate need for linearization when writing to hardware")
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/spi/spi-fsl-espi.c

index cd28329..1d332e2 100644 (file)
@@ -124,7 +124,7 @@ static inline u32 fsl_espi_read_reg(struct fsl_espi *espi, int offset)
 
 static inline u16 fsl_espi_read_reg16(struct fsl_espi *espi, int offset)
 {
-       return ioread16(espi->reg_base + offset);
+       return ioread16be(espi->reg_base + offset);
 }
 
 static inline u8 fsl_espi_read_reg8(struct fsl_espi *espi, int offset)
@@ -141,7 +141,7 @@ static inline void fsl_espi_write_reg(struct fsl_espi *espi, int offset,
 static inline void fsl_espi_write_reg16(struct fsl_espi *espi, int offset,
                                        u16 val)
 {
-       iowrite16(val, espi->reg_base + offset);
+       iowrite16be(val, espi->reg_base + offset);
 }
 
 static inline void fsl_espi_write_reg8(struct fsl_espi *espi, int offset,