summaryrefslogtreecommitdiff
path: root/drivers/staging/tidspbridge/hw/GlobalTypes.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/staging/tidspbridge/hw/GlobalTypes.h')
-rw-r--r--drivers/staging/tidspbridge/hw/GlobalTypes.h308
1 files changed, 308 insertions, 0 deletions
diff --git a/drivers/staging/tidspbridge/hw/GlobalTypes.h b/drivers/staging/tidspbridge/hw/GlobalTypes.h
new file mode 100644
index 000000000000..9b5515038ec7
--- /dev/null
+++ b/drivers/staging/tidspbridge/hw/GlobalTypes.h
@@ -0,0 +1,308 @@
+/*
+ * GlobalTypes.h
+ *
+ * DSP-BIOS Bridge driver support functions for TI OMAP processors.
+ *
+ * Global HW definitions
+ *
+ * Copyright (C) 2007 Texas Instruments, Inc.
+ *
+ * This package is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * THIS PACKAGE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
+ * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
+#ifndef _GLOBALTYPES_H
+#define _GLOBALTYPES_H
+
+/*
+ * Definition: TRUE, FALSE
+ *
+ * DESCRIPTION: Boolean Definitions
+ */
+#ifndef TRUE
+#define FALSE 0
+#define TRUE (!(FALSE))
+#endif
+
+/*
+ * Definition: NULL
+ *
+ * DESCRIPTION: Invalid pointer
+ */
+#ifndef NULL
+#define NULL (void *)0
+#endif
+
+/*
+ * Definition: RET_CODE_BASE
+ *
+ * DESCRIPTION: Base value for return code offsets
+ */
+#define RET_CODE_BASE 0
+
+/*
+ * Definition: *BIT_OFFSET
+ *
+ * DESCRIPTION: offset in bytes from start of 32-bit word.
+ */
+#define LOWER16BIT_OFFSET 0
+#define UPPER16BIT_OFFSET 2
+
+#define LOWER8BIT_OFFSET 0
+#define LOWER_MIDDLE8BIT_OFFSET 1
+#define UPPER_MIDDLE8BIT_OFFSET 2
+#define UPPER8BIT_OFFSET 3
+
+#define LOWER8BIT_OF16_OFFSET 0
+#define UPPER8BIT_OF16_OFFSET 1
+
+/*
+ * Definition: *BIT_SHIFT
+ *
+ * DESCRIPTION: offset in bits from start of 32-bit word.
+ */
+#define LOWER16BIT_SHIFT 0
+#define UPPER16BIT_SHIFT 16
+
+#define LOWER8BIT_SHIFT 0
+#define LOWER_MIDDLE8BIT_SHIFT 8
+#define UPPER_MIDDLE8BIT_SHIFT 16
+#define UPPER8BIT_SHIFT 24
+
+#define LOWER8BIT_OF16_SHIFT 0
+#define UPPER8BIT_OF16_SHIFT 8
+
+/*
+ * Definition: LOWER16BIT_MASK
+ *
+ * DESCRIPTION: 16 bit mask used for inclusion of lower 16 bits i.e. mask out
+ * the upper 16 bits
+ */
+#define LOWER16BIT_MASK 0x0000FFFF
+
+/*
+ * Definition: LOWER8BIT_MASK
+ *
+ * DESCRIPTION: 8 bit masks used for inclusion of 8 bits i.e. mask out
+ * the upper 16 bits
+ */
+#define LOWER8BIT_MASK 0x000000FF
+
+/*
+ * Definition: RETURN32BITS_FROM16LOWER_AND16UPPER(lower16Bits, upper16Bits)
+ *
+ * DESCRIPTION: Returns a 32 bit value given a 16 bit lower value and a 16
+ * bit upper value
+ */
+#define RETURN32BITS_FROM16LOWER_AND16UPPER(lower16Bits, upper16Bits)\
+ (((((u32)lower16Bits) & LOWER16BIT_MASK)) | \
+ (((((u32)upper16Bits) & LOWER16BIT_MASK) << UPPER16BIT_SHIFT)))
+
+/*
+ * Definition: RETURN16BITS_FROM8LOWER_AND8UPPER(lower16Bits, upper16Bits)
+ *
+ * DESCRIPTION: Returns a 16 bit value given a 8 bit lower value and a 8
+ * bit upper value
+ */
+#define RETURN16BITS_FROM8LOWER_AND8UPPER(lower8Bits, upper8Bits)\
+ (((((u32)lower8Bits) & LOWER8BIT_MASK)) | \
+ (((((u32)upper8Bits) & LOWER8BIT_MASK) << UPPER8BIT_OF16_SHIFT)))
+
+/*
+ * Definition: RETURN32BITS_FROM48BIT_VALUES(lower8Bits, lowerMiddle8Bits,
+ * lowerUpper8Bits, upper8Bits)
+ *
+ * DESCRIPTION: Returns a 32 bit value given four 8 bit values
+ */
+#define RETURN32BITS_FROM48BIT_VALUES(lower8Bits, lowerMiddle8Bits,\
+ lowerUpper8Bits, upper8Bits)\
+ (((((u32)lower8Bits) & LOWER8BIT_MASK)) | \
+ (((((u32)lowerMiddle8Bits) & LOWER8BIT_MASK) <<\
+ LOWER_MIDDLE8BIT_SHIFT)) | \
+ (((((u32)lowerUpper8Bits) & LOWER8BIT_MASK) <<\
+ UPPER_MIDDLE8BIT_SHIFT)) | \
+ (((((u32)upper8Bits) & LOWER8BIT_MASK) <<\
+ UPPER8BIT_SHIFT)))
+
+/*
+ * Definition: READ_LOWER16BITS_OF32(value32bits)
+ *
+ * DESCRIPTION: Returns a 16 lower bits of 32bit value
+ */
+#define READ_LOWER16BITS_OF32(value32bits)\
+ ((u16)((u32)(value32bits) & LOWER16BIT_MASK))
+
+/*
+ * Definition: READ_UPPER16BITS_OF32(value32bits)
+ *
+ * DESCRIPTION: Returns a 16 lower bits of 32bit value
+ */
+#define READ_UPPER16BITS_OF32(value32bits)\
+ (((u16)((u32)(value32bits) >> UPPER16BIT_SHIFT)) &\
+ LOWER16BIT_MASK)
+
+/*
+ * Definition: READ_LOWER8BITS_OF32(value32bits)
+ *
+ * DESCRIPTION: Returns a 8 lower bits of 32bit value
+ */
+#define READ_LOWER8BITS_OF32(value32bits)\
+ ((u8)((u32)(value32bits) & LOWER8BIT_MASK))
+
+/*
+ * Definition: READ_LOWER_MIDDLE8BITS_OF32(value32bits)
+ *
+ * DESCRIPTION: Returns a 8 lower middle bits of 32bit value
+ */
+#define READ_LOWER_MIDDLE8BITS_OF32(value32bits)\
+ (((u8)((u32)(value32bits) >> LOWER_MIDDLE8BIT_SHIFT)) &\
+ LOWER8BIT_MASK)
+
+/*
+ * Definition: READ_LOWER_MIDDLE8BITS_OF32(value32bits)
+ *
+ * DESCRIPTION: Returns a 8 lower middle bits of 32bit value
+ */
+#define READ_UPPER_MIDDLE8BITS_OF32(value32bits)\
+ (((u8)((u32)(value32bits) >> LOWER_MIDDLE8BIT_SHIFT)) &\
+ LOWER8BIT_MASK)
+
+/*
+ * Definition: READ_UPPER8BITS_OF32(value32bits)
+ *
+ * DESCRIPTION: Returns a 8 upper bits of 32bit value
+ */
+#define READ_UPPER8BITS_OF32(value32bits)\
+ (((u8)((u32)(value32bits) >> UPPER8BIT_SHIFT)) & LOWER8BIT_MASK)
+
+/*
+ * Definition: READ_LOWER8BITS_OF16(value16bits)
+ *
+ * DESCRIPTION: Returns a 8 lower bits of 16bit value
+ */
+#define READ_LOWER8BITS_OF16(value16bits)\
+ ((u8)((u16)(value16bits) & LOWER8BIT_MASK))
+
+/*
+ * Definition: READ_UPPER8BITS_OF16(value32bits)
+ *
+ * DESCRIPTION: Returns a 8 upper bits of 16bit value
+ */
+#define READ_UPPER8BITS_OF16(value16bits)\
+ (((u8)((u32)(value16bits) >> UPPER8BIT_SHIFT)) & LOWER8BIT_MASK)
+
+/* UWORD16: 16 bit tpyes */
+
+/* reg_uword8, reg_word8: 8 bit register types */
+typedef volatile unsigned char reg_uword8;
+typedef volatile signed char reg_word8;
+
+/* reg_uword16, reg_word16: 16 bit register types */
+#ifndef OMAPBRIDGE_TYPES
+typedef volatile unsigned short reg_uword16;
+#endif
+typedef volatile short reg_word16;
+
+/* reg_uword32, REG_WORD32: 32 bit register types */
+typedef volatile unsigned long reg_uword32;
+
+/* FLOAT
+ *
+ * Type to be used for floating point calculation. Note that floating point
+ * calculation is very CPU expensive, and you should only use if you
+ * absolutely need this. */
+
+/* boolean_t: Boolean Type True, False */
+/* return_code_t: Return codes to be returned by all library functions */
+enum return_code_label {
+ RET_OK = 0,
+ RET_FAIL = -1,
+ RET_BAD_NULL_PARAM = -2,
+ RET_PARAM_OUT_OF_RANGE = -3,
+ RET_INVALID_ID = -4,
+ RET_EMPTY = -5,
+ RET_FULL = -6,
+ RET_TIMEOUT = -7,
+ RET_INVALID_OPERATION = -8,
+
+ /* Add new error codes at end of above list */
+
+ RET_NUM_RET_CODES /* this should ALWAYS be LAST entry */
+};
+
+/* MACRO: RD_MEM8, WR_MEM8
+ *
+ * DESCRIPTION: 32 bit memory access macros
+ */
+#define RD_MEM8(addr) ((u8)(*((u8 *)(addr))))
+#define WR_MEM8(addr, data) (*((u8 *)(addr)) = (u8)(data))
+
+/* MACRO: RD_MEM8_VOLATILE, WR_MEM8_VOLATILE
+ *
+ * DESCRIPTION: 8 bit register access macros
+ */
+#define RD_MEM8_VOLATILE(addr) ((u8)(*((reg_uword8 *)(addr))))
+#define WR_MEM8_VOLATILE(addr, data) (*((reg_uword8 *)(addr)) = (u8)(data))
+
+/*
+ * MACRO: RD_MEM16, WR_MEM16
+ *
+ * DESCRIPTION: 16 bit memory access macros
+ */
+#define RD_MEM16(addr) ((u16)(*((u16 *)(addr))))
+#define WR_MEM16(addr, data) (*((u16 *)(addr)) = (u16)(data))
+
+/*
+ * MACRO: RD_MEM16_VOLATILE, WR_MEM16_VOLATILE
+ *
+ * DESCRIPTION: 16 bit register access macros
+ */
+#define RD_MEM16_VOLATILE(addr) ((u16)(*((reg_uword16 *)(addr))))
+#define WR_MEM16_VOLATILE(addr, data) (*((reg_uword16 *)(addr)) =\
+ (u16)(data))
+
+/*
+ * MACRO: RD_MEM32, WR_MEM32
+ *
+ * DESCRIPTION: 32 bit memory access macros
+ */
+#define RD_MEM32(addr) ((u32)(*((u32 *)(addr))))
+#define WR_MEM32(addr, data) (*((u32 *)(addr)) = (u32)(data))
+
+/*
+ * MACRO: RD_MEM32_VOLATILE, WR_MEM32_VOLATILE
+ *
+ * DESCRIPTION: 32 bit register access macros
+ */
+#define RD_MEM32_VOLATILE(addr) ((u32)(*((reg_uword32 *)(addr))))
+#define WR_MEM32_VOLATILE(addr, data) (*((reg_uword32 *)(addr)) =\
+ (u32)(data))
+
+/* Not sure if this all belongs here */
+
+#define CHECK_RETURN_VALUE(actualValue, expectedValue, returnCodeIfMismatch,\
+ spyCodeIfMisMatch)
+#define CHECK_RETURN_VALUE_RET(actualValue, expectedValue, returnCodeIfMismatch)
+#define CHECK_RETURN_VALUE_RES(actualValue, expectedValue, spyCodeIfMisMatch)
+#define CHECK_RETURN_VALUE_RET_VOID(actualValue, expectedValue,\
+ spyCodeIfMisMatch)
+
+#define CHECK_INPUT_PARAM(actualValue, invalidValue, returnCodeIfMismatch,\
+ spyCodeIfMisMatch)
+#define CHECK_INPUT_PARAM_NO_SPY(actualValue, invalidValue,\
+ returnCodeIfMismatch)
+#define CHECK_INPUT_RANGE(actualValue, minValidValue, maxValidValue,\
+ returnCodeIfMismatch, spyCodeIfMisMatch)
+#define CHECK_INPUT_RANGE_NO_SPY(actualValue, minValidValue, maxValidValue,\
+ returnCodeIfMismatch)
+#define CHECK_INPUT_RANGE_MIN0(actualValue, maxValidValue,\
+ returnCodeIfMismatch, spyCodeIfMisMatch)
+#define CHECK_INPUT_RANGE_NO_SPY_MIN0(actualValue, maxValidValue,\
+ returnCodeIfMismatch)
+
+#endif /* _GLOBALTYPES_H */