Loading arch/arm/mach-msm/pil-pronto.c +0 −2 Original line number Diff line number Diff line Loading @@ -350,7 +350,6 @@ static int wcnss_shutdown(const struct subsys_desc *subsys, bool force_stop) { struct pronto_data *drv = subsys_to_drv(subsys); disable_irq(drv->subsys_desc.wdog_bite_irq); pil_shutdown(&drv->desc); return 0; } Loading @@ -365,7 +364,6 @@ static int wcnss_powerup(const struct subsys_desc *subsys) return ret; drv->restart_inprogress = false; enable_irq(drv->subsys_desc.wdog_bite_irq); return ret; } Loading arch/arm/mach-msm/pil-q6v5-lpass.c +0 −2 Original line number Diff line number Diff line Loading @@ -338,7 +338,6 @@ static int adsp_shutdown(const struct subsys_desc *subsys, bool force_stop) mb(); } pil_shutdown(&drv->q6->desc); disable_irq(drv->subsys_desc.wdog_bite_irq); pr_debug("ADSP is Down\n"); adsp_set_state("OFFLINE"); Loading @@ -350,7 +349,6 @@ static int adsp_powerup(const struct subsys_desc *subsys) struct lpass_data *drv = subsys_to_lpass(subsys); int ret = 0; ret = pil_boot(&drv->q6->desc); enable_irq(drv->subsys_desc.wdog_bite_irq); pr_debug("ADSP is back online\n"); adsp_set_state("ONLINE"); Loading arch/arm/mach-msm/pil-q6v5-mss.c +2 −2 Original line number Diff line number Diff line Loading @@ -127,7 +127,7 @@ static int modem_shutdown(const struct subsys_desc *subsys, bool force_stop) pil_shutdown(&drv->mba->desc); pil_shutdown(&drv->q6->desc); disable_irq(drv->subsys_desc.wdog_bite_irq); return 0; } Loading @@ -151,7 +151,7 @@ static int modem_powerup(const struct subsys_desc *subsys) ret = pil_boot(&drv->mba->desc); if (ret) pil_shutdown(&drv->q6->desc); enable_irq(drv->subsys_desc.wdog_bite_irq); return ret; } Loading arch/arm/mach-msm/subsystem_restart.c +33 −0 Original line number Diff line number Diff line Loading @@ -421,6 +421,30 @@ static void notify_each_subsys_device(struct subsys_device **list, } } static void enable_all_irqs(struct subsys_device *dev) { if (dev->desc->err_ready_irq) enable_irq(dev->desc->err_ready_irq); if (dev->desc->wdog_bite_irq && dev->desc->wdog_bite_handler) enable_irq(dev->desc->wdog_bite_irq); if (dev->desc->err_fatal_irq && dev->desc->err_fatal_handler) enable_irq(dev->desc->err_fatal_irq); if (dev->desc->stop_ack_irq && dev->desc->stop_ack_handler) enable_irq(dev->desc->stop_ack_irq); } static void disable_all_irqs(struct subsys_device *dev) { if (dev->desc->err_ready_irq) disable_irq(dev->desc->err_ready_irq); if (dev->desc->wdog_bite_irq && dev->desc->wdog_bite_handler) disable_irq(dev->desc->wdog_bite_irq); if (dev->desc->err_fatal_irq && dev->desc->err_fatal_handler) disable_irq(dev->desc->err_fatal_irq); if (dev->desc->stop_ack_irq && dev->desc->stop_ack_handler) disable_irq(dev->desc->stop_ack_irq); } static int wait_for_err_ready(struct subsys_device *subsys) { int ret; Loading @@ -447,6 +471,7 @@ static void subsystem_shutdown(struct subsys_device *dev, void *data) panic("subsys-restart: [%p]: Failed to shutdown %s!", current, name); subsys_set_state(dev, SUBSYS_OFFLINE); disable_all_irqs(dev); } static void subsystem_ramdump(struct subsys_device *dev, void *data) Loading @@ -466,8 +491,10 @@ static void subsystem_powerup(struct subsys_device *dev, void *data) pr_info("[%p]: Powering up %s\n", current, name); init_completion(&dev->err_ready); if (dev->desc->powerup(dev->desc) < 0) panic("[%p]: Powerup error: %s!", current, name); enable_all_irqs(dev); ret = wait_for_err_ready(dev); if (ret) Loading Loading @@ -505,6 +532,7 @@ static int subsys_start(struct subsys_device *subsys) ret = subsys->desc->powerup(subsys->desc); if (ret) return ret; enable_all_irqs(subsys); if (subsys->desc->is_not_loadable) { subsys_set_state(subsys, SUBSYS_ONLINE); Loading @@ -517,6 +545,7 @@ static int subsys_start(struct subsys_device *subsys) * the device because error ready timed out. */ subsys->desc->shutdown(subsys->desc, false); disable_all_irqs(subsys); return ret; } else { subsys_set_state(subsys, SUBSYS_ONLINE); Loading @@ -532,6 +561,7 @@ static void subsys_stop(struct subsys_device *subsys) notify_each_subsys_device(&subsys, 1, SUBSYS_BEFORE_SHUTDOWN, NULL); subsys->desc->shutdown(subsys->desc, false); subsys_set_state(subsys, SUBSYS_OFFLINE); disable_all_irqs(subsys); notify_each_subsys_device(&subsys, 1, SUBSYS_AFTER_SHUTDOWN, NULL); } Loading Loading @@ -1083,6 +1113,7 @@ static int subsys_setup_irqs(struct subsys_device *subsys) desc->name, ret); return ret; } disable_irq(desc->err_fatal_irq); } if (desc->stop_ack_irq && desc->stop_ack_handler) { Loading @@ -1094,6 +1125,7 @@ static int subsys_setup_irqs(struct subsys_device *subsys) desc->name, ret); return ret; } disable_irq(desc->stop_ack_irq); } if (desc->wdog_bite_irq && desc->wdog_bite_handler) { Loading @@ -1120,6 +1152,7 @@ static int subsys_setup_irqs(struct subsys_device *subsys) desc->name); return ret; } disable_irq(desc->err_ready_irq); } return 0; Loading Loading
arch/arm/mach-msm/pil-pronto.c +0 −2 Original line number Diff line number Diff line Loading @@ -350,7 +350,6 @@ static int wcnss_shutdown(const struct subsys_desc *subsys, bool force_stop) { struct pronto_data *drv = subsys_to_drv(subsys); disable_irq(drv->subsys_desc.wdog_bite_irq); pil_shutdown(&drv->desc); return 0; } Loading @@ -365,7 +364,6 @@ static int wcnss_powerup(const struct subsys_desc *subsys) return ret; drv->restart_inprogress = false; enable_irq(drv->subsys_desc.wdog_bite_irq); return ret; } Loading
arch/arm/mach-msm/pil-q6v5-lpass.c +0 −2 Original line number Diff line number Diff line Loading @@ -338,7 +338,6 @@ static int adsp_shutdown(const struct subsys_desc *subsys, bool force_stop) mb(); } pil_shutdown(&drv->q6->desc); disable_irq(drv->subsys_desc.wdog_bite_irq); pr_debug("ADSP is Down\n"); adsp_set_state("OFFLINE"); Loading @@ -350,7 +349,6 @@ static int adsp_powerup(const struct subsys_desc *subsys) struct lpass_data *drv = subsys_to_lpass(subsys); int ret = 0; ret = pil_boot(&drv->q6->desc); enable_irq(drv->subsys_desc.wdog_bite_irq); pr_debug("ADSP is back online\n"); adsp_set_state("ONLINE"); Loading
arch/arm/mach-msm/pil-q6v5-mss.c +2 −2 Original line number Diff line number Diff line Loading @@ -127,7 +127,7 @@ static int modem_shutdown(const struct subsys_desc *subsys, bool force_stop) pil_shutdown(&drv->mba->desc); pil_shutdown(&drv->q6->desc); disable_irq(drv->subsys_desc.wdog_bite_irq); return 0; } Loading @@ -151,7 +151,7 @@ static int modem_powerup(const struct subsys_desc *subsys) ret = pil_boot(&drv->mba->desc); if (ret) pil_shutdown(&drv->q6->desc); enable_irq(drv->subsys_desc.wdog_bite_irq); return ret; } Loading
arch/arm/mach-msm/subsystem_restart.c +33 −0 Original line number Diff line number Diff line Loading @@ -421,6 +421,30 @@ static void notify_each_subsys_device(struct subsys_device **list, } } static void enable_all_irqs(struct subsys_device *dev) { if (dev->desc->err_ready_irq) enable_irq(dev->desc->err_ready_irq); if (dev->desc->wdog_bite_irq && dev->desc->wdog_bite_handler) enable_irq(dev->desc->wdog_bite_irq); if (dev->desc->err_fatal_irq && dev->desc->err_fatal_handler) enable_irq(dev->desc->err_fatal_irq); if (dev->desc->stop_ack_irq && dev->desc->stop_ack_handler) enable_irq(dev->desc->stop_ack_irq); } static void disable_all_irqs(struct subsys_device *dev) { if (dev->desc->err_ready_irq) disable_irq(dev->desc->err_ready_irq); if (dev->desc->wdog_bite_irq && dev->desc->wdog_bite_handler) disable_irq(dev->desc->wdog_bite_irq); if (dev->desc->err_fatal_irq && dev->desc->err_fatal_handler) disable_irq(dev->desc->err_fatal_irq); if (dev->desc->stop_ack_irq && dev->desc->stop_ack_handler) disable_irq(dev->desc->stop_ack_irq); } static int wait_for_err_ready(struct subsys_device *subsys) { int ret; Loading @@ -447,6 +471,7 @@ static void subsystem_shutdown(struct subsys_device *dev, void *data) panic("subsys-restart: [%p]: Failed to shutdown %s!", current, name); subsys_set_state(dev, SUBSYS_OFFLINE); disable_all_irqs(dev); } static void subsystem_ramdump(struct subsys_device *dev, void *data) Loading @@ -466,8 +491,10 @@ static void subsystem_powerup(struct subsys_device *dev, void *data) pr_info("[%p]: Powering up %s\n", current, name); init_completion(&dev->err_ready); if (dev->desc->powerup(dev->desc) < 0) panic("[%p]: Powerup error: %s!", current, name); enable_all_irqs(dev); ret = wait_for_err_ready(dev); if (ret) Loading Loading @@ -505,6 +532,7 @@ static int subsys_start(struct subsys_device *subsys) ret = subsys->desc->powerup(subsys->desc); if (ret) return ret; enable_all_irqs(subsys); if (subsys->desc->is_not_loadable) { subsys_set_state(subsys, SUBSYS_ONLINE); Loading @@ -517,6 +545,7 @@ static int subsys_start(struct subsys_device *subsys) * the device because error ready timed out. */ subsys->desc->shutdown(subsys->desc, false); disable_all_irqs(subsys); return ret; } else { subsys_set_state(subsys, SUBSYS_ONLINE); Loading @@ -532,6 +561,7 @@ static void subsys_stop(struct subsys_device *subsys) notify_each_subsys_device(&subsys, 1, SUBSYS_BEFORE_SHUTDOWN, NULL); subsys->desc->shutdown(subsys->desc, false); subsys_set_state(subsys, SUBSYS_OFFLINE); disable_all_irqs(subsys); notify_each_subsys_device(&subsys, 1, SUBSYS_AFTER_SHUTDOWN, NULL); } Loading Loading @@ -1083,6 +1113,7 @@ static int subsys_setup_irqs(struct subsys_device *subsys) desc->name, ret); return ret; } disable_irq(desc->err_fatal_irq); } if (desc->stop_ack_irq && desc->stop_ack_handler) { Loading @@ -1094,6 +1125,7 @@ static int subsys_setup_irqs(struct subsys_device *subsys) desc->name, ret); return ret; } disable_irq(desc->stop_ack_irq); } if (desc->wdog_bite_irq && desc->wdog_bite_handler) { Loading @@ -1120,6 +1152,7 @@ static int subsys_setup_irqs(struct subsys_device *subsys) desc->name); return ret; } disable_irq(desc->err_ready_irq); } return 0; Loading