Lines Matching refs:drvdata

48 	struct si5351_driver_data	*drvdata;  member
87 static inline u8 si5351_reg_read(struct si5351_driver_data *drvdata, u8 reg) in si5351_reg_read() argument
92 ret = regmap_read(drvdata->regmap, reg, &val); in si5351_reg_read()
94 dev_err(&drvdata->client->dev, in si5351_reg_read()
102 static inline int si5351_bulk_read(struct si5351_driver_data *drvdata, in si5351_bulk_read() argument
105 return regmap_bulk_read(drvdata->regmap, reg, buf, count); in si5351_bulk_read()
108 static inline int si5351_reg_write(struct si5351_driver_data *drvdata, in si5351_reg_write() argument
111 return regmap_write(drvdata->regmap, reg, val); in si5351_reg_write()
114 static inline int si5351_bulk_write(struct si5351_driver_data *drvdata, in si5351_bulk_write() argument
117 return regmap_raw_write(drvdata->regmap, reg, buf, count); in si5351_bulk_write()
120 static inline int si5351_set_bits(struct si5351_driver_data *drvdata, in si5351_set_bits() argument
123 return regmap_update_bits(drvdata->regmap, reg, mask, val); in si5351_set_bits()
133 static void si5351_read_parameters(struct si5351_driver_data *drvdata, in si5351_read_parameters() argument
141 buf[0] = si5351_reg_read(drvdata, reg); in si5351_read_parameters()
147 si5351_bulk_read(drvdata, reg, SI5351_PARAMETERS_LENGTH, buf); in si5351_read_parameters()
155 static void si5351_write_parameters(struct si5351_driver_data *drvdata, in si5351_write_parameters() argument
164 si5351_reg_write(drvdata, reg, buf[0]); in si5351_write_parameters()
170 buf[2] = si5351_reg_read(drvdata, reg + 2) & ~0x03; in si5351_write_parameters()
178 si5351_bulk_write(drvdata, reg, SI5351_PARAMETERS_LENGTH, buf); in si5351_write_parameters()
224 struct si5351_driver_data *drvdata = in si5351_xtal_prepare() local
226 si5351_set_bits(drvdata, SI5351_FANOUT_ENABLE, in si5351_xtal_prepare()
233 struct si5351_driver_data *drvdata = in si5351_xtal_unprepare() local
235 si5351_set_bits(drvdata, SI5351_FANOUT_ENABLE, in si5351_xtal_unprepare()
249 struct si5351_driver_data *drvdata = in si5351_clkin_prepare() local
251 si5351_set_bits(drvdata, SI5351_FANOUT_ENABLE, in si5351_clkin_prepare()
258 struct si5351_driver_data *drvdata = in si5351_clkin_unprepare() local
260 si5351_set_bits(drvdata, SI5351_FANOUT_ENABLE, in si5351_clkin_unprepare()
272 struct si5351_driver_data *drvdata = in si5351_clkin_recalc_rate() local
291 si5351_set_bits(drvdata, SI5351_PLL_INPUT_SOURCE, in si5351_clkin_recalc_rate()
294 dev_dbg(&drvdata->client->dev, "%s - clkin div = %d, rate = %lu\n", in si5351_clkin_recalc_rate()
315 dev_warn(&hwdata->drvdata->client->dev, "VXCO currently unsupported\n"); in si5351_vxco_prepare()
369 static int _si5351_pll_reparent(struct si5351_driver_data *drvdata, in _si5351_pll_reparent() argument
380 if (drvdata->variant != SI5351_VARIANT_C && in _si5351_pll_reparent()
384 si5351_set_bits(drvdata, SI5351_PLL_INPUT_SOURCE, mask, in _si5351_pll_reparent()
396 val = si5351_reg_read(hwdata->drvdata, SI5351_PLL_INPUT_SOURCE); in si5351_pll_get_parent()
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()
428 si5351_read_parameters(hwdata->drvdata, reg, &hwdata->params); in si5351_pll_recalc_rate()
440 dev_dbg(&hwdata->drvdata->client->dev, in si5351_pll_recalc_rate()
498 dev_dbg(&hwdata->drvdata->client->dev, in si5351_pll_round_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()
523 si5351_reg_write(hwdata->drvdata, SI5351_PLL_RESET, in si5351_pll_set_rate()
527 dev_dbg(&hwdata->drvdata->client->dev, in si5351_pll_set_rate()
567 static int _si5351_msynth_reparent(struct si5351_driver_data *drvdata, in _si5351_msynth_reparent() argument
576 si5351_set_bits(drvdata, SI5351_CLK0_CTRL + num, SI5351_CLK_PLL_SELECT, in _si5351_msynth_reparent()
588 val = si5351_reg_read(hwdata->drvdata, SI5351_CLK0_CTRL + hwdata->num); in si5351_msynth_get_parent()
598 return _si5351_msynth_reparent(hwdata->drvdata, hwdata->num, in si5351_msynth_set_parent()
613 si5351_read_parameters(hwdata->drvdata, reg, &hwdata->params); in si5351_msynth_recalc_rate()
624 } else if ((si5351_reg_read(hwdata->drvdata, reg + 2) & in si5351_msynth_recalc_rate()
638 dev_dbg(&hwdata->drvdata->client->dev, in si5351_msynth_recalc_rate()
751 dev_dbg(&hwdata->drvdata->client->dev, in si5351_msynth_round_rate()
768 si5351_write_parameters(hwdata->drvdata, reg, &hwdata->params); in si5351_msynth_set_rate()
775 si5351_set_bits(hwdata->drvdata, reg + 2, in si5351_msynth_set_rate()
778 si5351_set_bits(hwdata->drvdata, SI5351_CLK0_CTRL + hwdata->num, in si5351_msynth_set_rate()
783 dev_dbg(&hwdata->drvdata->client->dev, in si5351_msynth_set_rate()
803 static int _si5351_clkout_reparent(struct si5351_driver_data *drvdata, in _si5351_clkout_reparent() argument
826 if (drvdata->variant != SI5351_VARIANT_C) in _si5351_clkout_reparent()
835 si5351_set_bits(drvdata, SI5351_CLK0_CTRL + num, in _si5351_clkout_reparent()
841 struct si5351_driver_data *drvdata, int num, in _si5351_clkout_set_drive_strength() argument
866 si5351_set_bits(drvdata, SI5351_CLK0_CTRL + num, in _si5351_clkout_set_drive_strength()
872 struct si5351_driver_data *drvdata, int num, in _si5351_clkout_set_disable_state() argument
901 si5351_set_bits(drvdata, reg, mask, val << shift); in _si5351_clkout_set_disable_state()
906 static void _si5351_clkout_reset_pll(struct si5351_driver_data *drvdata, int num) in _si5351_clkout_reset_pll() argument
908 u8 val = si5351_reg_read(drvdata, SI5351_CLK0_CTRL + num); in _si5351_clkout_reset_pll()
916 si5351_reg_write(drvdata, SI5351_PLL_RESET, in _si5351_clkout_reset_pll()
920 dev_dbg(&drvdata->client->dev, "%s - %s: pll = %d\n", in _si5351_clkout_reset_pll()
921 __func__, clk_hw_get_name(&drvdata->clkout[num].hw), in _si5351_clkout_reset_pll()
930 hwdata->drvdata->client->dev.platform_data; in si5351_clkout_prepare()
932 si5351_set_bits(hwdata->drvdata, SI5351_CLK0_CTRL + hwdata->num, in si5351_clkout_prepare()
940 _si5351_clkout_reset_pll(hwdata->drvdata, hwdata->num); in si5351_clkout_prepare()
942 si5351_set_bits(hwdata->drvdata, SI5351_OUTPUT_ENABLE_CTRL, in si5351_clkout_prepare()
952 si5351_set_bits(hwdata->drvdata, SI5351_CLK0_CTRL + hwdata->num, in si5351_clkout_unprepare()
954 si5351_set_bits(hwdata->drvdata, SI5351_OUTPUT_ENABLE_CTRL, in si5351_clkout_unprepare()
965 val = si5351_reg_read(hwdata->drvdata, SI5351_CLK0_CTRL + hwdata->num); in si5351_clkout_get_parent()
1005 return _si5351_clkout_reparent(hwdata->drvdata, hwdata->num, parent); in si5351_clkout_set_parent()
1021 rdiv = si5351_reg_read(hwdata->drvdata, reg); in si5351_clkout_recalc_rate()
1077 dev_dbg(&hwdata->drvdata->client->dev, in si5351_clkout_round_rate()
1109 si5351_set_bits(hwdata->drvdata, SI5351_CLK6_7_OUTPUT_DIVIDER, in si5351_clkout_set_rate()
1113 si5351_set_bits(hwdata->drvdata, SI5351_CLK6_7_OUTPUT_DIVIDER, in si5351_clkout_set_rate()
1118 si5351_set_bits(hwdata->drvdata, in si5351_clkout_set_rate()
1125 si5351_set_bits(hwdata->drvdata, SI5351_CLK0_CTRL + hwdata->num, in si5351_clkout_set_rate()
1128 dev_dbg(&hwdata->drvdata->client->dev, in si5351_clkout_set_rate()
1344 struct si5351_driver_data *drvdata = data; in si53351_of_clk_get() local
1347 if (idx >= drvdata->num_clkout) { in si53351_of_clk_get()
1352 return &drvdata->clkout[idx].hw; in si53351_of_clk_get()
1372 struct si5351_driver_data *drvdata; in si5351_i2c_probe() local
1386 drvdata = devm_kzalloc(&client->dev, sizeof(*drvdata), GFP_KERNEL); in si5351_i2c_probe()
1387 if (!drvdata) in si5351_i2c_probe()
1390 i2c_set_clientdata(client, drvdata); in si5351_i2c_probe()
1391 drvdata->client = client; in si5351_i2c_probe()
1392 drvdata->variant = variant; in si5351_i2c_probe()
1393 drvdata->pxtal = devm_clk_get(&client->dev, "xtal"); in si5351_i2c_probe()
1394 drvdata->pclkin = devm_clk_get(&client->dev, "clkin"); in si5351_i2c_probe()
1396 if (PTR_ERR(drvdata->pxtal) == -EPROBE_DEFER || in si5351_i2c_probe()
1397 PTR_ERR(drvdata->pclkin) == -EPROBE_DEFER) in si5351_i2c_probe()
1404 if (IS_ERR(drvdata->pxtal) && in si5351_i2c_probe()
1405 (drvdata->variant != SI5351_VARIANT_C || IS_ERR(drvdata->pclkin))) { in si5351_i2c_probe()
1410 drvdata->regmap = devm_regmap_init_i2c(client, &si5351_regmap_config); in si5351_i2c_probe()
1411 if (IS_ERR(drvdata->regmap)) { in si5351_i2c_probe()
1413 return PTR_ERR(drvdata->regmap); in si5351_i2c_probe()
1417 si5351_reg_write(drvdata, SI5351_INTERRUPT_MASK, 0xf0); in si5351_i2c_probe()
1419 if (drvdata->variant != SI5351_VARIANT_C) in si5351_i2c_probe()
1420 si5351_set_bits(drvdata, SI5351_PLL_INPUT_SOURCE, in si5351_i2c_probe()
1425 ret = _si5351_pll_reparent(drvdata, n, pdata->pll_src[n]); in si5351_i2c_probe()
1435 ret = _si5351_msynth_reparent(drvdata, n, in si5351_i2c_probe()
1444 ret = _si5351_clkout_reparent(drvdata, n, in si5351_i2c_probe()
1453 ret = _si5351_clkout_set_drive_strength(drvdata, n, in si5351_i2c_probe()
1462 ret = _si5351_clkout_set_disable_state(drvdata, n, in si5351_i2c_probe()
1477 if (!IS_ERR(drvdata->pxtal)) { in si5351_i2c_probe()
1478 drvdata->pxtal_name = __clk_get_name(drvdata->pxtal); in si5351_i2c_probe()
1479 init.parent_names = &drvdata->pxtal_name; in si5351_i2c_probe()
1482 drvdata->xtal.init = &init; in si5351_i2c_probe()
1483 ret = devm_clk_hw_register(&client->dev, &drvdata->xtal); in si5351_i2c_probe()
1490 if (drvdata->variant == SI5351_VARIANT_C) { in si5351_i2c_probe()
1494 if (!IS_ERR(drvdata->pclkin)) { in si5351_i2c_probe()
1495 drvdata->pclkin_name = __clk_get_name(drvdata->pclkin); in si5351_i2c_probe()
1496 init.parent_names = &drvdata->pclkin_name; in si5351_i2c_probe()
1499 drvdata->clkin.init = &init; in si5351_i2c_probe()
1500 ret = devm_clk_hw_register(&client->dev, &drvdata->clkin); in si5351_i2c_probe()
1509 num_parents = (drvdata->variant == SI5351_VARIANT_C) ? 2 : 1; in si5351_i2c_probe()
1514 drvdata->pll[0].num = 0; in si5351_i2c_probe()
1515 drvdata->pll[0].drvdata = drvdata; in si5351_i2c_probe()
1516 drvdata->pll[0].hw.init = &init; in si5351_i2c_probe()
1523 ret = devm_clk_hw_register(&client->dev, &drvdata->pll[0].hw); in si5351_i2c_probe()
1530 drvdata->pll[1].num = 1; in si5351_i2c_probe()
1531 drvdata->pll[1].drvdata = drvdata; in si5351_i2c_probe()
1532 drvdata->pll[1].hw.init = &init; in si5351_i2c_probe()
1534 if (drvdata->variant == SI5351_VARIANT_B) { in si5351_i2c_probe()
1547 ret = devm_clk_hw_register(&client->dev, &drvdata->pll[1].hw); in si5351_i2c_probe()
1554 num_clocks = (drvdata->variant == SI5351_VARIANT_A3) ? 3 : 8; in si5351_i2c_probe()
1556 if (drvdata->variant == SI5351_VARIANT_B) in si5351_i2c_probe()
1561 drvdata->msynth = devm_kcalloc(&client->dev, num_clocks, in si5351_i2c_probe()
1562 sizeof(*drvdata->msynth), GFP_KERNEL); in si5351_i2c_probe()
1563 drvdata->clkout = devm_kcalloc(&client->dev, num_clocks, in si5351_i2c_probe()
1564 sizeof(*drvdata->clkout), GFP_KERNEL); in si5351_i2c_probe()
1565 drvdata->num_clkout = num_clocks; in si5351_i2c_probe()
1567 if (WARN_ON(!drvdata->msynth || !drvdata->clkout)) { in si5351_i2c_probe()
1573 drvdata->msynth[n].num = n; in si5351_i2c_probe()
1574 drvdata->msynth[n].drvdata = drvdata; in si5351_i2c_probe()
1575 drvdata->msynth[n].hw.init = &init; in si5351_i2c_probe()
1585 &drvdata->msynth[n].hw); in si5351_i2c_probe()
1593 num_parents = (drvdata->variant == SI5351_VARIANT_C) ? 4 : 3; in si5351_i2c_probe()
1601 drvdata->clkout[n].num = n; in si5351_i2c_probe()
1602 drvdata->clkout[n].drvdata = drvdata; in si5351_i2c_probe()
1603 drvdata->clkout[n].hw.init = &init; in si5351_i2c_probe()
1613 &drvdata->clkout[n].hw); in si5351_i2c_probe()
1623 ret = clk_set_rate(drvdata->clkout[n].hw.clk, in si5351_i2c_probe()
1633 drvdata); in si5351_i2c_probe()