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()
138 ret = ops->lock_status_get(dpll, dpll_priv(dpll), &status, in dpll_msg_add_lock_status()
154 dpll_msg_add_temp(struct sk_buff *msg, struct dpll_device *dpll, in dpll_msg_add_temp() argument
157 const struct dpll_device_ops *ops = dpll_device_ops(dpll); in dpll_msg_add_temp()
163 ret = ops->temp_get(dpll, dpll_priv(dpll), &temp, extack); in dpll_msg_add_temp()
173 dpll_msg_add_clock_quality_level(struct sk_buff *msg, struct dpll_device *dpll, in dpll_msg_add_clock_quality_level() argument
176 const struct dpll_device_ops *ops = dpll_device_ops(dpll); in dpll_msg_add_clock_quality_level()
183 ret = ops->clock_quality_level_get(dpll, dpll_priv(dpll), qls, extack); in dpll_msg_add_clock_quality_level()
199 struct dpll_device *dpll = ref->dpll; in dpll_msg_add_pin_prio() local
205 ret = ops->prio_get(pin, dpll_pin_on_dpll_priv(dpll, pin), dpll, in dpll_msg_add_pin_prio()
206 dpll_priv(dpll), &prio, extack); in dpll_msg_add_pin_prio()
221 struct dpll_device *dpll = ref->dpll; in dpll_msg_add_pin_on_dpll_state() local
227 ret = ops->state_on_dpll_get(pin, dpll_pin_on_dpll_priv(dpll, pin), in dpll_msg_add_pin_on_dpll_state()
228 dpll, dpll_priv(dpll), &state, extack); in dpll_msg_add_pin_on_dpll_state()
243 struct dpll_device *dpll = ref->dpll; in dpll_msg_add_pin_direction() local
247 ret = ops->direction_get(pin, dpll_pin_on_dpll_priv(dpll, pin), dpll, in dpll_msg_add_pin_direction()
248 dpll_priv(dpll), &direction, extack); in dpll_msg_add_pin_direction()
263 struct dpll_device *dpll = ref->dpll; in dpll_msg_add_pin_phase_adjust() local
269 ret = ops->phase_adjust_get(pin, dpll_pin_on_dpll_priv(dpll, pin), in dpll_msg_add_pin_phase_adjust()
270 dpll, dpll_priv(dpll), in dpll_msg_add_pin_phase_adjust()
286 struct dpll_device *dpll = ref->dpll; in dpll_msg_add_phase_offset() local
292 ret = ops->phase_offset_get(pin, dpll_pin_on_dpll_priv(dpll, pin), in dpll_msg_add_phase_offset()
293 dpll, dpll_priv(dpll), &phase_offset, in dpll_msg_add_phase_offset()
309 struct dpll_device *dpll = ref->dpll; in dpll_msg_add_ffo() local
315 ret = ops->ffo_get(pin, dpll_pin_on_dpll_priv(dpll, pin), in dpll_msg_add_ffo()
316 dpll, dpll_priv(dpll), &ffo, extack); in dpll_msg_add_ffo()
330 struct dpll_device *dpll = ref->dpll; in dpll_msg_add_pin_freq() local
337 ret = ops->frequency_get(pin, dpll_pin_on_dpll_priv(dpll, pin), dpll, in dpll_msg_add_pin_freq()
338 dpll_priv(dpll), &freq, extack); in dpll_msg_add_pin_freq()
371 struct dpll_device *dpll = ref->dpll; in dpll_msg_add_pin_esync() local
378 ret = ops->esync_get(pin, dpll_pin_on_dpll_priv(dpll, pin), dpll, in dpll_msg_add_pin_esync()
379 dpll_priv(dpll), &esync, extack); in dpll_msg_add_pin_esync()
439 parent_priv = dpll_pin_on_dpll_priv(dpll_ref->dpll, ppin); in dpll_msg_add_pin_parents()
478 ret = dpll_msg_add_dev_parent_handle(msg, ref->dpll->id); in dpll_msg_add_pin_dplls()
564 dpll_device_get_one(struct dpll_device *dpll, struct sk_buff *msg, in dpll_device_get_one() argument
569 ret = dpll_msg_add_dev_handle(msg, dpll); in dpll_device_get_one()
572 if (nla_put_string(msg, DPLL_A_MODULE_NAME, module_name(dpll->module))) in dpll_device_get_one()
574 if (nla_put_64bit(msg, DPLL_A_CLOCK_ID, sizeof(dpll->clock_id), in dpll_device_get_one()
575 &dpll->clock_id, DPLL_A_PAD)) in dpll_device_get_one()
577 ret = dpll_msg_add_temp(msg, dpll, extack); in dpll_device_get_one()
580 ret = dpll_msg_add_lock_status(msg, dpll, extack); in dpll_device_get_one()
583 ret = dpll_msg_add_clock_quality_level(msg, dpll, extack); in dpll_device_get_one()
586 ret = dpll_msg_add_mode(msg, dpll, extack); in dpll_device_get_one()
589 ret = dpll_msg_add_mode_supported(msg, dpll, extack); in dpll_device_get_one()
592 if (nla_put_u32(msg, DPLL_A_TYPE, dpll->type)) in dpll_device_get_one()
599 dpll_device_event_send(enum dpll_cmd event, struct dpll_device *dpll) in dpll_device_event_send() argument
605 if (WARN_ON(!xa_get_mark(&dpll_device_xa, dpll->id, DPLL_REGISTERED))) in dpll_device_event_send()
613 ret = dpll_device_get_one(dpll, msg, NULL); in dpll_device_event_send()
629 int dpll_device_create_ntf(struct dpll_device *dpll) in dpll_device_create_ntf() argument
631 return dpll_device_event_send(DPLL_CMD_DEVICE_CREATE_NTF, dpll); in dpll_device_create_ntf()
634 int dpll_device_delete_ntf(struct dpll_device *dpll) in dpll_device_delete_ntf() argument
636 return dpll_device_event_send(DPLL_CMD_DEVICE_DELETE_NTF, dpll); in dpll_device_delete_ntf()
640 __dpll_device_change_ntf(struct dpll_device *dpll) in __dpll_device_change_ntf() argument
642 return dpll_device_event_send(DPLL_CMD_DEVICE_CHANGE_NTF, dpll); in __dpll_device_change_ntf()
657 if (xa_get_mark(&dpll_device_xa, par_ref->dpll->id, in dpll_pin_available()
664 * dpll_device_change_ntf - notify that the dpll device has been changed
665 * @dpll: registered dpll pointer
670 int dpll_device_change_ntf(struct dpll_device *dpll) in dpll_device_change_ntf() argument
675 ret = __dpll_device_change_ntf(dpll); in dpll_device_change_ntf()
756 struct dpll_device *dpll; in dpll_pin_freq_set() local
774 dpll = ref->dpll; in dpll_pin_freq_set()
775 ret = ops->frequency_get(pin, dpll_pin_on_dpll_priv(dpll, pin), dpll, in dpll_pin_freq_set()
776 dpll_priv(dpll), &old_freq, extack); in dpll_pin_freq_set()
786 dpll = ref->dpll; in dpll_pin_freq_set()
787 ret = ops->frequency_set(pin, dpll_pin_on_dpll_priv(dpll, pin), in dpll_pin_freq_set()
788 dpll, dpll_priv(dpll), freq, extack); in dpll_pin_freq_set()
792 dpll->id); in dpll_pin_freq_set()
805 dpll = ref->dpll; in dpll_pin_freq_set()
806 if (ops->frequency_set(pin, dpll_pin_on_dpll_priv(dpll, pin), in dpll_pin_freq_set()
807 dpll, dpll_priv(dpll), old_freq, extack)) in dpll_pin_freq_set()
821 struct dpll_device *dpll; in dpll_pin_esync_set() local
836 dpll = ref->dpll; in dpll_pin_esync_set()
837 ret = ops->esync_get(pin, dpll_pin_on_dpll_priv(dpll, pin), dpll, in dpll_pin_esync_set()
838 dpll_priv(dpll), &esync, extack); in dpll_pin_esync_set()
858 dpll = ref->dpll; in dpll_pin_esync_set()
859 pin_dpll_priv = dpll_pin_on_dpll_priv(dpll, pin); in dpll_pin_esync_set()
860 ret = ops->esync_set(pin, pin_dpll_priv, dpll, dpll_priv(dpll), in dpll_pin_esync_set()
866 dpll->id); in dpll_pin_esync_set()
881 dpll = ref->dpll; in dpll_pin_esync_set()
882 pin_dpll_priv = dpll_pin_on_dpll_priv(dpll, pin); in dpll_pin_esync_set()
883 if (ops->esync_set(pin, pin_dpll_priv, dpll, dpll_priv(dpll), in dpll_pin_esync_set()
919 parent_priv = dpll_pin_on_dpll_priv(dpll_ref->dpll, parent); in dpll_pin_on_pin_state_set()
931 dpll_pin_state_set(struct dpll_device *dpll, struct dpll_pin *pin, in dpll_pin_state_set() argument
944 ref = xa_load(&pin->dpll_refs, dpll->id); in dpll_pin_state_set()
949 ret = ops->state_on_dpll_set(pin, dpll_pin_on_dpll_priv(dpll, pin), in dpll_pin_state_set()
950 dpll, dpll_priv(dpll), state, extack); in dpll_pin_state_set()
959 dpll_pin_prio_set(struct dpll_device *dpll, struct dpll_pin *pin, in dpll_pin_prio_set() argument
971 ref = xa_load(&pin->dpll_refs, dpll->id); in dpll_pin_prio_set()
976 ret = ops->prio_set(pin, dpll_pin_on_dpll_priv(dpll, pin), dpll, in dpll_pin_prio_set()
977 dpll_priv(dpll), prio, extack); in dpll_pin_prio_set()
986 dpll_pin_direction_set(struct dpll_pin *pin, struct dpll_device *dpll, in dpll_pin_direction_set() argument
999 ref = xa_load(&pin->dpll_refs, dpll->id); in dpll_pin_direction_set()
1004 ret = ops->direction_set(pin, dpll_pin_on_dpll_priv(dpll, pin), in dpll_pin_direction_set()
1005 dpll, dpll_priv(dpll), direction, extack); in dpll_pin_direction_set()
1020 struct dpll_device *dpll; in dpll_pin_phase_adj_set() local
1041 dpll = ref->dpll; in dpll_pin_phase_adj_set()
1042 ret = ops->phase_adjust_get(pin, dpll_pin_on_dpll_priv(dpll, pin), in dpll_pin_phase_adj_set()
1043 dpll, dpll_priv(dpll), &old_phase_adj, in dpll_pin_phase_adj_set()
1054 dpll = ref->dpll; in dpll_pin_phase_adj_set()
1056 dpll_pin_on_dpll_priv(dpll, pin), in dpll_pin_phase_adj_set()
1057 dpll, dpll_priv(dpll), phase_adj, in dpll_pin_phase_adj_set()
1063 dpll->id); in dpll_pin_phase_adj_set()
1076 dpll = ref->dpll; in dpll_pin_phase_adj_set()
1077 if (ops->phase_adjust_set(pin, dpll_pin_on_dpll_priv(dpll, pin), in dpll_pin_phase_adj_set()
1078 dpll, dpll_priv(dpll), old_phase_adj, in dpll_pin_phase_adj_set()
1093 struct dpll_device *dpll; in dpll_pin_parent_device_set() local
1104 dpll = xa_load(&dpll_device_xa, pdpll_idx); in dpll_pin_parent_device_set()
1105 if (!dpll) { in dpll_pin_parent_device_set()
1109 ref = xa_load(&pin->dpll_refs, dpll->id); in dpll_pin_parent_device_set()
1116 ret = dpll_pin_state_set(dpll, pin, state, extack); in dpll_pin_parent_device_set()
1122 ret = dpll_pin_prio_set(dpll, pin, prio, extack); in dpll_pin_parent_device_set()
1128 ret = dpll_pin_direction_set(pin, dpll, direction, extack); in dpll_pin_parent_device_set()
1413 struct dpll_device *dpll_match = NULL, *dpll; in dpll_device_find() local
1417 xa_for_each_marked(&dpll_device_xa, i, dpll, DPLL_REGISTERED) { in dpll_device_find()
1418 cid_match = clock_id ? dpll->clock_id == clock_id : true; in dpll_device_find()
1419 mod_match = mod_name_attr ? (module_name(dpll->module) ? in dpll_device_find()
1421 module_name(dpll->module)) : false) : true; in dpll_device_find()
1422 type_match = type ? dpll->type == type : true; in dpll_device_find()
1428 dpll_match = dpll; in dpll_device_find()
1481 struct dpll_device *dpll; in dpll_nl_device_id_get_doit() local
1496 dpll = dpll_device_find_from_nlattr(info); in dpll_nl_device_id_get_doit()
1497 if (!IS_ERR(dpll)) { in dpll_nl_device_id_get_doit()
1498 ret = dpll_msg_add_dev_handle(msg, dpll); in dpll_nl_device_id_get_doit()
1511 struct dpll_device *dpll = info->user_ptr[0]; in dpll_nl_device_get_doit() local
1526 ret = dpll_device_get_one(dpll, msg, info->extack); in dpll_nl_device_get_doit()
1545 struct dpll_device *dpll; in dpll_nl_device_get_dumpit() local
1551 xa_for_each_marked_start(&dpll_device_xa, i, dpll, DPLL_REGISTERED, in dpll_nl_device_get_dumpit()
1560 ret = dpll_device_get_one(dpll, skb, cb->extack); in dpll_nl_device_get_dumpit()