Lines Matching full:dpll

7 #include <linux/dpll.h>
89 * for pin control. For E810 NIC with dpll there is additional MUX-related logic
90 * between SMA/U.FL pins/connectors and dpll device, best to give user access
186 * @dpll: pointer to dpll
187 * @dpll_priv: private data pointer passed on dpll registration
201 const struct dpll_device *dpll, void *dpll_priv, in ice_dpll_frequency_set() argument
225 * @dpll: pointer to dpll
226 * @dpll_priv: private data pointer passed on dpll registration
239 const struct dpll_device *dpll, void *dpll_priv, in ice_dpll_input_frequency_set() argument
242 return ice_dpll_frequency_set(pin, pin_priv, dpll, dpll_priv, frequency, in ice_dpll_input_frequency_set()
250 * @dpll: pointer to dpll
251 * @dpll_priv: private data pointer passed on dpll registration
264 const struct dpll_device *dpll, void *dpll_priv, in ice_dpll_output_frequency_set() argument
267 return ice_dpll_frequency_set(pin, pin_priv, dpll, dpll_priv, frequency, in ice_dpll_output_frequency_set()
275 * @dpll: pointer to dpll
276 * @dpll_priv: private data pointer passed on dpll registration
290 const struct dpll_device *dpll, void *dpll_priv, in ice_dpll_frequency_get() argument
309 * @dpll: pointer to dpll
310 * @dpll_priv: private data pointer passed on dpll registration
323 const struct dpll_device *dpll, void *dpll_priv, in ice_dpll_input_frequency_get() argument
326 return ice_dpll_frequency_get(pin, pin_priv, dpll, dpll_priv, frequency, in ice_dpll_input_frequency_get()
334 * @dpll: pointer to dpll
335 * @dpll_priv: private data pointer passed on dpll registration
348 const struct dpll_device *dpll, void *dpll_priv, in ice_dpll_output_frequency_get() argument
351 return ice_dpll_frequency_get(pin, pin_priv, dpll, dpll_priv, frequency, in ice_dpll_output_frequency_get()
359 * @dpll: pointer to dpll
360 * @dpll_priv: private data pointer passed on dpll registration
373 const struct dpll_device *dpll, void *dpll_priv, in ice_dpll_sw_pin_frequency_set() argument
384 ret = ice_dpll_input_frequency_set(NULL, sma->input, dpll, in ice_dpll_sw_pin_frequency_set()
388 ret = ice_dpll_output_frequency_set(NULL, sma->output, dpll, in ice_dpll_sw_pin_frequency_set()
399 * @dpll: pointer to dpll
400 * @dpll_priv: private data pointer passed on dpll registration
413 const struct dpll_device *dpll, void *dpll_priv, in ice_dpll_sw_pin_frequency_get() argument
424 ret = ice_dpll_input_frequency_get(NULL, sma->input, dpll, in ice_dpll_sw_pin_frequency_get()
428 ret = ice_dpll_output_frequency_get(NULL, sma->output, dpll, in ice_dpll_sw_pin_frequency_get()
440 * @dpll_idx: dpll index to connect to output pin
601 * dpll, for rclk pins states are separated for each parent.
718 * @dpll: ice dpll pointer
720 * @prio: priority value being set on a dpll
731 ice_dpll_hw_input_prio_set(struct ice_pf *pf, struct ice_dpll *dpll, in ice_dpll_hw_input_prio_set() argument
737 ret = ice_aq_set_cgu_ref_prio(&pf->hw, dpll->dpll_idx, pin->idx, in ice_dpll_hw_input_prio_set()
746 dpll->input_prio[pin->idx] = prio; in ice_dpll_hw_input_prio_set()
752 * ice_dpll_lock_status_get - get dpll lock status callback
753 * @dpll: registered dpll pointer
754 * @dpll_priv: private data pointer passed on dpll registration
755 * @status: on success holds dpll's lock status
759 * Dpll subsystem callback, provides dpll's lock status.
767 ice_dpll_lock_status_get(const struct dpll_device *dpll, void *dpll_priv, in ice_dpll_lock_status_get() argument
783 * ice_dpll_mode_get - get dpll's working mode
784 * @dpll: registered dpll pointer
785 * @dpll_priv: private data pointer passed on dpll registration
786 * @mode: on success holds current working mode of dpll
789 * Dpll subsystem callback. Provides working mode of dpll.
796 static int ice_dpll_mode_get(const struct dpll_device *dpll, void *dpll_priv, in ice_dpll_mode_get() argument
812 * @dpll: registered dpll pointer
813 * @dpll_priv: private data pointer passed on dpll registration
817 * Dpll subsystem callback. Enable/disable phase offset monitor feature of dpll.
822 static int ice_dpll_phase_offset_monitor_set(const struct dpll_device *dpll, in ice_dpll_phase_offset_monitor_set() argument
842 * @dpll: registered dpll pointer
843 * @dpll_priv: private data pointer passed on dpll registration
847 * Dpll subsystem callback. Provides current state of phase offset monitor
848 * features on dpll device.
853 static int ice_dpll_phase_offset_monitor_get(const struct dpll_device *dpll, in ice_dpll_phase_offset_monitor_get() argument
872 * ice_dpll_pin_state_set - set pin's state on dpll
875 * @dpll: registered dpll pointer
876 * @dpll_priv: private data pointer passed on dpll registration
890 const struct dpll_device *dpll, void *dpll_priv, in ice_dpll_pin_state_set() argument
916 * ice_dpll_output_state_set - enable/disable output pin on dpll device
919 * @dpll: dpll being configured
920 * @dpll_priv: private data pointer passed on dpll registration
924 * Dpll subsystem callback. Set given state on output type pin.
933 const struct dpll_device *dpll, void *dpll_priv, in ice_dpll_output_state_set() argument
946 return ice_dpll_pin_state_set(pin, pin_priv, dpll, dpll_priv, enable, in ice_dpll_output_state_set()
951 * ice_dpll_input_state_set - enable/disable input pin on dpll levice
954 * @dpll: dpll being configured
955 * @dpll_priv: private data pointer passed on dpll registration
959 * Dpll subsystem callback. Enables given mode on input type pin.
968 const struct dpll_device *dpll, void *dpll_priv, in ice_dpll_input_state_set() argument
974 return ice_dpll_pin_state_set(pin, pin_priv, dpll, dpll_priv, enable, in ice_dpll_input_state_set()
979 * ice_dpll_pin_state_get - set pin's state on dpll
982 * @dpll: registered dpll pointer
983 * @dpll_priv: private data pointer passed on dpll registration
997 const struct dpll_device *dpll, void *dpll_priv, in ice_dpll_pin_state_get() argument
1025 * ice_dpll_output_state_get - get output pin state on dpll device
1028 * @dpll: registered dpll pointer
1029 * @dpll_priv: private data pointer passed on dpll registration
1033 * Dpll subsystem callback. Check state of a pin.
1042 const struct dpll_device *dpll, void *dpll_priv, in ice_dpll_output_state_get() argument
1046 return ice_dpll_pin_state_get(pin, pin_priv, dpll, dpll_priv, state, in ice_dpll_output_state_get()
1051 * ice_dpll_input_state_get - get input pin state on dpll device
1054 * @dpll: registered dpll pointer
1055 * @dpll_priv: private data pointer passed on dpll registration
1059 * Dpll subsystem callback. Check state of a input pin.
1068 const struct dpll_device *dpll, void *dpll_priv, in ice_dpll_input_state_get() argument
1072 return ice_dpll_pin_state_get(pin, pin_priv, dpll, dpll_priv, state, in ice_dpll_input_state_get()
1082 * Wrapper for dpll subsystem callback. Set direction of a SMA pin.
1129 * ice_dpll_ufl_pin_state_set - set U.FL pin state on dpll device
1132 * @dpll: registered dpll pointer
1133 * @dpll_priv: private data pointer passed on dpll registration
1137 * Dpll subsystem callback. Set the state of a pin.
1146 const struct dpll_device *dpll, void *dpll_priv, in ice_dpll_ufl_pin_state_set() argument
1226 * @dpll: registered dpll pointer
1227 * @dpll_priv: private data pointer passed on dpll registration
1231 * Dpll subsystem callback. Check state of a SW pin.
1240 const struct dpll_device *dpll, void *dpll_priv, in ice_dpll_sw_pin_state_get() argument
1279 * ice_dpll_sma_pin_state_set - set SMA pin state on dpll device
1282 * @dpll: registered dpll pointer
1283 * @dpll_priv: private data pointer passed on dpll registration
1287 * Dpll subsystem callback. Set state of a pin.
1296 const struct dpll_device *dpll, void *dpll_priv, in ice_dpll_sma_pin_state_set() argument
1341 * ice_dpll_input_prio_get - get dpll's input prio
1344 * @dpll: registered dpll pointer
1345 * @dpll_priv: private data pointer passed on dpll registration
1346 * @prio: on success - returns input priority on dpll
1349 * Dpll subsystem callback. Handler for getting priority of a input pin.
1358 const struct dpll_device *dpll, void *dpll_priv, in ice_dpll_input_prio_get() argument
1373 * ice_dpll_input_prio_set - set dpll input prio
1376 * @dpll: registered dpll pointer
1377 * @dpll_priv: private data pointer passed on dpll registration
1378 * @prio: input priority to be set on dpll
1381 * Dpll subsystem callback. Handler for setting priority of a input pin.
1390 const struct dpll_device *dpll, void *dpll_priv, in ice_dpll_input_prio_set() argument
1410 const struct dpll_device *dpll, void *dpll_priv, in ice_dpll_sw_input_prio_get() argument
1429 const struct dpll_device *dpll, void *dpll_priv, in ice_dpll_sw_input_prio_set() argument
1453 * @dpll: registered dpll pointer
1454 * @dpll_priv: private data pointer passed on dpll registration
1458 * Dpll subsystem callback. Handler for getting direction of a input pin.
1465 const struct dpll_device *dpll, void *dpll_priv, in ice_dpll_input_direction() argument
1478 * @dpll: registered dpll pointer
1479 * @dpll_priv: private data pointer passed on dpll registration
1483 * Dpll subsystem callback. Handler for getting direction of an output pin.
1490 const struct dpll_device *dpll, void *dpll_priv, in ice_dpll_output_direction() argument
1503 * @dpll: registered dpll pointer
1504 * @dpll_priv: private data pointer passed on dpll registration
1508 * Dpll subsystem callback. Handler for setting direction of a SMA pin.
1517 const struct dpll_device *dpll, void *dpll_priv, in ice_dpll_pin_sma_direction_set() argument
1539 * @dpll: registered dpll pointer
1540 * @dpll_priv: private data pointer passed on dpll registration
1544 * Dpll subsystem callback. Handler for getting direction of a SMA pin.
1553 const struct dpll_device *dpll, void *dpll_priv, in ice_dpll_pin_sw_direction_get() argument
1573 * @dpll: registered dpll pointer
1574 * @dpll_priv: private data pointer passed on dpll registration
1578 * Dpll subsystem callback. Handler for getting phase adjust value of a pin.
1587 const struct dpll_device *dpll, void *dpll_priv, in ice_dpll_pin_phase_adjust_get() argument
1605 * @dpll: registered dpll pointer
1606 * @dpll_priv: private data pointer passed on dpll registration
1611 * Helper for dpll subsystem callback. Handler for setting phase adjust value
1621 const struct dpll_device *dpll, void *dpll_priv, in ice_dpll_pin_phase_adjust_set() argument
1663 "err:%d %s failed to set pin phase_adjust:%d for pin:%u on dpll:%u", in ice_dpll_pin_phase_adjust_set()
1675 * @dpll: registered dpll pointer
1676 * @dpll_priv: private data pointer passed on dpll registration
1680 * Dpll subsystem callback. Wraps a handler for setting phase adjust on input
1690 const struct dpll_device *dpll, void *dpll_priv, in ice_dpll_input_phase_adjust_set() argument
1694 return ice_dpll_pin_phase_adjust_set(pin, pin_priv, dpll, dpll_priv, in ice_dpll_input_phase_adjust_set()
1703 * @dpll: registered dpll pointer
1704 * @dpll_priv: private data pointer passed on dpll registration
1708 * Dpll subsystem callback. Wraps a handler for setting phase adjust on output
1718 const struct dpll_device *dpll, void *dpll_priv, in ice_dpll_output_phase_adjust_set() argument
1722 return ice_dpll_pin_phase_adjust_set(pin, pin_priv, dpll, dpll_priv, in ice_dpll_output_phase_adjust_set()
1731 * @dpll: registered dpll pointer
1732 * @dpll_priv: private data pointer passed on dpll registration
1736 * Dpll subsystem callback. Wraps a handler for getting phase adjust on sw
1746 const struct dpll_device *dpll, void *dpll_priv, in ice_dpll_sw_phase_adjust_get() argument
1754 dpll, dpll_priv, in ice_dpll_sw_phase_adjust_get()
1758 dpll, dpll_priv, in ice_dpll_sw_phase_adjust_get()
1766 * @dpll: registered dpll pointer
1767 * @dpll_priv: private data pointer passed on dpll registration
1771 * Dpll subsystem callback. Wraps a handler for setting phase adjust on output
1781 const struct dpll_device *dpll, void *dpll_priv, in ice_dpll_sw_phase_adjust_set() argument
1793 dpll, dpll_priv, in ice_dpll_sw_phase_adjust_set()
1798 dpll, dpll_priv, in ice_dpll_sw_phase_adjust_set()
1807 * ice_dpll_phase_offset_get - callback for get dpll phase shift value
1810 * @dpll: registered dpll pointer
1811 * @dpll_priv: private data pointer passed on dpll registration
1815 * Dpll subsystem callback. Handler for getting phase shift value between
1816 * dpll's input and output.
1825 const struct dpll_device *dpll, void *dpll_priv, in ice_dpll_phase_offset_get() argument
1849 * @dpll: registered dpll pointer
1850 * @dpll_priv: private data pointer passed on dpll registration
1854 * Dpll subsystem callback. Handler for setting embedded sync frequency value
1864 const struct dpll_device *dpll, void *dpll_priv, in ice_dpll_output_esync_set() argument
1904 * @dpll: registered dpll pointer
1905 * @dpll_priv: private data pointer passed on dpll registration
1909 * Dpll subsystem callback. Handler for getting embedded sync frequency value
1919 const struct dpll_device *dpll, void *dpll_priv, in ice_dpll_output_esync_get() argument
1953 * @dpll: registered dpll pointer
1954 * @dpll_priv: private data pointer passed on dpll registration
1958 * Dpll subsystem callback. Handler for setting embedded sync frequency value
1968 const struct dpll_device *dpll, void *dpll_priv, in ice_dpll_input_esync_set() argument
2008 * @dpll: registered dpll pointer
2009 * @dpll_priv: private data pointer passed on dpll registration
2013 * Dpll subsystem callback. Handler for getting embedded sync frequency value
2023 const struct dpll_device *dpll, void *dpll_priv, in ice_dpll_input_esync_get() argument
2057 * @dpll: registered dpll pointer
2058 * @dpll_priv: private data pointer passed on dpll registration
2062 * Dpll subsystem callback. Handler for setting embedded sync frequency value
2072 const struct dpll_device *dpll, void *dpll_priv, in ice_dpll_sw_esync_set() argument
2082 return ice_dpll_input_esync_set(p->input->pin, p->input, dpll, in ice_dpll_sw_esync_set()
2086 dpll, dpll_priv, freq, extack); in ice_dpll_sw_esync_set()
2093 * @dpll: registered dpll pointer
2094 * @dpll_priv: private data pointer passed on dpll registration
2098 * Dpll subsystem callback. Handler for getting embedded sync frequency value
2108 const struct dpll_device *dpll, void *dpll_priv, in ice_dpll_sw_esync_get() argument
2115 return ice_dpll_input_esync_get(p->input->pin, p->input, dpll, in ice_dpll_sw_esync_get()
2119 dpll, dpll_priv, esync, in ice_dpll_sw_esync_get()
2132 * Dpll subsystem callback. Handler for setting reference sync frequency
2177 * Dpll subsystem callback. Handler for setting reference sync frequency
2215 * Dpll subsystem callback. Handler for setting reference sync
2245 * Dpll subsystem callback. Handler for setting reference sync feature for
2275 * Dpll subsystem callback, set a state of a rclk pin on a parent pin
2333 * dpll subsystem callback, get a state of a recovered clock pin.
2452 * ice_generate_clock_id - generates unique clock_id for registering dpll.
2455 * Generates unique (per board) clock_id for allocation and search of dpll
2456 * devices in Linux dpll subsystem.
2466 * ice_dpll_notify_changes - notify dpll subsystem about changes
2467 * @d: pointer do dpll
2469 * Once change detected appropriate event is submitted to the dpll subsystem.
2477 dpll_device_change_ntf(d->dpll); in ice_dpll_notify_changes()
2496 * ice_dpll_is_pps_phase_monitor - check if dpll capable of phase offset monitor
2500 * phase offset monitoring on all the input pins on PPS dpll.
2503 * * true - PPS dpll phase offset monitoring is supported
2504 * * false - PPS dpll phase offset monitoring is not supported
2519 * ice_dpll_pins_notify_mask - notify dpll subsystem about bulk pin changes
2520 * @pins: array of ice_dpll_pin pointers registered within dpll subsystem
2524 * Iterate over array of pins and call dpll subsystem pin notify if
2545 * Read phase offset measurements for PPS dpll device and store values in
2569 "failed to get input pin measurements dpll=%d, ret=%d %s\n", in ice_dpll_pps_update_phase_offsets()
2600 * ice_dpll_update_state - update dpll state
2602 * @d: pointer to queried dpll device
2603 * @init: if function called on initialization of ice dpll
2605 * Poll current state of dpll from hw and update ice_dpll struct.
2623 "update dpll=%d, prev_src_idx:%u, src_idx:%u, state:%d, prev:%d mode:%d\n", in ice_dpll_update_state()
2628 "update dpll=%d state failed, ret=%d %s\n", in ice_dpll_update_state()
2676 * DPLLs periodic worker is responsible for polling state of dpll.
2727 * Read DPLL TLV capabilities and initialize reference sync pin pairs in
2728 * dpll subsystem.
2744 "Failed to read PFA dpll defaults TLV ret=%d\n", ret); in ice_dpll_init_ref_sync_inputs()
2806 * ice_dpll_release_pins - release pins resources from dpll subsystem
2810 * Release resources of given pins array in the dpll subsystem.
2821 * ice_dpll_get_pins - get pins from dpll subsystem
2826 * @clock_id: clock_id of dpll device
2828 * Get pins - allocate - in dpll subsystem, store them in pin field of given
2859 * ice_dpll_unregister_pins - unregister pins from a dpll
2860 * @dpll: dpll device pointer
2865 * Unregister pins of a given array of pins from given dpll device registered in
2866 * dpll subsystem.
2869 ice_dpll_unregister_pins(struct dpll_device *dpll, struct ice_dpll_pin *pins, in ice_dpll_unregister_pins() argument
2876 dpll_pin_unregister(dpll, pins[i].pin, ops, &pins[i]); in ice_dpll_unregister_pins()
2884 * Register reference sync pins in dpll subsystem.
2910 * ice_dpll_register_pins - register pins with a dpll
2911 * @dpll: dpll pointer to register pins with
2916 * Register pins of a given array with given dpll in dpll subsystem.
2923 ice_dpll_register_pins(struct dpll_device *dpll, struct ice_dpll_pin *pins, in ice_dpll_register_pins() argument
2930 ret = dpll_pin_register(dpll, pins[i].pin, ops, &pins[i]); in ice_dpll_register_pins()
2941 dpll_pin_unregister(dpll, pins[i].pin, ops, &pins[i]); in ice_dpll_register_pins()
2951 * @first: dpll device pointer
2952 * @second: dpll device pointer
2955 * Release pins resources to the dpll subsystem.
2975 * @start_idx: on which index shall allocation start in dpll subsystem
2978 * @first: dpll device pointer
2979 * @second: dpll device pointer
2981 * Allocate directly connected pins of a given array in dpll subsystem.
3021 * Deregister rclk pin from parent pins and release resources in dpll subsystem.
3047 * @start_idx: on which index shall allocation start in dpll subsystem
3050 * Allocate resource for recovered clock pin in dpll subsystem. Register the
3103 * Release resources of directly connected pins from the dpll subsystem.
3117 ice_dpll_unregister_pins(dp->dpll, inputs, &ice_dpll_input_ops, in ice_dpll_deinit_pins()
3119 ice_dpll_unregister_pins(de->dpll, inputs, &ice_dpll_input_ops, in ice_dpll_deinit_pins()
3124 ice_dpll_unregister_pins(dp->dpll, outputs, in ice_dpll_deinit_pins()
3126 ice_dpll_unregister_pins(de->dpll, outputs, in ice_dpll_deinit_pins()
3133 pf->dplls.pps.dpll, in ice_dpll_deinit_pins()
3134 pf->dplls.eec.dpll); in ice_dpll_deinit_pins()
3138 pf->dplls.pps.dpll, in ice_dpll_deinit_pins()
3139 pf->dplls.eec.dpll); in ice_dpll_deinit_pins()
3149 * Initialize directly connected pf's pins within pf's dplls in a Linux dpll
3163 pf->dplls.eec.dpll, pf->dplls.pps.dpll); in ice_dpll_init_pins()
3172 pf->dplls.eec.dpll, in ice_dpll_init_pins()
3173 pf->dplls.pps.dpll); in ice_dpll_init_pins()
3182 pf->dplls.eec.dpll, in ice_dpll_init_pins()
3183 pf->dplls.pps.dpll); in ice_dpll_init_pins()
3191 pf->dplls.eec.dpll, in ice_dpll_init_pins()
3192 pf->dplls.pps.dpll); in ice_dpll_init_pins()
3218 pf->dplls.pps.dpll, pf->dplls.eec.dpll); in ice_dpll_init_pins()
3223 pf->dplls.pps.dpll, pf->dplls.eec.dpll); in ice_dpll_init_pins()
3227 &ice_dpll_output_ops, pf->dplls.pps.dpll, in ice_dpll_init_pins()
3228 pf->dplls.eec.dpll); in ice_dpll_init_pins()
3231 &ice_dpll_input_ops, pf->dplls.pps.dpll, in ice_dpll_init_pins()
3232 pf->dplls.eec.dpll); in ice_dpll_init_pins()
3237 * ice_dpll_deinit_dpll - deinitialize dpll device
3242 * If cgu is owned unregister the dpll from dpll subsystem.
3243 * Release resources of dpll device from dpll subsystem.
3249 dpll_device_unregister(d->dpll, d->ops, d); in ice_dpll_deinit_dpll()
3250 dpll_device_put(d->dpll); in ice_dpll_deinit_dpll()
3254 * ice_dpll_init_dpll - initialize dpll device in dpll subsystem
3256 * @d: dpll to be initialized
3258 * @type: type of dpll being initialized
3260 * Allocate dpll instance for this board in dpll subsystem, if cgu is controlled
3261 * by this NIC, register dpll with the callback ops.
3274 d->dpll = dpll_device_get(clock_id, d->dpll_idx, THIS_MODULE); in ice_dpll_init_dpll()
3275 if (IS_ERR(d->dpll)) { in ice_dpll_init_dpll()
3276 ret = PTR_ERR(d->dpll); in ice_dpll_init_dpll()
3288 ret = dpll_device_register(d->dpll, type, ops, d); in ice_dpll_init_dpll()
3290 dpll_device_put(d->dpll); in ice_dpll_init_dpll()
3300 * ice_dpll_deinit_worker - deinitialize dpll kworker
3303 * Stop dpll's kworker, release it's resources.
3657 * ice_dpll_init_info - prepare pf's dpll information structure
3661 * Acquire (from HW) and set basic dpll information (on pf->dplls struct).
3756 * ice_dpll_deinit - Disable the driver/HW support for dpll subsystem
3757 * the dpll device.
3760 * Handles the cleanup work required after dpll initialization, freeing
3761 * resources and unregistering the dpll, pin and all resources used for
3782 * ice_dpll_init - initialize support for dpll subsystem
3785 * Set up the device dplls, register them and pins connected within Linux dpll
3786 * subsystem. Allow userspace to obtain state of DPLL and handling of DPLL