aboutsummaryrefslogtreecommitdiff
path: root/lib/libusb
diff options
context:
space:
mode:
authorAvik Sil <aviksil@linux.vnet.ibm.com>2013-07-24 14:26:40 +0530
committerNikunj A Dadhania <nikunj@linux.vnet.ibm.com>2013-07-24 14:46:22 +0530
commit0fd4ccc84446e65265a9158888ad80d6fbb6b563 (patch)
treefc8ee833ccaa1d2cf01915f415903c900cca2f05 /lib/libusb
parent89edff3bf08456640186fe47030c282fefadafd6 (diff)
downloadSLOF-0fd4ccc84446e65265a9158888ad80d6fbb6b563.zip
SLOF-0fd4ccc84446e65265a9158888ad80d6fbb6b563.tar.gz
SLOF-0fd4ccc84446e65265a9158888ad80d6fbb6b563.tar.bz2
usb-core: Add register accessor functions
Endian conversion routines Signed-off-by: Avik Sil <aviksil@linux.vnet.ibm.com> Signed-off-by: Nikunj A Dadhania <nikunj@linux.vnet.ibm.com> Acked-by: Thomas Huth <thuth@linux.vnet.ibm.com>
Diffstat (limited to 'lib/libusb')
-rw-r--r--lib/libusb/tools.h82
-rw-r--r--lib/libusb/usb-core.h1
2 files changed, 83 insertions, 0 deletions
diff --git a/lib/libusb/tools.h b/lib/libusb/tools.h
new file mode 100644
index 0000000..e08ce15
--- /dev/null
+++ b/lib/libusb/tools.h
@@ -0,0 +1,82 @@
+/*****************************************************************************
+ * Copyright (c) 2013 IBM Corporation
+ * All rights reserved.
+ * This program and the accompanying materials
+ * are made available under the terms of the BSD License
+ * which accompanies this distribution, and is available at
+ * http://www.opensource.org/licenses/bsd-license.php
+ *
+ * Contributors:
+ * IBM Corporation - initial implementation
+ *****************************************************************************/
+
+#ifndef __TOOLS_H
+#define __TOOLS_H
+
+#include <stdint.h>
+#include <byteorder.h>
+#include <cache.h>
+
+#define PTR_U32(x) ((uint32_t) (uint64_t) (x))
+
+static inline uint32_t read_reg(uint32_t *reg)
+{
+ return bswap_32(*reg);
+}
+
+static inline void write_reg(uint32_t *reg, uint32_t value)
+{
+ *reg = bswap_32(value);
+}
+
+static inline uint8_t read_reg8(uint8_t *reg)
+{
+ return *reg;
+}
+
+static inline void write_reg8(uint8_t *reg, uint8_t value)
+{
+ *reg = value;
+}
+
+static inline uint16_t read_reg16(uint16_t *reg)
+{
+ return bswap_16(*reg);
+}
+
+static inline void write_reg16(uint16_t *reg, uint16_t value)
+{
+ *reg = bswap_16(value);
+}
+
+static inline uint32_t read_reg32(uint32_t *reg)
+{
+ return read_reg(reg);
+}
+
+static inline void write_reg32(uint32_t *reg, uint32_t value)
+{
+ write_reg(reg, value);
+}
+
+static inline uint64_t read_reg64(uint64_t *reg)
+{
+ return bswap_64(*reg);
+}
+
+static inline void write_reg64(uint64_t *reg, uint64_t value)
+{
+ *reg = bswap_64(value);
+}
+
+static inline uint32_t ci_read_reg(uint32_t *reg)
+{
+ return bswap_32(ci_read_32(reg));
+}
+
+static inline void ci_write_reg(uint32_t *reg, uint32_t value)
+{
+ ci_write_32(reg, bswap_32(value));
+}
+
+#endif
diff --git a/lib/libusb/usb-core.h b/lib/libusb/usb-core.h
index 1a4e3ec..74bd49e 100644
--- a/lib/libusb/usb-core.h
+++ b/lib/libusb/usb-core.h
@@ -15,6 +15,7 @@
#include <stdio.h>
#include "usb.h"
+#include "tools.h"
enum usb_hcd_type {
USB_OHCI = 1,