Symbol: aw88081
sound/soc/codecs/aw88081.c
1007
struct aw88081 *aw88081 = snd_soc_component_get_drvdata(codec);
sound/soc/codecs/aw88081.c
1009
ucontrol->value.integer.value[0] = aw88081->aw_pa->fade_step;
sound/soc/codecs/aw88081.c
1018
struct aw88081 *aw88081 = snd_soc_component_get_drvdata(codec);
sound/soc/codecs/aw88081.c
1027
if (aw88081->aw_pa->fade_step != value) {
sound/soc/codecs/aw88081.c
1028
aw88081->aw_pa->fade_step = value;
sound/soc/codecs/aw88081.c
1049
static void aw88081_parse_channel_dt(struct aw88081 *aw88081)
sound/soc/codecs/aw88081.c
1051
struct aw_device *aw_dev = aw88081->aw_pa;
sound/soc/codecs/aw88081.c
1056
aw88081->phase_sync = of_property_read_bool(np, "awinic,sync-flag");
sound/soc/codecs/aw88081.c
1061
static int aw88081_init(struct aw88081 *aw88081, struct i2c_client *i2c, struct regmap *regmap)
sound/soc/codecs/aw88081.c
1090
aw88081->aw_pa = aw_dev;
sound/soc/codecs/aw88081.c
1100
aw88081_parse_channel_dt(aw88081);
sound/soc/codecs/aw88081.c
1105
static int aw88081_dev_init(struct aw88081 *aw88081, struct aw_container *aw_cfg)
sound/soc/codecs/aw88081.c
1107
struct aw_device *aw_dev = aw88081->aw_pa;
sound/soc/codecs/aw88081.c
1125
ret = aw88081_dev_fw_update(aw88081);
sound/soc/codecs/aw88081.c
1132
aw88081_stop(aw88081);
sound/soc/codecs/aw88081.c
1137
static int aw88081_request_firmware_file(struct aw88081 *aw88081)
sound/soc/codecs/aw88081.c
1143
aw88081->aw_pa->fw_status = AW88081_DEV_FW_FAILED;
sound/soc/codecs/aw88081.c
1145
ret = request_firmware(&cont, AW88081_ACF_FILE, aw88081->aw_pa->dev);
sound/soc/codecs/aw88081.c
1149
dev_dbg(aw88081->aw_pa->dev, "loaded %s - size: %zu\n",
sound/soc/codecs/aw88081.c
1152
aw_cfg = devm_kzalloc(aw88081->aw_pa->dev, struct_size(aw_cfg, data, cont->size), GFP_KERNEL);
sound/soc/codecs/aw88081.c
1160
aw88081->aw_cfg = aw_cfg;
sound/soc/codecs/aw88081.c
1164
ret = aw88395_dev_load_acf_check(aw88081->aw_pa, aw88081->aw_cfg);
sound/soc/codecs/aw88081.c
1168
mutex_lock(&aw88081->lock);
sound/soc/codecs/aw88081.c
1169
ret = aw88081_dev_init(aw88081, aw88081->aw_cfg);
sound/soc/codecs/aw88081.c
1170
mutex_unlock(&aw88081->lock);
sound/soc/codecs/aw88081.c
1179
struct aw88081 *aw88081 = snd_soc_component_get_drvdata(component);
sound/soc/codecs/aw88081.c
1181
mutex_lock(&aw88081->lock);
sound/soc/codecs/aw88081.c
1184
aw88081_start(aw88081, AW88081_ASYNC_START);
sound/soc/codecs/aw88081.c
1187
aw88081_stop(aw88081);
sound/soc/codecs/aw88081.c
1192
mutex_unlock(&aw88081->lock);
sound/soc/codecs/aw88081.c
1216
struct aw88081 *aw88081 = snd_soc_component_get_drvdata(component);
sound/soc/codecs/aw88081.c
1219
INIT_DELAYED_WORK(&aw88081->start_work, aw88081_startup_work);
sound/soc/codecs/aw88081.c
1221
ret = aw88081_request_firmware_file(aw88081);
sound/soc/codecs/aw88081.c
1223
dev_err(aw88081->aw_pa->dev, "%s: request firmware failed\n", __func__);
sound/soc/codecs/aw88081.c
1230
struct aw88081 *aw88081 = snd_soc_component_get_drvdata(aw_codec);
sound/soc/codecs/aw88081.c
1232
cancel_delayed_work_sync(&aw88081->start_work);
sound/soc/codecs/aw88081.c
1257
struct aw88081 *aw88081;
sound/soc/codecs/aw88081.c
1263
aw88081 = devm_kzalloc(&i2c->dev, sizeof(*aw88081), GFP_KERNEL);
sound/soc/codecs/aw88081.c
1264
if (!aw88081)
sound/soc/codecs/aw88081.c
1268
aw88081->devtype = id->driver_data;
sound/soc/codecs/aw88081.c
1270
mutex_init(&aw88081->lock);
sound/soc/codecs/aw88081.c
1272
i2c_set_clientdata(i2c, aw88081);
sound/soc/codecs/aw88081.c
1274
switch (aw88081->devtype) {
sound/soc/codecs/aw88081.c
1285
aw88081->regmap = devm_regmap_init_i2c(i2c, regmap_config);
sound/soc/codecs/aw88081.c
1286
if (IS_ERR(aw88081->regmap))
sound/soc/codecs/aw88081.c
1287
return dev_err_probe(&i2c->dev, PTR_ERR(aw88081->regmap),
sound/soc/codecs/aw88081.c
1291
ret = aw88081_init(aw88081, i2c, aw88081->regmap);
sound/soc/codecs/aw88081.c
212
static void aw88083_i2c_wen(struct aw88081 *aw88081, bool flag)
sound/soc/codecs/aw88081.c
214
struct aw_device *aw_dev = aw88081->aw_pa;
sound/soc/codecs/aw88081.c
216
if (aw88081->devtype != AW88083)
sound/soc/codecs/aw88081.c
392
static int aw88081_reg_value_check(struct aw88081 *aw88081,
sound/soc/codecs/aw88081.c
395
struct aw_device *aw_dev = aw88081->aw_pa;
sound/soc/codecs/aw88081.c
398
switch (aw88081->devtype) {
sound/soc/codecs/aw88081.c
414
static int aw88081_dev_reg_update(struct aw88081 *aw88081,
sound/soc/codecs/aw88081.c
417
struct aw_device *aw_dev = aw88081->aw_pa;
sound/soc/codecs/aw88081.c
441
ret = aw88081_reg_value_check(aw88081, reg_addr, &reg_val);
sound/soc/codecs/aw88081.c
491
static int aw88081_dev_fw_update(struct aw88081 *aw88081)
sound/soc/codecs/aw88081.c
493
struct aw_device *aw_dev = aw88081->aw_pa;
sound/soc/codecs/aw88081.c
513
ret = aw88081_dev_reg_update(aw88081, sec_desc[AW88395_DATA_TYPE_REG].data,
sound/soc/codecs/aw88081.c
525
static int aw88081_dev_start(struct aw88081 *aw88081)
sound/soc/codecs/aw88081.c
527
struct aw_device *aw_dev = aw88081->aw_pa;
sound/soc/codecs/aw88081.c
582
static int aw88083_dev_start(struct aw88081 *aw88081)
sound/soc/codecs/aw88081.c
584
struct aw_device *aw_dev = aw88081->aw_pa;
sound/soc/codecs/aw88081.c
591
aw88083_i2c_wen(aw88081, true);
sound/soc/codecs/aw88081.c
605
aw88083_i2c_wen(aw88081, false);
sound/soc/codecs/aw88081.c
612
static int aw88081_device_start(struct aw88081 *aw88081)
sound/soc/codecs/aw88081.c
616
switch (aw88081->devtype) {
sound/soc/codecs/aw88081.c
618
ret = aw88081_dev_start(aw88081);
sound/soc/codecs/aw88081.c
621
ret = aw88083_dev_start(aw88081);
sound/soc/codecs/aw88081.c
625
dev_err(aw88081->aw_pa->dev, "unsupported device\n");
sound/soc/codecs/aw88081.c
632
static int aw88081_dev_stop(struct aw88081 *aw88081)
sound/soc/codecs/aw88081.c
634
struct aw_device *aw_dev = aw88081->aw_pa;
sound/soc/codecs/aw88081.c
663
static int aw88083_dev_stop(struct aw88081 *aw88081)
sound/soc/codecs/aw88081.c
665
struct aw_device *aw_dev = aw88081->aw_pa;
sound/soc/codecs/aw88081.c
674
aw88083_i2c_wen(aw88081, true);
sound/soc/codecs/aw88081.c
688
aw88083_i2c_wen(aw88081, false);
sound/soc/codecs/aw88081.c
693
static int aw88081_stop(struct aw88081 *aw88081)
sound/soc/codecs/aw88081.c
697
switch (aw88081->devtype) {
sound/soc/codecs/aw88081.c
699
ret = aw88081_dev_stop(aw88081);
sound/soc/codecs/aw88081.c
702
ret = aw88083_dev_stop(aw88081);
sound/soc/codecs/aw88081.c
705
dev_err(aw88081->aw_pa->dev, "unsupported device\n");
sound/soc/codecs/aw88081.c
713
static int aw88081_reg_update(struct aw88081 *aw88081, bool force)
sound/soc/codecs/aw88081.c
715
struct aw_device *aw_dev = aw88081->aw_pa;
sound/soc/codecs/aw88081.c
724
ret = aw88081_dev_fw_update(aw88081);
sound/soc/codecs/aw88081.c
729
ret = aw88081_dev_fw_update(aw88081);
sound/soc/codecs/aw88081.c
740
static void aw88081_start_pa(struct aw88081 *aw88081)
sound/soc/codecs/aw88081.c
745
ret = aw88081_reg_update(aw88081, aw88081->phase_sync);
sound/soc/codecs/aw88081.c
747
dev_err(aw88081->aw_pa->dev, "fw update failed, cnt:%d\n", i);
sound/soc/codecs/aw88081.c
750
ret = aw88081_device_start(aw88081);
sound/soc/codecs/aw88081.c
752
dev_err(aw88081->aw_pa->dev, "aw88081 device start failed. retry = %d", i);
sound/soc/codecs/aw88081.c
755
dev_dbg(aw88081->aw_pa->dev, "start success\n");
sound/soc/codecs/aw88081.c
763
struct aw88081 *aw88081 =
sound/soc/codecs/aw88081.c
764
container_of(work, struct aw88081, start_work.work);
sound/soc/codecs/aw88081.c
766
mutex_lock(&aw88081->lock);
sound/soc/codecs/aw88081.c
767
aw88081_start_pa(aw88081);
sound/soc/codecs/aw88081.c
768
mutex_unlock(&aw88081->lock);
sound/soc/codecs/aw88081.c
771
static void aw88081_start(struct aw88081 *aw88081, bool sync_start)
sound/soc/codecs/aw88081.c
773
if (aw88081->aw_pa->fw_status != AW88081_DEV_FW_OK)
sound/soc/codecs/aw88081.c
776
if (aw88081->aw_pa->status == AW88081_DEV_PW_ON)
sound/soc/codecs/aw88081.c
780
aw88081_start_pa(aw88081);
sound/soc/codecs/aw88081.c
783
&aw88081->start_work,
sound/soc/codecs/aw88081.c
812
struct aw88081 *aw88081 = snd_soc_component_get_drvdata(component);
sound/soc/codecs/aw88081.c
813
struct aw_device *aw_dev = aw88081->aw_pa;
sound/soc/codecs/aw88081.c
824
struct aw88081 *aw88081 = snd_soc_component_get_drvdata(component);
sound/soc/codecs/aw88081.c
827
struct aw_device *aw_dev = aw88081->aw_pa;
sound/soc/codecs/aw88081.c
847
struct aw88081 *aw88081 = snd_soc_component_get_drvdata(component);
sound/soc/codecs/aw88081.c
848
struct aw_device *aw_dev = aw88081->aw_pa;
sound/soc/codecs/aw88081.c
859
struct aw88081 *aw88081 = snd_soc_component_get_drvdata(component);
sound/soc/codecs/aw88081.c
862
struct aw_device *aw_dev = aw88081->aw_pa;
sound/soc/codecs/aw88081.c
895
struct aw88081 *aw88081 = snd_soc_component_get_drvdata(codec);
sound/soc/codecs/aw88081.c
902
count = aw88081->aw_pa->prof_info.count;
sound/soc/codecs/aw88081.c
915
ret = aw88081_dev_get_prof_name(aw88081->aw_pa, count, &prof_name);
sound/soc/codecs/aw88081.c
930
struct aw88081 *aw88081 = snd_soc_component_get_drvdata(codec);
sound/soc/codecs/aw88081.c
932
ucontrol->value.integer.value[0] = aw88081->aw_pa->prof_index;
sound/soc/codecs/aw88081.c
941
struct aw88081 *aw88081 = snd_soc_component_get_drvdata(codec);
sound/soc/codecs/aw88081.c
945
mutex_lock(&aw88081->lock);
sound/soc/codecs/aw88081.c
946
ret = aw88081_dev_set_profile_index(aw88081->aw_pa, ucontrol->value.integer.value[0]);
sound/soc/codecs/aw88081.c
949
mutex_unlock(&aw88081->lock);
sound/soc/codecs/aw88081.c
953
if (aw88081->aw_pa->status) {
sound/soc/codecs/aw88081.c
954
aw88081_stop(aw88081);
sound/soc/codecs/aw88081.c
955
aw88081_start(aw88081, AW88081_SYNC_START);
sound/soc/codecs/aw88081.c
958
mutex_unlock(&aw88081->lock);
sound/soc/codecs/aw88081.c
967
struct aw88081 *aw88081 = snd_soc_component_get_drvdata(codec);
sound/soc/codecs/aw88081.c
968
struct aw_volume_desc *vol_desc = &aw88081->aw_pa->volume_desc;
sound/soc/codecs/aw88081.c
979
struct aw88081 *aw88081 = snd_soc_component_get_drvdata(codec);
sound/soc/codecs/aw88081.c
980
struct aw_volume_desc *vol_desc = &aw88081->aw_pa->volume_desc;
sound/soc/codecs/aw88081.c
990
aw88083_i2c_wen(aw88081, true);
sound/soc/codecs/aw88081.c
994
aw88081_dev_set_volume(aw88081->aw_pa, vol_desc->ctl_volume);
sound/soc/codecs/aw88081.c
998
aw88083_i2c_wen(aw88081, false);