Lines Matching full:target

39  * Target - a target is a set of units (composed of the "final" unit and its
68 * @name: Name of this target.
177 * struct pwrseq_target - Private power-sequence target data.
179 * @name: Name of the target.
180 * @unit: Final unit for this target.
181 * @post_enable: Callback run after the target unit has been enabled, *after*
196 struct pwrseq_target *target; in pwrseq_target_new() local
198 target = kzalloc(sizeof(*target), GFP_KERNEL); in pwrseq_target_new()
199 if (!target) in pwrseq_target_new()
202 target->name = kstrdup_const(data->name, GFP_KERNEL); in pwrseq_target_new()
203 if (!target->name) { in pwrseq_target_new()
204 kfree(target); in pwrseq_target_new()
208 target->post_enable = data->post_enable; in pwrseq_target_new()
210 return target; in pwrseq_target_new()
213 static void pwrseq_target_free(struct pwrseq_target *target) in pwrseq_target_free() argument
215 if (!IS_ERR_OR_NULL(target->unit)) in pwrseq_target_free()
216 pwrseq_unit_put(target->unit); in pwrseq_target_free()
217 kfree_const(target->name); in pwrseq_target_free()
218 kfree(target); in pwrseq_target_free()
265 * @target: Reference to the target this descriptor allows to control.
271 struct pwrseq_target *target; member
282 struct pwrseq_target *target, *pos; in pwrseq_release() local
284 list_for_each_entry_safe(target, pos, &pwrseq->targets, list) { in pwrseq_release()
285 list_del(&target->list); in pwrseq_release()
286 pwrseq_target_free(target); in pwrseq_release()
418 struct pwrseq_target *target; in pwrseq_do_setup_targets() local
428 target = pwrseq_target_new(pos); in pwrseq_do_setup_targets()
429 if (!target) in pwrseq_do_setup_targets()
432 target->unit = pwrseq_unit_setup(pos->unit, &pwrseq->units, in pwrseq_do_setup_targets()
434 if (IS_ERR(target->unit)) { in pwrseq_do_setup_targets()
435 ret = PTR_ERR(target->unit); in pwrseq_do_setup_targets()
436 pwrseq_target_free(target); in pwrseq_do_setup_targets()
440 list_add_tail(&target->list, &pwrseq->targets); in pwrseq_do_setup_targets()
468 * as well as the match() callback and at least one target set.
544 struct pwrseq_target *target; in pwrseq_device_unregister() local
549 list_for_each_entry(target, &pwrseq->targets, list) in pwrseq_device_unregister()
550 WARN(target->unit->enable_count, in pwrseq_device_unregister()
614 const char *target; member
621 struct pwrseq_target *target; in pwrseq_match_device() local
634 /* We got the matching device, let's find the right target. */ in pwrseq_match_device()
635 list_for_each_entry(target, &pwrseq->targets, list) { in pwrseq_match_device()
636 if (strcmp(target->name, match_data->target)) in pwrseq_match_device()
639 match_data->desc->target = target; in pwrseq_match_device()
643 * This device does not have this target. No point in deferring as it in pwrseq_match_device()
644 * will not get a new target dynamically later. in pwrseq_match_device()
646 if (!match_data->desc->target) in pwrseq_match_device()
660 * @target: Name of the target exposed by the sequencer this device wants to
667 struct pwrseq_desc *pwrseq_get(struct device *dev, const char *target) in pwrseq_get() argument
679 match_data.target = target; in pwrseq_get()
728 * @target: Name of the target exposed by the sequencer this device wants to
735 struct pwrseq_desc *devm_pwrseq_get(struct device *dev, const char *target) in devm_pwrseq_get() argument
740 desc = pwrseq_get(dev, target); in devm_pwrseq_get()
753 struct pwrseq_unit *target);
755 struct pwrseq_unit *target);
809 "Failed to enable dependencies before power-on for target '%s': %d\n", in pwrseq_unit_enable()
818 "Failed to enable target '%s': %d\n", in pwrseq_unit_enable()
839 WARN(1, "Unmatched power-off for target '%s'\n", in pwrseq_unit_disable()
853 "Failed to disable target '%s': %d\n", in pwrseq_unit_disable()
862 "Failed to disable dependencies after power-off for target '%s': %d\n", in pwrseq_unit_disable()
891 struct pwrseq_target *target; in pwrseq_power_on() local
901 target = desc->target; in pwrseq_power_on()
902 unit = target->unit; in pwrseq_power_on()
914 if (target->post_enable) { in pwrseq_power_on()
915 ret = target->post_enable(pwrseq); in pwrseq_power_on()
951 unit = desc->target->unit; in pwrseq_power_off()
1016 struct pwrseq_target *target) in pwrseq_debugfs_seq_show_target() argument
1018 seq_printf(seq, " target: [%s] (target unit: [%s])\n", in pwrseq_debugfs_seq_show_target()
1019 target->name, target->unit->name); in pwrseq_debugfs_seq_show_target()
1042 struct pwrseq_target *target; in pwrseq_debugfs_seq_show() local
1048 list_for_each_entry(target, &pwrseq->targets, list) in pwrseq_debugfs_seq_show()
1049 pwrseq_debugfs_seq_show_target(seq, target); in pwrseq_debugfs_seq_show()