Lines Matching refs:hwdata
308 struct si5351_hw_data *hwdata = in si5351_vxco_prepare() local
311 dev_warn(&hwdata->drvdata->client->dev, "VXCO currently unsupported\n"); in si5351_vxco_prepare()
387 struct si5351_hw_data *hwdata = in si5351_pll_get_parent() local
389 u8 mask = (hwdata->num == 0) ? SI5351_PLLA_SOURCE : SI5351_PLLB_SOURCE; in si5351_pll_get_parent()
392 val = si5351_reg_read(hwdata->drvdata, SI5351_PLL_INPUT_SOURCE); in si5351_pll_get_parent()
399 struct si5351_hw_data *hwdata = in si5351_pll_set_parent() local
402 if (hwdata->drvdata->variant != SI5351_VARIANT_C && in si5351_pll_set_parent()
409 return _si5351_pll_reparent(hwdata->drvdata, hwdata->num, in si5351_pll_set_parent()
417 struct si5351_hw_data *hwdata = in si5351_pll_recalc_rate() local
419 u8 reg = (hwdata->num == 0) ? SI5351_PLLA_PARAMETERS : in si5351_pll_recalc_rate()
423 if (!hwdata->params.valid) in si5351_pll_recalc_rate()
424 si5351_read_parameters(hwdata->drvdata, reg, &hwdata->params); in si5351_pll_recalc_rate()
426 if (hwdata->params.p3 == 0) in si5351_pll_recalc_rate()
430 rate = hwdata->params.p1 * hwdata->params.p3; in si5351_pll_recalc_rate()
431 rate += 512 * hwdata->params.p3; in si5351_pll_recalc_rate()
432 rate += hwdata->params.p2; in si5351_pll_recalc_rate()
434 do_div(rate, 128 * hwdata->params.p3); in si5351_pll_recalc_rate()
436 dev_dbg(&hwdata->drvdata->client->dev, in si5351_pll_recalc_rate()
439 hwdata->params.p1, hwdata->params.p2, hwdata->params.p3, in si5351_pll_recalc_rate()
448 struct si5351_hw_data *hwdata = in si5351_pll_round_rate() local
480 hwdata->params.p3 = c; in si5351_pll_round_rate()
481 hwdata->params.p2 = (128 * b) % c; in si5351_pll_round_rate()
482 hwdata->params.p1 = 128 * a; in si5351_pll_round_rate()
483 hwdata->params.p1 += (128 * b / c); in si5351_pll_round_rate()
484 hwdata->params.p1 -= 512; in si5351_pll_round_rate()
494 dev_dbg(&hwdata->drvdata->client->dev, in si5351_pll_round_rate()
505 struct si5351_hw_data *hwdata = in si5351_pll_set_rate() local
507 u8 reg = (hwdata->num == 0) ? SI5351_PLLA_PARAMETERS : in si5351_pll_set_rate()
511 si5351_write_parameters(hwdata->drvdata, reg, &hwdata->params); in si5351_pll_set_rate()
514 si5351_set_bits(hwdata->drvdata, SI5351_CLK6_CTRL + hwdata->num, in si5351_pll_set_rate()
516 (hwdata->params.p2 == 0) ? SI5351_CLK_INTEGER_MODE : 0); in si5351_pll_set_rate()
519 si5351_reg_write(hwdata->drvdata, SI5351_PLL_RESET, in si5351_pll_set_rate()
520 hwdata->num == 0 ? SI5351_PLL_RESET_A : in si5351_pll_set_rate()
523 dev_dbg(&hwdata->drvdata->client->dev, in si5351_pll_set_rate()
526 hwdata->params.p1, hwdata->params.p2, hwdata->params.p3, in si5351_pll_set_rate()
580 struct si5351_hw_data *hwdata = in si5351_msynth_get_parent() local
584 val = si5351_reg_read(hwdata->drvdata, SI5351_CLK0_CTRL + hwdata->num); in si5351_msynth_get_parent()
591 struct si5351_hw_data *hwdata = in si5351_msynth_set_parent() local
594 return _si5351_msynth_reparent(hwdata->drvdata, hwdata->num, in si5351_msynth_set_parent()
602 struct si5351_hw_data *hwdata = in si5351_msynth_recalc_rate() local
604 u8 reg = si5351_msynth_params_address(hwdata->num); in si5351_msynth_recalc_rate()
608 if (!hwdata->params.valid) in si5351_msynth_recalc_rate()
609 si5351_read_parameters(hwdata->drvdata, reg, &hwdata->params); in si5351_msynth_recalc_rate()
616 if (hwdata->num > 5) { in si5351_msynth_recalc_rate()
617 m = hwdata->params.p1; in si5351_msynth_recalc_rate()
618 } else if (hwdata->params.p3 == 0) { in si5351_msynth_recalc_rate()
620 } else if ((si5351_reg_read(hwdata->drvdata, reg + 2) & in si5351_msynth_recalc_rate()
624 rate *= 128 * hwdata->params.p3; in si5351_msynth_recalc_rate()
625 m = hwdata->params.p1 * hwdata->params.p3; in si5351_msynth_recalc_rate()
626 m += hwdata->params.p2; in si5351_msynth_recalc_rate()
627 m += 512 * hwdata->params.p3; in si5351_msynth_recalc_rate()
634 dev_dbg(&hwdata->drvdata->client->dev, in si5351_msynth_recalc_rate()
637 hwdata->params.p1, hwdata->params.p2, hwdata->params.p3, in si5351_msynth_recalc_rate()
646 struct si5351_hw_data *hwdata = in si5351_msynth_round_rate() local
653 if (hwdata->num >= 6 && rate > SI5351_MULTISYNTH67_MAX_FREQ) in si5351_msynth_round_rate()
683 } else if (hwdata->num >= 6) { in si5351_msynth_round_rate()
732 hwdata->params.p3 = 1; in si5351_msynth_round_rate()
733 hwdata->params.p2 = 0; in si5351_msynth_round_rate()
734 hwdata->params.p1 = 0; in si5351_msynth_round_rate()
735 } else if (hwdata->num >= 6) { in si5351_msynth_round_rate()
736 hwdata->params.p3 = 0; in si5351_msynth_round_rate()
737 hwdata->params.p2 = 0; in si5351_msynth_round_rate()
738 hwdata->params.p1 = a; in si5351_msynth_round_rate()
740 hwdata->params.p3 = c; in si5351_msynth_round_rate()
741 hwdata->params.p2 = (128 * b) % c; in si5351_msynth_round_rate()
742 hwdata->params.p1 = 128 * a; in si5351_msynth_round_rate()
743 hwdata->params.p1 += (128 * b / c); in si5351_msynth_round_rate()
744 hwdata->params.p1 -= 512; in si5351_msynth_round_rate()
747 dev_dbg(&hwdata->drvdata->client->dev, in si5351_msynth_round_rate()
758 struct si5351_hw_data *hwdata = in si5351_msynth_set_rate() local
760 u8 reg = si5351_msynth_params_address(hwdata->num); in si5351_msynth_set_rate()
764 si5351_write_parameters(hwdata->drvdata, reg, &hwdata->params); in si5351_msynth_set_rate()
770 if (hwdata->num < 6) { in si5351_msynth_set_rate()
771 si5351_set_bits(hwdata->drvdata, reg + 2, in si5351_msynth_set_rate()
774 si5351_set_bits(hwdata->drvdata, SI5351_CLK0_CTRL + hwdata->num, in si5351_msynth_set_rate()
776 (hwdata->params.p2 == 0) ? SI5351_CLK_INTEGER_MODE : 0); in si5351_msynth_set_rate()
779 dev_dbg(&hwdata->drvdata->client->dev, in si5351_msynth_set_rate()
782 hwdata->params.p1, hwdata->params.p2, hwdata->params.p3, in si5351_msynth_set_rate()
930 struct si5351_hw_data *hwdata = in si5351_clkout_prepare() local
933 hwdata->drvdata->client->dev.platform_data; in si5351_clkout_prepare()
935 si5351_set_bits(hwdata->drvdata, SI5351_CLK0_CTRL + hwdata->num, in si5351_clkout_prepare()
942 if (pdata->clkout[hwdata->num].pll_reset) in si5351_clkout_prepare()
943 _si5351_clkout_reset_pll(hwdata->drvdata, hwdata->num); in si5351_clkout_prepare()
945 si5351_set_bits(hwdata->drvdata, SI5351_OUTPUT_ENABLE_CTRL, in si5351_clkout_prepare()
946 (1 << hwdata->num), 0); in si5351_clkout_prepare()
952 struct si5351_hw_data *hwdata = in si5351_clkout_unprepare() local
955 si5351_set_bits(hwdata->drvdata, SI5351_CLK0_CTRL + hwdata->num, in si5351_clkout_unprepare()
957 si5351_set_bits(hwdata->drvdata, SI5351_OUTPUT_ENABLE_CTRL, in si5351_clkout_unprepare()
958 (1 << hwdata->num), (1 << hwdata->num)); in si5351_clkout_unprepare()
963 struct si5351_hw_data *hwdata = in si5351_clkout_get_parent() local
968 val = si5351_reg_read(hwdata->drvdata, SI5351_CLK0_CTRL + hwdata->num); in si5351_clkout_get_parent()
989 struct si5351_hw_data *hwdata = in si5351_clkout_set_parent() local
1008 return _si5351_clkout_reparent(hwdata->drvdata, hwdata->num, parent); in si5351_clkout_set_parent()
1014 struct si5351_hw_data *hwdata = in si5351_clkout_recalc_rate() local
1019 if (hwdata->num <= 5) in si5351_clkout_recalc_rate()
1020 reg = si5351_msynth_params_address(hwdata->num) + 2; in si5351_clkout_recalc_rate()
1024 rdiv = si5351_reg_read(hwdata->drvdata, reg); in si5351_clkout_recalc_rate()
1025 if (hwdata->num == 6) { in si5351_clkout_recalc_rate()
1038 struct si5351_hw_data *hwdata = in si5351_clkout_round_rate() local
1043 if (hwdata->num >= 6 && rate > SI5351_CLKOUT67_MAX_FREQ) in si5351_clkout_round_rate()
1080 dev_dbg(&hwdata->drvdata->client->dev, in si5351_clkout_round_rate()
1091 struct si5351_hw_data *hwdata = in si5351_clkout_set_rate() local
1110 switch (hwdata->num) { in si5351_clkout_set_rate()
1112 si5351_set_bits(hwdata->drvdata, SI5351_CLK6_7_OUTPUT_DIVIDER, in si5351_clkout_set_rate()
1116 si5351_set_bits(hwdata->drvdata, SI5351_CLK6_7_OUTPUT_DIVIDER, in si5351_clkout_set_rate()
1121 si5351_set_bits(hwdata->drvdata, in si5351_clkout_set_rate()
1122 si5351_msynth_params_address(hwdata->num) + 2, in si5351_clkout_set_rate()
1128 si5351_set_bits(hwdata->drvdata, SI5351_CLK0_CTRL + hwdata->num, in si5351_clkout_set_rate()
1131 dev_dbg(&hwdata->drvdata->client->dev, in si5351_clkout_set_rate()