svn commit: r266644 - head/sys/dev/usb/controller

Hans Petter Selasky hselasky at FreeBSD.org
Sun May 25 06:42:44 UTC 2014


Author: hselasky
Date: Sun May 25 06:42:43 2014
New Revision: 266644
URL: http://svnweb.freebsd.org/changeset/base/266644

Log:
  Make SAF1761 driver endian safe.
  
  Sponsored by:	DARPA, AFRL

Modified:
  head/sys/dev/usb/controller/saf1761_otg.h

Modified: head/sys/dev/usb/controller/saf1761_otg.h
==============================================================================
--- head/sys/dev/usb/controller/saf1761_otg.h	Sun May 25 02:45:26 2014	(r266643)
+++ head/sys/dev/usb/controller/saf1761_otg.h	Sun May 25 06:42:43 2014	(r266644)
@@ -40,19 +40,27 @@
 #define	SOTG_DEVICE_PORT_NUM 2
 #define	SOTG_HOST_CHANNEL_MAX (3 * 32)
 
-#define	SAF1761_READ_1(sc, reg)	\
-  bus_space_read_1((sc)->sc_io_tag, (sc)->sc_io_hdl, reg)
-#define	SAF1761_READ_2(sc, reg)	\
-  bus_space_read_2((sc)->sc_io_tag, (sc)->sc_io_hdl, reg)
-#define	SAF1761_READ_4(sc, reg)	\
-  bus_space_read_4((sc)->sc_io_tag, (sc)->sc_io_hdl, reg)
+/* Macros used for reading and writing registers */
+
+#define	SAF1761_READ_1(sc, reg) \
+  bus_space_read_1((sc)->sc_io_tag, (sc)->sc_io_hdl, (reg))
+#define	SAF1761_READ_2(sc, reg)	({ uint16_t _temp; \
+  _temp = bus_space_read_2((sc)->sc_io_tag, (sc)->sc_io_hdl, (reg)); \
+  le16toh(_temp); })
+#define	SAF1761_READ_4(sc, reg)	({ uint32_t _temp; \
+  _temp = bus_space_read_4((sc)->sc_io_tag, (sc)->sc_io_hdl, (reg)); \
+  le32toh(_temp); })
 
 #define	SAF1761_WRITE_1(sc, reg, data)	\
-  bus_space_write_1((sc)->sc_io_tag, (sc)->sc_io_hdl, reg, data)
-#define	SAF1761_WRITE_2(sc, reg, data)	\
-  bus_space_write_2((sc)->sc_io_tag, (sc)->sc_io_hdl, reg, data)
-#define	SAF1761_WRITE_4(sc, reg, data)	\
-  bus_space_write_4((sc)->sc_io_tag, (sc)->sc_io_hdl, reg, data)
+  bus_space_write_1((sc)->sc_io_tag, (sc)->sc_io_hdl, (reg), data)
+#define	SAF1761_WRITE_2(sc, reg, data)	do { \
+  uint16_t _temp = (data); \
+  bus_space_write_2((sc)->sc_io_tag, (sc)->sc_io_hdl, (reg), htole16(_temp)); \
+} while (0)
+#define	SAF1761_WRITE_4(sc, reg, data)	do { \
+  uint32_t _temp = (data); \
+  bus_space_write_4((sc)->sc_io_tag, (sc)->sc_io_hdl, (reg), htole32(_temp)); \
+} while (0)
 
 struct saf1761_otg_softc;
 struct saf1761_otg_td;


More information about the svn-src-head mailing list