Loading drivers/soc/qcom/subsystem_restart.c +9 −10 Original line number Diff line number Diff line Loading @@ -123,9 +123,9 @@ struct restart_log { /** * struct subsys_device - subsystem device * @desc: subsystem descriptor * @wake_lock: prevents suspend during subsystem_restart() * @wlname: name of @wake_lock * @work: context for subsystem_restart_wq_func() for this device * @ssr_wlock: prevents suspend during subsystem_restart() * @wlname: name of wakeup source * @track: state tracking and locking * @notify: subsys notify handle * @dev: device Loading @@ -142,10 +142,9 @@ struct restart_log { */ struct subsys_device { struct subsys_desc *desc; struct wake_lock wake_lock; char wlname[64]; struct work_struct work; struct wakeup_source ssr_wlock; char wlname[64]; struct subsys_tracking track; void *notify; Loading Loading @@ -728,7 +727,7 @@ static void subsystem_restart_wq_func(struct work_struct *work) spin_lock_irqsave(&track->s_lock, flags); track->p_state = SUBSYS_NORMAL; wake_unlock(&dev->wake_lock); __pm_relax(&dev->ssr_wlock); spin_unlock_irqrestore(&track->s_lock, flags); } Loading @@ -752,7 +751,7 @@ static void __subsystem_restart_dev(struct subsys_device *dev) if (dev->track.state == SUBSYS_ONLINE && track->p_state != SUBSYS_RESTARTING) { track->p_state = SUBSYS_CRASHED; wake_lock(&dev->wake_lock); __pm_stay_awake(&dev->ssr_wlock); queue_work(ssr_wq, &dev->work); } else { panic("Subsystem %s crashed during SSR!", name); Loading Loading @@ -1017,7 +1016,7 @@ static void subsys_device_release(struct device *dev) { struct subsys_device *subsys = to_subsys(dev); wake_lock_destroy(&subsys->wake_lock); wakeup_source_trash(&subsys->ssr_wlock); mutex_destroy(&subsys->track.lock); ida_simple_remove(&subsys_ida, subsys->id); kfree(subsys); Loading Loading @@ -1317,7 +1316,7 @@ struct subsys_device *subsys_register(struct subsys_desc *desc) subsys->notify = subsys_notif_add_subsys(desc->name); snprintf(subsys->wlname, sizeof(subsys->wlname), "ssr(%s)", desc->name); wake_lock_init(&subsys->wake_lock, WAKE_LOCK_SUSPEND, subsys->wlname); wakeup_source_init(&subsys->ssr_wlock, subsys->wlname); INIT_WORK(&subsys->work, subsystem_restart_wq_func); spin_lock_init(&subsys->track.s_lock); Loading Loading @@ -1371,7 +1370,7 @@ err_debugfs: mutex_destroy(&subsys->track.lock); ida_simple_remove(&subsys_ida, subsys->id); err_ida: wake_lock_destroy(&subsys->wake_lock); wakeup_source_trash(&subsys->ssr_wlock); kfree(subsys); return ERR_PTR(ret); } Loading Loading
drivers/soc/qcom/subsystem_restart.c +9 −10 Original line number Diff line number Diff line Loading @@ -123,9 +123,9 @@ struct restart_log { /** * struct subsys_device - subsystem device * @desc: subsystem descriptor * @wake_lock: prevents suspend during subsystem_restart() * @wlname: name of @wake_lock * @work: context for subsystem_restart_wq_func() for this device * @ssr_wlock: prevents suspend during subsystem_restart() * @wlname: name of wakeup source * @track: state tracking and locking * @notify: subsys notify handle * @dev: device Loading @@ -142,10 +142,9 @@ struct restart_log { */ struct subsys_device { struct subsys_desc *desc; struct wake_lock wake_lock; char wlname[64]; struct work_struct work; struct wakeup_source ssr_wlock; char wlname[64]; struct subsys_tracking track; void *notify; Loading Loading @@ -728,7 +727,7 @@ static void subsystem_restart_wq_func(struct work_struct *work) spin_lock_irqsave(&track->s_lock, flags); track->p_state = SUBSYS_NORMAL; wake_unlock(&dev->wake_lock); __pm_relax(&dev->ssr_wlock); spin_unlock_irqrestore(&track->s_lock, flags); } Loading @@ -752,7 +751,7 @@ static void __subsystem_restart_dev(struct subsys_device *dev) if (dev->track.state == SUBSYS_ONLINE && track->p_state != SUBSYS_RESTARTING) { track->p_state = SUBSYS_CRASHED; wake_lock(&dev->wake_lock); __pm_stay_awake(&dev->ssr_wlock); queue_work(ssr_wq, &dev->work); } else { panic("Subsystem %s crashed during SSR!", name); Loading Loading @@ -1017,7 +1016,7 @@ static void subsys_device_release(struct device *dev) { struct subsys_device *subsys = to_subsys(dev); wake_lock_destroy(&subsys->wake_lock); wakeup_source_trash(&subsys->ssr_wlock); mutex_destroy(&subsys->track.lock); ida_simple_remove(&subsys_ida, subsys->id); kfree(subsys); Loading Loading @@ -1317,7 +1316,7 @@ struct subsys_device *subsys_register(struct subsys_desc *desc) subsys->notify = subsys_notif_add_subsys(desc->name); snprintf(subsys->wlname, sizeof(subsys->wlname), "ssr(%s)", desc->name); wake_lock_init(&subsys->wake_lock, WAKE_LOCK_SUSPEND, subsys->wlname); wakeup_source_init(&subsys->ssr_wlock, subsys->wlname); INIT_WORK(&subsys->work, subsystem_restart_wq_func); spin_lock_init(&subsys->track.s_lock); Loading Loading @@ -1371,7 +1370,7 @@ err_debugfs: mutex_destroy(&subsys->track.lock); ida_simple_remove(&subsys_ida, subsys->id); err_ida: wake_lock_destroy(&subsys->wake_lock); wakeup_source_trash(&subsys->ssr_wlock); kfree(subsys); return ERR_PTR(ret); } Loading