[processor-sdk/performance-audio-sr.git] / psdk_cust / pdk_k2g_1_0_1_2_eng / packages / ti / board / src / bbbAM335x / bbbAM335x.c
1 /******************************************************************************
2 * Copyright (c) 2010-2015 Texas Instruments Incorporated - http://www.ti.com
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 *
8 * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 *
11 * Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the
14 * distribution.
15 *
16 * Neither the name of Texas Instruments Incorporated nor the names of
17 * its contributors may be used to endorse or promote products derived
18 * from this software without specific prior written permission.
19 *
20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 *
32 *****************************************************************************/
34 #include <stdint.h>
35 #include <stdlib.h>
36 #include <stdio.h>
37 #include "board_internal.h"
38 #include "error.h"
39 #include "chipdb.h"
40 #include "prcm.h"
41 #include "board_cfg.h"
44 /* EEPROM data on BeagleBoneBlack */
45 char eepromData[I2C_EEPROM_RX_LENGTH] = {0x55, 0x33, 0xEE, 0x41, 0x33,
46 0x33, 0x35, 0x42, 0x4E, 0x4C};
48 /* Set the desired DDR3 configuration -- assumes 66.67 MHz DDR3 clock input */
49 Board_STATUS Board_DDR3Init()
50 {
51 return BOARD_SOK;
52 }
54 Board_STATUS Board_PLLInit()
55 {
56 return BOARD_SOK;
57 }
59 Board_STATUS Board_moduleClockInit()
60 {
61 int32_t status;
63 /* UART */
64 status = PRCMModuleEnable(CHIPDB_MOD_ID_UART, 0U, 0U);
66 /* CPSW */
67 if(S_PASS == status)
68 {
69 status = PRCMModuleEnable(CHIPDB_MOD_ID_CPSW, 0U, 0U);
70 }
72 /* GPIO */
73 if(S_PASS == status)
74 {
75 status = PRCMModuleEnable(CHIPDB_MOD_ID_GPIO, 0U, 0U);
76 }
77 if(S_PASS == status)
78 {
79 status = PRCMModuleEnable(CHIPDB_MOD_ID_GPIO, 1U, 0U);
80 }
81 if(S_PASS == status)
82 {
83 status = PRCMModuleEnable(CHIPDB_MOD_ID_GPIO, 3U, 0U);
84 }
86 /* I2C */
87 if(S_PASS == status)
88 {
89 status = PRCMModuleEnable(CHIPDB_MOD_ID_I2C, 0U, 0U);
90 }
92 /* MCSPI */
93 if(S_PASS == status)
94 {
95 status = PRCMModuleEnable(CHIPDB_MOD_ID_MCSPI, 1U, 0U);
96 }
98 /* EDMA3CC */
99 if(S_PASS == status)
100 {
101 status = PRCMModuleEnable(CHIPDB_MOD_ID_EDMA3CC, 0U, 0U);
102 }
104 /* EDMA3TC0 */
105 if(S_PASS == status)
106 {
107 status = PRCMModuleEnable(CHIPDB_MOD_ID_EDMA3TC, 0U, 0U);
108 }
110 /* EDMA3TC1 */
111 if(S_PASS == status)
112 {
113 status = PRCMModuleEnable(CHIPDB_MOD_ID_EDMA3TC, 1U, 0U);
114 }
116 /* EDMA3TC2 */
117 if(S_PASS == status)
118 {
119 status = PRCMModuleEnable(CHIPDB_MOD_ID_EDMA3TC, 2U, 0U);
120 }
122 /* MMCSD */
123 if(S_PASS == status)
124 {
125 status = PRCMModuleEnable(CHIPDB_MOD_ID_MMCSD, 0U, 0U);
126 }
127 if(S_PASS == status)
128 {
129 status = PRCMModuleEnable(CHIPDB_MOD_ID_MMCSD, 1U, 0U);
130 }
132 return BOARD_SOK;
133 }
135 Board_STATUS Board_init(Board_initCfg cfg)
136 {
137 Board_STATUS ret = BOARD_SOK;
139 if (cfg & BOARD_INIT_PLL)
140 ret = Board_PLLInit();
141 if (ret != BOARD_SOK)
142 return ret;
144 if (cfg & BOARD_INIT_MODULE_CLOCK)
145 ret = Board_moduleClockInit();
146 if (ret != BOARD_SOK)
147 return ret;
149 if (cfg & BOARD_INIT_DDR)
150 ret = Board_DDR3Init();
151 if (ret != BOARD_SOK)
152 return ret;
154 if (cfg & BOARD_INIT_PINMUX_CONFIG)
155 ret = Board_pinmuxConfig();
156 if (ret != BOARD_SOK)
157 return ret;
159 if (cfg & BOARD_INIT_UART_STDIO)
160 ret = Board_uartStdioInit();
161 if (ret != BOARD_SOK)
162 return ret;
164 return ret;
165 }
167 void boardInit()
168 {
169 Board_PLLInit();
170 Board_moduleClockInit();
171 Board_DDR3Init();
172 Board_pinmuxConfig();
173 }