summaryrefslogtreecommitdiffstats
path: root/target/linux/adm8668/files/arch/mips/include/asm/mach-adm8668/adm8668.h
blob: f7b2c5e63227835a42b6bf44ac3ddaacd46c1fdb (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
/************************************************************************
 *
 *    Copyright (c) 2005
 *    Infineon Technologies AG
 *    St. Martin Strasse 53; 81669 Muenchen; Germany
 *
 ************************************************************************/

#ifndef  __ADM8668_H__
#define  __ADM8668_H__

/*=======================  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 ADM8668_PCICFG_BASE	0x12200000
#define ADM8668_PCIDAT_BASE	0x12400000

/* 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_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))

void adm8668_init_clocks(void);

#endif /* __ADM8668_H__ */