Lines Matching full:dpll

3  * Generic netlink for DPLL management framework
16 #include <uapi/linux/dpll.h>
34 dpll_msg_add_dev_handle(struct sk_buff *msg, struct dpll_device *dpll) in dpll_msg_add_dev_handle() argument
36 if (nla_put_u32(msg, DPLL_A_ID, dpll->id)) in dpll_msg_add_dev_handle()
92 dpll_msg_add_mode(struct sk_buff *msg, struct dpll_device *dpll, in dpll_msg_add_mode() argument
95 const struct dpll_device_ops *ops = dpll_device_ops(dpll); in dpll_msg_add_mode()
99 ret = ops->mode_get(dpll, dpll_priv(dpll), &mode, extack); in dpll_msg_add_mode()
109 dpll_msg_add_mode_supported(struct sk_buff *msg, struct dpll_device *dpll, in dpll_msg_add_mode_supported() argument
112 const struct dpll_device_ops *ops = dpll_device_ops(dpll); in dpll_msg_add_mode_supported()
120 ret = ops->mode_get(dpll, dpll_priv(dpll), &mode, extack); in dpll_msg_add_mode_supported()
130 dpll_msg_add_lock_status(struct sk_buff *msg, struct dpll_device *dpll, in dpll_msg_add_lock_status() argument
133 const struct dpll_device_ops *ops = dpll_device_ops(dpll); in dpll_msg_add_lock_status()
137 ret = ops->lock_status_get(dpll, dpll_priv(dpll), &status, extack); in dpll_msg_add_lock_status()
147 dpll_msg_add_temp(struct sk_buff *msg, struct dpll_device *dpll, in dpll_msg_add_temp() argument
150 const struct dpll_device_ops *ops = dpll_device_ops(dpll); in dpll_msg_add_temp()
156 ret = ops->temp_get(dpll, dpll_priv(dpll), &temp, extack); in dpll_msg_add_temp()
171 struct dpll_device *dpll = ref->dpll; in dpll_msg_add_pin_prio() local
177 ret = ops->prio_get(pin, dpll_pin_on_dpll_priv(dpll, pin), dpll, in dpll_msg_add_pin_prio()
178 dpll_priv(dpll), &prio, extack); in dpll_msg_add_pin_prio()
193 struct dpll_device *dpll = ref->dpll; in dpll_msg_add_pin_on_dpll_state() local
199 ret = ops->state_on_dpll_get(pin, dpll_pin_on_dpll_priv(dpll, pin), in dpll_msg_add_pin_on_dpll_state()
200 dpll, dpll_priv(dpll), &state, extack); in dpll_msg_add_pin_on_dpll_state()
215 struct dpll_device *dpll = ref->dpll; in dpll_msg_add_pin_direction() local
219 ret = ops->direction_get(pin, dpll_pin_on_dpll_priv(dpll, pin), dpll, in dpll_msg_add_pin_direction()
220 dpll_priv(dpll), &direction, extack); in dpll_msg_add_pin_direction()
235 struct dpll_device *dpll = ref->dpll; in dpll_msg_add_pin_phase_adjust() local
241 ret = ops->phase_adjust_get(pin, dpll_pin_on_dpll_priv(dpll, pin), in dpll_msg_add_pin_phase_adjust()
242 dpll, dpll_priv(dpll), in dpll_msg_add_pin_phase_adjust()
258 struct dpll_device *dpll = ref->dpll; in dpll_msg_add_phase_offset() local
264 ret = ops->phase_offset_get(pin, dpll_pin_on_dpll_priv(dpll, pin), in dpll_msg_add_phase_offset()
265 dpll, dpll_priv(dpll), &phase_offset, in dpll_msg_add_phase_offset()
281 struct dpll_device *dpll = ref->dpll; in dpll_msg_add_ffo() local
287 ret = ops->ffo_get(pin, dpll_pin_on_dpll_priv(dpll, pin), in dpll_msg_add_ffo()
288 dpll, dpll_priv(dpll), &ffo, extack); in dpll_msg_add_ffo()
302 struct dpll_device *dpll = ref->dpll; in dpll_msg_add_pin_freq() local
309 ret = ops->frequency_get(pin, dpll_pin_on_dpll_priv(dpll, pin), dpll, in dpll_msg_add_pin_freq()
310 dpll_priv(dpll), &freq, extack); in dpll_msg_add_pin_freq()
366 parent_priv = dpll_pin_on_dpll_priv(dpll_ref->dpll, ppin); in dpll_msg_add_pin_parents()
405 ret = dpll_msg_add_dev_parent_handle(msg, ref->dpll->id); in dpll_msg_add_pin_dplls()
488 dpll_device_get_one(struct dpll_device *dpll, struct sk_buff *msg, in dpll_device_get_one() argument
493 ret = dpll_msg_add_dev_handle(msg, dpll); in dpll_device_get_one()
496 if (nla_put_string(msg, DPLL_A_MODULE_NAME, module_name(dpll->module))) in dpll_device_get_one()
498 if (nla_put_64bit(msg, DPLL_A_CLOCK_ID, sizeof(dpll->clock_id), in dpll_device_get_one()
499 &dpll->clock_id, DPLL_A_PAD)) in dpll_device_get_one()
501 ret = dpll_msg_add_temp(msg, dpll, extack); in dpll_device_get_one()
504 ret = dpll_msg_add_lock_status(msg, dpll, extack); in dpll_device_get_one()
507 ret = dpll_msg_add_mode(msg, dpll, extack); in dpll_device_get_one()
510 ret = dpll_msg_add_mode_supported(msg, dpll, extack); in dpll_device_get_one()
513 if (nla_put_u32(msg, DPLL_A_TYPE, dpll->type)) in dpll_device_get_one()
520 dpll_device_event_send(enum dpll_cmd event, struct dpll_device *dpll) in dpll_device_event_send() argument
526 if (WARN_ON(!xa_get_mark(&dpll_device_xa, dpll->id, DPLL_REGISTERED))) in dpll_device_event_send()
534 ret = dpll_device_get_one(dpll, msg, NULL); in dpll_device_event_send()
550 int dpll_device_create_ntf(struct dpll_device *dpll) in dpll_device_create_ntf() argument
552 return dpll_device_event_send(DPLL_CMD_DEVICE_CREATE_NTF, dpll); in dpll_device_create_ntf()
555 int dpll_device_delete_ntf(struct dpll_device *dpll) in dpll_device_delete_ntf() argument
557 return dpll_device_event_send(DPLL_CMD_DEVICE_DELETE_NTF, dpll); in dpll_device_delete_ntf()
561 __dpll_device_change_ntf(struct dpll_device *dpll) in __dpll_device_change_ntf() argument
563 return dpll_device_event_send(DPLL_CMD_DEVICE_CHANGE_NTF, dpll); in __dpll_device_change_ntf()
578 if (xa_get_mark(&dpll_device_xa, par_ref->dpll->id, in dpll_pin_available()
585 * dpll_device_change_ntf - notify that the dpll device has been changed
586 * @dpll: registered dpll pointer
591 int dpll_device_change_ntf(struct dpll_device *dpll) in dpll_device_change_ntf() argument
596 ret = __dpll_device_change_ntf(dpll); in dpll_device_change_ntf()
677 struct dpll_device *dpll; in dpll_pin_freq_set() local
695 dpll = ref->dpll; in dpll_pin_freq_set()
696 ret = ops->frequency_get(pin, dpll_pin_on_dpll_priv(dpll, pin), dpll, in dpll_pin_freq_set()
697 dpll_priv(dpll), &old_freq, extack); in dpll_pin_freq_set()
707 dpll = ref->dpll; in dpll_pin_freq_set()
708 ret = ops->frequency_set(pin, dpll_pin_on_dpll_priv(dpll, pin), in dpll_pin_freq_set()
709 dpll, dpll_priv(dpll), freq, extack); in dpll_pin_freq_set()
713 dpll->id); in dpll_pin_freq_set()
726 dpll = ref->dpll; in dpll_pin_freq_set()
727 if (ops->frequency_set(pin, dpll_pin_on_dpll_priv(dpll, pin), in dpll_pin_freq_set()
728 dpll, dpll_priv(dpll), old_freq, extack)) in dpll_pin_freq_set()
763 parent_priv = dpll_pin_on_dpll_priv(dpll_ref->dpll, parent); in dpll_pin_on_pin_state_set()
775 dpll_pin_state_set(struct dpll_device *dpll, struct dpll_pin *pin, in dpll_pin_state_set() argument
788 ref = xa_load(&pin->dpll_refs, dpll->id); in dpll_pin_state_set()
793 ret = ops->state_on_dpll_set(pin, dpll_pin_on_dpll_priv(dpll, pin), in dpll_pin_state_set()
794 dpll, dpll_priv(dpll), state, extack); in dpll_pin_state_set()
803 dpll_pin_prio_set(struct dpll_device *dpll, struct dpll_pin *pin, in dpll_pin_prio_set() argument
815 ref = xa_load(&pin->dpll_refs, dpll->id); in dpll_pin_prio_set()
820 ret = ops->prio_set(pin, dpll_pin_on_dpll_priv(dpll, pin), dpll, in dpll_pin_prio_set()
821 dpll_priv(dpll), prio, extack); in dpll_pin_prio_set()
830 dpll_pin_direction_set(struct dpll_pin *pin, struct dpll_device *dpll, in dpll_pin_direction_set() argument
843 ref = xa_load(&pin->dpll_refs, dpll->id); in dpll_pin_direction_set()
848 ret = ops->direction_set(pin, dpll_pin_on_dpll_priv(dpll, pin), in dpll_pin_direction_set()
849 dpll, dpll_priv(dpll), direction, extack); in dpll_pin_direction_set()
864 struct dpll_device *dpll; in dpll_pin_phase_adj_set() local
885 dpll = ref->dpll; in dpll_pin_phase_adj_set()
886 ret = ops->phase_adjust_get(pin, dpll_pin_on_dpll_priv(dpll, pin), in dpll_pin_phase_adj_set()
887 dpll, dpll_priv(dpll), &old_phase_adj, in dpll_pin_phase_adj_set()
898 dpll = ref->dpll; in dpll_pin_phase_adj_set()
900 dpll_pin_on_dpll_priv(dpll, pin), in dpll_pin_phase_adj_set()
901 dpll, dpll_priv(dpll), phase_adj, in dpll_pin_phase_adj_set()
907 dpll->id); in dpll_pin_phase_adj_set()
920 dpll = ref->dpll; in dpll_pin_phase_adj_set()
921 if (ops->phase_adjust_set(pin, dpll_pin_on_dpll_priv(dpll, pin), in dpll_pin_phase_adj_set()
922 dpll, dpll_priv(dpll), old_phase_adj, in dpll_pin_phase_adj_set()
937 struct dpll_device *dpll; in dpll_pin_parent_device_set() local
948 dpll = xa_load(&dpll_device_xa, pdpll_idx); in dpll_pin_parent_device_set()
949 if (!dpll) { in dpll_pin_parent_device_set()
953 ref = xa_load(&pin->dpll_refs, dpll->id); in dpll_pin_parent_device_set()
960 ret = dpll_pin_state_set(dpll, pin, state, extack); in dpll_pin_parent_device_set()
966 ret = dpll_pin_prio_set(dpll, pin, prio, extack); in dpll_pin_parent_device_set()
972 ret = dpll_pin_direction_set(pin, dpll, direction, extack); in dpll_pin_parent_device_set()
1252 struct dpll_device *dpll_match = NULL, *dpll; in dpll_device_find() local
1256 xa_for_each_marked(&dpll_device_xa, i, dpll, DPLL_REGISTERED) { in dpll_device_find()
1257 cid_match = clock_id ? dpll->clock_id == clock_id : true; in dpll_device_find()
1258 mod_match = mod_name_attr ? (module_name(dpll->module) ? in dpll_device_find()
1260 module_name(dpll->module)) : false) : true; in dpll_device_find()
1261 type_match = type ? dpll->type == type : true; in dpll_device_find()
1267 dpll_match = dpll; in dpll_device_find()
1320 struct dpll_device *dpll; in dpll_nl_device_id_get_doit() local
1335 dpll = dpll_device_find_from_nlattr(info); in dpll_nl_device_id_get_doit()
1336 if (!IS_ERR(dpll)) { in dpll_nl_device_id_get_doit()
1337 ret = dpll_msg_add_dev_handle(msg, dpll); in dpll_nl_device_id_get_doit()
1350 struct dpll_device *dpll = info->user_ptr[0]; in dpll_nl_device_get_doit() local
1365 ret = dpll_device_get_one(dpll, msg, info->extack); in dpll_nl_device_get_doit()
1384 struct dpll_device *dpll; in dpll_nl_device_get_dumpit() local
1390 xa_for_each_marked_start(&dpll_device_xa, i, dpll, DPLL_REGISTERED, in dpll_nl_device_get_dumpit()
1399 ret = dpll_device_get_one(dpll, skb, cb->extack); in dpll_nl_device_get_dumpit()