e162d68dd458ef258251a6a1165059f17109333c
[keystone-rtos/ibl.git] / src / device / c6455 / target.h
1 /*
2  *
3  * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/ 
4  * 
5  * 
6  *  Redistribution and use in source and binary forms, with or without 
7  *  modification, are permitted provided that the following conditions 
8  *  are met:
9  *
10  *    Redistributions of source code must retain the above copyright 
11  *    notice, this list of conditions and the following disclaimer.
12  *
13  *    Redistributions in binary form must reproduce the above copyright
14  *    notice, this list of conditions and the following disclaimer in the 
15  *    documentation and/or other materials provided with the   
16  *    distribution.
17  *
18  *    Neither the name of Texas Instruments Incorporated nor the names of
19  *    its contributors may be used to endorse or promote products derived
20  *    from this software without specific prior written permission.
21  *
22  *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
23  *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
24  *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
25  *  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 
26  *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
27  *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 
28  *  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
29  *  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
30  *  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
31  *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
32  *  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33  *
34 */
38 /**************************************************************************
39  * FILE PURPOSE: Target specific definitions
40  **************************************************************************
41  * FILE NAME: target.h
42  *
43  * DESCRIPTION: This file defines target specific values used by low level
44  *                              drivers.
45  *
46  * @file target.h
47  *
48  * @brief
49  *  Low level target specific values are defined
50  *
51  ***************************************************************************/
52  
53 /** 
54  *  @brief
55  *   Device EMAC definitions
56  */
57 #define TARGET_DEVICE_CPMAC
58  
59 #define TARGET_EMAC_N_PORTS            1
61 #define TARGET_EMAC_BASE_ADDRESSES     { 0x02c80000u }
62 #define TARGET_EMAC_DSC_BASE_ADDR      { 0x02c82000u }
63  
64  
65 /* No chip level reset required for ethernet, the function call is made a void statment */
66 #define deviceSetEthResetState(x,y)
68 /* There is no sgmii on the 6455, so the sgmii config is defined to a void statement */
69 #define hwSgmiiConfig(x,y)
71 /* Mdio is handled outside the emac driver */
72 #define dev_mdio_open()     1
74 #define TARGET_MAC_CONTROL    (1 << 5)    /* gmii enable */  \
75                             | (1 << 0)    /* full duplex */
76  
77 /**
78  *  @brief
79  *    Device Timer definitions
80  */
81 #define TIMER0_BASE             0x02940000u
82 #define TIMER_INPUT_DIVIDER     6           /* Timer driven from cpu clock / 6 */
86 /**
87  *  @def MAIN_PLL
88  */
89 #define MAIN_PLL        0   /**< The index to the main PLL */
91 /**
92  * @def NET_PLL
93  */
94 #define NET_PLL         1   /**< The index to the network PLL */
96 /**
97  *  @def DDR_PLL
98  */
99 #define DDR_PLL         2   /**< The index to the DDR PLL */
102 /**
103  *  @brief
104  *    Device PLL definitions
105  */
106 #define DEVICE_PLL_BASE(x)  ((x) == MAIN_PLL ? 0x29a0000 : ((x) == NET_PLL ? 0x29c0000 : 0))
109 /**
110  * @brief
111  *  Flag to indicate ethernet power up requested 
112  */
113 #define TARGET_PWR_ETH(x)   1
115 /**
116  * @brief
117  *   Flag to indicate DDR power up requested
118  */
119 #define TARGET_PWR_DDR      2 
121 /**
122  * @brief
123  *  Flag to indicate timer 0 power up requested
124  */
125 #define TARGET_PWR_TIMER_0  3
128 /**
129  *  @brief
130  *    The nand is done through gpio, which is always powered up.
131  *    A value < 0 tells the low level psc driver to simply return success
132  */
133 #define TARGET_PWR_NAND     -1
135 /**
136  *  @brief
137  *      The PSC number for GPIO. GPIO is in the always on domain
138  */
139 #define TARGET_PWR_GPIO     -1
142 /**
143  *  @brief
144  *    Device DDR controller definitions
145  */
146 #define DEVICE_DDR_BASE  0x78000000
147 #define targetEmifType() ibl_EMIF_TYPE_31
149 /**
150  * @brief
151  *   The base address of MDIO 
152  */
153 #define TARGET_MDIO_BASE    0x2c81800
157 /**
158  *  @brief
159  *    GPIO address
160  */
161 #define GPIO_GPIOPID_REG                0x02B00000
162 #define GPIO_GPIOEMU_REG                0x02B00004
163 #define GPIO_BINTEN_REG                 0x02B00008
164 #define GPIO_DIR_REG                    0x02B00010
165 #define GPIO_OUT_DATA_REG               0x02B00014
166 #define GPIO_SET_DATA_REG               0x02B00018
167 #define GPIO_CLEAR_DATA_REG             0x02B0001C
168 #define GPIO_IN_DATA_REG                0x02B00020
169 #define GPIO_SET_RIS_TRIG_REG   0x02B00024
170 #define GPIO_CLR_RIS_TRIG_REG   0x02B00028
171 #define GPIO_SET_FAL_TRIG_REG   0x02B0002C
172 #define GPIO_CLR_FAL_TRIG_REG   0x02B00030
174 #define NAND_BYTES_PER_PAGE             2048
175 #define ECC_BLOCK_SIZE                  256
176 #define NAND_SPARE_BYTES_PER_PAGE       64
178 /* NAND address pack macro */
179 #define PACK_ADDR(col, page, block) \
180                 ((col & 0x00000fff) | ((page & 0x0000003f)<<16) | ((block & 0x000003ff) << 22 ))
182 /**
183  *  @brief
184  *      The base address of the I2C peripheral, and the module divisor of the cpu clock
185  */
186 #define DEVICE_I2C_BASE                 0x02b04000
187 #define DEVICE_I2C_MODULE_DIVISOR       6
190 /**
191  *  @brief
192  *      Register access macros
193  */
194 #define DEVICE_REG32_W(x,y)   *(volatile unsigned int *)(x)=(y)
195 #define DEVICE_REG32_R(x)    (*(volatile unsigned int *)(x))
197 #define BOOTBITMASK(x,y)      (   (   (  ((UINT32)1 << (((UINT32)x)-((UINT32)y)+(UINT32)1) ) - (UINT32)1 )   )   <<  ((UINT32)y)   )
198 #define BOOT_READ_BITFIELD(z,x,y)   (((UINT32)z) & BOOTBITMASK(x,y)) >> (y)
199 #define BOOT_SET_BITFIELD(z,f,x,y)  (((UINT32)z) & ~BOOTBITMASK(x,y)) | ( (((UINT32)f) << (y)) & BOOTBITMASK(x,y) )
202 /**
203  *  @brief
204  *      The c6455 supports only booting the ibl from i2c
205  */
206 #define deviceReadBootDevice()  BOOT_DEVICE_I2C
208 #define IBL_ENTER_ROM           0
209 #define iblEnterRom()     
211 #define IBL_ENABLE_EDC          0     
212 #define iblEnableEDC()
214