Lines Matching full:channel

185 static int idt82p33_dpll_set_mode(struct idt82p33_channel *channel,  in idt82p33_dpll_set_mode()  argument
188 struct idt82p33 *idt82p33 = channel->idt82p33; in idt82p33_dpll_set_mode()
192 if (channel->pll_mode == mode) in idt82p33_dpll_set_mode()
195 err = idt82p33_read(idt82p33, channel->dpll_mode_cnfg, in idt82p33_dpll_set_mode()
204 err = idt82p33_write(idt82p33, channel->dpll_mode_cnfg, in idt82p33_dpll_set_mode()
209 channel->pll_mode = dpll_mode; in idt82p33_dpll_set_mode()
214 static int _idt82p33_gettime(struct idt82p33_channel *channel, in _idt82p33_gettime() argument
217 struct idt82p33 *idt82p33 = channel->idt82p33; in _idt82p33_gettime()
226 err = idt82p33_write(idt82p33, channel->dpll_tod_trigger, in _idt82p33_gettime()
235 err = idt82p33_read(idt82p33, channel->dpll_tod_sts, buf, sizeof(buf)); in _idt82p33_gettime()
251 static int _idt82p33_settime(struct idt82p33_channel *channel, in _idt82p33_settime() argument
254 struct idt82p33 *idt82p33 = channel->idt82p33; in _idt82p33_settime()
265 err = idt82p33_write(idt82p33, channel->dpll_tod_trigger, in _idt82p33_settime()
286 err = idt82p33_write(idt82p33, channel->dpll_tod_cnfg + i, in _idt82p33_settime()
295 static int _idt82p33_adjtime(struct idt82p33_channel *channel, s64 delta_ns) in _idt82p33_adjtime() argument
297 struct idt82p33 *idt82p33 = channel->idt82p33; in _idt82p33_adjtime()
304 err = _idt82p33_gettime(channel, &ts); in _idt82p33_adjtime()
314 err = _idt82p33_settime(channel, &ts); in _idt82p33_adjtime()
319 static int _idt82p33_adjfine(struct idt82p33_channel *channel, long scaled_ppm) in _idt82p33_adjfine() argument
321 struct idt82p33 *idt82p33 = channel->idt82p33; in _idt82p33_adjfine()
326 if (scaled_ppm == channel->current_freq_ppb) in _idt82p33_adjfine()
351 err = idt82p33_dpll_set_mode(channel, PLL_MODE_DCO); in _idt82p33_adjfine()
356 err = idt82p33_write(idt82p33, channel->dpll_freq_cnfg, in _idt82p33_adjfine()
360 channel->current_freq_ppb = scaled_ppm; in _idt82p33_adjfine()
366 struct idt82p33_channel *channel, s64 *overhead_ns) in idt82p33_measure_one_byte_write_overhead() argument
368 struct idt82p33 *idt82p33 = channel->idt82p33; in idt82p33_measure_one_byte_write_overhead()
384 err = idt82p33_write(idt82p33, channel->dpll_tod_trigger, in idt82p33_measure_one_byte_write_overhead()
401 struct idt82p33_channel *channel) in idt82p33_measure_tod_write_9_byte_overhead() argument
403 struct idt82p33 *idt82p33 = channel->idt82p33; in idt82p33_measure_tod_write_9_byte_overhead()
420 channel->dpll_tod_cnfg + i, in idt82p33_measure_tod_write_9_byte_overhead()
438 struct idt82p33_channel *channel, s64 *overhead_ns) in idt82p33_measure_settime_gettime_gap_overhead() argument
446 err = _idt82p33_settime(channel, &ts1); in idt82p33_measure_settime_gettime_gap_overhead()
451 err = _idt82p33_gettime(channel, &ts2); in idt82p33_measure_settime_gettime_gap_overhead()
459 static int idt82p33_measure_tod_write_overhead(struct idt82p33_channel *channel) in idt82p33_measure_tod_write_overhead() argument
462 struct idt82p33 *idt82p33 = channel->idt82p33; in idt82p33_measure_tod_write_overhead()
467 err = idt82p33_measure_settime_gettime_gap_overhead(channel, &gap_ns); in idt82p33_measure_tod_write_overhead()
475 err = idt82p33_measure_one_byte_write_overhead(channel, in idt82p33_measure_tod_write_overhead()
481 err = idt82p33_measure_tod_write_9_byte_overhead(channel); in idt82p33_measure_tod_write_overhead()
510 idt82p33->channel[0].output_mask = val; in idt82p33_check_and_set_masks()
513 idt82p33->channel[1].output_mask = val; in idt82p33_check_and_set_masks()
532 i, idt82p33->channel[i].output_mask); in idt82p33_display_masks()
536 static int idt82p33_sync_tod(struct idt82p33_channel *channel, bool enable) in idt82p33_sync_tod() argument
538 struct idt82p33 *idt82p33 = channel->idt82p33; in idt82p33_sync_tod()
544 ptp_schedule_worker(channel->ptp_clock, in idt82p33_sync_tod()
547 err = idt82p33_read(idt82p33, channel->dpll_sync_cnfg, in idt82p33_sync_tod()
556 return idt82p33_write(idt82p33, channel->dpll_sync_cnfg, in idt82p33_sync_tod()
562 struct idt82p33_channel *channel = in idt82p33_sync_tod_work_handler() local
564 struct idt82p33 *idt82p33 = channel->idt82p33; in idt82p33_sync_tod_work_handler()
568 (void)idt82p33_sync_tod(channel, false); in idt82p33_sync_tod_work_handler()
576 static int idt82p33_output_enable(struct idt82p33_channel *channel, in idt82p33_output_enable() argument
579 struct idt82p33 *idt82p33 = channel->idt82p33; in idt82p33_output_enable()
594 static int idt82p33_output_mask_enable(struct idt82p33_channel *channel, in idt82p33_output_mask_enable() argument
601 mask = channel->output_mask; in idt82p33_output_mask_enable()
606 err = idt82p33_output_enable(channel, enable, outn); in idt82p33_output_mask_enable()
618 static int idt82p33_perout_enable(struct idt82p33_channel *channel, in idt82p33_perout_enable() argument
626 return idt82p33_output_mask_enable(channel, enable); in idt82p33_perout_enable()
629 return idt82p33_output_enable(channel, enable, perout->index); in idt82p33_perout_enable()
632 static int idt82p33_enable_tod(struct idt82p33_channel *channel) in idt82p33_enable_tod() argument
634 struct idt82p33 *idt82p33 = channel->idt82p33; in idt82p33_enable_tod()
640 err = idt82p33_write(idt82p33, channel->dpll_input_mode_cnfg, in idt82p33_enable_tod()
645 err = idt82p33_measure_tod_write_overhead(channel); in idt82p33_enable_tod()
653 err = _idt82p33_settime(channel, &ts); in idt82p33_enable_tod()
658 return idt82p33_sync_tod(channel, true); in idt82p33_enable_tod()
663 struct idt82p33_channel *channel; in idt82p33_ptp_clock_unregister_all() local
668 channel = &idt82p33->channel[i]; in idt82p33_ptp_clock_unregister_all()
670 if (channel->ptp_clock) in idt82p33_ptp_clock_unregister_all()
671 ptp_clock_unregister(channel->ptp_clock); in idt82p33_ptp_clock_unregister_all()
678 struct idt82p33_channel *channel = in idt82p33_enable() local
680 struct idt82p33 *idt82p33 = channel->idt82p33; in idt82p33_enable()
689 err = idt82p33_perout_enable(channel, false, in idt82p33_enable()
696 err = idt82p33_perout_enable(channel, true, in idt82p33_enable()
707 struct idt82p33_channel *channel = in idt82p33_adjwritephase() local
709 struct idt82p33 *idt82p33 = channel->idt82p33; in idt82p33_adjwritephase()
732 err = idt82p33_dpll_set_mode(channel, PLL_MODE_WPH); in idt82p33_adjwritephase()
739 err = idt82p33_write(idt82p33, channel->dpll_phase_cnfg, val, in idt82p33_adjwritephase()
749 struct idt82p33_channel *channel = in idt82p33_adjfine() local
751 struct idt82p33 *idt82p33 = channel->idt82p33; in idt82p33_adjfine()
755 err = _idt82p33_adjfine(channel, scaled_ppm); in idt82p33_adjfine()
766 struct idt82p33_channel *channel = in idt82p33_adjtime() local
768 struct idt82p33 *idt82p33 = channel->idt82p33; in idt82p33_adjtime()
778 err = _idt82p33_adjtime(channel, delta_ns); in idt82p33_adjtime()
787 err = idt82p33_sync_tod(channel, true); in idt82p33_adjtime()
799 struct idt82p33_channel *channel = in idt82p33_gettime() local
801 struct idt82p33 *idt82p33 = channel->idt82p33; in idt82p33_gettime()
805 err = _idt82p33_gettime(channel, ts); in idt82p33_gettime()
817 struct idt82p33_channel *channel = in idt82p33_settime() local
819 struct idt82p33 *idt82p33 = channel->idt82p33; in idt82p33_settime()
823 err = _idt82p33_settime(channel, ts); in idt82p33_settime()
832 static int idt82p33_channel_init(struct idt82p33_channel *channel, int index) in idt82p33_channel_init() argument
836 channel->dpll_tod_cnfg = DPLL1_TOD_CNFG; in idt82p33_channel_init()
837 channel->dpll_tod_trigger = DPLL1_TOD_TRIGGER; in idt82p33_channel_init()
838 channel->dpll_tod_sts = DPLL1_TOD_STS; in idt82p33_channel_init()
839 channel->dpll_mode_cnfg = DPLL1_OPERATING_MODE_CNFG; in idt82p33_channel_init()
840 channel->dpll_freq_cnfg = DPLL1_HOLDOVER_FREQ_CNFG; in idt82p33_channel_init()
841 channel->dpll_phase_cnfg = DPLL1_PHASE_OFFSET_CNFG; in idt82p33_channel_init()
842 channel->dpll_sync_cnfg = DPLL1_SYNC_EDGE_CNFG; in idt82p33_channel_init()
843 channel->dpll_input_mode_cnfg = DPLL1_INPUT_MODE_CNFG; in idt82p33_channel_init()
846 channel->dpll_tod_cnfg = DPLL2_TOD_CNFG; in idt82p33_channel_init()
847 channel->dpll_tod_trigger = DPLL2_TOD_TRIGGER; in idt82p33_channel_init()
848 channel->dpll_tod_sts = DPLL2_TOD_STS; in idt82p33_channel_init()
849 channel->dpll_mode_cnfg = DPLL2_OPERATING_MODE_CNFG; in idt82p33_channel_init()
850 channel->dpll_freq_cnfg = DPLL2_HOLDOVER_FREQ_CNFG; in idt82p33_channel_init()
851 channel->dpll_phase_cnfg = DPLL2_PHASE_OFFSET_CNFG; in idt82p33_channel_init()
852 channel->dpll_sync_cnfg = DPLL2_SYNC_EDGE_CNFG; in idt82p33_channel_init()
853 channel->dpll_input_mode_cnfg = DPLL2_INPUT_MODE_CNFG; in idt82p33_channel_init()
859 channel->current_freq_ppb = 0; in idt82p33_channel_init()
880 struct idt82p33_channel *channel; in idt82p33_enable_channel() local
886 channel = &idt82p33->channel[index]; in idt82p33_enable_channel()
888 err = idt82p33_channel_init(channel, index); in idt82p33_enable_channel()
896 channel->idt82p33 = idt82p33; in idt82p33_enable_channel()
898 idt82p33_caps_init(&channel->caps); in idt82p33_enable_channel()
899 snprintf(channel->caps.name, sizeof(channel->caps.name), in idt82p33_enable_channel()
902 channel->ptp_clock = ptp_clock_register(&channel->caps, NULL); in idt82p33_enable_channel()
904 if (IS_ERR(channel->ptp_clock)) { in idt82p33_enable_channel()
905 err = PTR_ERR(channel->ptp_clock); in idt82p33_enable_channel()
906 channel->ptp_clock = NULL; in idt82p33_enable_channel()
910 if (!channel->ptp_clock) in idt82p33_enable_channel()
913 err = idt82p33_dpll_set_mode(channel, PLL_MODE_DCO); in idt82p33_enable_channel()
921 err = idt82p33_enable_tod(channel); in idt82p33_enable_channel()
930 index, channel->ptp_clock->index); in idt82p33_enable_channel()
1021 idt82p33->channel[0].output_mask = DEFAULT_OUTPUT_MASK_PLL0; in idt82p33_probe()
1022 idt82p33->channel[1].output_mask = DEFAULT_OUTPUT_MASK_PLL1; in idt82p33_probe()