Lines Matching refs:hwdata
312 struct si5351_hw_data *hwdata = in si5351_vxco_prepare() local
315 dev_warn(&hwdata->drvdata->client->dev, "VXCO currently unsupported\n"); in si5351_vxco_prepare()
391 struct si5351_hw_data *hwdata = in si5351_pll_get_parent() local
393 u8 mask = (hwdata->num == 0) ? SI5351_PLLA_SOURCE : SI5351_PLLB_SOURCE; in si5351_pll_get_parent()
396 val = si5351_reg_read(hwdata->drvdata, SI5351_PLL_INPUT_SOURCE); in si5351_pll_get_parent()
403 struct si5351_hw_data *hwdata = in si5351_pll_set_parent() local
406 if (hwdata->drvdata->variant != SI5351_VARIANT_C && in si5351_pll_set_parent()
413 return _si5351_pll_reparent(hwdata->drvdata, hwdata->num, in si5351_pll_set_parent()
421 struct si5351_hw_data *hwdata = in si5351_pll_recalc_rate() local
423 u8 reg = (hwdata->num == 0) ? SI5351_PLLA_PARAMETERS : in si5351_pll_recalc_rate()
427 if (!hwdata->params.valid) in si5351_pll_recalc_rate()
428 si5351_read_parameters(hwdata->drvdata, reg, &hwdata->params); in si5351_pll_recalc_rate()
430 if (hwdata->params.p3 == 0) in si5351_pll_recalc_rate()
434 rate = hwdata->params.p1 * hwdata->params.p3; in si5351_pll_recalc_rate()
435 rate += 512 * hwdata->params.p3; in si5351_pll_recalc_rate()
436 rate += hwdata->params.p2; in si5351_pll_recalc_rate()
438 do_div(rate, 128 * hwdata->params.p3); in si5351_pll_recalc_rate()
440 dev_dbg(&hwdata->drvdata->client->dev, in si5351_pll_recalc_rate()
443 hwdata->params.p1, hwdata->params.p2, hwdata->params.p3, in si5351_pll_recalc_rate()
452 struct si5351_hw_data *hwdata = in si5351_pll_round_rate() local
484 hwdata->params.p3 = c; in si5351_pll_round_rate()
485 hwdata->params.p2 = (128 * b) % c; in si5351_pll_round_rate()
486 hwdata->params.p1 = 128 * a; in si5351_pll_round_rate()
487 hwdata->params.p1 += (128 * b / c); in si5351_pll_round_rate()
488 hwdata->params.p1 -= 512; in si5351_pll_round_rate()
498 dev_dbg(&hwdata->drvdata->client->dev, in si5351_pll_round_rate()
509 struct si5351_hw_data *hwdata = in si5351_pll_set_rate() local
511 u8 reg = (hwdata->num == 0) ? SI5351_PLLA_PARAMETERS : in si5351_pll_set_rate()
515 si5351_write_parameters(hwdata->drvdata, reg, &hwdata->params); in si5351_pll_set_rate()
518 si5351_set_bits(hwdata->drvdata, SI5351_CLK6_CTRL + hwdata->num, in si5351_pll_set_rate()
520 (hwdata->params.p2 == 0) ? SI5351_CLK_INTEGER_MODE : 0); in si5351_pll_set_rate()
522 dev_dbg(&hwdata->drvdata->client->dev, in si5351_pll_set_rate()
525 hwdata->params.p1, hwdata->params.p2, hwdata->params.p3, in si5351_pll_set_rate()
579 struct si5351_hw_data *hwdata = in si5351_msynth_get_parent() local
583 val = si5351_reg_read(hwdata->drvdata, SI5351_CLK0_CTRL + hwdata->num); in si5351_msynth_get_parent()
590 struct si5351_hw_data *hwdata = in si5351_msynth_set_parent() local
593 return _si5351_msynth_reparent(hwdata->drvdata, hwdata->num, in si5351_msynth_set_parent()
601 struct si5351_hw_data *hwdata = in si5351_msynth_recalc_rate() local
603 u8 reg = si5351_msynth_params_address(hwdata->num); in si5351_msynth_recalc_rate()
607 if (!hwdata->params.valid) in si5351_msynth_recalc_rate()
608 si5351_read_parameters(hwdata->drvdata, reg, &hwdata->params); in si5351_msynth_recalc_rate()
615 if (hwdata->num > 5) { in si5351_msynth_recalc_rate()
616 m = hwdata->params.p1; in si5351_msynth_recalc_rate()
617 } else if (hwdata->params.p3 == 0) { in si5351_msynth_recalc_rate()
619 } else if ((si5351_reg_read(hwdata->drvdata, reg + 2) & in si5351_msynth_recalc_rate()
623 rate *= 128 * hwdata->params.p3; in si5351_msynth_recalc_rate()
624 m = hwdata->params.p1 * hwdata->params.p3; in si5351_msynth_recalc_rate()
625 m += hwdata->params.p2; in si5351_msynth_recalc_rate()
626 m += 512 * hwdata->params.p3; in si5351_msynth_recalc_rate()
633 dev_dbg(&hwdata->drvdata->client->dev, in si5351_msynth_recalc_rate()
636 hwdata->params.p1, hwdata->params.p2, hwdata->params.p3, in si5351_msynth_recalc_rate()
645 struct si5351_hw_data *hwdata = in si5351_msynth_round_rate() local
652 if (hwdata->num >= 6 && rate > SI5351_MULTISYNTH67_MAX_FREQ) in si5351_msynth_round_rate()
682 } else if (hwdata->num >= 6) { in si5351_msynth_round_rate()
731 hwdata->params.p3 = 1; in si5351_msynth_round_rate()
732 hwdata->params.p2 = 0; in si5351_msynth_round_rate()
733 hwdata->params.p1 = 0; in si5351_msynth_round_rate()
734 } else if (hwdata->num >= 6) { in si5351_msynth_round_rate()
735 hwdata->params.p3 = 0; in si5351_msynth_round_rate()
736 hwdata->params.p2 = 0; in si5351_msynth_round_rate()
737 hwdata->params.p1 = a; in si5351_msynth_round_rate()
739 hwdata->params.p3 = c; in si5351_msynth_round_rate()
740 hwdata->params.p2 = (128 * b) % c; in si5351_msynth_round_rate()
741 hwdata->params.p1 = 128 * a; in si5351_msynth_round_rate()
742 hwdata->params.p1 += (128 * b / c); in si5351_msynth_round_rate()
743 hwdata->params.p1 -= 512; in si5351_msynth_round_rate()
746 dev_dbg(&hwdata->drvdata->client->dev, in si5351_msynth_round_rate()
757 struct si5351_hw_data *hwdata = in si5351_msynth_set_rate() local
759 u8 reg = si5351_msynth_params_address(hwdata->num); in si5351_msynth_set_rate()
763 si5351_write_parameters(hwdata->drvdata, reg, &hwdata->params); in si5351_msynth_set_rate()
769 if (hwdata->num < 6) { in si5351_msynth_set_rate()
770 si5351_set_bits(hwdata->drvdata, reg + 2, in si5351_msynth_set_rate()
773 si5351_set_bits(hwdata->drvdata, SI5351_CLK0_CTRL + hwdata->num, in si5351_msynth_set_rate()
775 (hwdata->params.p2 == 0) ? SI5351_CLK_INTEGER_MODE : 0); in si5351_msynth_set_rate()
778 dev_dbg(&hwdata->drvdata->client->dev, in si5351_msynth_set_rate()
781 hwdata->params.p1, hwdata->params.p2, hwdata->params.p3, in si5351_msynth_set_rate()
903 struct si5351_hw_data *hwdata = in si5351_clkout_prepare() local
906 si5351_set_bits(hwdata->drvdata, SI5351_CLK0_CTRL + hwdata->num, in si5351_clkout_prepare()
908 si5351_set_bits(hwdata->drvdata, SI5351_OUTPUT_ENABLE_CTRL, in si5351_clkout_prepare()
909 (1 << hwdata->num), 0); in si5351_clkout_prepare()
915 struct si5351_hw_data *hwdata = in si5351_clkout_unprepare() local
918 si5351_set_bits(hwdata->drvdata, SI5351_CLK0_CTRL + hwdata->num, in si5351_clkout_unprepare()
920 si5351_set_bits(hwdata->drvdata, SI5351_OUTPUT_ENABLE_CTRL, in si5351_clkout_unprepare()
921 (1 << hwdata->num), (1 << hwdata->num)); in si5351_clkout_unprepare()
926 struct si5351_hw_data *hwdata = in si5351_clkout_get_parent() local
931 val = si5351_reg_read(hwdata->drvdata, SI5351_CLK0_CTRL + hwdata->num); in si5351_clkout_get_parent()
952 struct si5351_hw_data *hwdata = in si5351_clkout_set_parent() local
971 return _si5351_clkout_reparent(hwdata->drvdata, hwdata->num, parent); in si5351_clkout_set_parent()
977 struct si5351_hw_data *hwdata = in si5351_clkout_recalc_rate() local
982 if (hwdata->num <= 5) in si5351_clkout_recalc_rate()
983 reg = si5351_msynth_params_address(hwdata->num) + 2; in si5351_clkout_recalc_rate()
987 rdiv = si5351_reg_read(hwdata->drvdata, reg); in si5351_clkout_recalc_rate()
988 if (hwdata->num == 6) { in si5351_clkout_recalc_rate()
1001 struct si5351_hw_data *hwdata = in si5351_clkout_round_rate() local
1006 if (hwdata->num >= 6 && rate > SI5351_CLKOUT67_MAX_FREQ) in si5351_clkout_round_rate()
1043 dev_dbg(&hwdata->drvdata->client->dev, in si5351_clkout_round_rate()
1054 struct si5351_hw_data *hwdata = in si5351_clkout_set_rate() local
1073 switch (hwdata->num) { in si5351_clkout_set_rate()
1075 si5351_set_bits(hwdata->drvdata, SI5351_CLK6_7_OUTPUT_DIVIDER, in si5351_clkout_set_rate()
1079 si5351_set_bits(hwdata->drvdata, SI5351_CLK6_7_OUTPUT_DIVIDER, in si5351_clkout_set_rate()
1084 si5351_set_bits(hwdata->drvdata, in si5351_clkout_set_rate()
1085 si5351_msynth_params_address(hwdata->num) + 2, in si5351_clkout_set_rate()
1091 si5351_set_bits(hwdata->drvdata, SI5351_CLK0_CTRL + hwdata->num, in si5351_clkout_set_rate()
1094 dev_dbg(&hwdata->drvdata->client->dev, in si5351_clkout_set_rate()