blob: 2cf65d81a639c35156a476bb3310f648e9c529cb (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
|
/************************************************************************
*
* Copyright (c) 2005
* Infineon Technologies AG
* St. Martin Strasse 53; 81669 Muenchen; Germany
*
************************************************************************/
#ifndef __ADM8668_H__
#define __ADM8668_H__
#define SYS_CLOCK 175000000
/*======================= Physical Memory Map ============================*/
#define ADM8668_SDRAM_BASE 0
#define ADM8668_SMEM1_BASE 0x10000000
#define ADM8668_MPMC_BASE 0x11000000
#define ADM8668_USB_BASE 0x11200000
#define ADM8668_CONFIG_BASE 0x11400000
#define ADM8668_WAN_BASE 0x11600000
#define ADM8668_WLAN_BASE 0x11800000
#define ADM8668_LAN_BASE 0x11A00000
#define ADM8668_INTC_BASE 0x1E000000
#define ADM8668_TMR_BASE 0x1E200000
#define ADM8668_UART0_BASE 0x1E400000
#define ADM8668_SMEM0_BASE 0x1FC00000
#define ADM8668_NAND_BASE 0x1FFFFF00
#define PCICFG_BASE 0x12200000
#define PCIDAT_BASE 0x12400000
/** onboard uart **/
#define ADM8668_UARTCLK_FREQ 62500000
/* registers */
#define UART_DR_REG 0x00
#define UART_RSR_REG 0x04
#define UART_CR_REG 0x14
#define UART_FR_REG 0x18
#define UART_IIR_REG 0x1C
/* rsr reg */
#define UART_FRAMING_ERR 0x01
#define UART_PARITY_ERR 0x02
#define UART_BREAK_ERR 0x04
#define UART_OVERRUN_ERR 0x08
#define UART_RX_STATUS_MASK 0x0F
/* cr reg */
#define UART_RX_INT_EN 0x10
#define UART_TX_INT_EN 0x20
#define UART_RX_TIMEOUT_INT_EN 0x40
/* fr reg */
#define UART_RX_FIFO_EMPTY 0x10
#define UART_TX_FIFO_FULL 0x20
/* iir reg */
#define UART_RX_INT 0x02
#define UART_TX_INT 0x04
#define UART_RX_TIMEOUT_INT 0x08
/* interrupt controller */
#define IRQ_STATUS_REG 0x00 /* Read */
#define IRQ_ENABLE_REG 0x08 /* Read/Write */
#define IRQ_DISABLE_REG 0x0C /* Write */
/* interrupt levels */
#define INT_LVL_SWI 1
#define INT_LVL_COMMS_RX 2
#define INT_LVL_COMMS_TX 3
#define INT_LVL_TIMERINT0 4
#define INT_LVL_TIMERINT1 5
#define INT_LVL_UART0 6
#define INT_LVL_LAN 7
#define INT_LVL_WAN 8
#define INT_LVL_WLAN 9
#define INT_LVL_GPIO 10
#define INT_LVL_IDE 11
#define INT_LVL_PCI2 12
#define INT_LVL_PCI1 13
#define INT_LVL_PCI0 14
#define INT_LVL_USB 15
#define INT_LVL_MAX INT_LVL_USB
/* register access macros */
#define ADM8668_INTC_REG(_reg) \
(*((volatile unsigned long *)(KSEG1ADDR(ADM8668_INTC_BASE + (_reg)))))
#define ADM8668_LAN_REG(_reg) \
(*((volatile unsigned int *)(KSEG1ADDR(ADM8668_LAN_BASE + (_reg)))))
#define ADM8668_WAN_REG(_reg) \
(*((volatile unsigned int *)(KSEG1ADDR(ADM8668_WAN_BASE + (_reg)))))
#define ADM8668_WLAN_REG(_reg) \
(*((volatile unsigned int *)(KSEG1ADDR(ADM8668_WLAN_BASE + (_reg)))))
#define ADM8668_CONFIG_REG(_reg) \
(*((volatile unsigned int *)(KSEG1ADDR(ADM8668_CONFIG_BASE + (_reg)))))
/* lan registers */
#define NETCSR6 0x30
#define NETCSR7 0x38
#define NETCSR37 0xF8
/* known/used CPU configuration registers */
#define ADM8668_CR0 0x00
#define ADM8668_CR1 0x04
#define ADM8668_CR3 0x0C
/** For GPIO control **/
#define GPIO_REG 0x5C /* on WLAN */
#define CRGPIO_REG 0x20 /* on CPU */
#define GPIO0_OUTPUT_ENABLE 0x1000
#define GPIO1_OUTPUT_ENABLE 0x2000
#define GPIO2_OUTPUT_ENABLE 0x4000
#define GPIO_OUTPUT_ENABLE_ALL 0x7000
#define GPIO0_OUTPUT_1 0x40
#define GPIO1_OUTPUT_1 0x80
#define GPIO2_OUTPUT_1 0x100
#define GPIO0_INPUT_1 0x1
#define GPIO1_INPUT_1 0x2
#define GPIO2_INPUT_1 0x4
#define GPIO_SET_HI(num) \
ADM8668_WLAN_REG(GPIO_REG) |= (1 << (6 + num))
#define GPIO_SET_LOW(num) \
ADM8668_WLAN_REG(GPIO_REG) &= ~(1 << (6 + num))
#define GPIO_TOGGLE(num) \
ADM8668_WLAN_REG(GPIO_REG) ^= (1 << (6 + num))
#define CRGPIO_SET_HI(num) \
ADM8668_CONFIG_REG(CRGPIO_REG) |= (1 << (6 + num))
#define CRGPIO_SET_LOW(num) \
ADM8668_CONFIG_REG(CRGPIO_REG) &= ~(1 << (6 + num))
#define CRGPIO_TOGGLE(num) \
ADM8668_CONFIG_REG(CRGPIO_REG) ^= (1 << (6 + num))
#endif /* __ADM8668_H__ */
|