mirror of
https://xff.cz/git/u-boot/
synced 2025-09-22 02:52:13 +02:00
freescale/qixis: Add support for booting from NAND
Use "qixis_reset nand" to reset the board to boot from NAND. Signed-off-by: Scott Wood <scottwood@freescale.com> Signed-off-by: York Sun <yorksun@freescale.com>
This commit is contained in:
@@ -138,24 +138,23 @@ void qixis_bank_reset(void)
|
|||||||
QIXIS_WRITE(rcfg_ctl, QIXIS_RCFG_CTL_RECONFIG_START);
|
QIXIS_WRITE(rcfg_ctl, QIXIS_RCFG_CTL_RECONFIG_START);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Set the boot bank to the power-on default bank */
|
static void __maybe_unused set_lbmap(int lbmap)
|
||||||
void clear_altbank(void)
|
|
||||||
{
|
{
|
||||||
u8 reg;
|
u8 reg;
|
||||||
|
|
||||||
reg = QIXIS_READ(brdcfg[0]);
|
reg = QIXIS_READ(brdcfg[0]);
|
||||||
reg = (reg & ~QIXIS_LBMAP_MASK) | QIXIS_LBMAP_DFLTBANK;
|
reg = (reg & ~QIXIS_LBMAP_MASK) | lbmap;
|
||||||
QIXIS_WRITE(brdcfg[0], reg);
|
QIXIS_WRITE(brdcfg[0], reg);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Set the boot bank to the alternate bank */
|
static void __maybe_unused set_rcw_src(int rcw_src)
|
||||||
void set_altbank(void)
|
|
||||||
{
|
{
|
||||||
u8 reg;
|
u8 reg;
|
||||||
|
|
||||||
reg = QIXIS_READ(brdcfg[0]);
|
reg = QIXIS_READ(dutcfg[1]);
|
||||||
reg = (reg & ~QIXIS_LBMAP_MASK) | QIXIS_LBMAP_ALTBANK;
|
reg = (reg & ~1) | (rcw_src & 1);
|
||||||
QIXIS_WRITE(brdcfg[0], reg);
|
QIXIS_WRITE(dutcfg[1], reg);
|
||||||
|
QIXIS_WRITE(dutcfg[0], (rcw_src >> 1) & 0xff);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void qixis_dump_regs(void)
|
static void qixis_dump_regs(void)
|
||||||
@@ -201,11 +200,22 @@ int qixis_reset_cmd(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
|
|||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (argc <= 1) {
|
if (argc <= 1) {
|
||||||
clear_altbank();
|
set_lbmap(QIXIS_LBMAP_DFLTBANK);
|
||||||
qixis_reset();
|
qixis_reset();
|
||||||
} else if (strcmp(argv[1], "altbank") == 0) {
|
} else if (strcmp(argv[1], "altbank") == 0) {
|
||||||
set_altbank();
|
set_lbmap(QIXIS_LBMAP_ALTBANK);
|
||||||
qixis_bank_reset();
|
qixis_bank_reset();
|
||||||
|
} else if (strcmp(argv[1], "nand") == 0) {
|
||||||
|
#ifdef QIXIS_LBMAP_NAND
|
||||||
|
QIXIS_WRITE(rst_ctl, 0x30);
|
||||||
|
QIXIS_WRITE(rcfg_ctl, 0);
|
||||||
|
set_lbmap(QIXIS_LBMAP_NAND);
|
||||||
|
set_rcw_src(QIXIS_RCW_SRC_NAND);
|
||||||
|
QIXIS_WRITE(rcfg_ctl, 0x20);
|
||||||
|
QIXIS_WRITE(rcfg_ctl, 0x21);
|
||||||
|
#else
|
||||||
|
printf("Not implemented\n");
|
||||||
|
#endif
|
||||||
} else if (strcmp(argv[1], "watchdog") == 0) {
|
} else if (strcmp(argv[1], "watchdog") == 0) {
|
||||||
static char *period[9] = {"2s", "4s", "8s", "16s", "32s",
|
static char *period[9] = {"2s", "4s", "8s", "16s", "32s",
|
||||||
"1min", "2min", "4min", "8min"};
|
"1min", "2min", "4min", "8min"};
|
||||||
@@ -244,6 +254,7 @@ U_BOOT_CMD(
|
|||||||
"Reset the board using the FPGA sequencer",
|
"Reset the board using the FPGA sequencer",
|
||||||
"- hard reset to default bank\n"
|
"- hard reset to default bank\n"
|
||||||
"qixis_reset altbank - reset to alternate bank\n"
|
"qixis_reset altbank - reset to alternate bank\n"
|
||||||
|
"qixis_reset nand - reset to nand\n"
|
||||||
"qixis watchdog <watchdog_period> - set the watchdog period\n"
|
"qixis watchdog <watchdog_period> - set the watchdog period\n"
|
||||||
" period: 1s 2s 4s 8s 16s 32s 1min 2min 4min 8min\n"
|
" period: 1s 2s 4s 8s 16s 32s 1min 2min 4min 8min\n"
|
||||||
"qixis_reset dump - display the QIXIS registers\n"
|
"qixis_reset dump - display the QIXIS registers\n"
|
||||||
|
Reference in New Issue
Block a user