/* * Trigger GPIO reset. * This covers various types of logic connecting gpio pin * to RESET pins (nRESET or GPIO_RESET):
*/ staticvoid do_gpio_reset(void)
{
BUG_ON(reset_gpio == -1);
/* drive it low */
gpio_direction_output(reset_gpio, 0);
mdelay(2); /* rising edge or drive high */
gpio_set_value(reset_gpio, 1);
mdelay(2); /* falling edge */
gpio_set_value(reset_gpio, 0);
/* give it some time */
mdelay(10);
WARN_ON(1); /* fallback */
do_hw_reset();
}
staticvoid do_hw_reset(void)
{ /* Initialize the watchdog and let it fire */
writel_relaxed(OWER_WME, OWER);
writel_relaxed(OSSR_M3, OSSR); /* ... in 100 ms */
writel_relaxed(readl_relaxed(OSCR) + 368640, OSMR3); /* * SDRAM hangs on watchdog reset on Marvell PXA270 (erratum 71) * we put SDRAM into self-refresh to prevent that
*/ while (1)
writel_relaxed(MDREFR_SLFRSH, MDREFR);
}
switch (mode) { case REBOOT_SOFT: /* Jump into ROM at address 0 */
soft_restart(0); break; case REBOOT_GPIO:
do_gpio_reset(); break; case REBOOT_HARD: default:
do_hw_reset(); break;
}
}
Messung V0.5
¤ Dauer der Verarbeitung: 0.10 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.