Lines Matching +full:0 +full:xc400

33 #define RT286_VENDOR_ID 0x10ec0286
34 #define RT288_VENDOR_ID 0x10ec0288
50 { 0x01, 0xaaaa },
51 { 0x02, 0x8aaa },
52 { 0x03, 0x0002 },
53 { 0x04, 0xaf01 },
54 { 0x08, 0x000d },
55 { 0x09, 0xd810 },
56 { 0x0a, 0x0120 },
57 { 0x0b, 0x0000 },
58 { 0x0d, 0x2800 },
59 { 0x0f, 0x0000 },
60 { 0x19, 0x0a17 },
61 { 0x20, 0x0020 },
62 { 0x33, 0x0208 },
63 { 0x49, 0x0004 },
64 { 0x4f, 0x50e9 },
65 { 0x50, 0x2000 },
66 { 0x63, 0x2902 },
67 { 0x67, 0x1111 },
68 { 0x68, 0x1016 },
69 { 0x69, 0x273f },
74 { 0x00170500, 0x00000400 },
75 { 0x00220000, 0x00000031 },
76 { 0x00239000, 0x0000007f },
77 { 0x0023a000, 0x0000007f },
78 { 0x00270500, 0x00000400 },
79 { 0x00370500, 0x00000400 },
80 { 0x00870500, 0x00000400 },
81 { 0x00920000, 0x00000031 },
82 { 0x00935000, 0x000000c3 },
83 { 0x00936000, 0x000000c3 },
84 { 0x00970500, 0x00000400 },
85 { 0x00b37000, 0x00000097 },
86 { 0x00b37200, 0x00000097 },
87 { 0x00b37300, 0x00000097 },
88 { 0x00c37000, 0x00000000 },
89 { 0x00c37100, 0x00000080 },
90 { 0x01270500, 0x00000400 },
91 { 0x01370500, 0x00000400 },
92 { 0x01371f00, 0x411111f0 },
93 { 0x01439000, 0x00000080 },
94 { 0x0143a000, 0x00000080 },
95 { 0x01470700, 0x00000000 },
96 { 0x01470500, 0x00000400 },
97 { 0x01470c00, 0x00000000 },
98 { 0x01470100, 0x00000000 },
99 { 0x01837000, 0x00000000 },
100 { 0x01870500, 0x00000400 },
101 { 0x02050000, 0x00000000 },
102 { 0x02139000, 0x00000080 },
103 { 0x0213a000, 0x00000080 },
104 { 0x02170100, 0x00000000 },
105 { 0x02170500, 0x00000400 },
106 { 0x02170700, 0x00000000 },
107 { 0x02270100, 0x00000000 },
108 { 0x02370100, 0x00000000 },
109 { 0x01870700, 0x00000020 },
110 { 0x00830000, 0x000000c3 },
111 { 0x00930000, 0x000000c3 },
112 { 0x01270700, 0x00000000 },
118 case 0 ... 0xff: in rt286_volatile_register()
134 case 0 ... 0xff: in rt286_readable_register()
195 for (i = 0; i < INDEX_CACHE_SIZE; i++) { in rt286_index_sync()
230 *hp = buf & 0x80000000; in rt286_jack_detect()
234 RT286_DC_GAIN, 0x200, 0x200); in rt286_jack_detect()
242 regmap_write(rt286->regmap, RT286_SET_MIC1, 0x24); in rt286_jack_detect()
246 RT286_CBJ_CTRL1, 0xfcc0, 0xd400); in rt286_jack_detect()
250 if (0x0070 == (val & 0x0070)) { in rt286_jack_detect()
254 RT286_CBJ_CTRL1, 0xfcc0, 0xe400); in rt286_jack_detect()
258 if (0x0070 == (val & 0x0070)) { in rt286_jack_detect()
264 0xfcc0, 0xc400); in rt286_jack_detect()
269 RT286_DC_GAIN, 0x200, 0x0); in rt286_jack_detect()
273 regmap_write(rt286->regmap, RT286_SET_MIC1, 0x20); in rt286_jack_detect()
275 RT286_CBJ_CTRL1, 0x0400, 0x0000); in rt286_jack_detect()
279 *hp = buf & 0x80000000; in rt286_jack_detect()
281 *mic = buf & 0x80000000; in rt286_jack_detect()
291 return 0; in rt286_jack_detect()
298 int status = 0; in rt286_jack_detect_work()
326 regmap_update_bits(rt286->regmap, RT286_IRQ_CTRL, 0x2, 0x2); in rt286_mic_detect()
332 regmap_update_bits(rt286->regmap, RT286_IRQ_CTRL, 0x2, 0x0); in rt286_mic_detect()
337 return 0; in rt286_mic_detect()
349 return 0; in is_mclk_mode()
352 static const DECLARE_TLV_DB_SCALE(out_vol_tlv, -6350, 50, 0);
353 static const DECLARE_TLV_DB_SCALE(mic_vol_tlv, 0, 1000, 0);
357 RT286_DACR_GAIN, 0, 0x7f, 0, out_vol_tlv),
361 RT286_ADCR_GAIN, 0, 0x7f, 0, out_vol_tlv),
363 0, 0x3, 0, mic_vol_tlv),
390 RT286_SET_PIN_SFT, 1, 0);
406 0, 4, 5,
414 SOC_DAPM_ENUM("ADC 0 source", rt286_adc0_enum);
428 0, rt286_dac_src);
435 0, rt286_dac_src);
456 return 0; in rt286_spk_event()
459 return 0; in rt286_spk_event()
469 snd_soc_component_write(component, RT286_SET_PIN_DMIC1, 0x20); in rt286_set_dmic1_event()
472 snd_soc_component_write(component, RT286_SET_PIN_DMIC1, 0); in rt286_set_dmic1_event()
475 return 0; in rt286_set_dmic1_event()
478 return 0; in rt286_set_dmic1_event()
488 snd_soc_component_update_bits(component, RT286_POWER_CTRL2, 0x38, 0x08); in rt286_ldo2_event()
491 snd_soc_component_update_bits(component, RT286_POWER_CTRL2, 0x38, 0x30); in rt286_ldo2_event()
494 return 0; in rt286_ldo2_event()
497 return 0; in rt286_ldo2_event()
508 RT286_A_BIAS_CTRL3, 0xc000, 0x8000); in rt286_mic1_event()
510 RT286_A_BIAS_CTRL2, 0xc000, 0x8000); in rt286_mic1_event()
514 RT286_A_BIAS_CTRL3, 0xc000, 0x0000); in rt286_mic1_event()
516 RT286_A_BIAS_CTRL2, 0xc000, 0x0000); in rt286_mic1_event()
519 return 0; in rt286_mic1_event()
522 return 0; in rt286_mic1_event()
527 12, 1, NULL, 0),
529 0, 1, NULL, 0),
531 2, 0, NULL, 0),
536 5, 0, NULL, 0),
538 0, 0, rt286_mic1_event, SND_SOC_DAPM_PRE_PMU |
549 SND_SOC_DAPM_PGA_E("DMIC1", RT286_SET_POWER(RT286_DMIC1), 0, 1,
550 NULL, 0, rt286_set_dmic1_event,
552 SND_SOC_DAPM_PGA("DMIC2", RT286_SET_POWER(RT286_DMIC2), 0, 1,
553 NULL, 0),
555 0, 0, NULL, 0),
558 SND_SOC_DAPM_MIXER("RECMIX", SND_SOC_NOPM, 0, 0,
562 SND_SOC_DAPM_ADC("ADC 0", NULL, SND_SOC_NOPM, 0, 0),
563 SND_SOC_DAPM_ADC("ADC 1", NULL, SND_SOC_NOPM, 0, 0),
566 SND_SOC_DAPM_MUX("ADC 0 Mux", RT286_SET_POWER(RT286_ADC_IN1), 0, 1,
568 SND_SOC_DAPM_MUX("ADC 1 Mux", RT286_SET_POWER(RT286_ADC_IN2), 0, 1,
572 SND_SOC_DAPM_AIF_IN("AIF1RX", "AIF1 Playback", 0, SND_SOC_NOPM, 0, 0),
573 SND_SOC_DAPM_AIF_OUT("AIF1TX", "AIF1 Capture", 0, SND_SOC_NOPM, 0, 0),
574 SND_SOC_DAPM_AIF_IN("AIF2RX", "AIF2 Playback", 0, SND_SOC_NOPM, 0, 0),
575 SND_SOC_DAPM_AIF_OUT("AIF2TX", "AIF2 Capture", 0, SND_SOC_NOPM, 0, 0),
579 SND_SOC_DAPM_DAC("DAC 0", NULL, SND_SOC_NOPM, 0, 0),
580 SND_SOC_DAPM_DAC("DAC 1", NULL, SND_SOC_NOPM, 0, 0),
583 SND_SOC_DAPM_MUX("SPK Mux", SND_SOC_NOPM, 0, 0, &rt286_spo_mux),
584 SND_SOC_DAPM_MUX("HPO Mux", SND_SOC_NOPM, 0, 0, &rt286_hpo_mux),
587 RT286_SET_PIN_SFT, 0, NULL, 0),
590 SND_SOC_DAPM_MIXER("Front", RT286_SET_POWER(RT286_DAC_OUT1), 0, 1,
592 SND_SOC_DAPM_PGA("Surround", RT286_SET_POWER(RT286_DAC_OUT2), 0, 1,
593 NULL, 0),
596 SND_SOC_DAPM_SWITCH_E("SPO", SND_SOC_NOPM, 0, 0,
599 SND_SOC_DAPM_SWITCH("HPO L", SND_SOC_NOPM, 0, 0,
601 SND_SOC_DAPM_SWITCH("HPO R", SND_SOC_NOPM, 0, 0,
612 {"ADC 0", NULL, "MCLK MODE", is_mclk_mode},
640 {"ADC 0 Mux", "Dmic", "DMIC1"},
641 {"ADC 0 Mux", "RECMIX", "RECMIX"},
642 {"ADC 0 Mux", "Mic", "MIC1"},
647 {"ADC 0", NULL, "ADC 0 Mux"},
650 {"AIF1TX", NULL, "ADC 0"},
653 {"DAC 0", NULL, "AIF1RX"},
656 {"Front", "DAC Switch", "DAC 0"},
685 unsigned int val = 0; in rt286_hw_params()
689 /* bit 14 0:48K 1:44.1K */ in rt286_hw_params()
691 val |= 0x4000; in rt286_hw_params()
720 /* bit 3:0 Number of Channel */ in rt286_hw_params()
731 d_len_code = 0; in rt286_hw_params()
732 val |= (0x1 << 4); in rt286_hw_params()
736 val |= (0x4 << 4); in rt286_hw_params()
740 val |= (0x2 << 4); in rt286_hw_params()
744 val |= (0x3 << 4); in rt286_hw_params()
754 RT286_I2S_CTRL1, 0x0018, d_len_code << 3); in rt286_hw_params()
755 dev_dbg(component->dev, "format val = 0x%x\n", val); in rt286_hw_params()
757 snd_soc_component_update_bits(component, RT286_DAC_FORMAT, 0x407f, val); in rt286_hw_params()
758 snd_soc_component_update_bits(component, RT286_ADC_FORMAT, 0x407f, val); in rt286_hw_params()
760 return 0; in rt286_hw_params()
770 RT286_I2S_CTRL1, 0x800, 0x800); in rt286_set_dai_fmt()
774 RT286_I2S_CTRL1, 0x800, 0x0); in rt286_set_dai_fmt()
783 RT286_I2S_CTRL1, 0x300, 0x0); in rt286_set_dai_fmt()
787 RT286_I2S_CTRL1, 0x300, 0x1 << 8); in rt286_set_dai_fmt()
791 RT286_I2S_CTRL1, 0x300, 0x2 << 8); in rt286_set_dai_fmt()
795 RT286_I2S_CTRL1, 0x300, 0x3 << 8); in rt286_set_dai_fmt()
800 /* bit 15 Stream Type 0:PCM 1:Non-PCM */ in rt286_set_dai_fmt()
801 snd_soc_component_update_bits(component, RT286_DAC_FORMAT, 0x8000, 0); in rt286_set_dai_fmt()
802 snd_soc_component_update_bits(component, RT286_ADC_FORMAT, 0x8000, 0); in rt286_set_dai_fmt()
804 return 0; in rt286_set_dai_fmt()
817 RT286_I2S_CTRL2, 0x0100, 0x0); in rt286_set_dai_sysclk()
819 RT286_PLL_CTRL1, 0x20, 0x20); in rt286_set_dai_sysclk()
822 RT286_I2S_CTRL2, 0x0100, 0x0100); in rt286_set_dai_sysclk()
824 RT286_PLL_CTRL, 0x4, 0x4); in rt286_set_dai_sysclk()
826 RT286_PLL_CTRL1, 0x20, 0x0); in rt286_set_dai_sysclk()
836 RT286_I2S_CTRL2, 0x40, 0x40); in rt286_set_dai_sysclk()
844 RT286_I2S_CTRL2, 0x40, 0x0); in rt286_set_dai_sysclk()
849 RT286_I2S_CTRL2, 0x8, 0x0); in rt286_set_dai_sysclk()
851 RT286_CLK_DIV, 0xfc1e, 0x0004); in rt286_set_dai_sysclk()
856 RT286_I2S_CTRL2, 0x8, 0x8); in rt286_set_dai_sysclk()
858 RT286_CLK_DIV, 0xfc1e, 0x5406); in rt286_set_dai_sysclk()
868 return 0; in rt286_set_dai_sysclk()
878 RT286_I2S_CTRL1, 0x1000, 0x1000); in rt286_set_bclk_ratio()
881 RT286_I2S_CTRL1, 0x1000, 0x0); in rt286_set_bclk_ratio()
884 return 0; in rt286_set_bclk_ratio()
896 RT286_DC_GAIN, 0x200, 0x200); in rt286_set_bias_level()
903 RT286_DC_GAIN, 0x200, 0x0); in rt286_set_bias_level()
916 return 0; in rt286_set_bias_level()
924 int status = 0; in rt286_irq()
929 regmap_update_bits(rt286->regmap, RT286_IRQ_CTRL, 0x1, 0x1); in rt286_irq()
955 return 0; in rt286_probe()
974 return 0; in rt286_suspend()
985 return 0; in rt286_resume()
1067 .max_register = 0x02370100,
1086 { "INT343A", 0 },
1153 if (ret != 0) { in rt286_i2c_probe()
1174 for (i = 0; i < INDEX_CACHE_SIZE; i++) in rt286_i2c_probe()
1177 for (i = 0; i < ARRAY_SIZE(rt286_reg); i++) in rt286_i2c_probe()
1190 for (i = 0; i < RT286_POWER_REG_LEN; i++) in rt286_i2c_probe()
1196 regmap_write(rt286->regmap, RT286_CBJ_CTRL2, 0x0000); in rt286_i2c_probe()
1197 regmap_write(rt286->regmap, RT286_MIC1_DET_CTRL, 0x0816); in rt286_i2c_probe()
1199 RT286_CBJ_CTRL1, 0xf000, 0xb000); in rt286_i2c_probe()
1202 RT286_CBJ_CTRL1, 0xf000, 0x5000); in rt286_i2c_probe()
1208 regmap_write(rt286->regmap, RT286_SET_DMIC2_DEFAULT, 0x40); in rt286_i2c_probe()
1210 regmap_write(rt286->regmap, RT286_SET_DMIC2_DEFAULT, 0); in rt286_i2c_probe()
1214 regmap_write(rt286->regmap, RT286_MISC_CTRL1, 0x0000); in rt286_i2c_probe()
1216 regmap_update_bits(rt286->regmap, RT286_POWER_CTRL2, 0xc, 0x0); in rt286_i2c_probe()
1217 regmap_update_bits(rt286->regmap, RT286_POWER_CTRL1, 0x1001, 0x1001); in rt286_i2c_probe()
1220 regmap_update_bits(rt286->regmap, RT286_DEPOP_CTRL2, 0x403a, 0x401a); in rt286_i2c_probe()
1221 regmap_update_bits(rt286->regmap, RT286_DEPOP_CTRL3, 0xf777, 0x4737); in rt286_i2c_probe()
1222 regmap_update_bits(rt286->regmap, RT286_DEPOP_CTRL4, 0x00ff, 0x003f); in rt286_i2c_probe()
1226 RT286_SET_GPIO_MASK, 0x40, 0x40); in rt286_i2c_probe()
1228 RT286_SET_GPIO_DIRECTION, 0x40, 0x40); in rt286_i2c_probe()
1230 RT286_SET_GPIO_DATA, 0x40, 0x40); in rt286_i2c_probe()
1232 RT286_GPIO_CTRL, 0xc, 0x8); in rt286_i2c_probe()
1238 if (ret != 0) { in rt286_i2c_probe()