|
@@ -853,6 +853,33 @@ static inline ssize_t spi_w8r16(struct spi_device *spi, u8 cmd)
|
|
|
return (status < 0) ? status : result;
|
|
|
}
|
|
|
|
|
|
+/**
|
|
|
+ * spi_w8r16be - SPI synchronous 8 bit write followed by 16 bit big-endian read
|
|
|
+ * @spi: device with which data will be exchanged
|
|
|
+ * @cmd: command to be written before data is read back
|
|
|
+ * Context: can sleep
|
|
|
+ *
|
|
|
+ * This returns the (unsigned) sixteen bit number returned by the device in cpu
|
|
|
+ * endianness, or else a negative error code. Callable only from contexts that
|
|
|
+ * can sleep.
|
|
|
+ *
|
|
|
+ * This function is similar to spi_w8r16, with the exception that it will
|
|
|
+ * convert the read 16 bit data word from big-endian to native endianness.
|
|
|
+ *
|
|
|
+ */
|
|
|
+static inline ssize_t spi_w8r16be(struct spi_device *spi, u8 cmd)
|
|
|
+
|
|
|
+{
|
|
|
+ ssize_t status;
|
|
|
+ __be16 result;
|
|
|
+
|
|
|
+ status = spi_write_then_read(spi, &cmd, 1, &result, 2);
|
|
|
+ if (status < 0)
|
|
|
+ return status;
|
|
|
+
|
|
|
+ return be16_to_cpu(result);
|
|
|
+}
|
|
|
+
|
|
|
/*---------------------------------------------------------------------------*/
|
|
|
|
|
|
/*
|