xref: /OK3568_Linux_fs/kernel/arch/arm/mach-pxa/include/mach/trizeps4.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */
2*4882a593Smuzhiyun /************************************************************************
3*4882a593Smuzhiyun  * Include file for TRIZEPS4 SoM and ConXS eval-board
4*4882a593Smuzhiyun  * Copyright (c) Jürgen Schindele
5*4882a593Smuzhiyun  * 2006
6*4882a593Smuzhiyun  ************************************************************************/
7*4882a593Smuzhiyun 
8*4882a593Smuzhiyun /*
9*4882a593Smuzhiyun  * Includes/Defines
10*4882a593Smuzhiyun  */
11*4882a593Smuzhiyun #ifndef _TRIPEPS4_H_
12*4882a593Smuzhiyun #define _TRIPEPS4_H_
13*4882a593Smuzhiyun 
14*4882a593Smuzhiyun #include "irqs.h" /* PXA_GPIO_TO_IRQ */
15*4882a593Smuzhiyun 
16*4882a593Smuzhiyun /* physical memory regions */
17*4882a593Smuzhiyun #define TRIZEPS4_FLASH_PHYS	(PXA_CS0_PHYS)  /* Flash region */
18*4882a593Smuzhiyun #define TRIZEPS4_DISK_PHYS	(PXA_CS1_PHYS)  /* Disk On Chip region */
19*4882a593Smuzhiyun #define TRIZEPS4_ETH_PHYS	(PXA_CS2_PHYS)  /* Ethernet DM9000 region */
20*4882a593Smuzhiyun #define TRIZEPS4_PIC_PHYS	(PXA_CS3_PHYS)	/* Logic chip on ConXS-Board */
21*4882a593Smuzhiyun #define TRIZEPS4_SDRAM_BASE	0xa0000000      /* SDRAM region */
22*4882a593Smuzhiyun 
23*4882a593Smuzhiyun 				/* Logic on ConXS-board CSFR register*/
24*4882a593Smuzhiyun #define TRIZEPS4_CFSR_PHYS	(PXA_CS3_PHYS)
25*4882a593Smuzhiyun 				/* Logic on ConXS-board BOCR register*/
26*4882a593Smuzhiyun #define TRIZEPS4_BOCR_PHYS	(PXA_CS3_PHYS+0x02000000)
27*4882a593Smuzhiyun 				/* Logic on ConXS-board IRCR register*/
28*4882a593Smuzhiyun #define TRIZEPS4_IRCR_PHYS	(PXA_CS3_PHYS+0x02400000)
29*4882a593Smuzhiyun 				/* Logic on ConXS-board UPSR register*/
30*4882a593Smuzhiyun #define TRIZEPS4_UPSR_PHYS	(PXA_CS3_PHYS+0x02800000)
31*4882a593Smuzhiyun 				/* Logic on ConXS-board DICR register*/
32*4882a593Smuzhiyun #define TRIZEPS4_DICR_PHYS	(PXA_CS3_PHYS+0x03800000)
33*4882a593Smuzhiyun 
34*4882a593Smuzhiyun /* virtual memory regions */
35*4882a593Smuzhiyun #define TRIZEPS4_DISK_VIRT	0xF0000000	/* Disk On Chip region */
36*4882a593Smuzhiyun 
37*4882a593Smuzhiyun #define TRIZEPS4_PIC_VIRT	0xF0100000	/* not used */
38*4882a593Smuzhiyun #define TRIZEPS4_CFSR_VIRT	0xF0100000
39*4882a593Smuzhiyun #define TRIZEPS4_BOCR_VIRT	0xF0200000
40*4882a593Smuzhiyun #define TRIZEPS4_DICR_VIRT	0xF0300000
41*4882a593Smuzhiyun #define TRIZEPS4_IRCR_VIRT	0xF0400000
42*4882a593Smuzhiyun #define TRIZEPS4_UPSR_VIRT	0xF0500000
43*4882a593Smuzhiyun 
44*4882a593Smuzhiyun /* size of flash */
45*4882a593Smuzhiyun #define TRIZEPS4_FLASH_SIZE	0x02000000	/* Flash size 32 MB */
46*4882a593Smuzhiyun 
47*4882a593Smuzhiyun /* Ethernet Controller Davicom DM9000 */
48*4882a593Smuzhiyun #define GPIO_DM9000		101
49*4882a593Smuzhiyun #define TRIZEPS4_ETH_IRQ	PXA_GPIO_TO_IRQ(GPIO_DM9000)
50*4882a593Smuzhiyun 
51*4882a593Smuzhiyun /* UCB1400 audio / TS-controller */
52*4882a593Smuzhiyun #define GPIO_UCB1400		1
53*4882a593Smuzhiyun #define TRIZEPS4_UCB1400_IRQ	PXA_GPIO_TO_IRQ(GPIO_UCB1400)
54*4882a593Smuzhiyun 
55*4882a593Smuzhiyun /* PCMCIA socket Compact Flash */
56*4882a593Smuzhiyun #define GPIO_PCD		11		/* PCMCIA Card Detect */
57*4882a593Smuzhiyun #define TRIZEPS4_CD_IRQ		PXA_GPIO_TO_IRQ(GPIO_PCD)
58*4882a593Smuzhiyun #define GPIO_PRDY		13		/* READY / nINT */
59*4882a593Smuzhiyun #define TRIZEPS4_READY_NINT	PXA_GPIO_TO_IRQ(GPIO_PRDY)
60*4882a593Smuzhiyun 
61*4882a593Smuzhiyun /* MMC socket */
62*4882a593Smuzhiyun #define GPIO_MMC_DET		12
63*4882a593Smuzhiyun #define TRIZEPS4_MMC_IRQ	PXA_GPIO_TO_IRQ(GPIO_MMC_DET)
64*4882a593Smuzhiyun 
65*4882a593Smuzhiyun /* DOC NAND chip */
66*4882a593Smuzhiyun #define GPIO_DOC_LOCK           94
67*4882a593Smuzhiyun #define GPIO_DOC_IRQ            93
68*4882a593Smuzhiyun #define TRIZEPS4_DOC_IRQ        PXA_GPIO_TO_IRQ(GPIO_DOC_IRQ)
69*4882a593Smuzhiyun 
70*4882a593Smuzhiyun /* SPI interface */
71*4882a593Smuzhiyun #define GPIO_SPI                53
72*4882a593Smuzhiyun #define TRIZEPS4_SPI_IRQ        PXA_GPIO_TO_IRQ(GPIO_SPI)
73*4882a593Smuzhiyun 
74*4882a593Smuzhiyun /* LEDS using tx2 / rx2 */
75*4882a593Smuzhiyun #define GPIO_SYS_BUSY_LED	46
76*4882a593Smuzhiyun #define GPIO_HEARTBEAT_LED	47
77*4882a593Smuzhiyun 
78*4882a593Smuzhiyun /* Off-module PIC on ConXS board */
79*4882a593Smuzhiyun #define GPIO_PIC		0
80*4882a593Smuzhiyun #define TRIZEPS4_PIC_IRQ	PXA_GPIO_TO_IRQ(GPIO_PIC)
81*4882a593Smuzhiyun 
82*4882a593Smuzhiyun #ifdef CONFIG_MACH_TRIZEPS_CONXS
83*4882a593Smuzhiyun /* for CONXS base board define these registers */
84*4882a593Smuzhiyun #define CFSR_P2V(x)	((x) - TRIZEPS4_CFSR_PHYS + TRIZEPS4_CFSR_VIRT)
85*4882a593Smuzhiyun #define CFSR_V2P(x)	((x) - TRIZEPS4_CFSR_VIRT + TRIZEPS4_CFSR_PHYS)
86*4882a593Smuzhiyun 
87*4882a593Smuzhiyun #define BCR_P2V(x)	((x) - TRIZEPS4_BOCR_PHYS + TRIZEPS4_BOCR_VIRT)
88*4882a593Smuzhiyun #define BCR_V2P(x)	((x) - TRIZEPS4_BOCR_VIRT + TRIZEPS4_BOCR_PHYS)
89*4882a593Smuzhiyun 
90*4882a593Smuzhiyun #define DCR_P2V(x)	((x) - TRIZEPS4_DICR_PHYS + TRIZEPS4_DICR_VIRT)
91*4882a593Smuzhiyun #define DCR_V2P(x)	((x) - TRIZEPS4_DICR_VIRT + TRIZEPS4_DICR_PHYS)
92*4882a593Smuzhiyun 
93*4882a593Smuzhiyun #define IRCR_P2V(x)	((x) - TRIZEPS4_IRCR_PHYS + TRIZEPS4_IRCR_VIRT)
94*4882a593Smuzhiyun #define IRCR_V2P(x)	((x) - TRIZEPS4_IRCR_VIRT + TRIZEPS4_IRCR_PHYS)
95*4882a593Smuzhiyun 
96*4882a593Smuzhiyun #ifndef __ASSEMBLY__
CFSR_readw(void)97*4882a593Smuzhiyun static inline unsigned short CFSR_readw(void)
98*4882a593Smuzhiyun {
99*4882a593Smuzhiyun 	/* [Compact Flash Status Register] is read only */
100*4882a593Smuzhiyun 	return *((unsigned short *)CFSR_P2V(0x0C000000));
101*4882a593Smuzhiyun }
BCR_writew(unsigned short value)102*4882a593Smuzhiyun static inline void BCR_writew(unsigned short value)
103*4882a593Smuzhiyun {
104*4882a593Smuzhiyun 	/* [Board Control Regsiter] is write only */
105*4882a593Smuzhiyun 	*((unsigned short *)BCR_P2V(0x0E000000)) = value;
106*4882a593Smuzhiyun }
DCR_writew(unsigned short value)107*4882a593Smuzhiyun static inline void DCR_writew(unsigned short value)
108*4882a593Smuzhiyun {
109*4882a593Smuzhiyun 	/* [Display Control Register] is write only */
110*4882a593Smuzhiyun 	*((unsigned short *)DCR_P2V(0x0E000000)) = value;
111*4882a593Smuzhiyun }
IRCR_writew(unsigned short value)112*4882a593Smuzhiyun static inline void IRCR_writew(unsigned short value)
113*4882a593Smuzhiyun {
114*4882a593Smuzhiyun 	/* [InfraRed data Control Register] is write only */
115*4882a593Smuzhiyun 	*((unsigned short *)IRCR_P2V(0x0E000000)) = value;
116*4882a593Smuzhiyun }
117*4882a593Smuzhiyun #else
118*4882a593Smuzhiyun #define ConXS_CFSR		CFSR_P2V(0x0C000000)
119*4882a593Smuzhiyun #define ConXS_BCR		BCR_P2V(0x0E000000)
120*4882a593Smuzhiyun #define ConXS_DCR		DCR_P2V(0x0F800000)
121*4882a593Smuzhiyun #define ConXS_IRCR		IRCR_P2V(0x0F800000)
122*4882a593Smuzhiyun #endif
123*4882a593Smuzhiyun #else
124*4882a593Smuzhiyun /* for whatever baseboard define function registers */
CFSR_readw(void)125*4882a593Smuzhiyun static inline unsigned short CFSR_readw(void)
126*4882a593Smuzhiyun {
127*4882a593Smuzhiyun 	return 0;
128*4882a593Smuzhiyun }
BCR_writew(unsigned short value)129*4882a593Smuzhiyun static inline void BCR_writew(unsigned short value)
130*4882a593Smuzhiyun {
131*4882a593Smuzhiyun 	;
132*4882a593Smuzhiyun }
DCR_writew(unsigned short value)133*4882a593Smuzhiyun static inline void DCR_writew(unsigned short value)
134*4882a593Smuzhiyun {
135*4882a593Smuzhiyun 	;
136*4882a593Smuzhiyun }
IRCR_writew(unsigned short value)137*4882a593Smuzhiyun static inline void IRCR_writew(unsigned short value)
138*4882a593Smuzhiyun {
139*4882a593Smuzhiyun 	;
140*4882a593Smuzhiyun }
141*4882a593Smuzhiyun #endif	/* CONFIG_MACH_TRIZEPS_CONXS */
142*4882a593Smuzhiyun 
143*4882a593Smuzhiyun #define ConXS_CFSR_BVD_MASK	0x0003
144*4882a593Smuzhiyun #define ConXS_CFSR_BVD1		(1 << 0)
145*4882a593Smuzhiyun #define ConXS_CFSR_BVD2		(1 << 1)
146*4882a593Smuzhiyun #define ConXS_CFSR_VS_MASK	0x000C
147*4882a593Smuzhiyun #define ConXS_CFSR_VS1		(1 << 2)
148*4882a593Smuzhiyun #define ConXS_CFSR_VS2		(1 << 3)
149*4882a593Smuzhiyun #define ConXS_CFSR_VS_5V	(0x3 << 2)
150*4882a593Smuzhiyun #define ConXS_CFSR_VS_3V3	0x0
151*4882a593Smuzhiyun 
152*4882a593Smuzhiyun #define ConXS_BCR_S0_POW_EN0	(1 << 0)
153*4882a593Smuzhiyun #define ConXS_BCR_S0_POW_EN1	(1 << 1)
154*4882a593Smuzhiyun #define ConXS_BCR_L_DISP	(1 << 4)
155*4882a593Smuzhiyun #define ConXS_BCR_CF_BUF_EN	(1 << 5)
156*4882a593Smuzhiyun #define ConXS_BCR_CF_RESET	(1 << 7)
157*4882a593Smuzhiyun #define ConXS_BCR_S0_VCC_3V3	0x1
158*4882a593Smuzhiyun #define ConXS_BCR_S0_VCC_5V0	0x2
159*4882a593Smuzhiyun #define ConXS_BCR_S0_VPP_12V	0x4
160*4882a593Smuzhiyun #define ConXS_BCR_S0_VPP_3V3	0x8
161*4882a593Smuzhiyun 
162*4882a593Smuzhiyun #define ConXS_IRCR_MODE		(1 << 0)
163*4882a593Smuzhiyun #define ConXS_IRCR_SD		(1 << 1)
164*4882a593Smuzhiyun 
165*4882a593Smuzhiyun #endif /* _TRIPEPS4_H_ */
166