xref: /OK3568_Linux_fs/kernel/arch/mips/include/asm/mach-rc32434/pci.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /*
2*4882a593Smuzhiyun  *  This program is free software; you can redistribute  it and/or modify it
3*4882a593Smuzhiyun  *  under  the terms of  the GNU General  Public License as published by the
4*4882a593Smuzhiyun  *  Free Software Foundation;  either version 2 of the  License, or (at your
5*4882a593Smuzhiyun  *  option) any later version.
6*4882a593Smuzhiyun  *
7*4882a593Smuzhiyun  *  THIS  SOFTWARE  IS PROVIDED   ``AS  IS'' AND   ANY  EXPRESS OR IMPLIED
8*4882a593Smuzhiyun  *  WARRANTIES,   INCLUDING, BUT NOT  LIMITED  TO, THE IMPLIED WARRANTIES OF
9*4882a593Smuzhiyun  *  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN
10*4882a593Smuzhiyun  *  NO  EVENT  SHALL   THE AUTHOR  BE    LIABLE FOR ANY   DIRECT, INDIRECT,
11*4882a593Smuzhiyun  *  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
12*4882a593Smuzhiyun  *  NOT LIMITED   TO, PROCUREMENT OF  SUBSTITUTE GOODS  OR SERVICES; LOSS OF
13*4882a593Smuzhiyun  *  USE, DATA,  OR PROFITS; OR  BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
14*4882a593Smuzhiyun  *  ANY THEORY OF LIABILITY, WHETHER IN  CONTRACT, STRICT LIABILITY, OR TORT
15*4882a593Smuzhiyun  *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
16*4882a593Smuzhiyun  *  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
17*4882a593Smuzhiyun  *
18*4882a593Smuzhiyun  *  You should have received a copy of the  GNU General Public License along
19*4882a593Smuzhiyun  *  with this program; if not, write  to the Free Software Foundation, Inc.,
20*4882a593Smuzhiyun  *  675 Mass Ave, Cambridge, MA 02139, USA.
21*4882a593Smuzhiyun  *
22*4882a593Smuzhiyun  * Copyright 2004 IDT Inc. (rischelp@idt.com)
23*4882a593Smuzhiyun  *
24*4882a593Smuzhiyun  * Initial Release
25*4882a593Smuzhiyun  */
26*4882a593Smuzhiyun 
27*4882a593Smuzhiyun #ifndef _ASM_RC32434_PCI_H_
28*4882a593Smuzhiyun #define _ASM_RC32434_PCI_H_
29*4882a593Smuzhiyun 
30*4882a593Smuzhiyun #define epld_mask ((volatile unsigned char *)0xB900000d)
31*4882a593Smuzhiyun 
32*4882a593Smuzhiyun #define PCI0_BASE_ADDR		0x18080000
33*4882a593Smuzhiyun #define PCI_LBA_COUNT		4
34*4882a593Smuzhiyun 
35*4882a593Smuzhiyun struct pci_map {
36*4882a593Smuzhiyun 	u32 address;		/* Address. */
37*4882a593Smuzhiyun 	u32 control;		/* Control. */
38*4882a593Smuzhiyun 	u32 mapping;		/* mapping. */
39*4882a593Smuzhiyun };
40*4882a593Smuzhiyun 
41*4882a593Smuzhiyun struct pci_reg {
42*4882a593Smuzhiyun 	u32 pcic;
43*4882a593Smuzhiyun 	u32 pcis;
44*4882a593Smuzhiyun 	u32 pcism;
45*4882a593Smuzhiyun 	u32 pcicfga;
46*4882a593Smuzhiyun 	u32 pcicfgd;
47*4882a593Smuzhiyun 	volatile struct pci_map pcilba[PCI_LBA_COUNT];
48*4882a593Smuzhiyun 	u32 pcidac;
49*4882a593Smuzhiyun 	u32 pcidas;
50*4882a593Smuzhiyun 	u32 pcidasm;
51*4882a593Smuzhiyun 	u32 pcidad;
52*4882a593Smuzhiyun 	u32 pcidma8c;
53*4882a593Smuzhiyun 	u32 pcidma9c;
54*4882a593Smuzhiyun 	u32 pcitc;
55*4882a593Smuzhiyun };
56*4882a593Smuzhiyun 
57*4882a593Smuzhiyun #define PCI_MSU_COUNT		2
58*4882a593Smuzhiyun 
59*4882a593Smuzhiyun struct pci_msu {
60*4882a593Smuzhiyun 	u32 pciim[PCI_MSU_COUNT];
61*4882a593Smuzhiyun 	u32 pciom[PCI_MSU_COUNT];
62*4882a593Smuzhiyun 	u32 pciid;
63*4882a593Smuzhiyun 	u32 pciiic;
64*4882a593Smuzhiyun 	u32 pciiim;
65*4882a593Smuzhiyun 	u32 pciiod;
66*4882a593Smuzhiyun 	u32 pciioic;
67*4882a593Smuzhiyun 	u32 pciioim;
68*4882a593Smuzhiyun };
69*4882a593Smuzhiyun 
70*4882a593Smuzhiyun /*
71*4882a593Smuzhiyun  * PCI Control Register
72*4882a593Smuzhiyun  */
73*4882a593Smuzhiyun 
74*4882a593Smuzhiyun #define PCI_CTL_EN		(1 << 0)
75*4882a593Smuzhiyun #define PCI_CTL_TNR		(1 << 1)
76*4882a593Smuzhiyun #define PCI_CTL_SCE		(1 << 2)
77*4882a593Smuzhiyun #define PCI_CTL_IEN		(1 << 3)
78*4882a593Smuzhiyun #define PCI_CTL_AAA		(1 << 4)
79*4882a593Smuzhiyun #define PCI_CTL_EAP		(1 << 5)
80*4882a593Smuzhiyun #define PCI_CTL_PCIM_BIT	6
81*4882a593Smuzhiyun #define PCI_CTL_PCIM		0x000001c0
82*4882a593Smuzhiyun 
83*4882a593Smuzhiyun #define PCI_CTL_PCIM_DIS	0
84*4882a593Smuzhiyun #define PCI_CTL_PCIM_TNR	1 /* Satellite - target not ready */
85*4882a593Smuzhiyun #define PCI_CTL_PCIM_SUS	2 /* Satellite - suspended CPU. */
86*4882a593Smuzhiyun #define PCI_CTL_PCIM_EXT	3 /* Host - external arbiter. */
87*4882a593Smuzhiyun #define PCI_CTL PCIM_PRIO	4 /* Host - fixed priority arb. */
88*4882a593Smuzhiyun #define PCI_CTL_PCIM_RR		5 /* Host - round robin priority. */
89*4882a593Smuzhiyun #define PCI_CTL_PCIM_RSVD6	6
90*4882a593Smuzhiyun #define PCI_CTL_PCIM_RSVD7	7
91*4882a593Smuzhiyun 
92*4882a593Smuzhiyun #define PCI_CTL_IGM		(1 << 9)
93*4882a593Smuzhiyun 
94*4882a593Smuzhiyun /*
95*4882a593Smuzhiyun  * PCI Status Register
96*4882a593Smuzhiyun  */
97*4882a593Smuzhiyun 
98*4882a593Smuzhiyun #define PCI_STAT_EED		(1 << 0)
99*4882a593Smuzhiyun #define PCI_STAT_WR		(1 << 1)
100*4882a593Smuzhiyun #define PCI_STAT_NMI		(1 << 2)
101*4882a593Smuzhiyun #define PCI_STAT_II		(1 << 3)
102*4882a593Smuzhiyun #define PCI_STAT_CWE		(1 << 4)
103*4882a593Smuzhiyun #define PCI_STAT_CRE		(1 << 5)
104*4882a593Smuzhiyun #define PCI_STAT_MDPE		(1 << 6)
105*4882a593Smuzhiyun #define PCI_STAT_STA		(1 << 7)
106*4882a593Smuzhiyun #define PCI_STAT_RTA		(1 << 8)
107*4882a593Smuzhiyun #define PCI_STAT_RMA		(1 << 9)
108*4882a593Smuzhiyun #define PCI_STAT_SSE		(1 << 10)
109*4882a593Smuzhiyun #define PCI_STAT_OSE		(1 << 11)
110*4882a593Smuzhiyun #define PCI_STAT_PE		(1 << 12)
111*4882a593Smuzhiyun #define PCI_STAT_TAE		(1 << 13)
112*4882a593Smuzhiyun #define PCI_STAT_RLE		(1 << 14)
113*4882a593Smuzhiyun #define PCI_STAT_BME		(1 << 15)
114*4882a593Smuzhiyun #define PCI_STAT_PRD		(1 << 16)
115*4882a593Smuzhiyun #define PCI_STAT_RIP		(1 << 17)
116*4882a593Smuzhiyun 
117*4882a593Smuzhiyun /*
118*4882a593Smuzhiyun  * PCI Status Mask Register
119*4882a593Smuzhiyun  */
120*4882a593Smuzhiyun 
121*4882a593Smuzhiyun #define PCI_STATM_EED		PCI_STAT_EED
122*4882a593Smuzhiyun #define PCI_STATM_WR		PCI_STAT_WR
123*4882a593Smuzhiyun #define PCI_STATM_NMI		PCI_STAT_NMI
124*4882a593Smuzhiyun #define PCI_STATM_II		PCI_STAT_II
125*4882a593Smuzhiyun #define PCI_STATM_CWE		PCI_STAT_CWE
126*4882a593Smuzhiyun #define PCI_STATM_CRE		PCI_STAT_CRE
127*4882a593Smuzhiyun #define PCI_STATM_MDPE		PCI_STAT_MDPE
128*4882a593Smuzhiyun #define PCI_STATM_STA		PCI_STAT_STA
129*4882a593Smuzhiyun #define PCI_STATM_RTA		PCI_STAT_RTA
130*4882a593Smuzhiyun #define PCI_STATM_RMA		PCI_STAT_RMA
131*4882a593Smuzhiyun #define PCI_STATM_SSE		PCI_STAT_SSE
132*4882a593Smuzhiyun #define PCI_STATM_OSE		PCI_STAT_OSE
133*4882a593Smuzhiyun #define PCI_STATM_PE		PCI_STAT_PE
134*4882a593Smuzhiyun #define PCI_STATM_TAE		PCI_STAT_TAE
135*4882a593Smuzhiyun #define PCI_STATM_RLE		PCI_STAT_RLE
136*4882a593Smuzhiyun #define PCI_STATM_BME		PCI_STAT_BME
137*4882a593Smuzhiyun #define PCI_STATM_PRD		PCI_STAT_PRD
138*4882a593Smuzhiyun #define PCI_STATM_RIP		PCI_STAT_RIP
139*4882a593Smuzhiyun 
140*4882a593Smuzhiyun /*
141*4882a593Smuzhiyun  * PCI Configuration Address Register
142*4882a593Smuzhiyun  */
143*4882a593Smuzhiyun #define PCI_CFGA_REG_BIT	2
144*4882a593Smuzhiyun #define PCI_CFGA_REG		0x000000fc
145*4882a593Smuzhiyun #define	 PCI_CFGA_REG_ID	(0x00 >> 2)	/* use PCFGID */
146*4882a593Smuzhiyun #define	 PCI_CFGA_REG_04	(0x04 >> 2)	/* use PCFG04_ */
147*4882a593Smuzhiyun #define	 PCI_CFGA_REG_08	(0x08 >> 2)	/* use PCFG08_ */
148*4882a593Smuzhiyun #define	 PCI_CFGA_REG_0C	(0x0C >> 2)	/* use PCFG0C_ */
149*4882a593Smuzhiyun #define	 PCI_CFGA_REG_PBA0	(0x10 >> 2)	/* use PCIPBA_ */
150*4882a593Smuzhiyun #define	 PCI_CFGA_REG_PBA1	(0x14 >> 2)	/* use PCIPBA_ */
151*4882a593Smuzhiyun #define	 PCI_CFGA_REG_PBA2	(0x18 >> 2)	/* use PCIPBA_ */
152*4882a593Smuzhiyun #define	 PCI_CFGA_REG_PBA3	(0x1c >> 2)	/* use PCIPBA_ */
153*4882a593Smuzhiyun #define	 PCI_CFGA_REG_SUBSYS	(0x2c >> 2)	/* use PCFGSS_ */
154*4882a593Smuzhiyun #define	 PCI_CFGA_REG_3C	(0x3C >> 2)	/* use PCFG3C_ */
155*4882a593Smuzhiyun #define	 PCI_CFGA_REG_PBBA0C	(0x44 >> 2)	/* use PCIPBAC_ */
156*4882a593Smuzhiyun #define	 PCI_CFGA_REG_PBA0M	(0x48 >> 2)
157*4882a593Smuzhiyun #define	 PCI_CFGA_REG_PBA1C	(0x4c >> 2)	/* use PCIPBAC_ */
158*4882a593Smuzhiyun #define	 PCI_CFGA_REG_PBA1M	(0x50 >> 2)
159*4882a593Smuzhiyun #define	 PCI_CFGA_REG_PBA2C	(0x54 >> 2)	/* use PCIPBAC_ */
160*4882a593Smuzhiyun #define	 PCI_CFGA_REG_PBA2M	(0x58 >> 2)
161*4882a593Smuzhiyun #define	 PCI_CFGA_REG_PBA3C	(0x5c >> 2)	/* use PCIPBAC_ */
162*4882a593Smuzhiyun #define	 PCI_CFGA_REG_PBA3M	(0x60 >> 2)
163*4882a593Smuzhiyun #define	 PCI_CFGA_REG_PMGT	(0x64 >> 2)
164*4882a593Smuzhiyun #define PCI_CFGA_FUNC_BIT	8
165*4882a593Smuzhiyun #define PCI_CFGA_FUNC		0x00000700
166*4882a593Smuzhiyun #define PCI_CFGA_DEV_BIT	11
167*4882a593Smuzhiyun #define PCI_CFGA_DEV		0x0000f800
168*4882a593Smuzhiyun #define PCI_CFGA_DEV_INTERN	0
169*4882a593Smuzhiyun #define PCI_CFGA_BUS_BIT	16
170*4882a593Smuzhiyun #define PCI CFGA_BUS		0x00ff0000
171*4882a593Smuzhiyun #define PCI_CFGA_BUS_TYPE0	0
172*4882a593Smuzhiyun #define PCI_CFGA_EN		(1 << 31)
173*4882a593Smuzhiyun 
174*4882a593Smuzhiyun /* PCI CFG04 commands */
175*4882a593Smuzhiyun #define PCI_CFG04_CMD_IO_ENA	(1 << 0)
176*4882a593Smuzhiyun #define PCI_CFG04_CMD_MEM_ENA	(1 << 1)
177*4882a593Smuzhiyun #define PCI_CFG04_CMD_BM_ENA	(1 << 2)
178*4882a593Smuzhiyun #define PCI_CFG04_CMD_MW_INV	(1 << 4)
179*4882a593Smuzhiyun #define PCI_CFG04_CMD_PAR_ENA	(1 << 6)
180*4882a593Smuzhiyun #define PCI_CFG04_CMD_SER_ENA	(1 << 8)
181*4882a593Smuzhiyun #define PCI_CFG04_CMD_FAST_ENA	(1 << 9)
182*4882a593Smuzhiyun 
183*4882a593Smuzhiyun /* PCI CFG04 status fields */
184*4882a593Smuzhiyun #define PCI_CFG04_STAT_BIT	16
185*4882a593Smuzhiyun #define PCI_CFG04_STAT		0xffff0000
186*4882a593Smuzhiyun #define PCI_CFG04_STAT_66_MHZ	(1 << 21)
187*4882a593Smuzhiyun #define PCI_CFG04_STAT_FBB	(1 << 23)
188*4882a593Smuzhiyun #define PCI_CFG04_STAT_MDPE	(1 << 24)
189*4882a593Smuzhiyun #define PCI_CFG04_STAT_DST	(1 << 25)
190*4882a593Smuzhiyun #define PCI_CFG04_STAT_STA	(1 << 27)
191*4882a593Smuzhiyun #define PCI_CFG04_STAT_RTA	(1 << 28)
192*4882a593Smuzhiyun #define PCI_CFG04_STAT_RMA	(1 << 29)
193*4882a593Smuzhiyun #define PCI_CFG04_STAT_SSE	(1 << 30)
194*4882a593Smuzhiyun #define PCI_CFG04_STAT_PE	(1 << 31)
195*4882a593Smuzhiyun 
196*4882a593Smuzhiyun #define PCI_PBA_MSI		(1 << 0)
197*4882a593Smuzhiyun #define PCI_PBA_P		(1 << 2)
198*4882a593Smuzhiyun 
199*4882a593Smuzhiyun /* PCI PBAC registers */
200*4882a593Smuzhiyun #define PCI_PBAC_MSI		(1 << 0)
201*4882a593Smuzhiyun #define PCI_PBAC_P		(1 << 1)
202*4882a593Smuzhiyun #define PCI_PBAC_SIZE_BIT	2
203*4882a593Smuzhiyun #define PCI_PBAC_SIZE		0x0000007c
204*4882a593Smuzhiyun #define PCI_PBAC_SB		(1 << 7)
205*4882a593Smuzhiyun #define PCI_PBAC_PP		(1 << 8)
206*4882a593Smuzhiyun #define PCI_PBAC_MR_BIT		9
207*4882a593Smuzhiyun #define PCI_PBAC_MR		0x00000600
208*4882a593Smuzhiyun #define	 PCI_PBAC_MR_RD		0
209*4882a593Smuzhiyun #define	 PCI_PBAC_MR_RD_LINE	1
210*4882a593Smuzhiyun #define	 PCI_PBAC_MR_RD_MULT	2
211*4882a593Smuzhiyun #define PCI_PBAC_MRL		(1 << 11)
212*4882a593Smuzhiyun #define PCI_PBAC_MRM		(1 << 12)
213*4882a593Smuzhiyun #define PCI_PBAC_TRP		(1 << 13)
214*4882a593Smuzhiyun 
215*4882a593Smuzhiyun #define PCI_CFG40_TRDY_TIM	0x000000ff
216*4882a593Smuzhiyun #define PCI_CFG40_RET_LIM	0x0000ff00
217*4882a593Smuzhiyun 
218*4882a593Smuzhiyun /*
219*4882a593Smuzhiyun  * PCI Local Base Address [0|1|2|3] Register
220*4882a593Smuzhiyun  */
221*4882a593Smuzhiyun 
222*4882a593Smuzhiyun #define PCI_LBA_BADDR_BIT	0
223*4882a593Smuzhiyun #define PCI_LBA_BADDR		0xffffff00
224*4882a593Smuzhiyun 
225*4882a593Smuzhiyun /*
226*4882a593Smuzhiyun  * PCI Local Base Address Control Register
227*4882a593Smuzhiyun  */
228*4882a593Smuzhiyun 
229*4882a593Smuzhiyun #define PCI_LBAC_MSI		(1 << 0)
230*4882a593Smuzhiyun #define	 PCI_LBAC_MSI_MEM	0
231*4882a593Smuzhiyun #define	 PCI_LBAC_MSI_IO	1
232*4882a593Smuzhiyun #define PCI_LBAC_SIZE_BIT	2
233*4882a593Smuzhiyun #define PCI_LBAC_SIZE		0x0000007c
234*4882a593Smuzhiyun #define PCI_LBAC_SB		(1 << 7)
235*4882a593Smuzhiyun #define PCI_LBAC_RT		(1 << 8)
236*4882a593Smuzhiyun #define	 PCI_LBAC_RT_NO_PREF	0
237*4882a593Smuzhiyun #define	 PCI_LBAC_RT_PREF	1
238*4882a593Smuzhiyun 
239*4882a593Smuzhiyun /*
240*4882a593Smuzhiyun  * PCI Local Base Address [0|1|2|3] Mapping Register
241*4882a593Smuzhiyun  */
242*4882a593Smuzhiyun #define PCI_LBAM_MADDR_BIT	8
243*4882a593Smuzhiyun #define PCI_LBAM_MADDR		0xffffff00
244*4882a593Smuzhiyun 
245*4882a593Smuzhiyun /*
246*4882a593Smuzhiyun  * PCI Decoupled Access Control Register
247*4882a593Smuzhiyun  */
248*4882a593Smuzhiyun #define PCI_DAC_DEN		(1 << 0)
249*4882a593Smuzhiyun 
250*4882a593Smuzhiyun /*
251*4882a593Smuzhiyun  * PCI Decoupled Access Status Register
252*4882a593Smuzhiyun  */
253*4882a593Smuzhiyun #define PCI_DAS_D		(1 << 0)
254*4882a593Smuzhiyun #define PCI_DAS_B		(1 << 1)
255*4882a593Smuzhiyun #define PCI_DAS_E		(1 << 2)
256*4882a593Smuzhiyun #define PCI_DAS_OFE		(1 << 3)
257*4882a593Smuzhiyun #define PCI_DAS_OFF		(1 << 4)
258*4882a593Smuzhiyun #define PCI_DAS_IFE		(1 << 5)
259*4882a593Smuzhiyun #define PCI_DAS_IFF		(1 << 6)
260*4882a593Smuzhiyun 
261*4882a593Smuzhiyun /*
262*4882a593Smuzhiyun  * PCI DMA Channel 8 Configuration Register
263*4882a593Smuzhiyun  */
264*4882a593Smuzhiyun #define PCI_DMA8C_MBS_BIT	0
265*4882a593Smuzhiyun #define PCI_DMA8C_MBS		0x00000fff /* Maximum Burst Size. */
266*4882a593Smuzhiyun #define PCI_DMA8C_OUR		(1 << 12)
267*4882a593Smuzhiyun 
268*4882a593Smuzhiyun /*
269*4882a593Smuzhiyun  * PCI DMA Channel 9 Configuration Register
270*4882a593Smuzhiyun  */
271*4882a593Smuzhiyun #define PCI_DMA9C_MBS_BIT	0	/* Maximum Burst Size. */
272*4882a593Smuzhiyun #define PCI_DMA9C_MBS		0x00000fff
273*4882a593Smuzhiyun 
274*4882a593Smuzhiyun /*
275*4882a593Smuzhiyun  * PCI to Memory(DMA Channel 8) AND Memory to PCI DMA(DMA Channel 9)Descriptors
276*4882a593Smuzhiyun  */
277*4882a593Smuzhiyun 
278*4882a593Smuzhiyun #define PCI_DMAD_PT_BIT		22		/* in DEVCMD field (descriptor) */
279*4882a593Smuzhiyun #define PCI_DMAD_PT		0x00c00000	/* preferred transaction field */
280*4882a593Smuzhiyun /* These are for reads (DMA channel 8) */
281*4882a593Smuzhiyun #define PCI_DMAD_DEVCMD_MR	0		/* memory read */
282*4882a593Smuzhiyun #define PCI_DMAD_DEVCMD_MRL	1		/* memory read line */
283*4882a593Smuzhiyun #define PCI_DMAD_DEVCMD_MRM	2		/* memory read multiple */
284*4882a593Smuzhiyun #define PCI_DMAD_DEVCMD_IOR	3		/* I/O read */
285*4882a593Smuzhiyun /* These are for writes (DMA channel 9) */
286*4882a593Smuzhiyun #define PCI_DMAD_DEVCMD_MW	0		/* memory write */
287*4882a593Smuzhiyun #define PCI_DMAD_DEVCMD_MWI	1		/* memory write invalidate */
288*4882a593Smuzhiyun #define PCI_DMAD_DEVCMD_IOW	3		/* I/O write */
289*4882a593Smuzhiyun 
290*4882a593Smuzhiyun /* Swap byte field applies to both DMA channel 8 and 9 */
291*4882a593Smuzhiyun #define PCI_DMAD_SB		(1 << 24)	/* swap byte field */
292*4882a593Smuzhiyun 
293*4882a593Smuzhiyun 
294*4882a593Smuzhiyun /*
295*4882a593Smuzhiyun  * PCI Target Control Register
296*4882a593Smuzhiyun  */
297*4882a593Smuzhiyun 
298*4882a593Smuzhiyun #define PCI_TC_RTIMER_BIT	0
299*4882a593Smuzhiyun #define PCI_TC_RTIMER		0x000000ff
300*4882a593Smuzhiyun #define PCI_TC_DTIMER_BIT	8
301*4882a593Smuzhiyun #define PCI_TC_DTIMER		0x0000ff00
302*4882a593Smuzhiyun #define PCI_TC_RDR		(1 << 18)
303*4882a593Smuzhiyun #define PCI_TC_DDT		(1 << 19)
304*4882a593Smuzhiyun 
305*4882a593Smuzhiyun /*
306*4882a593Smuzhiyun  * PCI messaging unit [applies to both inbound and outbound registers ]
307*4882a593Smuzhiyun  */
308*4882a593Smuzhiyun #define PCI_MSU_M0		(1 << 0)
309*4882a593Smuzhiyun #define PCI_MSU_M1		(1 << 1)
310*4882a593Smuzhiyun #define PCI_MSU_DB		(1 << 2)
311*4882a593Smuzhiyun 
312*4882a593Smuzhiyun #define PCI_MSG_ADDR		0xB8088010
313*4882a593Smuzhiyun #define PCI0_ADDR		0xB8080000
314*4882a593Smuzhiyun #define rc32434_pci ((struct pci_reg *) PCI0_ADDR)
315*4882a593Smuzhiyun #define rc32434_pci_msg ((struct pci_msu *) PCI_MSG_ADDR)
316*4882a593Smuzhiyun 
317*4882a593Smuzhiyun #define PCIM_SHFT		0x6
318*4882a593Smuzhiyun #define PCIM_BIT_LEN		0x7
319*4882a593Smuzhiyun #define PCIM_H_EA		0x3
320*4882a593Smuzhiyun #define PCIM_H_IA_FIX		0x4
321*4882a593Smuzhiyun #define PCIM_H_IA_RR		0x5
322*4882a593Smuzhiyun 
323*4882a593Smuzhiyun #define PCI_ADDR_START		0x50000000
324*4882a593Smuzhiyun 
325*4882a593Smuzhiyun #define CPUTOPCI_MEM_WIN	0x02000000
326*4882a593Smuzhiyun #define CPUTOPCI_IO_WIN		0x00100000
327*4882a593Smuzhiyun #define PCILBA_SIZE_SHFT	2
328*4882a593Smuzhiyun #define PCILBA_SIZE_MASK	0x1F
329*4882a593Smuzhiyun #define SIZE_256MB		0x1C
330*4882a593Smuzhiyun #define SIZE_128MB		0x1B
331*4882a593Smuzhiyun #define SIZE_64MB		0x1A
332*4882a593Smuzhiyun #define SIZE_32MB		0x19
333*4882a593Smuzhiyun #define SIZE_16MB		0x18
334*4882a593Smuzhiyun #define SIZE_4MB		0x16
335*4882a593Smuzhiyun #define SIZE_2MB		0x15
336*4882a593Smuzhiyun #define SIZE_1MB		0x14
337*4882a593Smuzhiyun #define KORINA_CONFIG0_ADDR	0x80000000
338*4882a593Smuzhiyun #define KORINA_CONFIG1_ADDR	0x80000004
339*4882a593Smuzhiyun #define KORINA_CONFIG2_ADDR	0x80000008
340*4882a593Smuzhiyun #define KORINA_CONFIG3_ADDR	0x8000000C
341*4882a593Smuzhiyun #define KORINA_CONFIG4_ADDR	0x80000010
342*4882a593Smuzhiyun #define KORINA_CONFIG5_ADDR	0x80000014
343*4882a593Smuzhiyun #define KORINA_CONFIG6_ADDR	0x80000018
344*4882a593Smuzhiyun #define KORINA_CONFIG7_ADDR	0x8000001C
345*4882a593Smuzhiyun #define KORINA_CONFIG8_ADDR	0x80000020
346*4882a593Smuzhiyun #define KORINA_CONFIG9_ADDR	0x80000024
347*4882a593Smuzhiyun #define KORINA_CONFIG10_ADDR	0x80000028
348*4882a593Smuzhiyun #define KORINA_CONFIG11_ADDR	0x8000002C
349*4882a593Smuzhiyun #define KORINA_CONFIG12_ADDR	0x80000030
350*4882a593Smuzhiyun #define KORINA_CONFIG13_ADDR	0x80000034
351*4882a593Smuzhiyun #define KORINA_CONFIG14_ADDR	0x80000038
352*4882a593Smuzhiyun #define KORINA_CONFIG15_ADDR	0x8000003C
353*4882a593Smuzhiyun #define KORINA_CONFIG16_ADDR	0x80000040
354*4882a593Smuzhiyun #define KORINA_CONFIG17_ADDR	0x80000044
355*4882a593Smuzhiyun #define KORINA_CONFIG18_ADDR	0x80000048
356*4882a593Smuzhiyun #define KORINA_CONFIG19_ADDR	0x8000004C
357*4882a593Smuzhiyun #define KORINA_CONFIG20_ADDR	0x80000050
358*4882a593Smuzhiyun #define KORINA_CONFIG21_ADDR	0x80000054
359*4882a593Smuzhiyun #define KORINA_CONFIG22_ADDR	0x80000058
360*4882a593Smuzhiyun #define KORINA_CONFIG23_ADDR	0x8000005C
361*4882a593Smuzhiyun #define KORINA_CONFIG24_ADDR	0x80000060
362*4882a593Smuzhiyun #define KORINA_CONFIG25_ADDR	0x80000064
363*4882a593Smuzhiyun #define KORINA_CMD		(PCI_CFG04_CMD_IO_ENA | \
364*4882a593Smuzhiyun 				 PCI_CFG04_CMD_MEM_ENA | \
365*4882a593Smuzhiyun 				 PCI_CFG04_CMD_BM_ENA | \
366*4882a593Smuzhiyun 				 PCI_CFG04_CMD_MW_INV | \
367*4882a593Smuzhiyun 				 PCI_CFG04_CMD_PAR_ENA | \
368*4882a593Smuzhiyun 				 PCI_CFG04_CMD_SER_ENA)
369*4882a593Smuzhiyun 
370*4882a593Smuzhiyun #define KORINA_STAT		(PCI_CFG04_STAT_MDPE | \
371*4882a593Smuzhiyun 				 PCI_CFG04_STAT_STA | \
372*4882a593Smuzhiyun 				 PCI_CFG04_STAT_RTA | \
373*4882a593Smuzhiyun 				 PCI_CFG04_STAT_RMA | \
374*4882a593Smuzhiyun 				 PCI_CFG04_STAT_SSE | \
375*4882a593Smuzhiyun 				 PCI_CFG04_STAT_PE)
376*4882a593Smuzhiyun 
377*4882a593Smuzhiyun #define KORINA_CNFG1		((KORINA_STAT<<16)|KORINA_CMD)
378*4882a593Smuzhiyun 
379*4882a593Smuzhiyun #define KORINA_REVID		0
380*4882a593Smuzhiyun #define KORINA_CLASS_CODE	0
381*4882a593Smuzhiyun #define KORINA_CNFG2		((KORINA_CLASS_CODE<<8) | \
382*4882a593Smuzhiyun 				  KORINA_REVID)
383*4882a593Smuzhiyun 
384*4882a593Smuzhiyun #define KORINA_CACHE_LINE_SIZE	4
385*4882a593Smuzhiyun #define KORINA_MASTER_LAT	0x3c
386*4882a593Smuzhiyun #define KORINA_HEADER_TYPE	0
387*4882a593Smuzhiyun #define KORINA_BIST		0
388*4882a593Smuzhiyun 
389*4882a593Smuzhiyun #define KORINA_CNFG3 ((KORINA_BIST << 24) | \
390*4882a593Smuzhiyun 		      (KORINA_HEADER_TYPE<<16) | \
391*4882a593Smuzhiyun 		      (KORINA_MASTER_LAT<<8) | \
392*4882a593Smuzhiyun 		      KORINA_CACHE_LINE_SIZE)
393*4882a593Smuzhiyun 
394*4882a593Smuzhiyun #define KORINA_BAR0	0x00000008	/* 128 MB Memory */
395*4882a593Smuzhiyun #define KORINA_BAR1	0x18800001	/* 1 MB IO */
396*4882a593Smuzhiyun #define KORINA_BAR2	0x18000001	/* 2 MB IO window for Korina
397*4882a593Smuzhiyun 					   internal Registers */
398*4882a593Smuzhiyun #define KORINA_BAR3	0x48000008	/* Spare 128 MB Memory */
399*4882a593Smuzhiyun 
400*4882a593Smuzhiyun #define KORINA_CNFG4	KORINA_BAR0
401*4882a593Smuzhiyun #define KORINA_CNFG5	KORINA_BAR1
402*4882a593Smuzhiyun #define KORINA_CNFG6	KORINA_BAR2
403*4882a593Smuzhiyun #define KORINA_CNFG7	KORINA_BAR3
404*4882a593Smuzhiyun 
405*4882a593Smuzhiyun #define KORINA_SUBSYS_VENDOR_ID 0x011d
406*4882a593Smuzhiyun #define KORINA_SUBSYSTEM_ID	0x0214
407*4882a593Smuzhiyun #define KORINA_CNFG8		0
408*4882a593Smuzhiyun #define KORINA_CNFG9		0
409*4882a593Smuzhiyun #define KORINA_CNFG10		0
410*4882a593Smuzhiyun #define KORINA_CNFG11	((KORINA_SUBSYS_VENDOR_ID<<16) | \
411*4882a593Smuzhiyun 			  KORINA_SUBSYSTEM_ID)
412*4882a593Smuzhiyun #define KORINA_INT_LINE		1
413*4882a593Smuzhiyun #define KORINA_INT_PIN		1
414*4882a593Smuzhiyun #define KORINA_MIN_GNT		8
415*4882a593Smuzhiyun #define KORINA_MAX_LAT		0x38
416*4882a593Smuzhiyun #define KORINA_CNFG12		0
417*4882a593Smuzhiyun #define KORINA_CNFG13		0
418*4882a593Smuzhiyun #define KORINA_CNFG14		0
419*4882a593Smuzhiyun #define KORINA_CNFG15	((KORINA_MAX_LAT<<24) | \
420*4882a593Smuzhiyun 			 (KORINA_MIN_GNT<<16) | \
421*4882a593Smuzhiyun 			 (KORINA_INT_PIN<<8)  | \
422*4882a593Smuzhiyun 			  KORINA_INT_LINE)
423*4882a593Smuzhiyun #define KORINA_RETRY_LIMIT	0x80
424*4882a593Smuzhiyun #define KORINA_TRDY_LIMIT	0x80
425*4882a593Smuzhiyun #define KORINA_CNFG16 ((KORINA_RETRY_LIMIT<<8) | \
426*4882a593Smuzhiyun 			KORINA_TRDY_LIMIT)
427*4882a593Smuzhiyun #define PCI_PBAxC_R		0x0
428*4882a593Smuzhiyun #define PCI_PBAxC_RL		0x1
429*4882a593Smuzhiyun #define PCI_PBAxC_RM		0x2
430*4882a593Smuzhiyun #define SIZE_SHFT		2
431*4882a593Smuzhiyun 
432*4882a593Smuzhiyun #if defined(__MIPSEB__)
433*4882a593Smuzhiyun #define KORINA_PBA0C	(PCI_PBAC_MRL | PCI_PBAC_SB | \
434*4882a593Smuzhiyun 			  ((PCI_PBAxC_RM & 0x3) << PCI_PBAC_MR_BIT) | \
435*4882a593Smuzhiyun 			  PCI_PBAC_PP | \
436*4882a593Smuzhiyun 			  (SIZE_128MB<<SIZE_SHFT) | \
437*4882a593Smuzhiyun 			   PCI_PBAC_P)
438*4882a593Smuzhiyun #else
439*4882a593Smuzhiyun #define KORINA_PBA0C	(PCI_PBAC_MRL | \
440*4882a593Smuzhiyun 			  ((PCI_PBAxC_RM & 0x3) << PCI_PBAC_MR_BIT) | \
441*4882a593Smuzhiyun 			  PCI_PBAC_PP | \
442*4882a593Smuzhiyun 			  (SIZE_128MB<<SIZE_SHFT) | \
443*4882a593Smuzhiyun 			   PCI_PBAC_P)
444*4882a593Smuzhiyun #endif
445*4882a593Smuzhiyun #define KORINA_CNFG17	KORINA_PBA0C
446*4882a593Smuzhiyun #define KORINA_PBA0M	0x0
447*4882a593Smuzhiyun #define KORINA_CNFG18	KORINA_PBA0M
448*4882a593Smuzhiyun 
449*4882a593Smuzhiyun #if defined(__MIPSEB__)
450*4882a593Smuzhiyun #define KORINA_PBA1C	((SIZE_1MB<<SIZE_SHFT) | PCI_PBAC_SB | \
451*4882a593Smuzhiyun 			  PCI_PBAC_MSI)
452*4882a593Smuzhiyun #else
453*4882a593Smuzhiyun #define KORINA_PBA1C	((SIZE_1MB<<SIZE_SHFT) | \
454*4882a593Smuzhiyun 			  PCI_PBAC_MSI)
455*4882a593Smuzhiyun #endif
456*4882a593Smuzhiyun #define KORINA_CNFG19	KORINA_PBA1C
457*4882a593Smuzhiyun #define KORINA_PBA1M	0x0
458*4882a593Smuzhiyun #define KORINA_CNFG20	KORINA_PBA1M
459*4882a593Smuzhiyun 
460*4882a593Smuzhiyun #if defined(__MIPSEB__)
461*4882a593Smuzhiyun #define KORINA_PBA2C	((SIZE_2MB<<SIZE_SHFT) | PCI_PBAC_SB | \
462*4882a593Smuzhiyun 			  PCI_PBAC_MSI)
463*4882a593Smuzhiyun #else
464*4882a593Smuzhiyun #define KORINA_PBA2C	((SIZE_2MB<<SIZE_SHFT) | \
465*4882a593Smuzhiyun 			  PCI_PBAC_MSI)
466*4882a593Smuzhiyun #endif
467*4882a593Smuzhiyun #define KORINA_CNFG21	KORINA_PBA2C
468*4882a593Smuzhiyun #define KORINA_PBA2M	0x18000000
469*4882a593Smuzhiyun #define KORINA_CNFG22	KORINA_PBA2M
470*4882a593Smuzhiyun #define KORINA_PBA3C	0
471*4882a593Smuzhiyun #define KORINA_CNFG23	KORINA_PBA3C
472*4882a593Smuzhiyun #define KORINA_PBA3M	0
473*4882a593Smuzhiyun #define KORINA_CNFG24	KORINA_PBA3M
474*4882a593Smuzhiyun 
475*4882a593Smuzhiyun #define PCITC_DTIMER_VAL	8
476*4882a593Smuzhiyun #define PCITC_RTIMER_VAL	0x10
477*4882a593Smuzhiyun 
478*4882a593Smuzhiyun #endif	/* __ASM_RC32434_PCI_H */
479