Lines Matching refs:wsa883x

1001 static void wsa883x_init(struct wsa883x_priv *wsa883x)  in wsa883x_init()  argument
1003 struct regmap *regmap = wsa883x->regmap; in wsa883x_init()
1007 wsa883x->variant = variant & WSA883X_ID_MASK; in wsa883x_init()
1010 wsa883x->version = version; in wsa883x_init()
1012 switch (wsa883x->variant) { in wsa883x_init()
1014 dev_info(wsa883x->dev, "WSA883X Version 1_%d, Variant: WSA8830\n", in wsa883x_init()
1015 wsa883x->version); in wsa883x_init()
1018 dev_info(wsa883x->dev, "WSA883X Version 1_%d, Variant: WSA8835\n", in wsa883x_init()
1019 wsa883x->version); in wsa883x_init()
1022 dev_info(wsa883x->dev, "WSA883X Version 1_%d, Variant: WSA8832\n", in wsa883x_init()
1023 wsa883x->version); in wsa883x_init()
1026 dev_info(wsa883x->dev, "WSA883X Version 1_%d, Variant: WSA8835_V2\n", in wsa883x_init()
1027 wsa883x->version); in wsa883x_init()
1033 wsa883x->comp_offset = COMP_OFFSET2; in wsa883x_init()
1038 if (wsa883x->variant == WSA8830 || wsa883x->variant == WSA8832) { in wsa883x_init()
1039 wsa883x->comp_offset = COMP_OFFSET3; in wsa883x_init()
1042 wsa883x->comp_offset); in wsa883x_init()
1049 struct wsa883x_priv *wsa883x = dev_get_drvdata(&slave->dev); in wsa883x_update_status() local
1052 wsa883x_init(wsa883x); in wsa883x_update_status()
1061 struct wsa883x_priv *wsa883x = dev_get_drvdata(&slave->dev); in wsa883x_port_prep() local
1064 wsa883x->port_prepared[prepare_ch->num - 1] = true; in wsa883x_port_prep()
1066 wsa883x->port_prepared[prepare_ch->num - 1] = false; in wsa883x_port_prep()
1080 struct wsa883x_priv *wsa883x = snd_soc_component_get_drvdata(component); in wsa_dev_mode_get() local
1082 ucontrol->value.enumerated.item[0] = wsa883x->dev_mode; in wsa_dev_mode_get()
1091 struct wsa883x_priv *wsa883x = snd_soc_component_get_drvdata(component); in wsa_dev_mode_put() local
1093 if (wsa883x->dev_mode == ucontrol->value.enumerated.item[0]) in wsa_dev_mode_put()
1096 wsa883x->dev_mode = ucontrol->value.enumerated.item[0]; in wsa_dev_mode_put()
1147 struct wsa883x_priv *wsa883x = snd_soc_component_get_drvdata(component); in wsa883x_get_comp_offset() local
1149 ucontrol->value.integer.value[0] = wsa883x->comp_offset; in wsa883x_get_comp_offset()
1158 struct wsa883x_priv *wsa883x = snd_soc_component_get_drvdata(component); in wsa883x_set_comp_offset() local
1160 if (wsa883x->comp_offset == ucontrol->value.integer.value[0]) in wsa883x_set_comp_offset()
1163 wsa883x->comp_offset = ucontrol->value.integer.value[0]; in wsa883x_set_comp_offset()
1170 struct wsa883x_priv *wsa883x = snd_soc_component_get_drvdata(comp); in wsa883x_codec_probe() local
1172 snd_soc_component_init_regmap(comp, wsa883x->regmap); in wsa883x_codec_probe()
1181 struct wsa883x_priv *wsa883x = snd_soc_component_get_drvdata(component); in wsa883x_spkr_event() local
1185 switch (wsa883x->dev_mode) { in wsa883x_spkr_event()
1210 if (wsa883x->port_enable[WSA883X_PORT_COMP]) in wsa883x_spkr_event()
1213 wsa883x->comp_offset); in wsa883x_spkr_event()
1280 struct wsa883x_priv *wsa883x = dev_get_drvdata(dai->dev); in wsa883x_hw_params() local
1283 wsa883x->active_ports = 0; in wsa883x_hw_params()
1285 if (!wsa883x->port_enable[i]) in wsa883x_hw_params()
1288 wsa883x->port_config[wsa883x->active_ports] = wsa883x_pconfig[i]; in wsa883x_hw_params()
1289 wsa883x->active_ports++; in wsa883x_hw_params()
1292 wsa883x->sconfig.frame_rate = params_rate(params); in wsa883x_hw_params()
1294 return sdw_stream_add_slave(wsa883x->slave, &wsa883x->sconfig, in wsa883x_hw_params()
1295 wsa883x->port_config, wsa883x->active_ports, in wsa883x_hw_params()
1296 wsa883x->sruntime); in wsa883x_hw_params()
1302 struct wsa883x_priv *wsa883x = dev_get_drvdata(dai->dev); in wsa883x_hw_free() local
1304 sdw_stream_remove_slave(wsa883x->slave, wsa883x->sruntime); in wsa883x_hw_free()
1312 struct wsa883x_priv *wsa883x = dev_get_drvdata(dai->dev); in wsa883x_set_sdw_stream() local
1314 wsa883x->sruntime = stream; in wsa883x_set_sdw_stream()
1369 struct wsa883x_priv *wsa883x; in wsa883x_probe() local
1373 wsa883x = devm_kzalloc(dev, sizeof(*wsa883x), GFP_KERNEL); in wsa883x_probe()
1374 if (!wsa883x) in wsa883x_probe()
1377 wsa883x->vdd = devm_regulator_get(dev, "vdd"); in wsa883x_probe()
1378 if (IS_ERR(wsa883x->vdd)) in wsa883x_probe()
1379 return dev_err_probe(dev, PTR_ERR(wsa883x->vdd), in wsa883x_probe()
1382 ret = regulator_enable(wsa883x->vdd); in wsa883x_probe()
1386 wsa883x->sd_n = devm_gpiod_get_optional(dev, "powerdown", in wsa883x_probe()
1388 if (IS_ERR(wsa883x->sd_n)) { in wsa883x_probe()
1389 ret = dev_err_probe(dev, PTR_ERR(wsa883x->sd_n), in wsa883x_probe()
1394 dev_set_drvdata(dev, wsa883x); in wsa883x_probe()
1395 wsa883x->slave = pdev; in wsa883x_probe()
1396 wsa883x->dev = dev; in wsa883x_probe()
1397 wsa883x->sconfig.ch_count = 1; in wsa883x_probe()
1398 wsa883x->sconfig.bps = 1; in wsa883x_probe()
1399 wsa883x->sconfig.direction = SDW_DATA_DIR_RX; in wsa883x_probe()
1400 wsa883x->sconfig.type = SDW_STREAM_PDM; in wsa883x_probe()
1406 gpiod_direction_output(wsa883x->sd_n, 0); in wsa883x_probe()
1408 wsa883x->regmap = devm_regmap_init_sdw(pdev, &wsa883x_regmap_config); in wsa883x_probe()
1409 if (IS_ERR(wsa883x->regmap)) { in wsa883x_probe()
1410 gpiod_direction_output(wsa883x->sd_n, 1); in wsa883x_probe()
1411 ret = dev_err_probe(dev, PTR_ERR(wsa883x->regmap), in wsa883x_probe()
1427 regulator_disable(wsa883x->vdd); in wsa883x_probe()