Lines Matching full:arizona
2 * arizona.c - Wolfson Arizona class device shared support
22 #include <linux/mfd/arizona/core.h>
23 #include <linux/mfd/arizona/registers.h>
25 #include "arizona.h"
70 dev_err(_fll->arizona->dev, "FLL%d: " fmt, _fll->id, ##__VA_ARGS__)
72 dev_warn(_fll->arizona->dev, "FLL%d: " fmt, _fll->id, ##__VA_ARGS__)
74 dev_dbg(_fll->arizona->dev, "FLL%d: " fmt, _fll->id, ##__VA_ARGS__)
88 struct arizona *arizona = dev_get_drvdata(component->dev->parent); in arizona_spk_ev() local
96 dev_crit(arizona->dev, in arizona_spk_ev()
101 regmap_update_bits_async(arizona->regmap, in arizona_spk_ev()
106 regmap_update_bits_async(arizona->regmap, in arizona_spk_ev()
119 struct arizona *arizona = data; in arizona_thermal_warn() local
123 ret = regmap_read(arizona->regmap, ARIZONA_INTERRUPT_RAW_STATUS_3, in arizona_thermal_warn()
126 dev_err(arizona->dev, "Failed to read thermal status: %d\n", in arizona_thermal_warn()
129 dev_crit(arizona->dev, "Thermal warning\n"); in arizona_thermal_warn()
137 struct arizona *arizona = data; in arizona_thermal_shutdown() local
141 ret = regmap_read(arizona->regmap, ARIZONA_INTERRUPT_RAW_STATUS_3, in arizona_thermal_shutdown()
144 dev_err(arizona->dev, "Failed to read thermal status: %d\n", in arizona_thermal_shutdown()
147 dev_crit(arizona->dev, "Thermal shutdown\n"); in arizona_thermal_shutdown()
148 ret = regmap_update_bits(arizona->regmap, in arizona_thermal_shutdown()
153 dev_crit(arizona->dev, in arizona_thermal_shutdown()
177 struct arizona *arizona = priv->arizona; in arizona_init_spk() local
184 switch (arizona->type) { in arizona_init_spk()
200 int arizona_init_spk_irqs(struct arizona *arizona) in arizona_init_spk_irqs() argument
204 ret = arizona_request_irq(arizona, ARIZONA_IRQ_SPK_OVERHEAT_WARN, in arizona_init_spk_irqs()
206 arizona); in arizona_init_spk_irqs()
208 dev_err(arizona->dev, in arizona_init_spk_irqs()
212 ret = arizona_request_irq(arizona, ARIZONA_IRQ_SPK_OVERHEAT, in arizona_init_spk_irqs()
214 arizona); in arizona_init_spk_irqs()
216 dev_err(arizona->dev, in arizona_init_spk_irqs()
224 int arizona_free_spk_irqs(struct arizona *arizona) in arizona_free_spk_irqs() argument
226 arizona_free_irq(arizona, ARIZONA_IRQ_SPK_OVERHEAT_WARN, arizona); in arizona_free_spk_irqs()
227 arizona_free_irq(arizona, ARIZONA_IRQ_SPK_OVERHEAT, arizona); in arizona_free_spk_irqs()
246 struct arizona *arizona = priv->arizona; in arizona_init_mono() local
250 if (arizona->pdata.out_mono[i]) in arizona_init_mono()
262 struct arizona *arizona = priv->arizona; in arizona_init_gpio() local
265 switch (arizona->type) { in arizona_init_gpio()
277 for (i = 0; i < ARRAY_SIZE(arizona->pdata.gpio_defaults); i++) { in arizona_init_gpio()
278 switch (arizona->pdata.gpio_defaults[i] & ARIZONA_GPN_FN_MASK) { in arizona_init_gpio()
296 int arizona_init_common(struct arizona *arizona) in arizona_init_common() argument
298 struct arizona_pdata *pdata = &arizona->pdata; in arizona_init_common()
302 BLOCKING_INIT_NOTIFIER_HEAD(&arizona->notifier); in arizona_init_common()
311 regmap_update_bits(arizona->regmap, in arizona_init_common()
318 regmap_update_bits(arizona->regmap, in arizona_init_common()
325 regmap_update_bits(arizona->regmap, in arizona_init_common()
337 switch (arizona->type) { in arizona_init_common()
340 regmap_update_bits(arizona->regmap, in arizona_init_common()
346 regmap_update_bits(arizona->regmap, in arizona_init_common()
365 regmap_update_bits(arizona->regmap, in arizona_init_common()
374 int arizona_init_vol_limit(struct arizona *arizona) in arizona_init_vol_limit() argument
378 for (i = 0; i < ARRAY_SIZE(arizona->pdata.out_vol_limit); ++i) { in arizona_init_vol_limit()
379 if (arizona->pdata.out_vol_limit[i]) in arizona_init_vol_limit()
380 regmap_update_bits(arizona->regmap, in arizona_init_vol_limit()
383 arizona->pdata.out_vol_limit[i]); in arizona_init_vol_limit()
961 struct arizona *arizona = priv->arizona; in arizona_out_ev() local
978 switch (arizona->type) { in arizona_out_ev()
1028 switch (arizona->type) { in arizona_out_ev()
1079 struct arizona *arizona = priv->arizona; in arizona_hp_ev() local
1098 priv->arizona->hp_ena &= ~mask; in arizona_hp_ev()
1099 priv->arizona->hp_ena |= val; in arizona_hp_ev()
1102 if (priv->arizona->hpdet_clamp) in arizona_hp_ev()
1105 regmap_update_bits_async(arizona->regmap, ARIZONA_OUTPUT_ENABLES_1, in arizona_hp_ev()
1115 struct arizona *arizona = priv->arizona; in arizona_dvfs_enable() local
1118 ret = regulator_set_voltage(arizona->dcvdd, 1800000, 1800000); in arizona_dvfs_enable()
1124 ret = regmap_update_bits(arizona->regmap, in arizona_dvfs_enable()
1130 regulator_set_voltage(arizona->dcvdd, 1200000, 1800000); in arizona_dvfs_enable()
1140 struct arizona *arizona = priv->arizona; in arizona_dvfs_disable() local
1143 ret = regmap_update_bits(arizona->regmap, in arizona_dvfs_disable()
1151 ret = regulator_set_voltage(arizona->dcvdd, 1200000, 1800000); in arizona_dvfs_disable()
1331 struct arizona *arizona = dev_get_drvdata(component->dev->parent); in arizona_clk_ev() local
1336 ret = regmap_read(arizona->regmap, w->reg, &val); in arizona_clk_ev()
1357 return clk_prepare_enable(arizona->mclk[clk_idx]); in arizona_clk_ev()
1359 clk_disable_unprepare(arizona->mclk[clk_idx]); in arizona_clk_ev()
1371 struct arizona *arizona = priv->arizona; in arizona_set_sysclk() local
1426 dev_dbg(arizona->dev, "%s cleared\n", name); in arizona_set_sysclk()
1438 dev_dbg(arizona->dev, "%s set to %uHz", name, freq); in arizona_set_sysclk()
1440 return regmap_update_bits(arizona->regmap, reg, mask, val); in arizona_set_sysclk()
1448 struct arizona *arizona = priv->arizona; in arizona_set_fmt() local
1521 regmap_update_bits_async(arizona->regmap, base + ARIZONA_AIF_BCLK_CTRL, in arizona_set_fmt()
1525 regmap_update_bits_async(arizona->regmap, base + ARIZONA_AIF_TX_PIN_CTRL, in arizona_set_fmt()
1528 regmap_update_bits_async(arizona->regmap, in arizona_set_fmt()
1532 regmap_update_bits(arizona->regmap, base + ARIZONA_AIF_FORMAT, in arizona_set_fmt()
1656 struct arizona *arizona = priv->arizona; in arizona_wm5102_set_dac_comp() local
1664 mutex_lock(&arizona->dac_comp_lock); in arizona_wm5102_set_dac_comp()
1666 dac_comp[1].def = arizona->dac_comp_coeff; in arizona_wm5102_set_dac_comp()
1668 dac_comp[2].def = arizona->dac_comp_enabled; in arizona_wm5102_set_dac_comp()
1670 mutex_unlock(&arizona->dac_comp_lock); in arizona_wm5102_set_dac_comp()
1672 regmap_multi_reg_write(arizona->regmap, in arizona_wm5102_set_dac_comp()
1701 switch (priv->arizona->type) { in arizona_hw_params_rate()
1720 switch (priv->arizona->type) { in arizona_hw_params_rate()
1783 struct arizona *arizona = priv->arizona; in arizona_hw_params() local
1788 int chan_limit = arizona->pdata.max_channels_clocked[dai->id - 1]; in arizona_hw_params()
1789 int tdm_width = arizona->tdm_width[dai->id - 1]; in arizona_hw_params()
1790 int tdm_slots = arizona->tdm_slots[dai->id - 1]; in arizona_hw_params()
1856 regmap_update_bits_async(arizona->regmap, in arizona_hw_params()
1859 regmap_update_bits(arizona->regmap, in arizona_hw_params()
1868 regmap_update_bits_async(arizona->regmap, in arizona_hw_params()
1871 regmap_update_bits_async(arizona->regmap, in arizona_hw_params()
1874 regmap_update_bits_async(arizona->regmap, in arizona_hw_params()
1877 regmap_update_bits_async(arizona->regmap, in arizona_hw_params()
1881 regmap_update_bits(arizona->regmap, in arizona_hw_params()
1890 regmap_update_bits_async(arizona->regmap, in arizona_hw_params()
1893 regmap_update_bits(arizona->regmap, in arizona_hw_params()
1980 struct arizona *arizona = priv->arizona; in arizona_set_channels_to_mask() local
1988 regmap_write(arizona->regmap, base + i, slot); in arizona_set_channels_to_mask()
2002 struct arizona *arizona = priv->arizona; in arizona_set_tdm_slot() local
2021 arizona->tdm_width[dai->id - 1] = slot_width; in arizona_set_tdm_slot()
2022 arizona->tdm_slots[dai->id - 1] = slots; in arizona_set_tdm_slot()
2180 switch (fll->arizona->type) { in arizona_calc_fratio()
2186 if (fll->arizona->rev < 3 || sync) in arizona_calc_fratio()
2331 static void arizona_apply_fll(struct arizona *arizona, unsigned int base, in arizona_apply_fll() argument
2335 regmap_update_bits_async(arizona->regmap, base + 3, in arizona_apply_fll()
2337 regmap_update_bits_async(arizona->regmap, base + 4, in arizona_apply_fll()
2339 regmap_update_bits_async(arizona->regmap, base + 5, in arizona_apply_fll()
2342 regmap_update_bits_async(arizona->regmap, base + 6, in arizona_apply_fll()
2349 regmap_update_bits(arizona->regmap, base + 0x7, in arizona_apply_fll()
2353 regmap_update_bits(arizona->regmap, base + 0x5, in arizona_apply_fll()
2356 regmap_update_bits(arizona->regmap, base + 0x9, in arizona_apply_fll()
2361 regmap_update_bits_async(arizona->regmap, base + 2, in arizona_apply_fll()
2368 struct arizona *arizona = fll->arizona; in arizona_is_enabled_fll() local
2372 ret = regmap_read(arizona->regmap, base + 1, ®); in arizona_is_enabled_fll()
2384 struct arizona *arizona = fll->arizona; in arizona_set_fll_clks() local
2389 ret = regmap_read(arizona->regmap, base + 6, &val); in arizona_set_fll_clks()
2401 clk = arizona->mclk[ARIZONA_MCLK1]; in arizona_set_fll_clks()
2404 clk = arizona->mclk[ARIZONA_MCLK2]; in arizona_set_fll_clks()
2420 struct arizona *arizona = fll->arizona; in arizona_enable_fll() local
2435 regmap_update_bits(fll->arizona->regmap, fll->base + 1, in arizona_enable_fll()
2438 regmap_update_bits_async(fll->arizona->regmap, fll->base + 0x9, in arizona_enable_fll()
2458 arizona_apply_fll(arizona, fll->base, &cfg, fll->ref_src, in arizona_enable_fll()
2463 arizona_apply_fll(arizona, fll->base + 0x10, &cfg, in arizona_enable_fll()
2470 arizona_apply_fll(arizona, fll->base, &cfg, in arizona_enable_fll()
2473 regmap_update_bits_async(arizona->regmap, fll->base + 0x11, in arizona_enable_fll()
2488 regmap_update_bits_async(arizona->regmap, fll->base + 0x17, in arizona_enable_fll()
2491 regmap_update_bits_async(arizona->regmap, fll->base + 0x17, in arizona_enable_fll()
2496 pm_runtime_get_sync(arizona->dev); in arizona_enable_fll()
2500 regmap_update_bits_async(arizona->regmap, fll->base + 0x11, in arizona_enable_fll()
2505 regmap_update_bits_async(arizona->regmap, fll->base + 1, in arizona_enable_fll()
2509 regmap_update_bits_async(arizona->regmap, fll->base + 1, in arizona_enable_fll()
2520 regmap_read(arizona->regmap, in arizona_enable_fll()
2536 struct arizona *arizona = fll->arizona; in arizona_disable_fll() local
2539 regmap_update_bits_async(arizona->regmap, fll->base + 1, in arizona_disable_fll()
2541 regmap_update_bits_check(arizona->regmap, fll->base + 1, in arizona_disable_fll()
2543 regmap_update_bits_check(arizona->regmap, fll->base + 0x11, in arizona_disable_fll()
2545 regmap_update_bits_async(arizona->regmap, fll->base + 1, in arizona_disable_fll()
2553 pm_runtime_put_autosuspend(arizona->dev); in arizona_disable_fll()
2615 int arizona_init_fll(struct arizona *arizona, int id, int base, int lock_irq, in arizona_init_fll() argument
2622 fll->arizona = arizona; in arizona_init_fll()
2626 regmap_read(arizona->regmap, ARIZONA_CLOCK_32K_1, &val); in arizona_init_fll()
2641 regmap_update_bits(arizona->regmap, fll->base + 1, in arizona_init_fll()
2730 struct arizona *arizona = dev_get_drvdata(component->dev->parent); in arizona_eq_coeff_put() local
2737 len = params->num_regs * regmap_get_val_bytes(arizona->regmap); in arizona_eq_coeff_put()
2750 dev_err(arizona->dev, "Rejecting unstable EQ coefficients\n"); in arizona_eq_coeff_put()
2755 ret = regmap_read(arizona->regmap, params->base, &val); in arizona_eq_coeff_put()
2762 ret = regmap_raw_write(arizona->regmap, params->base, data, len); in arizona_eq_coeff_put()
2774 struct arizona *arizona = dev_get_drvdata(component->dev->parent); in arizona_lhpf_coeff_put() local
2779 dev_err(arizona->dev, "Rejecting unstable LHPF coefficients\n"); in arizona_lhpf_coeff_put()
2787 int arizona_of_get_audio_pdata(struct arizona *arizona) in arizona_of_get_audio_pdata() argument
2789 struct arizona_pdata *pdata = &arizona->pdata; in arizona_of_get_audio_pdata()
2790 struct device_node *np = arizona->dev->of_node; in arizona_of_get_audio_pdata()
2861 MODULE_DESCRIPTION("ASoC Wolfson Arizona class device support");