void arch_reset(char mode) { clear_reset_status(RESET_STATUS_ALL); switch (mode) { case 's': /* Jump into ROM at address 0 */ cpu_reset(0); break; case 'h': do_hw_reset(); break; case 'g': do_gpio_reset(); break; } }
void arch_reset(char mode, const char *cmd) { clear_reset_status(RESET_STATUS_ALL); switch (mode) { case 's': cpu_reset(0); break; case 'g': do_gpio_reset(); break; case 'h': default: do_hw_reset(); break; } }
/* * Trigger GPIO reset. * This covers various types of logic connecting gpio pin * to RESET pins (nRESET or GPIO_RESET): */ static void 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(); }
static void do_gpio_reset(void) { BUG_ON(reset_gpio == -1); gpio_direction_output(reset_gpio, 0); mdelay(2); gpio_set_value(reset_gpio, 1); mdelay(2); gpio_set_value(reset_gpio, 0); mdelay(10); WARN_ON(1); do_hw_reset(); }
void pxa_restart(char mode, const char *cmd) { local_irq_disable(); local_fiq_disable(); clear_reset_status(RESET_STATUS_ALL); switch (mode) { case 's': /* Jump into ROM at address 0 */ soft_restart(0); break; case 'g': do_gpio_reset(); break; case 'h': default: do_hw_reset(); break; } }
void pxa_restart(enum reboot_mode mode, const char *cmd) { local_irq_disable(); local_fiq_disable(); clear_reset_status(RESET_STATUS_ALL); 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; } }