Lines Matching refs:aw_dev

28 static void aw88261_dev_set_volume(struct aw_device *aw_dev, unsigned int value)
30 struct aw_volume_desc *vol_desc = &aw_dev->volume_desc;
37 regmap_read(aw_dev->regmap, AW88261_SYSCTRL2_REG, &reg_value);
41 dev_dbg(aw_dev->dev, "value 0x%x , real_value:0x%x", value, real_value);
43 regmap_write(aw_dev->regmap, AW88261_SYSCTRL2_REG, real_value);
46 static void aw88261_dev_fade_in(struct aw_device *aw_dev)
48 struct aw_volume_desc *desc = &aw_dev->volume_desc;
50 int fade_step = aw_dev->fade_step;
53 if (fade_step == 0 || aw_dev->fade_in_time == 0) {
54 aw88261_dev_set_volume(aw_dev, fade_in_vol);
59 aw88261_dev_set_volume(aw_dev, i);
60 usleep_range(aw_dev->fade_in_time,
61 aw_dev->fade_in_time + 10);
65 aw88261_dev_set_volume(aw_dev, fade_in_vol);
68 static void aw88261_dev_fade_out(struct aw_device *aw_dev)
70 struct aw_volume_desc *desc = &aw_dev->volume_desc;
71 int fade_step = aw_dev->fade_step;
74 if (fade_step == 0 || aw_dev->fade_out_time == 0) {
75 aw88261_dev_set_volume(aw_dev, AW88261_MUTE_VOL);
80 aw88261_dev_set_volume(aw_dev, i);
81 usleep_range(aw_dev->fade_out_time, aw_dev->fade_out_time + 10);
85 aw88261_dev_set_volume(aw_dev, AW88261_MUTE_VOL);
86 usleep_range(aw_dev->fade_out_time, aw_dev->fade_out_time + 10);
90 static void aw88261_dev_i2s_tx_enable(struct aw_device *aw_dev, bool flag)
93 regmap_update_bits(aw_dev->regmap, AW88261_I2SCFG1_REG,
96 regmap_update_bits(aw_dev->regmap, AW88261_I2SCFG1_REG,
100 static void aw88261_dev_pwd(struct aw_device *aw_dev, bool pwd)
103 regmap_update_bits(aw_dev->regmap, AW88261_SYSCTRL_REG,
106 regmap_update_bits(aw_dev->regmap, AW88261_SYSCTRL_REG,
110 static void aw88261_dev_amppd(struct aw_device *aw_dev, bool amppd)
113 regmap_update_bits(aw_dev->regmap, AW88261_SYSCTRL_REG,
116 regmap_update_bits(aw_dev->regmap, AW88261_SYSCTRL_REG,
120 static void aw88261_dev_mute(struct aw_device *aw_dev, bool is_mute)
123 aw88261_dev_fade_out(aw_dev);
124 regmap_update_bits(aw_dev->regmap, AW88261_SYSCTRL_REG,
127 regmap_update_bits(aw_dev->regmap, AW88261_SYSCTRL_REG,
129 aw88261_dev_fade_in(aw_dev);
133 static void aw88261_dev_clear_int_status(struct aw_device *aw_dev)
138 regmap_read(aw_dev->regmap, AW88261_SYSINT_REG, &int_status);
140 regmap_read(aw_dev->regmap, AW88261_SYSINT_REG, &int_status);
142 dev_dbg(aw_dev->dev, "read interrupt reg = 0x%04x", int_status);
145 static int aw88261_dev_get_iis_status(struct aw_device *aw_dev)
150 ret = regmap_read(aw_dev->regmap, AW88261_SYSST_REG, &reg_val);
154 dev_err(aw_dev->dev, "check pll lock fail,reg_val:0x%04x", reg_val);
161 static int aw88261_dev_check_mode1_pll(struct aw_device *aw_dev)
166 ret = aw88261_dev_get_iis_status(aw_dev);
168 dev_err(aw_dev->dev, "mode1 iis signal check error");
178 static int aw88261_dev_check_mode2_pll(struct aw_device *aw_dev)
183 ret = regmap_read(aw_dev->regmap, AW88261_PLLCTRL1_REG, &reg_val);
189 dev_dbg(aw_dev->dev, "CCO_MUX is already divider");
194 ret = regmap_update_bits(aw_dev->regmap, AW88261_PLLCTRL1_REG,
200 ret = aw88261_dev_get_iis_status(aw_dev);
202 dev_err(aw_dev->dev, "mode2 iis signal check error");
210 ret = regmap_update_bits(aw_dev->regmap, AW88261_PLLCTRL1_REG,
215 ret = aw88261_dev_check_mode1_pll(aw_dev);
217 dev_err(aw_dev->dev, "mode2 switch to mode1, iis signal check error");
228 static int aw88261_dev_check_syspll(struct aw_device *aw_dev)
232 ret = aw88261_dev_check_mode1_pll(aw_dev);
234 dev_dbg(aw_dev->dev, "mode1 check iis failed try switch to mode2 check");
235 ret = aw88261_dev_check_mode2_pll(aw_dev);
237 dev_err(aw_dev->dev, "mode2 check iis failed");
245 static int aw88261_dev_check_sysst(struct aw_device *aw_dev)
252 ret = regmap_read(aw_dev->regmap, AW88261_SYSST_REG, &reg_val);
259 dev_err(aw_dev->dev, "check sysst fail, reg_val=0x%04x, check:0x%x",
270 static void aw88261_dev_uls_hmute(struct aw_device *aw_dev, bool uls_hmute)
273 regmap_update_bits(aw_dev->regmap, AW88261_SYSCTRL_REG,
277 regmap_update_bits(aw_dev->regmap, AW88261_SYSCTRL_REG,
308 static int aw88261_dev_get_icalk(struct aw_device *aw_dev, int16_t *icalk)
314 ret = regmap_read(aw_dev->regmap, AW88261_EFRH4_REG, &reg_val);
320 ret = regmap_read(aw_dev->regmap, AW88261_EFRL4_REG, &reg_val);
336 static int aw88261_dev_get_vcalk(struct aw_device *aw_dev, int16_t *vcalk)
342 ret = regmap_read(aw_dev->regmap, AW88261_EFRH3_REG, &reg_val);
348 ret = regmap_read(aw_dev->regmap, AW88261_EFRL3_REG, &reg_val);
363 static int aw88261_dev_set_vcalb(struct aw_device *aw_dev)
370 ret = aw88261_dev_get_icalk(aw_dev, &icalk_val);
374 ret = aw88261_dev_get_vcalk(aw_dev, &vcalk_val);
386 dev_dbg(aw_dev->dev, "icalk=%d, vcalk=%d, vcalb=%d, reg_val=0x%04x",
388 ret = regmap_write(aw_dev->regmap, AW88261_VSNTM1_REG, reg_val);
396 struct aw_device *aw_dev = aw88261->aw_pa;
397 struct aw_volume_desc *vol_desc = &aw_dev->volume_desc;
405 dev_err(aw_dev->dev, "reg data is null or len is 0");
413 dev_err(aw_dev->dev, "data len:%d unsupported", data_len);
423 ret = regmap_read(aw_dev->regmap, reg_addr, &read_val);
455 aw_dev->volume_desc.init_volume =
462 ret = regmap_write(aw_dev->regmap, reg_addr, reg_val);
467 ret = aw88261_dev_set_vcalb(aw_dev);
471 if (aw_dev->prof_cur != aw_dev->prof_index)
475 aw88261_dev_set_volume(aw_dev, vol_desc->mute_volume);
480 static char *aw88261_dev_get_prof_name(struct aw_device *aw_dev, int index)
482 struct aw_prof_info *prof_info = &aw_dev->prof_info;
485 if ((index >= aw_dev->prof_info.count) || (index < 0)) {
486 dev_err(aw_dev->dev, "index[%d] overflow count[%d]",
487 index, aw_dev->prof_info.count);
491 prof_desc = &aw_dev->prof_info.prof_desc[index];
496 static int aw88261_dev_get_prof_data(struct aw_device *aw_dev, int index,
499 if ((index >= aw_dev->prof_info.count) || (index < 0)) {
500 dev_err(aw_dev->dev, "%s: index[%d] overflow count[%d]\n",
501 __func__, index, aw_dev->prof_info.count);
505 *prof_desc = &aw_dev->prof_info.prof_desc[index];
512 struct aw_device *aw_dev = aw88261->aw_pa;
518 prof_name = aw88261_dev_get_prof_name(aw_dev, aw_dev->prof_index);
520 dev_err(aw_dev->dev, "get prof name failed");
524 dev_dbg(aw_dev->dev, "start update %s", prof_name);
526 ret = aw88261_dev_get_prof_data(aw_dev, aw_dev->prof_index, &prof_index_desc);
535 dev_err(aw_dev->dev, "update reg failed");
539 aw_dev->prof_cur = aw_dev->prof_index;
546 struct aw_device *aw_dev = aw88261->aw_pa;
549 if (aw_dev->status == AW88261_DEV_PW_ON) {
550 dev_info(aw_dev->dev, "already power on");
555 aw88261_dev_pwd(aw_dev, false);
558 ret = aw88261_dev_check_syspll(aw_dev);
560 dev_err(aw_dev->dev, "pll check failed cannot start");
565 aw88261_dev_amppd(aw_dev, false);
569 ret = aw88261_dev_check_sysst(aw_dev);
571 dev_err(aw_dev->dev, "sysst check failed");
576 aw88261_dev_i2s_tx_enable(aw_dev, true);
579 aw88261_dev_amppd(aw_dev, true);
584 aw88261_dev_uls_hmute(aw_dev, false);
588 aw88261_dev_mute(aw_dev, false);
591 aw88261_dev_clear_int_status(aw_dev);
592 aw_dev->status = AW88261_DEV_PW_ON;
597 aw88261_dev_i2s_tx_enable(aw_dev, false);
598 aw88261_dev_clear_int_status(aw_dev);
599 aw88261_dev_amppd(aw_dev, true);
601 aw88261_dev_pwd(aw_dev, true);
602 aw_dev->status = AW88261_DEV_PW_OFF;
607 static int aw88261_dev_stop(struct aw_device *aw_dev)
609 if (aw_dev->status == AW88261_DEV_PW_OFF) {
610 dev_info(aw_dev->dev, "already power off");
614 aw_dev->status = AW88261_DEV_PW_OFF;
617 aw88261_dev_clear_int_status(aw_dev);
619 aw88261_dev_uls_hmute(aw_dev, true);
621 aw88261_dev_mute(aw_dev, true);
624 aw88261_dev_i2s_tx_enable(aw_dev, false);
628 aw88261_dev_amppd(aw_dev, true);
631 aw88261_dev_pwd(aw_dev, true);
638 struct aw_device *aw_dev = aw88261->aw_pa;
642 ret = regmap_write(aw_dev->regmap,
651 if (aw_dev->prof_cur != aw_dev->prof_index) {
660 aw_dev->prof_cur = aw_dev->prof_index;
738 struct aw_device *aw_dev = aw88261->aw_pa;
740 ucontrol->value.integer.value[0] = aw_dev->fade_in_time;
752 struct aw_device *aw_dev = aw88261->aw_pa;
760 if (time != aw_dev->fade_in_time) {
761 aw_dev->fade_in_time = time;
773 struct aw_device *aw_dev = aw88261->aw_pa;
775 ucontrol->value.integer.value[0] = aw_dev->fade_out_time;
787 struct aw_device *aw_dev = aw88261->aw_pa;
794 if (time != aw_dev->fade_out_time) {
795 aw_dev->fade_out_time = time;
802 static int aw88261_dev_set_profile_index(struct aw_device *aw_dev, int index)
805 if ((index >= aw_dev->prof_info.count) || (index < 0))
808 if (aw_dev->prof_index == index)
811 aw_dev->prof_index = index;
1047 struct aw_device *aw_dev = aw88261->aw_pa;
1050 ret = aw88395_dev_cfg_load(aw_dev, aw_cfg);
1052 dev_err(aw_dev->dev, "aw_dev acf parse failed");
1056 ret = regmap_write(aw_dev->regmap, AW88261_ID_REG, AW88261_SOFT_RESET_VALUE);
1060 aw_dev->fade_in_time = AW88261_500_US;
1061 aw_dev->fade_out_time = AW88261_500_US;
1062 aw_dev->prof_cur = AW88261_INIT_PROFILE;
1063 aw_dev->prof_index = AW88261_INIT_PROFILE;
1067 dev_err(aw_dev->dev, "fw update failed ret = %d\n", ret);
1073 dev_err(aw_dev->dev, "aw88261_frcset_check ret = %d\n", ret);
1077 aw88261_dev_clear_int_status(aw_dev);
1079 aw88261_dev_uls_hmute(aw_dev, true);
1081 aw88261_dev_mute(aw_dev, true);
1083 aw88261_dev_i2s_tx_enable(aw_dev, false);
1087 aw88261_dev_amppd(aw_dev, true);
1089 aw88261_dev_pwd(aw_dev, true);
1187 struct aw_device *aw_dev = aw88261->aw_pa;
1188 struct device_node *np = aw_dev->dev->of_node;
1195 aw_dev->channel = channel_value;
1201 struct aw_device *aw_dev;
1218 aw_dev = devm_kzalloc(&i2c->dev, sizeof(*aw_dev), GFP_KERNEL);
1219 if (!aw_dev)
1222 (*aw88261)->aw_pa = aw_dev;
1223 aw_dev->i2c = i2c;
1224 aw_dev->regmap = regmap;
1225 aw_dev->dev = &i2c->dev;
1226 aw_dev->chip_id = AW88261_CHIP_ID;
1227 aw_dev->acf = NULL;
1228 aw_dev->prof_info.prof_desc = NULL;
1229 aw_dev->prof_info.count = 0;
1230 aw_dev->prof_info.prof_type = AW88395_DEV_NONE_TYPE_ID;
1231 aw_dev->channel = 0;
1232 aw_dev->fw_status = AW88261_DEV_FW_FAILED;
1233 aw_dev->fade_step = AW88261_VOLUME_STEP_DB;
1234 aw_dev->volume_desc.ctl_volume = AW88261_VOL_DEFAULT_VALUE;
1235 aw_dev->volume_desc.mute_volume = AW88261_MUTE_VOL;