1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27#include <common.h>
28#include <i2c.h>
29#include <asm/arch/hardware.h>
30#include "../common/psc.h"
31#include "../common/misc.h"
32
33DECLARE_GLOBAL_DATA_PTR;
34
35int board_init(void)
36{
37
38 gd->bd->bi_arch_number = MACH_TYPE_SCHMOOGIE;
39
40
41 gd->bd->bi_boot_params = LINUX_BOOT_PARAM_ADDR;
42
43
44
45 REG(PINMUX0) = 0x00000c1f;
46
47 davinci_errata_workarounds();
48
49
50 lpsc_on(DAVINCI_LPSC_GPIO);
51
52#if !defined(CONFIG_SYS_USE_DSPLINK)
53
54 dsp_on();
55#endif
56
57 davinci_enable_uart0();
58 davinci_enable_emac();
59 davinci_enable_i2c();
60
61 lpsc_on(DAVINCI_LPSC_TIMER1);
62 timer_init();
63
64 return(0);
65}
66
67int misc_init_r(void)
68{
69 u_int8_t tmp[20], buf[10];
70 int i = 0;
71
72
73 const u_int8_t crc_tbl[256] = {
74 0x00, 0x5e, 0xbc, 0xe2, 0x61, 0x3f, 0xdd, 0x83,
75 0xc2, 0x9c, 0x7e, 0x20, 0xa3, 0xfd, 0x1f, 0x41,
76 0x9d, 0xc3, 0x21, 0x7f, 0xfc, 0xa2, 0x40, 0x1e,
77 0x5f, 0x01, 0xe3, 0xbd, 0x3e, 0x60, 0x82, 0xdc,
78 0x23, 0x7d, 0x9f, 0xc1, 0x42, 0x1c, 0xfe, 0xa0,
79 0xe1, 0xbf, 0x5d, 0x03, 0x80, 0xde, 0x3c, 0x62,
80 0xbe, 0xe0, 0x02, 0x5c, 0xdf, 0x81, 0x63, 0x3d,
81 0x7c, 0x22, 0xc0, 0x9e, 0x1d, 0x43, 0xa1, 0xff,
82 0x46, 0x18, 0xfa, 0xa4, 0x27, 0x79, 0x9b, 0xc5,
83 0x84, 0xda, 0x38, 0x66, 0xe5, 0xbb, 0x59, 0x07,
84 0xdb, 0x85, 0x67, 0x39, 0xba, 0xe4, 0x06, 0x58,
85 0x19, 0x47, 0xa5, 0xfb, 0x78, 0x26, 0xc4, 0x9a,
86 0x65, 0x3b, 0xd9, 0x87, 0x04, 0x5a, 0xb8, 0xe6,
87 0xa7, 0xf9, 0x1b, 0x45, 0xc6, 0x98, 0x7a, 0x24,
88 0xf8, 0xa6, 0x44, 0x1a, 0x99, 0xc7, 0x25, 0x7b,
89 0x3a, 0x64, 0x86, 0xd8, 0x5b, 0x05, 0xe7, 0xb9,
90 0x8c, 0xd2, 0x30, 0x6e, 0xed, 0xb3, 0x51, 0x0f,
91 0x4e, 0x10, 0xf2, 0xac, 0x2f, 0x71, 0x93, 0xcd,
92 0x11, 0x4f, 0xad, 0xf3, 0x70, 0x2e, 0xcc, 0x92,
93 0xd3, 0x8d, 0x6f, 0x31, 0xb2, 0xec, 0x0e, 0x50,
94 0xaf, 0xf1, 0x13, 0x4d, 0xce, 0x90, 0x72, 0x2c,
95 0x6d, 0x33, 0xd1, 0x8f, 0x0c, 0x52, 0xb0, 0xee,
96 0x32, 0x6c, 0x8e, 0xd0, 0x53, 0x0d, 0xef, 0xb1,
97 0xf0, 0xae, 0x4c, 0x12, 0x91, 0xcf, 0x2d, 0x73,
98 0xca, 0x94, 0x76, 0x28, 0xab, 0xf5, 0x17, 0x49,
99 0x08, 0x56, 0xb4, 0xea, 0x69, 0x37, 0xd5, 0x8b,
100 0x57, 0x09, 0xeb, 0xb5, 0x36, 0x68, 0x8a, 0xd4,
101 0x95, 0xcb, 0x29, 0x77, 0xf4, 0xaa, 0x48, 0x16,
102 0xe9, 0xb7, 0x55, 0x0b, 0x88, 0xd6, 0x34, 0x6a,
103 0x2b, 0x75, 0x97, 0xc9, 0x4a, 0x14, 0xf6, 0xa8,
104 0x74, 0x2a, 0xc8, 0x96, 0x15, 0x4b, 0xa9, 0xf7,
105 0xb6, 0xe8, 0x0a, 0x54, 0xd7, 0x89, 0x6b, 0x35
106 };
107
108 dv_display_clk_infos();
109
110
111 if (i2c_read(CONFIG_SYS_UID_ADDR, 0, 1, buf, 8)) {
112 printf("\nUID @ 0x%02x read FAILED!!!\n", CONFIG_SYS_UID_ADDR);
113 forceenv("serial#", "FAILED");
114 } else {
115 if (buf[0] != 0x70) {
116
117 printf("\nUID @ 0x%02x read FAILED!!!\n", CONFIG_SYS_UID_ADDR);
118 forceenv("serial#", "FAILED");
119 }
120 }
121
122 tmp[0] = 0;
123 for (i = 0; i < 8; i++)
124 tmp[0] = crc_tbl[tmp[0] ^ buf[i]];
125
126 if (tmp[0] != 0) {
127 printf("\nUID @ 0x%02x - BAD CRC!!!\n", CONFIG_SYS_UID_ADDR);
128 forceenv("serial#", "FAILED");
129 } else {
130
131 sprintf((char *)&tmp[0], "%02x%02x%02x%02x%02x%02x",
132 buf[6], buf[5], buf[4], buf[3], buf[2], buf[1]);
133 forceenv("serial#", (char *)&tmp[0]);
134 }
135
136 if (!eth_hw_init())
137 printf("ethernet init failed!\n");
138
139 return(0);
140}
141