diff options
author | Avik Sil <aviksil@linux.vnet.ibm.com> | 2013-07-24 14:26:40 +0530 |
---|---|---|
committer | Nikunj A Dadhania <nikunj@linux.vnet.ibm.com> | 2013-07-24 14:46:22 +0530 |
commit | 0fd4ccc84446e65265a9158888ad80d6fbb6b563 (patch) | |
tree | fc8ee833ccaa1d2cf01915f415903c900cca2f05 /lib/libusb | |
parent | 89edff3bf08456640186fe47030c282fefadafd6 (diff) | |
download | SLOF-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.h | 82 | ||||
-rw-r--r-- | lib/libusb/usb-core.h | 1 |
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, |