xref: /rk3399_rockchip-uboot/include/tsi108.h (revision 78aa0c3427f3ecdeb34aabfbbe2dd23b6ad8f40e)
1*78aa0c34Sroy zang /*****************************************************************************
2*78aa0c34Sroy zang  * (C) Copyright 2003;  Tundra Semiconductor Corp.
3*78aa0c34Sroy zang  * (C) Copyright 2006;  Freescale Semiconductor Corp.
4*78aa0c34Sroy zang  *
5*78aa0c34Sroy zang  * This program is free software; you can redistribute it and/or
6*78aa0c34Sroy zang  * modify it under the terms of the GNU General Public License as
7*78aa0c34Sroy zang  * published by the Free Software Foundation; either version 2 of
8*78aa0c34Sroy zang  * the License, or (at your option) any later version.
9*78aa0c34Sroy zang  *
10*78aa0c34Sroy zang  * This program is distributed in the hope that it will be useful,
11*78aa0c34Sroy zang  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12*78aa0c34Sroy zang  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13*78aa0c34Sroy zang  * GNU General Public License for more details.
14*78aa0c34Sroy zang  *
15*78aa0c34Sroy zang  * You should have received a copy of the GNU General Public License
16*78aa0c34Sroy zang  * along with this program; if not, write to the Free Software
17*78aa0c34Sroy zang  * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
18*78aa0c34Sroy zang  * MA 02111-1307 USA
19*78aa0c34Sroy zang  *****************************************************************************/
20*78aa0c34Sroy zang 
21*78aa0c34Sroy zang /*
22*78aa0c34Sroy zang  * FILENAME: tsi108.h
23*78aa0c34Sroy zang  *
24*78aa0c34Sroy zang  * Originator: Alex Bounine
25*78aa0c34Sroy zang  *
26*78aa0c34Sroy zang  * DESCRIPTION:
27*78aa0c34Sroy zang  * Common definitions for the Tundra Tsi108 bridge chip
28*78aa0c34Sroy zang  *
29*78aa0c34Sroy zang  */
30*78aa0c34Sroy zang 
31*78aa0c34Sroy zang #ifndef _TSI108_H_
32*78aa0c34Sroy zang #define _TSI108_H_
33*78aa0c34Sroy zang 
34*78aa0c34Sroy zang #define TSI108_HLP_REG_OFFSET (0x0000)
35*78aa0c34Sroy zang #define TSI108_PCI_REG_OFFSET (0x1000)
36*78aa0c34Sroy zang #define TSI108_CLK_REG_OFFSET (0x2000)
37*78aa0c34Sroy zang #define TSI108_PB_REG_OFFSET  (0x3000)
38*78aa0c34Sroy zang #define TSI108_SD_REG_OFFSET  (0x4000)
39*78aa0c34Sroy zang #define TSI108_MPIC_REG_OFFSET  (0x7400)
40*78aa0c34Sroy zang 
41*78aa0c34Sroy zang #define PB_ID               (0x000)
42*78aa0c34Sroy zang #define PB_RSR              (0x004)
43*78aa0c34Sroy zang #define PB_BUS_MS_SELECT    (0x008)
44*78aa0c34Sroy zang #define PB_ISR              (0x00C)
45*78aa0c34Sroy zang #define PB_ARB_CTRL         (0x018)
46*78aa0c34Sroy zang #define PB_PVT_CTRL2        (0x034)
47*78aa0c34Sroy zang #define PB_SCR              (0x400)
48*78aa0c34Sroy zang #define PB_ERRCS            (0x404)
49*78aa0c34Sroy zang #define PB_AERR             (0x408)
50*78aa0c34Sroy zang #define PB_REG_BAR          (0x410)
51*78aa0c34Sroy zang #define PB_OCN_BAR1         (0x414)
52*78aa0c34Sroy zang #define PB_OCN_BAR2         (0x418)
53*78aa0c34Sroy zang #define PB_SDRAM_BAR1       (0x41C)
54*78aa0c34Sroy zang #define PB_SDRAM_BAR2       (0x420)
55*78aa0c34Sroy zang #define PB_MCR              (0xC00)
56*78aa0c34Sroy zang #define PB_MCMD             (0xC04)
57*78aa0c34Sroy zang 
58*78aa0c34Sroy zang #define HLP_B0_ADDR         (0x000)
59*78aa0c34Sroy zang #define HLP_B1_ADDR         (0x010)
60*78aa0c34Sroy zang #define HLP_B2_ADDR         (0x020)
61*78aa0c34Sroy zang #define HLP_B3_ADDR         (0x030)
62*78aa0c34Sroy zang 
63*78aa0c34Sroy zang #define HLP_B0_MASK         (0x004)
64*78aa0c34Sroy zang #define HLP_B1_MASK         (0x014)
65*78aa0c34Sroy zang #define HLP_B2_MASK         (0x024)
66*78aa0c34Sroy zang #define HLP_B3_MASK         (0x034)
67*78aa0c34Sroy zang 
68*78aa0c34Sroy zang #define HLP_B0_CTRL0        (0x008)
69*78aa0c34Sroy zang #define HLP_B1_CTRL0        (0x018)
70*78aa0c34Sroy zang #define HLP_B2_CTRL0        (0x028)
71*78aa0c34Sroy zang #define HLP_B3_CTRL0        (0x038)
72*78aa0c34Sroy zang 
73*78aa0c34Sroy zang #define HLP_B0_CTRL1        (0x00C)
74*78aa0c34Sroy zang #define HLP_B1_CTRL1        (0x01C)
75*78aa0c34Sroy zang #define HLP_B2_CTRL1        (0x02C)
76*78aa0c34Sroy zang #define HLP_B3_CTRL1        (0x03C)
77*78aa0c34Sroy zang 
78*78aa0c34Sroy zang #define PCI_CSR             (0x004)
79*78aa0c34Sroy zang #define PCI_P2O_BAR0        (0x010)
80*78aa0c34Sroy zang #define PCI_P2O_BAR0_UPPER  (0x014)
81*78aa0c34Sroy zang #define PCI_P2O_BAR2        (0x018)
82*78aa0c34Sroy zang #define PCI_P2O_BAR2_UPPER  (0x01C)
83*78aa0c34Sroy zang #define PCI_P2O_BAR3        (0x020)
84*78aa0c34Sroy zang #define PCI_P2O_BAR3_UPPER  (0x024)
85*78aa0c34Sroy zang 
86*78aa0c34Sroy zang #define PCI_MISC_CSR        (0x040)
87*78aa0c34Sroy zang #define PCI_P2O_PAGE_SIZES  (0x04C)
88*78aa0c34Sroy zang 
89*78aa0c34Sroy zang #define PCI_PCIX_STAT       (0x0F4)
90*78aa0c34Sroy zang 
91*78aa0c34Sroy zang #define PCI_IRP_STAT        (0x184)
92*78aa0c34Sroy zang 
93*78aa0c34Sroy zang #define PCI_PFAB_BAR0       (0x204)
94*78aa0c34Sroy zang #define PCI_PFAB_BAR0_UPPER (0x208)
95*78aa0c34Sroy zang #define PCI_PFAB_IO         (0x20C)
96*78aa0c34Sroy zang #define PCI_PFAB_IO_UPPER   (0x210)
97*78aa0c34Sroy zang 
98*78aa0c34Sroy zang #define PCI_PFAB_MEM32          (0x214)
99*78aa0c34Sroy zang #define PCI_PFAB_MEM32_REMAP    (0x218)
100*78aa0c34Sroy zang #define PCI_PFAB_MEM32_MASK     (0x21C)
101*78aa0c34Sroy zang 
102*78aa0c34Sroy zang #define CG_PLL0_CTRL0       (0x210)
103*78aa0c34Sroy zang #define CG_PLL0_CTRL1       (0x214)
104*78aa0c34Sroy zang #define CG_PLL1_CTRL0       (0x220)
105*78aa0c34Sroy zang #define CG_PLL1_CTRL1       (0x224)
106*78aa0c34Sroy zang #define CG_PWRUP_STATUS     (0x234)
107*78aa0c34Sroy zang 
108*78aa0c34Sroy zang #define MPIC_CSR(n) (0x30C + (n * 0x40))
109*78aa0c34Sroy zang 
110*78aa0c34Sroy zang #define SD_CTRL         (0x000)
111*78aa0c34Sroy zang #define SD_STATUS       (0x004)
112*78aa0c34Sroy zang #define SD_TIMING       (0x008)
113*78aa0c34Sroy zang #define SD_REFRESH      (0x00C)
114*78aa0c34Sroy zang #define SD_INT_STATUS   (0x010)
115*78aa0c34Sroy zang #define SD_INT_ENABLE   (0x014)
116*78aa0c34Sroy zang #define SD_INT_SET      (0x018)
117*78aa0c34Sroy zang #define SD_D0_CTRL      (0x020)
118*78aa0c34Sroy zang #define SD_D1_CTRL      (0x024)
119*78aa0c34Sroy zang #define SD_D0_BAR       (0x028)
120*78aa0c34Sroy zang #define SD_D1_BAR       (0x02C)
121*78aa0c34Sroy zang #define SD_ECC_CTRL     (0x040)
122*78aa0c34Sroy zang #define SD_DLL_STATUS   (0x250)
123*78aa0c34Sroy zang 
124*78aa0c34Sroy zang #define TS_SD_CTRL_ENABLE  (1 << 31)
125*78aa0c34Sroy zang 
126*78aa0c34Sroy zang #define PB_ERRCS_ES         (1 << 1)
127*78aa0c34Sroy zang #define PB_ISR_PBS_RD_ERR   (1 << 8)
128*78aa0c34Sroy zang #define PCI_IRP_STAT_P_CSR  (1 << 23)
129*78aa0c34Sroy zang 
130*78aa0c34Sroy zang /*
131*78aa0c34Sroy zang  * I2C : Register address offset definitions
132*78aa0c34Sroy zang  */
133*78aa0c34Sroy zang #define I2C_CNTRL1						(0x00000000)
134*78aa0c34Sroy zang #define I2C_CNTRL2						(0x00000004)
135*78aa0c34Sroy zang #define I2C_RD_DATA						(0x00000008)
136*78aa0c34Sroy zang #define I2C_TX_DATA						(0x0000000c)
137*78aa0c34Sroy zang 
138*78aa0c34Sroy zang /*
139*78aa0c34Sroy zang  * I2C : Register Bit Masks and Reset Values
140*78aa0c34Sroy zang  *           definitions for every register
141*78aa0c34Sroy zang  */
142*78aa0c34Sroy zang 
143*78aa0c34Sroy zang /* I2C_CNTRL1 : Reset Value */
144*78aa0c34Sroy zang #define I2C_CNTRL1_RESET_VALUE					(0x0000000a)
145*78aa0c34Sroy zang 
146*78aa0c34Sroy zang /* I2C_CNTRL1 : Register Bits Masks Definitions */
147*78aa0c34Sroy zang #define I2C_CNTRL1_DEVCODE					(0x0000000f)
148*78aa0c34Sroy zang #define I2C_CNTRL1_PAGE						(0x00000700)
149*78aa0c34Sroy zang #define I2C_CNTRL1_BYTADDR					(0x00ff0000)
150*78aa0c34Sroy zang #define I2C_CNTRL1_I2CWRITE					(0x01000000)
151*78aa0c34Sroy zang 
152*78aa0c34Sroy zang /* I2C_CNTRL1 : Read/Write Bit Mask Definition */
153*78aa0c34Sroy zang #define I2C_CNTRL1_RWMASK					(0x01ff070f)
154*78aa0c34Sroy zang 
155*78aa0c34Sroy zang /* I2C_CNTRL1 : Unused/Reserved bits Definition */
156*78aa0c34Sroy zang #define I2C_CNTRL1_RESERVED					(0xfe00f8f0)
157*78aa0c34Sroy zang 
158*78aa0c34Sroy zang /* I2C_CNTRL2 : Reset Value */
159*78aa0c34Sroy zang #define I2C_CNTRL2_RESET_VALUE					(0x00000000)
160*78aa0c34Sroy zang 
161*78aa0c34Sroy zang /* I2C_CNTRL2 : Register Bits Masks Definitions */
162*78aa0c34Sroy zang #define I2C_CNTRL2_SIZE						(0x00000003)
163*78aa0c34Sroy zang #define I2C_CNTRL2_LANE						(0x0000000c)
164*78aa0c34Sroy zang #define I2C_CNTRL2_MULTIBYTE					(0x00000010)
165*78aa0c34Sroy zang #define I2C_CNTRL2_START					(0x00000100)
166*78aa0c34Sroy zang #define I2C_CNTRL2_WR_STATUS					(0x00010000)
167*78aa0c34Sroy zang #define I2C_CNTRL2_RD_STATUS					(0x00020000)
168*78aa0c34Sroy zang #define I2C_CNTRL2_I2C_TO_ERR					(0x04000000)
169*78aa0c34Sroy zang #define I2C_CNTRL2_I2C_CFGERR					(0x08000000)
170*78aa0c34Sroy zang #define I2C_CNTRL2_I2C_CMPLT					(0x10000000)
171*78aa0c34Sroy zang 
172*78aa0c34Sroy zang /* I2C_CNTRL2 : Read/Write Bit Mask Definition */
173*78aa0c34Sroy zang #define I2C_CNTRL2_RWMASK					(0x0000011f)
174*78aa0c34Sroy zang 
175*78aa0c34Sroy zang /* I2C_CNTRL2 : Unused/Reserved bits Definition */
176*78aa0c34Sroy zang #define I2C_CNTRL2_RESERVED					(0xe3fcfee0)
177*78aa0c34Sroy zang 
178*78aa0c34Sroy zang /* I2C_RD_DATA : Reset Value */
179*78aa0c34Sroy zang #define I2C_RD_DATA_RESET_VALUE					(0x00000000)
180*78aa0c34Sroy zang 
181*78aa0c34Sroy zang /* I2C_RD_DATA : Register Bits Masks Definitions */
182*78aa0c34Sroy zang #define I2C_RD_DATA_RBYTE0					(0x000000ff)
183*78aa0c34Sroy zang #define I2C_RD_DATA_RBYTE1					(0x0000ff00)
184*78aa0c34Sroy zang #define I2C_RD_DATA_RBYTE2					(0x00ff0000)
185*78aa0c34Sroy zang #define I2C_RD_DATA_RBYTE3					(0xff000000)
186*78aa0c34Sroy zang 
187*78aa0c34Sroy zang /* I2C_RD_DATA : Read/Write Bit Mask Definition */
188*78aa0c34Sroy zang #define I2C_RD_DATA_RWMASK					(0x00000000)
189*78aa0c34Sroy zang 
190*78aa0c34Sroy zang /* I2C_RD_DATA : Unused/Reserved bits Definition */
191*78aa0c34Sroy zang #define I2C_RD_DATA_RESERVED					(0x00000000)
192*78aa0c34Sroy zang 
193*78aa0c34Sroy zang /* I2C_TX_DATA : Reset Value */
194*78aa0c34Sroy zang #define I2C_TX_DATA_RESET_VALUE					(0x00000000)
195*78aa0c34Sroy zang 
196*78aa0c34Sroy zang /* I2C_TX_DATA : Register Bits Masks Definitions */
197*78aa0c34Sroy zang #define I2C_TX_DATA_TBYTE0					(0x000000ff)
198*78aa0c34Sroy zang #define I2C_TX_DATA_TBYTE1					(0x0000ff00)
199*78aa0c34Sroy zang #define I2C_TX_DATA_TBYTE2					(0x00ff0000)
200*78aa0c34Sroy zang #define I2C_TX_DATA_TBYTE3					(0xff000000)
201*78aa0c34Sroy zang 
202*78aa0c34Sroy zang /* I2C_TX_DATA : Read/Write Bit Mask Definition */
203*78aa0c34Sroy zang #define I2C_TX_DATA_RWMASK					(0xffffffff)
204*78aa0c34Sroy zang 
205*78aa0c34Sroy zang /* I2C_TX_DATA : Unused/Reserved bits Definition */
206*78aa0c34Sroy zang #define I2C_TX_DATA_RESERVED					(0x00000000)
207*78aa0c34Sroy zang 
208*78aa0c34Sroy zang #define TSI108_I2C_OFFSET       0x7000	/* register block offset for general use I2C channel */
209*78aa0c34Sroy zang #define TSI108_I2C_SDRAM_OFFSET 0x4400	/* register block offset for SPD I2C channel */
210*78aa0c34Sroy zang 
211*78aa0c34Sroy zang #define I2C_EEPROM_DEVCODE 0xA	/* standard I2C EEPROM device code */
212*78aa0c34Sroy zang 
213*78aa0c34Sroy zang /* I2C status codes */
214*78aa0c34Sroy zang 
215*78aa0c34Sroy zang #define TSI108_I2C_SUCCESS      0
216*78aa0c34Sroy zang #define TSI108_I2C_PARAM_ERR    1
217*78aa0c34Sroy zang #define TSI108_I2C_TIMEOUT_ERR  2
218*78aa0c34Sroy zang #define TSI108_I2C_IF_BUSY      3
219*78aa0c34Sroy zang #define TSI108_I2C_IF_ERROR     4
220*78aa0c34Sroy zang 
221*78aa0c34Sroy zang #endif		/* _TSI108_H_ */
222