Root/target/linux/amazon/files/include/asm-mips/amazon/ifx_peripheral_definitions.h

1//*************************************************************************
2//* Summary of definitions which are used in each peripheral *
3//*************************************************************************
4
5#ifndef peripheral_definitions_h
6#define peripheral_definitions_h
7
8typedef unsigned char UINT8;
9typedef signed char INT8;
10typedef unsigned short UINT16;
11typedef signed short INT16;
12typedef unsigned int UINT32;
13typedef signed int INT32;
14typedef unsigned long long UINT64;
15typedef signed long long INT64;
16
17#define REG8( addr ) (*(volatile UINT8 *) (addr))
18#define REG16( addr ) (*(volatile UINT16 *)(addr))
19#define REG32( addr ) (*(volatile UINT32 *)(addr))
20#define REG64( addr ) (*(volatile UINT64 *)(addr))
21
22/* define routine to set FPI access in Supervisor Mode */
23#define IFX_SUPERVISOR_ON() REG32(FB0_CFG) = 0x01
24/* Supervisor mode ends, following functions will be done in User mode */
25#define IFX_SUPERVISOR_OFF() REG32(FB0_CFG) = 0x00
26/* Supervisor mode ends, following functions will be done in User mode */
27#define IFX_SUPERVISOR_MODE() REG32(FB0_CFG)
28/* Supervisor mode ends, following functions will be done in User mode */
29#define IFX_SUPERVISOR_SET(svm) REG32(FB0_CFG) = svm
30/* enable all Interrupts in IIU */
31//#define IFX_ENABLE_IRQ(irq_mask, im_base) REG32(im_base | IIU_MASK) = irq_mask
32///* get all high priority interrupt bits in IIU */
33//#define IFX_GET_IRQ_MASKED(im_base) REG32(im_base | IIU_IRMASKED)
34///* signal ends of interrupt to IIU */
35//#define IFX_CLEAR_DIRECT_IRQ(irq_bit, im_base) REG32(im_base | IIU_IR) = irq_bit
36///* force IIU interrupt register */
37//#define IFX_FORCE_IIU_REGISTER(data, im_base) REG32(im_base | IIU_IRDEBUG) = data
38///* get all bits of interrupt register */
39//#define IFX_GET_IRQ_UNMASKED(im_base) REG32(im_base | IIU_IR)
40/* insert a NOP instruction */
41#define NOP _nop()
42/* CPU goes to power down mode until interrupt occurs */
43#define IFX_CPU_SLEEP _sleep()
44/* enable all interrupts to CPU */
45#define IFX_CPU_ENABLE_ALL_INTERRUPT sys_enable_int()
46/* get all low priority interrupt bits in peripheral */
47#define IFX_GET_LOW_PRIO_IRQ(int_reg) REG32(int_reg)
48/* clear low priority interrupt bit in peripheral */
49#define IFX_CLEAR_LOW_PRIO_IRQ(irq_bit, int_reg) REG32(int_reg) = irq_bit
50/* write FPI bus */
51#define WRITE_FPI_BYTE(data, addr) REG8(addr) = data
52#define WRITE_FPI_16BIT(data, addr) REG16(addr) = data
53#define WRITE_FPI_32BIT(data, addr) REG32(addr) = data
54/* read FPI bus */
55#define READ_FPI_BYTE(addr) REG8(addr)
56#define READ_FPI_16BIT(addr) REG16(addr)
57#define READ_FPI_32BIT(addr) REG32(addr)
58/* write peripheral register */
59#define WRITE_PERIPHERAL_REGISTER(data, addr) REG32(addr) = data
60
61#ifdef CONFIG_CPU_LITTLE_ENDIAN
62#define WRITE_PERIPHERAL_REGISTER_16(data, addr) REG16(addr) = data
63#define WRITE_PERIPHERAL_REGISTER_8(data, addr) REG8(addr) = data
64#else //not CONFIG_CPU_LITTLE_ENDIAN
65#define WRITE_PERIPHERAL_REGISTER_16(data, addr) REG16(addr+2) = data
66#define WRITE_PERIPHERAL_REGISTER_8(data, addr) REG8(addr+3) = data
67#endif //CONFIG_CPU_LITTLE_ENDIAN
68
69/* read peripheral register */
70#define READ_PERIPHERAL_REGISTER(addr) REG32(addr)
71
72/* read/modify(or)/write peripheral register */
73#define RMW_OR_PERIPHERAL_REGISTER(data, addr) REG32(addr) = REG32(addr) | data
74/* read/modify(and)/write peripheral register */
75#define RMW_AND_PERIPHERAL_REGISTER(data, addr) REG32(addr) = REG32(addr) & (UINT32)data
76
77/* CPU-independent mnemonic constants */
78/* CLC register bits */
79#define IFX_CLC_ENABLE 0x00000000
80#define IFX_CLC_DISABLE 0x00000001
81#define IFX_CLC_DISABLE_STATUS 0x00000002
82#define IFX_CLC_SUSPEND_ENABLE 0x00000004
83#define IFX_CLC_CLOCK_OFF_DISABLE 0x00000008
84#define IFX_CLC_OVERWRITE_SPEN_FSOE 0x00000010
85#define IFX_CLC_FAST_CLOCK_SWITCH_OFF 0x00000020
86#define IFX_CLC_RUN_DIVIDER_MASK 0x0000FF00
87#define IFX_CLC_RUN_DIVIDER_OFFSET 8
88#define IFX_CLC_SLEEP_DIVIDER_MASK 0x00FF0000
89#define IFX_CLC_SLEEP_DIVIDER_OFFSET 16
90#define IFX_CLC_SPECIFIC_DIVIDER_MASK 0x00FF0000
91#define IFX_CLC_SPECIFIC_DIVIDER_OFFSET 24
92
93/* number of cycles to wait for interrupt service routine to be called */
94#define WAIT_CYCLES 50
95
96#endif /* PERIPHERAL_DEFINITIONS_H not yet defined */
97

Archive Download this file



interactive