aw87390
struct aw87390 *aw87390 = snd_soc_component_get_drvdata(codec);
count = aw87390->aw_pa->prof_info.count;
ret = aw87390_dev_get_prof_name(aw87390->aw_pa, count, &prof_name);
struct aw87390 *aw87390 = snd_soc_component_get_drvdata(codec);
ucontrol->value.integer.value[0] = aw87390->aw_pa->prof_index;
struct aw87390 *aw87390 = snd_soc_component_get_drvdata(codec);
mutex_lock(&aw87390->lock);
ret = aw87390_dev_set_profile_index(aw87390->aw_pa, ucontrol->value.integer.value[0]);
mutex_unlock(&aw87390->lock);
if (aw87390->aw_pa->status == AW87390_DEV_PW_ON) {
aw87390_power_off(aw87390->aw_pa);
aw87390_power_on(aw87390->aw_pa);
mutex_unlock(&aw87390->lock);
static int aw87390_request_firmware_file(struct aw87390 *aw87390)
aw87390->aw_pa->fw_status = AW87390_DEV_FW_FAILED;
ret = request_firmware(&cont, AW87390_ACF_FILE, aw87390->aw_pa->dev);
return dev_err_probe(aw87390->aw_pa->dev, ret,
dev_dbg(aw87390->aw_pa->dev, "loaded %s - size: %zu\n",
aw87390->aw_cfg = devm_kzalloc(aw87390->aw_pa->dev,
struct_size(aw87390->aw_cfg, data, cont->size), GFP_KERNEL);
if (!aw87390->aw_cfg) {
aw87390->aw_cfg->len = cont->size;
memcpy(aw87390->aw_cfg->data, cont->data, cont->size);
ret = aw88395_dev_load_acf_check(aw87390->aw_pa, aw87390->aw_cfg);
dev_err(aw87390->aw_pa->dev, "load [%s] failed!\n", AW87390_ACF_FILE);
mutex_lock(&aw87390->lock);
ret = aw88395_dev_cfg_load(aw87390->aw_pa, aw87390->aw_cfg);
dev_err(aw87390->aw_pa->dev, "aw_dev acf parse failed\n");
mutex_unlock(&aw87390->lock);
struct aw87390 *aw87390 = snd_soc_component_get_drvdata(component);
struct aw_device *aw_dev = aw87390->aw_pa;
struct aw87390 *aw87390 = snd_soc_component_get_drvdata(component);
struct aw_device *aw_dev = aw87390->aw_pa;
if (!IS_ERR(aw87390->vdd_reg)) {
if (regulator_enable(aw87390->vdd_reg))
if (!IS_ERR(aw87390->vdd_reg)) {
if (regulator_disable(aw87390->vdd_reg))
struct aw87390 *aw87390 = snd_soc_component_get_drvdata(component);
ret = aw87390_request_firmware_file(aw87390);
return dev_err_probe(aw87390->aw_pa->dev, ret,
static void aw87391_rgds_codec_init(struct aw87390 *aw87390)
struct aw_device *aw_dev = aw87390->aw_pa;
struct aw87390 *aw87390 = snd_soc_component_get_drvdata(component);
aw87390->vdd_reg = devm_regulator_get_optional(aw87390->aw_pa->dev,
if (IS_ERR(aw87390->vdd_reg) && PTR_ERR(aw87390->vdd_reg) != -ENODEV)
return dev_err_probe(aw87390->aw_pa->dev,
PTR_ERR(aw87390->vdd_reg),
aw87391_rgds_codec_init(aw87390);
static void aw87390_parse_channel_dt(struct aw87390 *aw87390)
struct aw_device *aw_dev = aw87390->aw_pa;
static int aw87390_init(struct aw87390 *aw87390, struct i2c_client *i2c, struct regmap *regmap)
aw87390->aw_pa = aw_dev;
aw87390_parse_channel_dt(aw87390);
struct aw87390 *aw87390;
aw87390 = devm_kzalloc(&i2c->dev, sizeof(*aw87390), GFP_KERNEL);
if (!aw87390)
mutex_init(&aw87390->lock);
i2c_set_clientdata(i2c, aw87390);
aw87390->regmap = devm_regmap_init_i2c(i2c, &aw87390_remap_config);
if (IS_ERR(aw87390->regmap))
return dev_err_probe(&i2c->dev, PTR_ERR(aw87390->regmap),
ret = aw87390_init(aw87390, i2c, aw87390->regmap);
ret = regmap_write(aw87390->regmap, AW87390_ID_REG, AW87390_SOFT_RESET_VALUE);
switch (aw87390->aw_pa->chip_id) {