Lines Matching full:wsa883x

1001 static int wsa883x_init(struct wsa883x_priv *wsa883x)  in wsa883x_init()  argument
1003 struct regmap *regmap = wsa883x->regmap; in wsa883x_init()
1009 wsa883x->variant = variant & WSA883X_ID_MASK; in wsa883x_init()
1014 wsa883x->version = version; in wsa883x_init()
1016 switch (wsa883x->variant) { in wsa883x_init()
1018 dev_info(wsa883x->dev, "WSA883X Version 1_%d, Variant: WSA8830\n", in wsa883x_init()
1019 wsa883x->version); in wsa883x_init()
1022 dev_info(wsa883x->dev, "WSA883X Version 1_%d, Variant: WSA8835\n", in wsa883x_init()
1023 wsa883x->version); in wsa883x_init()
1026 dev_info(wsa883x->dev, "WSA883X Version 1_%d, Variant: WSA8832\n", in wsa883x_init()
1027 wsa883x->version); in wsa883x_init()
1030 dev_info(wsa883x->dev, "WSA883X Version 1_%d, Variant: WSA8835_V2\n", in wsa883x_init()
1031 wsa883x->version); in wsa883x_init()
1037 wsa883x->comp_offset = COMP_OFFSET2; in wsa883x_init()
1042 if (wsa883x->variant == WSA8830 || wsa883x->variant == WSA8832) { in wsa883x_init()
1043 wsa883x->comp_offset = COMP_OFFSET3; in wsa883x_init()
1046 wsa883x->comp_offset); in wsa883x_init()
1055 struct wsa883x_priv *wsa883x = dev_get_drvdata(&slave->dev); in wsa883x_update_status() local
1058 return wsa883x_init(wsa883x); in wsa883x_update_status()
1067 struct wsa883x_priv *wsa883x = dev_get_drvdata(&slave->dev); in wsa883x_port_prep() local
1070 wsa883x->port_prepared[prepare_ch->num - 1] = true; in wsa883x_port_prep()
1072 wsa883x->port_prepared[prepare_ch->num - 1] = false; in wsa883x_port_prep()
1086 struct wsa883x_priv *wsa883x = snd_soc_component_get_drvdata(component); in wsa_dev_mode_get() local
1088 ucontrol->value.enumerated.item[0] = wsa883x->dev_mode; in wsa_dev_mode_get()
1097 struct wsa883x_priv *wsa883x = snd_soc_component_get_drvdata(component); in wsa_dev_mode_put() local
1099 if (wsa883x->dev_mode == ucontrol->value.enumerated.item[0]) in wsa_dev_mode_put()
1102 wsa883x->dev_mode = ucontrol->value.enumerated.item[0]; in wsa_dev_mode_put()
1153 struct wsa883x_priv *wsa883x = snd_soc_component_get_drvdata(component); in wsa883x_get_comp_offset() local
1155 ucontrol->value.integer.value[0] = wsa883x->comp_offset; in wsa883x_get_comp_offset()
1164 struct wsa883x_priv *wsa883x = snd_soc_component_get_drvdata(component); in wsa883x_set_comp_offset() local
1166 if (wsa883x->comp_offset == ucontrol->value.integer.value[0]) in wsa883x_set_comp_offset()
1169 wsa883x->comp_offset = ucontrol->value.integer.value[0]; in wsa883x_set_comp_offset()
1176 struct wsa883x_priv *wsa883x = snd_soc_component_get_drvdata(comp); in wsa883x_codec_probe() local
1178 snd_soc_component_init_regmap(comp, wsa883x->regmap); in wsa883x_codec_probe()
1187 struct wsa883x_priv *wsa883x = snd_soc_component_get_drvdata(component); in wsa883x_spkr_event() local
1191 switch (wsa883x->dev_mode) { in wsa883x_spkr_event()
1216 if (wsa883x->port_enable[WSA883X_PORT_COMP]) in wsa883x_spkr_event()
1219 wsa883x->comp_offset); in wsa883x_spkr_event()
1272 .name = "WSA883x",
1286 struct wsa883x_priv *wsa883x = dev_get_drvdata(dai->dev); in wsa883x_hw_params() local
1289 wsa883x->active_ports = 0; in wsa883x_hw_params()
1291 if (!wsa883x->port_enable[i]) in wsa883x_hw_params()
1294 wsa883x->port_config[wsa883x->active_ports] = wsa883x_pconfig[i]; in wsa883x_hw_params()
1295 wsa883x->active_ports++; in wsa883x_hw_params()
1298 wsa883x->sconfig.frame_rate = params_rate(params); in wsa883x_hw_params()
1300 return sdw_stream_add_slave(wsa883x->slave, &wsa883x->sconfig, in wsa883x_hw_params()
1301 wsa883x->port_config, wsa883x->active_ports, in wsa883x_hw_params()
1302 wsa883x->sruntime); in wsa883x_hw_params()
1308 struct wsa883x_priv *wsa883x = dev_get_drvdata(dai->dev); in wsa883x_hw_free() local
1310 sdw_stream_remove_slave(wsa883x->slave, wsa883x->sruntime); in wsa883x_hw_free()
1318 struct wsa883x_priv *wsa883x = dev_get_drvdata(dai->dev); in wsa883x_set_sdw_stream() local
1320 wsa883x->sruntime = stream; in wsa883x_set_sdw_stream()
1375 struct wsa883x_priv *wsa883x; in wsa883x_probe() local
1379 wsa883x = devm_kzalloc(dev, sizeof(*wsa883x), GFP_KERNEL); in wsa883x_probe()
1380 if (!wsa883x) in wsa883x_probe()
1383 wsa883x->vdd = devm_regulator_get(dev, "vdd"); in wsa883x_probe()
1384 if (IS_ERR(wsa883x->vdd)) in wsa883x_probe()
1385 return dev_err_probe(dev, PTR_ERR(wsa883x->vdd), in wsa883x_probe()
1388 ret = regulator_enable(wsa883x->vdd); in wsa883x_probe()
1392 wsa883x->sd_n = devm_gpiod_get_optional(dev, "powerdown", in wsa883x_probe()
1394 if (IS_ERR(wsa883x->sd_n)) { in wsa883x_probe()
1395 ret = dev_err_probe(dev, PTR_ERR(wsa883x->sd_n), in wsa883x_probe()
1400 dev_set_drvdata(dev, wsa883x); in wsa883x_probe()
1401 wsa883x->slave = pdev; in wsa883x_probe()
1402 wsa883x->dev = dev; in wsa883x_probe()
1403 wsa883x->sconfig.ch_count = 1; in wsa883x_probe()
1404 wsa883x->sconfig.bps = 1; in wsa883x_probe()
1405 wsa883x->sconfig.direction = SDW_DATA_DIR_RX; in wsa883x_probe()
1406 wsa883x->sconfig.type = SDW_STREAM_PDM; in wsa883x_probe()
1420 gpiod_direction_output(wsa883x->sd_n, 0); in wsa883x_probe()
1422 wsa883x->regmap = devm_regmap_init_sdw(pdev, &wsa883x_regmap_config); in wsa883x_probe()
1423 if (IS_ERR(wsa883x->regmap)) { in wsa883x_probe()
1424 gpiod_direction_output(wsa883x->sd_n, 1); in wsa883x_probe()
1425 ret = dev_err_probe(dev, PTR_ERR(wsa883x->regmap), in wsa883x_probe()
1441 regulator_disable(wsa883x->vdd); in wsa883x_probe()
1480 .name = "wsa883x-codec",
1491 MODULE_DESCRIPTION("WSA883x codec driver");