2 * (C) Copyright 2000, 2001
3 * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
5 * SPDX-License-Identifier: GPL-2.0+
9 * ehnus: change pll frequency.
10 * Wed Sep 5 11:45:17 CST 2007
20 #ifdef CONFIG_CMD_EEPROM
22 #define EEPROM_CONF_OFFSET 0
23 #define EEPROM_TEST_OFFSET 16
24 #define EEPROM_SDSTP_PARAM 16
26 #define PLL_NAME_MAX 12
29 /* eeprom_wirtes 8Byte per op. */
30 #define EEPROM_ALTER_FREQ(freq) \
33 for (__i = 0; __i < 2; __i++) \
34 eeprom_write (CONFIG_SYS_I2C_EEPROM_ADDR, \
35 EEPROM_CONF_OFFSET + __i*BUF_STEP, \
37 BUF_STEP + __i*BUF_STEP); \
42 #define PLL_DEBUG pll_debug(EEPROM_CONF_OFFSET)
54 PLL_666, /* For now, kilauea can't support */
61 pll_name[][PLL_NAME_MAX] = {
78 pll_select[][EEPROM_SDSTP_PARAM] = {
79 /* 0: CPU 333MHz EBC 20MHz, for test only */
81 0x8c, 0x12, 0xec, 0x12, 0x88, 0x00, 0x0a, 0x00,
82 0x40, 0x08, 0x23, 0x50, 0x00, 0x05, 0x00, 0x00
87 0x8c, 0x12, 0xec, 0x12, 0x98, 0x00, 0x0a, 0x00,
88 0x40, 0x08, 0x23, 0x50, 0x00, 0x05, 0x00, 0x00
93 0x8e, 0x0e, 0xe8, 0x13, 0x98, 0x00, 0x0a, 0x00,
94 0x40, 0x08, 0x23, 0x50, 0x00, 0x05, 0x00, 0x00
99 0x8e, 0x0e, 0xe8, 0x12, 0x98, 0x00, 0x0a, 0x00,
100 0x40, 0x08, 0x23, 0x50, 0x00, 0x05, 0x00, 0x00
105 0x8e, 0x43, 0x60, 0x13, 0x98, 0x00, 0x0a, 0x00,
106 0x40, 0x08, 0x23, 0x50, 0x00, 0x05, 0x00, 0x00
111 0x8d, 0x02, 0x34, 0x13, 0x98, 0x00, 0x0a, 0x00,
112 0x40, 0x08, 0x23, 0x50, 0x00, 0x05, 0x00, 0x00
117 0x8d, 0x03, 0x78, 0x13, 0x98, 0x00, 0x0a, 0x00,
118 0x40, 0x08, 0x23, 0x50, 0x00, 0x05, 0x00, 0x00
125 testbuf[EEPROM_SDSTP_PARAM] = {
126 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
127 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff
134 uchar buffer[EEPROM_SDSTP_PARAM];
136 memset(buffer, 0, sizeof(buffer));
137 eeprom_read(CONFIG_SYS_I2C_EEPROM_ADDR, off,
138 buffer, EEPROM_SDSTP_PARAM);
140 printf("Debug: SDSTP[0-3] at offset \"0x%02x\" lists as follows: \n", off);
141 for (i = 0; i < EEPROM_SDSTP_PARAM; i++)
142 printf("%02x ", buffer[i]);
149 printf("Debug: test eeprom_write ... ");
152 * Write twice, 8 bytes per write
154 eeprom_write (CONFIG_SYS_I2C_EEPROM_ADDR, EEPROM_TEST_OFFSET,
156 eeprom_write (CONFIG_SYS_I2C_EEPROM_ADDR, EEPROM_TEST_OFFSET+8,
160 pll_debug(EEPROM_TEST_OFFSET);
164 do_pll_alter (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
170 return cmd_usage(cmdtp);
172 for (pll_freq = PLL_ebc20; pll_freq < PLL_TOTAL; pll_freq++) {
173 if (!strcmp(pll_name[pll_freq], argv[1]))
184 EEPROM_ALTER_FREQ(pll_freq);
187 case PLL_666: /* not support */
188 printf("Choose this option will result in a boot failure."
189 "\nContinue? (Y/N): ");
191 c = getc(); putc('\n');
193 if ((c == 'y') || (c == 'Y')) {
194 EEPROM_ALTER_FREQ(pll_freq);
200 pll_debug(EEPROM_CONF_OFFSET);
203 printf("DEBUG: write test\n");
208 printf("Invalid options\n\n");
209 return cmd_usage(cmdtp);
212 printf("PLL set to %s, "
213 "reset the board to take effect\n", pll_name[pll_freq]);
221 pllalter, CONFIG_SYS_MAXARGS, 1, do_pll_alter,
222 "change pll frequence",
223 "pllalter <selection> - change pll frequence \n\n\
224 ** New freq take effect after reset. ** \n\
225 ----------------------------------------------\n\
226 PLL_ebc20: Board: AMCC 405EX(r) Evaluation Board\n\
227 \t Same as PLL_333 \n\
230 ----------------------------------------------\n\
231 PLL_333: Board: AMCC 405EX(r) Evaluation Board\n\
237 ------------------------------------------------\n\
238 PLL_400@1: Board: AMCC 405EX(r) Evaluation Board\n\
244 ------------------------------------------------\n\
245 PLL_400@2: Board: AMCC 405EX(r) Evaluation Board\n\
251 ----------------------------------------------\n\
252 PLL_533: Board: AMCC 405EX(r) Evaluation Board\n\
258 ----------------------------------------------\n\
259 PLL_600: Board: AMCC 405EX(r) Evaluation Board\n\
265 ----------------------------------------------\n\
266 PLL_666: Board: AMCC 405EX(r) Evaluation Board\n\
272 -----------------------------------------------\n\
273 RCONF: Read current eeprom configuration. \n\
274 -----------------------------------------------\n\
275 WTEST: Test EEPROM write with predefined values\n\
276 -----------------------------------------------"
279 #endif /* CONFIG_CMD_EEPROM */