Lines Matching refs:reg_np

24     struct rt_regulator_node *reg_np;  member
29 static rt_err_t regulator_enable(struct rt_regulator_node *reg_np);
30 static rt_err_t regulator_disable(struct rt_regulator_node *reg_np);
32 rt_err_t rt_regulator_register(struct rt_regulator_node *reg_np) in rt_regulator_register() argument
36 if (!reg_np || !reg_np->dev || !reg_np->param || !reg_np->ops) in rt_regulator_register()
41 rt_list_init(&reg_np->list); in rt_regulator_register()
42 rt_list_init(&reg_np->children_nodes); in rt_regulator_register()
43 rt_list_init(&reg_np->notifier_nodes); in rt_regulator_register()
44 rt_ref_init(&reg_np->ref); in rt_regulator_register()
45 rt_atomic_store(&reg_np->enabled_count, 0); in rt_regulator_register()
47 param = reg_np->param; in rt_regulator_register()
49 reg_np->parent = RT_NULL; in rt_regulator_register()
52 if (reg_np->dev->ofw_node) in rt_regulator_register()
54 rt_ofw_data(reg_np->dev->ofw_node) = reg_np; in rt_regulator_register()
60 regulator_enable(reg_np); in rt_regulator_register()
66 rt_err_t rt_regulator_unregister(struct rt_regulator_node *reg_np) in rt_regulator_unregister() argument
70 if (!reg_np) in rt_regulator_unregister()
77 if (rt_atomic_load(&reg_np->enabled_count) != 0) in rt_regulator_unregister()
81 LOG_E("%s was enabled by consumer", reg_np->supply_name); in rt_regulator_unregister()
86 if (!(reg_np->param->boot_on || reg_np->param->always_on)) in rt_regulator_unregister()
88 regulator_disable(reg_np); in rt_regulator_unregister()
91 if (!rt_list_isempty(&reg_np->children_nodes) || rt_ref_read(&reg_np->ref) > 1) in rt_regulator_unregister()
98 reg_np->parent = RT_NULL; in rt_regulator_unregister()
99 rt_list_remove(&reg_np->list); in rt_regulator_unregister()
110 struct rt_regulator_node *reg_np; in rt_regulator_notifier_register() local
119 reg_np = reg->reg_np; in rt_regulator_notifier_register()
123 rt_list_insert_after(&reg_np->notifier_nodes, &notifier->list); in rt_regulator_notifier_register()
147 static rt_err_t regulator_notifier_call_chain(struct rt_regulator_node *reg_np, in regulator_notifier_call_chain() argument
152 rt_list_t *head = &reg_np->notifier_nodes; in regulator_notifier_call_chain()
172 static rt_uint32_t regulator_get_enable_time(struct rt_regulator_node *reg_np) in regulator_get_enable_time() argument
174 if (reg_np->param->enable_delay) in regulator_get_enable_time()
176 return reg_np->param->enable_delay; in regulator_get_enable_time()
179 if (reg_np->ops->enable_time) in regulator_get_enable_time()
181 return reg_np->ops->enable_time(reg_np); in regulator_get_enable_time()
227 static rt_err_t regulator_enable(struct rt_regulator_node *reg_np) in regulator_enable() argument
230 rt_uint32_t enable_delay = regulator_get_enable_time(reg_np); in regulator_enable()
232 if (reg_np->ops->enable) in regulator_enable()
234 err = reg_np->ops->enable(reg_np); in regulator_enable()
243 rt_atomic_add(&reg_np->enabled_count, 1); in regulator_enable()
244 err = regulator_notifier_call_chain(reg_np, RT_REGULATOR_MSG_ENABLE, RT_NULL); in regulator_enable()
248 if (!err && reg_np->parent) in regulator_enable()
250 err = regulator_enable(reg_np->parent); in regulator_enable()
272 err = regulator_enable(reg->reg_np); in rt_regulator_enable()
279 static rt_err_t regulator_disable(struct rt_regulator_node *reg_np) in regulator_disable() argument
283 if (reg_np->ops->disable) in regulator_disable()
285 err = reg_np->ops->disable(reg_np); in regulator_disable()
289 if (reg_np->param->off_on_delay) in regulator_disable()
291 regulator_delay(reg_np->param->off_on_delay); in regulator_disable()
294 err = regulator_notifier_call_chain(reg_np, RT_REGULATOR_MSG_DISABLE, RT_NULL); in regulator_disable()
298 if (!err && reg_np->parent) in regulator_disable()
300 err = regulator_disable(reg_np->parent); in regulator_disable()
320 if (rt_atomic_load(&reg->reg_np->enabled_count) != 0) in rt_regulator_disable()
322 rt_atomic_sub(&reg->reg_np->enabled_count, 1); in rt_regulator_disable()
329 err = regulator_disable(reg->reg_np); in rt_regulator_disable()
343 if (reg->reg_np->ops->is_enabled) in rt_regulator_is_enabled()
345 return reg->reg_np->ops->is_enabled(reg->reg_np); in rt_regulator_is_enabled()
348 return rt_atomic_load(&reg->reg_np->enabled_count) > 0; in rt_regulator_is_enabled()
351 static rt_err_t regulator_set_voltage(struct rt_regulator_node *reg_np, int min_uvolt, int max_uvol… in regulator_set_voltage() argument
355 if (reg_np->ops->set_voltage) in regulator_set_voltage()
359 RT_ASSERT(reg_np->ops->get_voltage != RT_NULL); in regulator_set_voltage()
361 args.old_uvolt = reg_np->ops->get_voltage(reg_np); in regulator_set_voltage()
365 err = regulator_notifier_call_chain(reg_np, RT_REGULATOR_MSG_VOLTAGE_CHANGE, &args); in regulator_set_voltage()
369 err = reg_np->ops->set_voltage(reg_np, min_uvolt, max_uvolt); in regulator_set_voltage()
374 regulator_notifier_call_chain(reg_np, RT_REGULATOR_MSG_VOLTAGE_CHANGE_ERR, in regulator_set_voltage()
379 if (!err && reg_np->parent) in regulator_set_voltage()
381 err = regulator_set_voltage(reg_np->parent, min_uvolt, max_uvolt); in regulator_set_voltage()
393 param = reg->reg_np->param; in rt_regulator_is_supported_voltage()
414 err = regulator_set_voltage(reg->reg_np, min_uvolt, max_uvolt); in rt_regulator_set_voltage()
424 struct rt_regulator_node *reg_np; in rt_regulator_get_voltage() local
433 reg_np = reg->reg_np; in rt_regulator_get_voltage()
435 if (reg_np->ops->get_voltage) in rt_regulator_get_voltage()
437 uvolt = reg_np->ops->get_voltage(reg->reg_np); in rt_regulator_get_voltage()
452 struct rt_regulator_node *reg_np; in rt_regulator_set_mode() local
461 reg_np = reg->reg_np; in rt_regulator_set_mode()
463 if (reg_np->ops->set_mode) in rt_regulator_set_mode()
465 err = reg_np->ops->set_mode(reg_np, mode); in rt_regulator_set_mode()
480 struct rt_regulator_node *reg_np; in rt_regulator_get_mode() local
489 reg_np = reg->reg_np; in rt_regulator_get_mode()
491 if (reg_np->ops->get_mode) in rt_regulator_get_mode()
493 mode = reg_np->ops->get_mode(reg_np); in rt_regulator_get_mode()
505 static void regulator_check_parent(struct rt_regulator_node *reg_np) in regulator_check_parent() argument
507 if (reg_np->parent) in regulator_check_parent()
515 struct rt_ofw_node *np = reg_np->dev->ofw_node; in regulator_check_parent()
529 if (!(reg_np->parent = rt_ofw_data(np))) in regulator_check_parent()
532 reg_np->supply_name, rt_ofw_node_full_name(np)); in regulator_check_parent()
538 rt_list_insert_after(&reg_np->parent->children_nodes, &reg_np->list); in regulator_check_parent()
548 struct rt_regulator_node *reg_np = RT_NULL; in rt_regulator_get() local
581 reg_np = rt_ofw_data(np); in rt_regulator_get()
586 if (!reg_np) in rt_regulator_get()
594 regulator_check_parent(reg_np); in rt_regulator_get()
606 reg->reg_np = reg_np; in rt_regulator_get()
607 rt_ref_get(&reg_np->ref); in rt_regulator_get()
615 struct rt_regulator_node *reg_np = rt_container_of(r, struct rt_regulator_node, ref); in regulator_release() local
617 rt_regulator_unregister(reg_np); in regulator_release()
627 rt_ref_put(&reg->reg_np->ref, &regulator_release); in rt_regulator_put()