static void ux500_restart(char mode, const char *cmd) { unsigned short reset_code; unsigned short preset_code; local_irq_disable(); local_fiq_disable(); preset_code = reboot_reason_get_preset(); if (preset_code != SW_RESET_CRASH) prcmu_system_reset(preset_code); else { reset_code = reboot_reason_code(cmd); prcmu_system_reset(reset_code); } mdelay(1000); /* * On 5500, the PRCMU firmware waits for up to 2 seconds for the modem * to respond. */ if (cpu_is_u5500()) mdelay(2000); printk(KERN_ERR "Reboot via PRCMU failed -- System halted\n"); while (1) ; }
void ux500_restart(enum reboot_mode mode, const char *cmd) { local_irq_disable(); local_fiq_disable(); prcmu_system_reset(0); }
void ux500_restart(char mode, const char *cmd) { #ifdef CONFIG_UX500_SOC_DB8500 unsigned short reason; #endif printk("ux500_restart: Call arch_reset(), mode: %c, cmd: %s\n", mode, cmd ); #ifdef CONFIG_UX500_SOC_DB8500 reason = sec_common_update_reboot_reason(mode, cmd); if (mode == 'L' || mode == 'U' || 'K' == mode || 'F' == mode) /* Call the PRCMU reset API (w/o reset reason code) */ prcmu_system_reset(reason); else ab8500_restart( reason ); #endif mdelay(1000); printk(KERN_ERR "Reboot via PRCMU failed -- System halted\n"); while (1); }
void kexec_hardboot_hook(void) { prcmu_system_reset(0x5501); mdelay(1000); while (1) ; }
static void shrm_modem_reset_callback(unsigned long irq) { dev_err(shm_dev->dev, "Received mod_reset_req interrupt\n"); log_stop(); #ifdef CONFIG_U8500_SHRM_MODEM_SILENT_RESET { int err; dev_info(shm_dev->dev, "Initiating Modem silent reset\n"); err = shrm_modem_reset_sequence(); if (err) dev_err(shm_dev->dev, "Failed multicast of modem reset\n"); } #else dev_info(shm_dev->dev, "Modem in reset loop, doing System reset\n"); /* Call the PRCMU reset API */ prcmu_system_reset(SW_RESET_NO_ARGUMENT); #endif }