powerpc/t4240qds: Add board detail for bdinfo command
Print more detail information including core voltage, RCW source, switch settings, etc. with bdinfo command. Signed-off-by: York Sun <yorksun@freescale.com> CC: Wolfgang Denk <wd@denx.de> CC: Tom Rini <trini@ti.com> Signed-off-by: Andy Fleming <afleming@freescale.com>
This commit is contained in:
parent
e79394643b
commit
9cefbd64b2
1 changed files with 100 additions and 0 deletions
|
@ -642,6 +642,106 @@ void ft_board_setup(void *blob, bd_t *bd)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This function is called by bdinfo to print detail board information.
|
||||||
|
* As an exmaple for future board, we organize the messages into
|
||||||
|
* several sections. If applicable, the message is in the format of
|
||||||
|
* <name> = <value>
|
||||||
|
* It should aligned with normal output of bdinfo command.
|
||||||
|
*
|
||||||
|
* Voltage: Core, DDR and another configurable voltages
|
||||||
|
* Clock : Critical clocks which are not printed already
|
||||||
|
* RCW : RCW source if not printed already
|
||||||
|
* Misc : Other important information not in above catagories
|
||||||
|
*/
|
||||||
|
void board_detail(void)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
u8 brdcfg[16], dutcfg[16], rst_ctl;
|
||||||
|
int vdd, rcwsrc;
|
||||||
|
static const char * const clk[] = {"66.67", "100", "125", "133.33"};
|
||||||
|
|
||||||
|
for (i = 0; i < 16; i++) {
|
||||||
|
brdcfg[i] = qixis_read(offsetof(struct qixis, brdcfg[0]) + i);
|
||||||
|
dutcfg[i] = qixis_read(offsetof(struct qixis, dutcfg[0]) + i);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Voltage secion */
|
||||||
|
if (!select_i2c_ch_pca9547(I2C_MUX_CH_VOL_MONITOR)) {
|
||||||
|
vdd = read_voltage();
|
||||||
|
if (vdd > 0)
|
||||||
|
printf("Core voltage= %d mV\n", vdd);
|
||||||
|
select_i2c_ch_pca9547(I2C_MUX_CH_DEFAULT);
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("XVDD = 1.%d V\n", ((brdcfg[8] & 0xf) - 4) * 5 + 25);
|
||||||
|
|
||||||
|
/* clock section */
|
||||||
|
printf("SYSCLK = %s MHz\nDDRCLK = %s MHz\n",
|
||||||
|
clk[(brdcfg[11] >> 2) & 0x3], clk[brdcfg[11] & 3]);
|
||||||
|
|
||||||
|
/* RCW section */
|
||||||
|
rcwsrc = (dutcfg[0] << 1) + (dutcfg[1] & 1);
|
||||||
|
puts("RCW source = ");
|
||||||
|
switch (rcwsrc) {
|
||||||
|
case 0x017:
|
||||||
|
case 0x01f:
|
||||||
|
puts("8-bit NOR\n");
|
||||||
|
break;
|
||||||
|
case 0x027:
|
||||||
|
case 0x02F:
|
||||||
|
puts("16-bit NOR\n");
|
||||||
|
break;
|
||||||
|
case 0x040:
|
||||||
|
puts("SDHC/eMMC\n");
|
||||||
|
break;
|
||||||
|
case 0x044:
|
||||||
|
puts("SPI 16-bit addressing\n");
|
||||||
|
break;
|
||||||
|
case 0x045:
|
||||||
|
puts("SPI 24-bit addressing\n");
|
||||||
|
break;
|
||||||
|
case 0x048:
|
||||||
|
puts("I2C normal addressing\n");
|
||||||
|
break;
|
||||||
|
case 0x049:
|
||||||
|
puts("I2C extended addressing\n");
|
||||||
|
break;
|
||||||
|
case 0x108:
|
||||||
|
case 0x109:
|
||||||
|
case 0x10a:
|
||||||
|
case 0x10b:
|
||||||
|
puts("8-bit NAND, 2KB\n");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
if ((rcwsrc >= 0x080) && (rcwsrc <= 0x09f))
|
||||||
|
puts("Hard-coded RCW\n");
|
||||||
|
else if ((rcwsrc >= 0x110) && (rcwsrc <= 0x11f))
|
||||||
|
puts("8-bit NAND, 4KB\n");
|
||||||
|
else
|
||||||
|
puts("unknown\n");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Misc section */
|
||||||
|
rst_ctl = QIXIS_READ(rst_ctl);
|
||||||
|
puts("HRESET_REQ = ");
|
||||||
|
switch (rst_ctl & 0x30) {
|
||||||
|
case 0x00:
|
||||||
|
puts("Ignored\n");
|
||||||
|
break;
|
||||||
|
case 0x10:
|
||||||
|
puts("Assert HRESET\n");
|
||||||
|
break;
|
||||||
|
case 0x30:
|
||||||
|
puts("Reset system\n");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
puts("N/A\n");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Reverse engineering switch settings.
|
* Reverse engineering switch settings.
|
||||||
* Some bits cannot be figured out. They will be displayed as
|
* Some bits cannot be figured out. They will be displayed as
|
||||||
|
|
Loading…
Reference in a new issue