Lines Matching refs:wsa884x

1408 static void wsa884x_set_gain_parameters(struct wsa884x_priv *wsa884x)  in wsa884x_set_gain_parameters()  argument
1410 struct regmap *regmap = wsa884x->regmap; in wsa884x_set_gain_parameters()
1422 if (wsa884x->dev_mode == WSA884X_RECEIVER) { in wsa884x_set_gain_parameters()
1445 if (wsa884x->port_enable[WSA884X_PORT_COMP]) { in wsa884x_set_gain_parameters()
1460 static void wsa884x_init(struct wsa884x_priv *wsa884x) in wsa884x_init() argument
1465 if (!regmap_read(wsa884x->regmap, WSA884X_OTP_REG_0, &variant)) in wsa884x_init()
1466 wsa884x->variant = variant & WSA884X_OTP_REG_0_ID_MASK; in wsa884x_init()
1468 regmap_multi_reg_write(wsa884x->regmap, wsa884x_reg_init, in wsa884x_init()
1475 if (wsa884x->variant == WSA884X_OTP_ID_WSA8845H) in wsa884x_init()
1481 regmap_write(wsa884x->regmap, WSA884X_ANA_WO_CTL_0, wo_ctl_0); in wsa884x_init()
1483 wsa884x_set_gain_parameters(wsa884x); in wsa884x_init()
1485 wsa884x->hw_init = false; in wsa884x_init()
1491 struct wsa884x_priv *wsa884x = dev_get_drvdata(&slave->dev); in wsa884x_update_status() local
1495 wsa884x->hw_init = false; in wsa884x_update_status()
1496 regcache_cache_only(wsa884x->regmap, true); in wsa884x_update_status()
1497 regcache_mark_dirty(wsa884x->regmap); in wsa884x_update_status()
1501 if (wsa884x->hw_init || status != SDW_SLAVE_ATTACHED) in wsa884x_update_status()
1504 regcache_cache_only(wsa884x->regmap, false); in wsa884x_update_status()
1505 ret = regcache_sync(wsa884x->regmap); in wsa884x_update_status()
1511 wsa884x_init(wsa884x); in wsa884x_update_status()
1520 struct wsa884x_priv *wsa884x = dev_get_drvdata(&slave->dev); in wsa884x_port_prep() local
1523 wsa884x->port_prepared[prepare_ch->num - 1] = true; in wsa884x_port_prep()
1525 wsa884x->port_prepared[prepare_ch->num - 1] = false; in wsa884x_port_prep()
1539 struct wsa884x_priv *wsa884x = snd_soc_component_get_drvdata(component); in wsa884x_dev_mode_get() local
1541 ucontrol->value.enumerated.item[0] = wsa884x->dev_mode; in wsa884x_dev_mode_get()
1550 struct wsa884x_priv *wsa884x = snd_soc_component_get_drvdata(component); in wsa884x_dev_mode_put() local
1552 if (wsa884x->dev_mode == ucontrol->value.enumerated.item[0]) in wsa884x_dev_mode_put()
1555 wsa884x->dev_mode = ucontrol->value.enumerated.item[0]; in wsa884x_dev_mode_put()
1564 struct wsa884x_priv *wsa884x = snd_soc_component_get_drvdata(comp); in wsa884x_get_swr_port() local
1568 ucontrol->value.integer.value[0] = wsa884x->port_enable[portidx]; in wsa884x_get_swr_port()
1577 struct wsa884x_priv *wsa884x = snd_soc_component_get_drvdata(comp); in wsa884x_set_swr_port() local
1582 if (wsa884x->port_enable[portidx]) in wsa884x_set_swr_port()
1585 wsa884x->port_enable[portidx] = true; in wsa884x_set_swr_port()
1587 if (!wsa884x->port_enable[portidx]) in wsa884x_set_swr_port()
1590 wsa884x->port_enable[portidx] = false; in wsa884x_set_swr_port()
1598 struct wsa884x_priv *wsa884x = snd_soc_component_get_drvdata(comp); in wsa884x_codec_probe() local
1600 snd_soc_component_init_regmap(comp, wsa884x->regmap); in wsa884x_codec_probe()
1606 struct wsa884x_priv *wsa884x) in wsa884x_spkr_post_pmu() argument
1610 wsa884x_set_gain_parameters(wsa884x); in wsa884x_spkr_post_pmu()
1611 if (wsa884x->dev_mode == WSA884X_RECEIVER) { in wsa884x_spkr_post_pmu()
1626 if (wsa884x->port_enable[WSA884X_PORT_PBR]) { in wsa884x_spkr_post_pmu()
1631 if (wsa884x->dev_mode == WSA884X_RECEIVER) in wsa884x_spkr_post_pmu()
1648 struct wsa884x_priv *wsa884x = snd_soc_component_get_drvdata(component); in wsa884x_spkr_event() local
1652 wsa884x_spkr_post_pmu(component, wsa884x); in wsa884x_spkr_event()
1721 struct wsa884x_priv *wsa884x = dev_get_drvdata(dai->dev); in wsa884x_hw_params() local
1724 wsa884x->active_ports = 0; in wsa884x_hw_params()
1726 if (!wsa884x->port_enable[i]) in wsa884x_hw_params()
1729 wsa884x->port_config[wsa884x->active_ports] = wsa884x_pconfig[i]; in wsa884x_hw_params()
1730 wsa884x->active_ports++; in wsa884x_hw_params()
1733 wsa884x->sconfig.frame_rate = params_rate(params); in wsa884x_hw_params()
1735 return sdw_stream_add_slave(wsa884x->slave, &wsa884x->sconfig, in wsa884x_hw_params()
1736 wsa884x->port_config, wsa884x->active_ports, in wsa884x_hw_params()
1737 wsa884x->sruntime); in wsa884x_hw_params()
1743 struct wsa884x_priv *wsa884x = dev_get_drvdata(dai->dev); in wsa884x_hw_free() local
1745 sdw_stream_remove_slave(wsa884x->slave, wsa884x->sruntime); in wsa884x_hw_free()
1777 struct wsa884x_priv *wsa884x = dev_get_drvdata(dai->dev); in wsa884x_set_stream() local
1779 wsa884x->sruntime = stream; in wsa884x_set_stream()
1821 struct wsa884x_priv *wsa884x; in wsa884x_probe() local
1825 wsa884x = devm_kzalloc(dev, sizeof(*wsa884x), GFP_KERNEL); in wsa884x_probe()
1826 if (!wsa884x) in wsa884x_probe()
1830 wsa884x->supplies[i].supply = wsa884x_supply_name[i]; in wsa884x_probe()
1833 wsa884x->supplies); in wsa884x_probe()
1837 ret = regulator_bulk_enable(WSA884X_SUPPLIES_NUM, wsa884x->supplies); in wsa884x_probe()
1842 wsa884x->supplies); in wsa884x_probe()
1846 wsa884x->sd_n = devm_gpiod_get_optional(dev, "powerdown", in wsa884x_probe()
1848 if (IS_ERR(wsa884x->sd_n)) in wsa884x_probe()
1849 return dev_err_probe(dev, PTR_ERR(wsa884x->sd_n), in wsa884x_probe()
1852 dev_set_drvdata(dev, wsa884x); in wsa884x_probe()
1853 wsa884x->slave = pdev; in wsa884x_probe()
1854 wsa884x->dev = dev; in wsa884x_probe()
1855 wsa884x->dev_mode = WSA884X_SPEAKER; in wsa884x_probe()
1856 wsa884x->sconfig.ch_count = 1; in wsa884x_probe()
1857 wsa884x->sconfig.bps = 1; in wsa884x_probe()
1858 wsa884x->sconfig.direction = SDW_DATA_DIR_RX; in wsa884x_probe()
1859 wsa884x->sconfig.type = SDW_STREAM_PDM; in wsa884x_probe()
1867 gpiod_direction_output(wsa884x->sd_n, 0); in wsa884x_probe()
1868 ret = devm_add_action_or_reset(dev, wsa884x_gpio_powerdown, wsa884x->sd_n); in wsa884x_probe()
1872 wsa884x->regmap = devm_regmap_init_sdw(pdev, &wsa884x_regmap_config); in wsa884x_probe()
1873 if (IS_ERR(wsa884x->regmap)) in wsa884x_probe()
1874 return dev_err_probe(dev, PTR_ERR(wsa884x->regmap), in wsa884x_probe()
1878 regcache_cache_only(wsa884x->regmap, true); in wsa884x_probe()
1879 wsa884x->hw_init = true; in wsa884x_probe()