summaryrefslogtreecommitdiffstats
path: root/include/linux/spi
diff options
context:
space:
mode:
authorMark Brown <broonie@linaro.org>2013-10-25 09:51:41 +0100
committerMark Brown <broonie@linaro.org>2013-10-25 09:51:41 +0100
commit82f85cf98f0eb60093e8b3d606711c2d49538478 (patch)
tree4f47b44021db56a591d0e7d8930963853493d80e /include/linux/spi
parent344a85117d9c9e652c0a40c6d74e39e02ceeca5d (diff)
parent235907422548aae38d03a545f20fceb728b70ddd (diff)
Merge remote-tracking branch 'spi/topic/wr' into spi-next
Diffstat (limited to 'include/linux/spi')
-rw-r--r--include/linux/spi/spi.h27
1 files changed, 27 insertions, 0 deletions
diff --git a/include/linux/spi/spi.h b/include/linux/spi/spi.h
index 1619ed48e75..8c62ba74dd9 100644
--- a/include/linux/spi/spi.h
+++ b/include/linux/spi/spi.h
@@ -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);
+}
+
/*---------------------------------------------------------------------------*/
/*