Lines Matching +full:0 +full:x1e00
35 if (ret < 0) in rt712_sdca_index_write()
51 if (ret < 0) in rt712_sdca_index_read()
66 if (ret < 0) in rt712_sdca_index_update_bits()
75 unsigned int val, loop_rc = 0, loop_dc = 0; in rt712_sdca_calibration()
79 int ret = 0; in rt712_sdca_calibration()
85 rt712_sdca_index_write(rt712, RT712_VENDOR_REG, RT712_CC_DET1, 0x043a); in rt712_sdca_calibration()
88 rt712_sdca_index_write(rt712, RT712_VENDOR_REG, RT712_FSM_CTL, 0x4100); in rt712_sdca_calibration()
91 rt712_sdca_index_write(rt712, RT712_VENDOR_CALI, RT712_DAC_DC_CALI_CTL1, 0x7883); in rt712_sdca_calibration()
94 rt712_sdca_index_write(rt712, RT712_VENDOR_CALI, RT712_DAC_DC_CALI_CTL1, 0xf893); in rt712_sdca_calibration()
100 for (loop_dc = 0; loop_dc < chk_cnt && in rt712_sdca_calibration()
105 if (ret < 0) in rt712_sdca_calibration()
116 rt712_sdca_index_write(rt712, RT712_VENDOR_REG, RT712_FSM_CTL, 0x4500); in rt712_sdca_calibration()
119 rt712_sdca_index_write(rt712, RT712_VENDOR_IMS_DRE, RT712_IMS_DIGITAL_CTL1, 0x040f); in rt712_sdca_calibration()
122 rt712_sdca_index_write(rt712, RT712_VENDOR_IMS_DRE, RT712_IMS_DIGITAL_CTL5, 0x0000); in rt712_sdca_calibration()
125 rt712_sdca_index_write(rt712, RT712_VENDOR_REG, RT712_DIGITAL_MISC_CTRL4, 0x0010); in rt712_sdca_calibration()
134 unsigned int btn_type = 0, offset, idx, val, owner; in rt712_sdca_button_detect()
140 SDW_SDCA_CTL(FUNC_NUM_HID, RT712_SDCA_ENT_HID01, RT712_SDCA_CTL_HIDTX_CURRENT_OWNER, 0), in rt712_sdca_button_detect()
142 if (ret < 0) in rt712_sdca_button_detect()
143 return 0; in rt712_sdca_button_detect()
147 return 0; in rt712_sdca_button_detect()
151 SDW_SDCA_CTL(FUNC_NUM_HID, RT712_SDCA_ENT_HID01, RT712_SDCA_CTL_HIDTX_MESSAGE_OFFSET, 0), in rt712_sdca_button_detect()
153 if (ret < 0) in rt712_sdca_button_detect()
156 for (idx = 0; idx < sizeof(buf); idx++) { in rt712_sdca_button_detect()
159 if (ret < 0) in rt712_sdca_button_detect()
161 buf[idx] = val & 0xff; in rt712_sdca_button_detect()
164 if (buf[0] == 0x11) { in rt712_sdca_button_detect()
165 switch (buf[1] & 0xf0) { in rt712_sdca_button_detect()
166 case 0x10: in rt712_sdca_button_detect()
169 case 0x20: in rt712_sdca_button_detect()
172 case 0x40: in rt712_sdca_button_detect()
175 case 0x80: in rt712_sdca_button_detect()
180 case 0x01: in rt712_sdca_button_detect()
181 case 0x10: in rt712_sdca_button_detect()
184 case 0x02: in rt712_sdca_button_detect()
185 case 0x20: in rt712_sdca_button_detect()
188 case 0x04: in rt712_sdca_button_detect()
189 case 0x40: in rt712_sdca_button_detect()
192 case 0x08: in rt712_sdca_button_detect()
193 case 0x80: in rt712_sdca_button_detect()
201 if (owner == 0) in rt712_sdca_button_detect()
205 RT712_SDCA_CTL_HIDTX_SET_OWNER_TO_DEVICE, 0), 0x01); in rt712_sdca_button_detect()
217 SDW_SDCA_CTL(FUNC_NUM_JACK_CODEC, RT712_SDCA_ENT_GE49, RT712_SDCA_CTL_DETECTED_MODE, 0), in rt712_sdca_headset_detect()
219 if (ret < 0) in rt712_sdca_headset_detect()
223 case 0x00: in rt712_sdca_headset_detect()
224 rt712->jack_type = 0; in rt712_sdca_headset_detect()
226 case 0x03: in rt712_sdca_headset_detect()
229 case 0x05: in rt712_sdca_headset_detect()
237 SDW_SDCA_CTL(FUNC_NUM_JACK_CODEC, RT712_SDCA_ENT_GE49, RT712_SDCA_CTL_SELECTED_MODE, 0), in rt712_sdca_headset_detect()
239 if (ret < 0) in rt712_sdca_headset_detect()
244 "%s, detected_mode=0x%x\n", __func__, det_mode); in rt712_sdca_headset_detect()
246 return 0; in rt712_sdca_headset_detect()
257 int btn_type = 0, ret; in rt712_sdca_jack_detect_handler()
268 if (ret < 0) in rt712_sdca_jack_detect_handler()
276 if (rt712->jack_type == 0) in rt712_sdca_jack_detect_handler()
277 btn_type = 0; in rt712_sdca_jack_detect_handler()
280 "in %s, jack_type=0x%x\n", __func__, rt712->jack_type); in rt712_sdca_jack_detect_handler()
282 "in %s, btn_type=0x%x\n", __func__, btn_type); in rt712_sdca_jack_detect_handler()
284 "in %s, scp_sdca_stat1=0x%x, scp_sdca_stat2=0x%x\n", __func__, in rt712_sdca_jack_detect_handler()
308 int btn_type = 0, ret, idx; in rt712_sdca_btn_check_handler()
313 SDW_SDCA_CTL(FUNC_NUM_JACK_CODEC, RT712_SDCA_ENT_GE49, RT712_SDCA_CTL_DETECTED_MODE, 0), in rt712_sdca_btn_check_handler()
315 if (ret < 0) in rt712_sdca_btn_check_handler()
322 SDW_SDCA_CTL(FUNC_NUM_HID, RT712_SDCA_ENT_HID01, RT712_SDCA_CTL_HIDTX_MESSAGE_OFFSET, 0), in rt712_sdca_btn_check_handler()
324 if (ret < 0) in rt712_sdca_btn_check_handler()
327 for (idx = 0; idx < sizeof(buf); idx++) { in rt712_sdca_btn_check_handler()
330 if (ret < 0) in rt712_sdca_btn_check_handler()
332 buf[idx] = val & 0xff; in rt712_sdca_btn_check_handler()
335 if (buf[0] == 0x11) { in rt712_sdca_btn_check_handler()
336 switch (buf[1] & 0xf0) { in rt712_sdca_btn_check_handler()
337 case 0x10: in rt712_sdca_btn_check_handler()
340 case 0x20: in rt712_sdca_btn_check_handler()
343 case 0x40: in rt712_sdca_btn_check_handler()
346 case 0x80: in rt712_sdca_btn_check_handler()
351 case 0x01: in rt712_sdca_btn_check_handler()
352 case 0x10: in rt712_sdca_btn_check_handler()
355 case 0x02: in rt712_sdca_btn_check_handler()
356 case 0x20: in rt712_sdca_btn_check_handler()
359 case 0x04: in rt712_sdca_btn_check_handler()
360 case 0x40: in rt712_sdca_btn_check_handler()
363 case 0x08: in rt712_sdca_btn_check_handler()
364 case 0x80: in rt712_sdca_btn_check_handler()
370 rt712->jack_type = 0; in rt712_sdca_btn_check_handler()
373 dev_dbg(&rt712->slave->dev, "%s, btn_type=0x%x\n", __func__, btn_type); in rt712_sdca_btn_check_handler()
403 RT712_UMP_HID_CTL5, 0xfff0); in rt712_sdca_jack_init()
405 RT712_UMP_HID_CTL0, 0x1100, 0x1100); in rt712_sdca_jack_init()
407 RT712_UMP_HID_CTL7, 0xf000, 0x0000); in rt712_sdca_jack_init()
411 RT712_GE_RELATED_CTL1, 0x0c00, 0x0c00); in rt712_sdca_jack_init()
414 RT712_GE_RELATED_CTL2, 0x0020, 0x0000); in rt712_sdca_jack_init()
419 rt712_sdca_index_write(rt712, RT712_VENDOR_REG, RT712_CC_DET1, 0x043a); in rt712_sdca_jack_init()
426 /* set SCP_SDCA_IntMask1[0]=1 */ in rt712_sdca_jack_init()
428 /* set SCP_SDCA_IntMask2[0]=1 */ in rt712_sdca_jack_init()
434 RT712_GE_RELATED_CTL1, 0x0080, 0x0080); in rt712_sdca_jack_init()
436 RT712_GE_RELATED_CTL1, 0x0080, 0x0000); in rt712_sdca_jack_init()
440 RT712_GE_RELATED_CTL1, 0x0c00, 0x0000); in rt712_sdca_jack_init()
457 return 0; in rt712_sdca_set_jack_detect()
460 if (ret < 0) { in rt712_sdca_set_jack_detect()
468 return 0; in rt712_sdca_set_jack_detect()
476 return 0; in rt712_sdca_set_jack_detect()
488 unsigned int adc_vol_flag = 0; in rt712_sdca_set_gain_put()
490 const unsigned int interval_offset = 0xc0; in rt712_sdca_set_gain_put()
491 const unsigned int tendB = 0xa00; in rt712_sdca_set_gain_put()
500 gain_l_val = ucontrol->value.integer.value[0]; in rt712_sdca_set_gain_put()
509 gain_l_val = 0x1e00 - ((mc->max - gain_l_val) * interval_offset); in rt712_sdca_set_gain_put()
511 gain_l_val = 0 - ((mc->max - gain_l_val) * interval_offset); in rt712_sdca_set_gain_put()
512 gain_l_val &= 0xffff; in rt712_sdca_set_gain_put()
525 gain_r_val = 0x1e00 - ((mc->max - gain_r_val) * interval_offset); in rt712_sdca_set_gain_put()
527 gain_r_val = 0 - ((mc->max - gain_r_val) * interval_offset); in rt712_sdca_set_gain_put()
528 gain_r_val &= 0xffff; in rt712_sdca_set_gain_put()
532 return 0; in rt712_sdca_set_gain_put()
554 unsigned int read_l, read_r, ctl_l = 0, ctl_r = 0; in rt712_sdca_set_gain_get()
555 unsigned int adc_vol_flag = 0; in rt712_sdca_set_gain_get()
556 const unsigned int interval_offset = 0xc0; in rt712_sdca_set_gain_get()
557 const unsigned int tendB = 0xa00; in rt712_sdca_set_gain_get()
569 ctl_l = mc->max - (((0x1e00 - read_l) & 0xffff) / interval_offset); in rt712_sdca_set_gain_get()
571 ctl_l = mc->max - (((0 - read_l) & 0xffff) / interval_offset); in rt712_sdca_set_gain_get()
579 ctl_r = mc->max - (((0x1e00 - read_r) & 0xffff) / interval_offset); in rt712_sdca_set_gain_get()
581 ctl_r = mc->max - (((0 - read_r) & 0xffff) / interval_offset); in rt712_sdca_set_gain_get()
586 ucontrol->value.integer.value[0] = ctl_l; in rt712_sdca_set_gain_get()
589 return 0; in rt712_sdca_set_gain_get()
597 ch_l = (rt712->fu0f_dapm_mute || rt712->fu0f_mixer_l_mute) ? 0x01 : 0x00; in rt712_sdca_set_fu0f_capture_ctl()
598 ch_r = (rt712->fu0f_dapm_mute || rt712->fu0f_mixer_r_mute) ? 0x01 : 0x00; in rt712_sdca_set_fu0f_capture_ctl()
603 if (err < 0) in rt712_sdca_set_fu0f_capture_ctl()
609 if (err < 0) in rt712_sdca_set_fu0f_capture_ctl()
612 return 0; in rt712_sdca_set_fu0f_capture_ctl()
621 ucontrol->value.integer.value[0] = !rt712->fu0f_mixer_l_mute; in rt712_sdca_fu0f_capture_get()
623 return 0; in rt712_sdca_fu0f_capture_get()
633 if (rt712->fu0f_mixer_l_mute == !ucontrol->value.integer.value[0] && in rt712_sdca_fu0f_capture_put()
635 return 0; in rt712_sdca_fu0f_capture_put()
637 rt712->fu0f_mixer_l_mute = !ucontrol->value.integer.value[0]; in rt712_sdca_fu0f_capture_put()
640 if (err < 0) in rt712_sdca_fu0f_capture_put()
646 static const DECLARE_TLV_DB_SCALE(out_vol_tlv, -6525, 75, 0);
647 static const DECLARE_TLV_DB_SCALE(mic_vol_tlv, -1725, 75, 0);
648 static const DECLARE_TLV_DB_SCALE(boost_vol_tlv, 0, 1000, 0);
654 0, 0x57, 0,
656 SOC_DOUBLE_EXT("FU0F Capture Switch", SND_SOC_NOPM, 0, 1, 1, 0,
661 0, 0x3f, 0,
666 8, 3, 0,
674 0, 0x57, 0,
684 unsigned int val = 0, mask = 0x3300; in rt712_sdca_mux_get()
690 case 0x3000: in rt712_sdca_mux_get()
693 case 0x0300: in rt712_sdca_mux_get()
694 val = 0; in rt712_sdca_mux_get()
698 ucontrol->value.enumerated.item[0] = val; in rt712_sdca_mux_get()
700 return 0; in rt712_sdca_mux_get()
716 if (item[0] >= e->items) in rt712_sdca_mux_put()
719 if (ucontrol->value.enumerated.item[0] == 0) in rt712_sdca_mux_put()
721 else if (ucontrol->value.enumerated.item[0] == 1) in rt712_sdca_mux_put()
727 val = (val >> mask_sft) & 0x3; in rt712_sdca_mux_put()
729 return 0; in rt712_sdca_mux_put()
732 RT712_MIXER_CTL1, 0x3fff); in rt712_sdca_mux_put()
734 RT712_MIXER_CTL1, 0x3 << mask_sft, 0); in rt712_sdca_mux_put()
737 item[0], e, NULL); in rt712_sdca_mux_put()
748 rt712_adc23_enum, SND_SOC_NOPM, 0, adc_mux_text);
760 unsigned char unmute = 0x0, mute = 0x1; in rt712_sdca_fu05_event()
784 return 0; in rt712_sdca_fu05_event()
804 return 0; in rt712_sdca_fu0f_event()
813 unsigned char ps0 = 0x0, ps3 = 0x3; in rt712_sdca_pde40_event()
819 RT712_SDCA_CTL_REQ_POWER_STATE, 0), in rt712_sdca_pde40_event()
825 RT712_SDCA_CTL_REQ_POWER_STATE, 0), in rt712_sdca_pde40_event()
829 return 0; in rt712_sdca_pde40_event()
838 unsigned char ps0 = 0x0, ps3 = 0x3; in rt712_sdca_pde12_event()
844 RT712_SDCA_CTL_REQ_POWER_STATE, 0), in rt712_sdca_pde12_event()
850 RT712_SDCA_CTL_REQ_POWER_STATE, 0), in rt712_sdca_pde12_event()
854 return 0; in rt712_sdca_pde12_event()
863 unsigned char ps0 = 0x0, ps3 = 0x3; in rt712_sdca_classd_event()
869 RT712_SDCA_CTL_REQ_POWER_STATE, 0), in rt712_sdca_classd_event()
875 RT712_SDCA_CTL_REQ_POWER_STATE, 0), in rt712_sdca_classd_event()
883 return 0; in rt712_sdca_classd_event()
890 0, 1, 1);
897 SND_SOC_DAPM_SUPPLY("PDE 40", SND_SOC_NOPM, 0, 0,
900 SND_SOC_DAPM_SUPPLY("PDE 12", SND_SOC_NOPM, 0, 0,
904 SND_SOC_DAPM_DAC_E("FU 05", NULL, SND_SOC_NOPM, 0, 0,
907 SND_SOC_DAPM_ADC_E("FU 0F", NULL, SND_SOC_NOPM, 0, 0,
910 SND_SOC_DAPM_MUX("ADC 23 Mux", SND_SOC_NOPM, 0, 0,
913 SND_SOC_DAPM_AIF_IN("DP1RX", "DP1 Playback", 0, SND_SOC_NOPM, 0, 0),
914 SND_SOC_DAPM_AIF_OUT("DP4TX", "DP4 Capture", 0, SND_SOC_NOPM, 0, 0),
919 { "DP4TX", NULL, "FU 0F" },
921 { "FU 0F", NULL, "PDE 12" },
922 { "FU 0F", NULL, "ADC 23 Mux" },
931 SND_SOC_DAPM_AIF_IN("DP3RX", "DP3 Playback", 0, SND_SOC_NOPM, 0, 0),
934 SND_SOC_DAPM_SWITCH("FU06", SND_SOC_NOPM, 0, 0, &rt712_spk_sto_dac),
937 SND_SOC_DAPM_PGA_E("CLASS D", SND_SOC_NOPM, 0, 0, NULL, 0,
954 return 0; in rt712_sdca_parse_dt()
977 return 0; in rt712_sdca_probe()
980 if (ret < 0 && ret != -EACCES) in rt712_sdca_probe()
983 return 0; in rt712_sdca_probe()
1003 return 0; in rt712_sdca_set_sdw_stream()
1057 port_config.ch_mask = GENMASK(num_channels - 1, 0); in rt712_sdca_pcm_hw_params()
1097 SDW_SDCA_CTL(FUNC_NUM_JACK_CODEC, RT712_SDCA_ENT_CS01, RT712_SDCA_CTL_SAMPLE_FREQ_INDEX, 0), in rt712_sdca_pcm_hw_params()
1100 SDW_SDCA_CTL(FUNC_NUM_JACK_CODEC, RT712_SDCA_ENT_CS11, RT712_SDCA_CTL_SAMPLE_FREQ_INDEX, 0), in rt712_sdca_pcm_hw_params()
1105 SDW_SDCA_CTL(FUNC_NUM_AMP, RT712_SDCA_ENT_CS31, RT712_SDCA_CTL_SAMPLE_FREQ_INDEX, 0), in rt712_sdca_pcm_hw_params()
1113 return 0; in rt712_sdca_pcm_hw_params()
1128 return 0; in rt712_sdca_pcm_hw_free()
1219 if (ret < 0) in rt712_sdca_init()
1239 return 0; in rt712_sdca_init()
1245 int ret = 0; in rt712_sdca_io_init()
1251 return 0; in rt712_sdca_io_init()
1270 rt712->hw_id = (val & 0xf000) >> 12; in rt712_sdca_io_init()
1272 rt712_sdca_index_write(rt712, RT712_VENDOR_REG, RT712_ANALOG_BIAS_CTL3, 0xaa81); in rt712_sdca_io_init()
1273 rt712_sdca_index_write(rt712, RT712_VENDOR_REG, RT712_LDO2_3_CTL1, 0xa1e0); in rt712_sdca_io_init()
1274 rt712_sdca_index_write(rt712, RT712_VENDOR_IMS_DRE, RT712_HP_DETECT_RLDET_CTL1, 0x0000); in rt712_sdca_io_init()
1275 rt712_sdca_index_write(rt712, RT712_VENDOR_IMS_DRE, RT712_HP_DETECT_RLDET_CTL2, 0x0000); in rt712_sdca_io_init()
1276 rt712_sdca_index_write(rt712, RT712_VENDOR_ANALOG_CTL, RT712_MISC_POWER_CTL7, 0x0000); in rt712_sdca_io_init()
1277 regmap_write(rt712->regmap, RT712_RC_CAL, 0x23); in rt712_sdca_io_init()
1283 if (ret < 0) in rt712_sdca_io_init()
1288 RT712_MIXER_CTL1, 0x3000, 0x0000); in rt712_sdca_io_init()
1290 RT712_ADC0A_08_PDE_FLOAT_CTL, 0x1112); in rt712_sdca_io_init()
1292 RT712_MIC2_LINE2_PDE_FLOAT_CTL, 0x3412); in rt712_sdca_io_init()
1294 RT712_DAC03_HP_PDE_FLOAT_CTL, 0x4040); in rt712_sdca_io_init()
1297 RT712_HDA_LEGACY_GPIO_WAKE_EN_CTL, 0x0001, 0x0000); in rt712_sdca_io_init()
1298 regmap_write(rt712->regmap, 0x2f50, 0x00); in rt712_sdca_io_init()
1299 regmap_write(rt712->regmap, 0x2f54, 0x00); in rt712_sdca_io_init()
1301 SDW_SDCA_CTL(FUNC_NUM_JACK_CODEC, RT712_SDCA_ENT_IT09, RT712_SDCA_CTL_VENDOR_DEF, 0), 0x01); in rt712_sdca_io_init()
1305 rt712_sdca_index_write(rt712, RT712_VENDOR_HDA_CTL, RT712_AMP_PDE_FLOAT_CTL, 0x2323); in rt712_sdca_io_init()
1306 rt712_sdca_index_write(rt712, RT712_VENDOR_HDA_CTL, RT712_EAPD_CTL, 0x0002); in rt712_sdca_io_init()
1308 SDW_SDCA_CTL(FUNC_NUM_AMP, RT712_SDCA_ENT_OT23, RT712_SDCA_CTL_VENDOR_DEF, 0), 0x04); in rt712_sdca_io_init()
1319 rt712_sdca_index_write(rt712, RT712_VENDOR_REG, RT712_SW_CONFIG1, 0x0001); in rt712_sdca_io_init()
1336 return 0; in rt712_sdca_io_init()