Lines Matching refs:es8326

283 	struct es8326_priv *es8326 = snd_soc_component_get_drvdata(codec);  in es8326_set_dai_sysclk()  local
285 es8326->sysclk = freq; in es8326_set_dai_sysclk()
336 struct es8326_priv *es8326 = snd_soc_component_get_drvdata(component); in es8326_pcm_hw_params() local
340 coeff = get_coeff(es8326->sysclk, params_rate(params)); in es8326_pcm_hw_params()
366 regmap_write(es8326->regmap, ES8326_CLK_DIV1, in es8326_pcm_hw_params()
368 regmap_write(es8326->regmap, ES8326_CLK_DIV2, in es8326_pcm_hw_params()
370 regmap_write(es8326->regmap, ES8326_CLK_DLL, in es8326_pcm_hw_params()
372 regmap_write(es8326->regmap, ES8326_CLK_MUX, in es8326_pcm_hw_params()
374 regmap_write(es8326->regmap, ES8326_CLK_ADC_SEL, in es8326_pcm_hw_params()
376 regmap_write(es8326->regmap, ES8326_CLK_DAC_SEL, in es8326_pcm_hw_params()
378 regmap_write(es8326->regmap, ES8326_CLK_ADC_OSR, in es8326_pcm_hw_params()
380 regmap_write(es8326->regmap, ES8326_CLK_DAC_OSR, in es8326_pcm_hw_params()
392 struct es8326_priv *es8326 = snd_soc_component_get_drvdata(component); in es8326_mute() local
396 regmap_write(es8326->regmap, ES8326_HP_CAL, ES8326_HP_OFF); in es8326_mute()
397 regmap_update_bits(es8326->regmap, ES8326_DAC_MUTE, in es8326_mute()
399 regmap_write(es8326->regmap, ES8326_HP_DRIVER, 0xf0); in es8326_mute()
401 if (!es8326->calibrated) { in es8326_mute()
402 regmap_write(es8326->regmap, ES8326_HP_CAL, ES8326_HP_FORCE_CAL); in es8326_mute()
404 regmap_write(es8326->regmap, ES8326_HP_CAL, ES8326_HP_OFF); in es8326_mute()
405 regmap_read(es8326->regmap, ES8326_HPL_OFFSET_INI, &offset_l); in es8326_mute()
406 regmap_read(es8326->regmap, ES8326_HPR_OFFSET_INI, &offset_r); in es8326_mute()
407 regmap_write(es8326->regmap, ES8326_HP_OFFSET_CAL, 0x8c); in es8326_mute()
408 regmap_write(es8326->regmap, ES8326_HPL_OFFSET_INI, offset_l); in es8326_mute()
409 regmap_write(es8326->regmap, ES8326_HPR_OFFSET_INI, offset_r); in es8326_mute()
410 es8326->calibrated = true; in es8326_mute()
412 regmap_write(es8326->regmap, ES8326_HP_DRIVER, 0xa0); in es8326_mute()
413 regmap_write(es8326->regmap, ES8326_HP_VOL, 0x80); in es8326_mute()
414 regmap_write(es8326->regmap, ES8326_HP_CAL, ES8326_HP_ON); in es8326_mute()
415 regmap_update_bits(es8326->regmap, ES8326_DAC_MUTE, in es8326_mute()
424 struct es8326_priv *es8326 = snd_soc_component_get_drvdata(codec); in es8326_set_bias_level() local
429 ret = clk_prepare_enable(es8326->mclk); in es8326_set_bias_level()
433 regmap_write(es8326->regmap, ES8326_RESET, 0x9f); in es8326_set_bias_level()
435 regmap_update_bits(es8326->regmap, ES8326_DAC_DSM, 0x01, 0x00); in es8326_set_bias_level()
436 regmap_write(es8326->regmap, ES8326_INTOUT_IO, es8326->interrupt_clk); in es8326_set_bias_level()
437 regmap_write(es8326->regmap, ES8326_SDINOUT1_IO, in es8326_set_bias_level()
439 regmap_write(es8326->regmap, ES8326_VMIDSEL, 0x0E); in es8326_set_bias_level()
440 regmap_write(es8326->regmap, ES8326_PGA_PDN, 0x40); in es8326_set_bias_level()
441 regmap_write(es8326->regmap, ES8326_ANA_PDN, 0x00); in es8326_set_bias_level()
442 regmap_update_bits(es8326->regmap, ES8326_CLK_CTL, 0x20, 0x20); in es8326_set_bias_level()
443 regmap_write(es8326->regmap, ES8326_RESET, ES8326_CSM_ON); in es8326_set_bias_level()
450 clk_disable_unprepare(es8326->mclk); in es8326_set_bias_level()
451 regmap_write(es8326->regmap, ES8326_ANA_PDN, 0x3b); in es8326_set_bias_level()
452 regmap_write(es8326->regmap, ES8326_VMIDSEL, 0x00); in es8326_set_bias_level()
453 regmap_update_bits(es8326->regmap, ES8326_CLK_CTL, 0x20, 0x00); in es8326_set_bias_level()
454 regmap_write(es8326->regmap, ES8326_SDINOUT1_IO, ES8326_IO_INPUT); in es8326_set_bias_level()
522 struct es8326_priv *es8326 = in es8326_jack_button_handler() local
524 struct snd_soc_component *comp = es8326->component; in es8326_jack_button_handler()
529 if (!(es8326->jack->status & SND_JACK_HEADSET)) /* Jack unplugged */ in es8326_jack_button_handler()
532 mutex_lock(&es8326->lock); in es8326_jack_button_handler()
561 snd_soc_jack_report(es8326->jack, cur_button, in es8326_jack_button_handler()
566 queue_delayed_work(system_wq, &es8326->button_press_work, in es8326_jack_button_handler()
571 queue_delayed_work(system_wq, &es8326->button_press_work, in es8326_jack_button_handler()
576 snd_soc_jack_report(es8326->jack, button_to_report, in es8326_jack_button_handler()
578 snd_soc_jack_report(es8326->jack, 0, in es8326_jack_button_handler()
583 mutex_unlock(&es8326->lock); in es8326_jack_button_handler()
588 struct es8326_priv *es8326 = in es8326_jack_detect_handler() local
590 struct snd_soc_component *comp = es8326->component; in es8326_jack_detect_handler()
593 mutex_lock(&es8326->lock); in es8326_jack_detect_handler()
597 if (es8326->jack_remove_retry == 1) { in es8326_jack_detect_handler()
599 es8326->jack_remove_retry = 2; in es8326_jack_detect_handler()
601 es8326->jack_remove_retry = 0; in es8326_jack_detect_handler()
604 es8326->jack_remove_retry); in es8326_jack_detect_handler()
608 regmap_update_bits(es8326->regmap, ES8326_HPDET_TYPE, in es8326_jack_detect_handler()
609 ES8326_HP_DET_JACK_POL, (es8326->jd_inverted ? in es8326_jack_detect_handler()
610 ~es8326->jack_pol : es8326->jack_pol)); in es8326_jack_detect_handler()
617 es8326_disable_micbias(es8326->component); in es8326_jack_detect_handler()
618 if (es8326->jack->status & SND_JACK_HEADPHONE) { in es8326_jack_detect_handler()
620 snd_soc_jack_report(es8326->jack, 0, SND_JACK_HEADSET); in es8326_jack_detect_handler()
622 regmap_write(es8326->regmap, ES8326_ADC_SCALE, 0x33); in es8326_jack_detect_handler()
623 regmap_write(es8326->regmap, ES8326_ADC1_SRC, 0x44); in es8326_jack_detect_handler()
624 regmap_write(es8326->regmap, ES8326_ADC2_SRC, 0x66); in es8326_jack_detect_handler()
625 es8326->hp = 0; in es8326_jack_detect_handler()
627 regmap_update_bits(es8326->regmap, ES8326_HPDET_TYPE, 0x03, 0x01); in es8326_jack_detect_handler()
631 if (es8326->jack_remove_retry == 0) { in es8326_jack_detect_handler()
632 es8326->jack_remove_retry = 1; in es8326_jack_detect_handler()
634 es8326->jack_remove_retry); in es8326_jack_detect_handler()
635 regmap_update_bits(es8326->regmap, ES8326_HPDET_TYPE, in es8326_jack_detect_handler()
636 ES8326_HP_DET_JACK_POL, (es8326->jd_inverted ? in es8326_jack_detect_handler()
637 es8326->jack_pol : ~es8326->jack_pol)); in es8326_jack_detect_handler()
640 es8326->jack_remove_retry = 0; in es8326_jack_detect_handler()
643 es8326->jack_remove_retry = 0; in es8326_jack_detect_handler()
644 if (es8326->hp == 0) { in es8326_jack_detect_handler()
650 regmap_update_bits(es8326->regmap, ES8326_HPDET_TYPE, 0x03, 0x01); in es8326_jack_detect_handler()
652 regmap_update_bits(es8326->regmap, ES8326_HPDET_TYPE, 0x03, 0x00); in es8326_jack_detect_handler()
653 queue_delayed_work(system_wq, &es8326->jack_detect_work, in es8326_jack_detect_handler()
655 es8326->hp = 1; in es8326_jack_detect_handler()
658 if (es8326->jack->status & SND_JACK_HEADSET) { in es8326_jack_detect_handler()
661 queue_delayed_work(system_wq, &es8326->button_press_work, 10); in es8326_jack_detect_handler()
666 snd_soc_jack_report(es8326->jack, in es8326_jack_detect_handler()
670 snd_soc_jack_report(es8326->jack, in es8326_jack_detect_handler()
673 regmap_write(es8326->regmap, ES8326_ADC_SCALE, 0x33); in es8326_jack_detect_handler()
674 regmap_update_bits(es8326->regmap, ES8326_PGA_PDN, in es8326_jack_detect_handler()
676 regmap_update_bits(es8326->regmap, ES8326_PGAGAIN, in es8326_jack_detect_handler()
678 regmap_write(es8326->regmap, ES8326_ADC1_SRC, 0x00); in es8326_jack_detect_handler()
679 regmap_write(es8326->regmap, ES8326_ADC2_SRC, 0x00); in es8326_jack_detect_handler()
680 regmap_update_bits(es8326->regmap, ES8326_PGA_PDN, in es8326_jack_detect_handler()
686 mutex_unlock(&es8326->lock); in es8326_jack_detect_handler()
691 struct es8326_priv *es8326 = dev_id; in es8326_irq() local
692 struct snd_soc_component *comp = es8326->component; in es8326_irq()
694 if (!es8326->jack) in es8326_irq()
699 if (es8326->jack->status & SND_JACK_HEADSET) in es8326_irq()
700 queue_delayed_work(system_wq, &es8326->jack_detect_work, in es8326_irq()
703 queue_delayed_work(system_wq, &es8326->jack_detect_work, in es8326_irq()
712 struct es8326_priv *es8326 = snd_soc_component_get_drvdata(component); in es8326_calibrate() local
716 regmap_read(es8326->regmap, ES8326_CHIP_VERSION, &reg); in es8326_calibrate()
717 es8326->version = reg; in es8326_calibrate()
719 if ((es8326->version == ES8326_VERSION_B) && (es8326->calibrated == false)) { in es8326_calibrate()
721 regmap_write(es8326->regmap, ES8326_CLK_INV, 0xc0); in es8326_calibrate()
722 regmap_write(es8326->regmap, ES8326_CLK_DIV1, 0x01); in es8326_calibrate()
723 regmap_write(es8326->regmap, ES8326_CLK_DLL, 0x30); in es8326_calibrate()
724 regmap_write(es8326->regmap, ES8326_CLK_MUX, 0xed); in es8326_calibrate()
725 regmap_write(es8326->regmap, ES8326_CLK_TRI, 0xc1); in es8326_calibrate()
726 regmap_write(es8326->regmap, ES8326_DAC_MUTE, 0x03); in es8326_calibrate()
727 regmap_write(es8326->regmap, ES8326_ANA_VSEL, 0x7f); in es8326_calibrate()
728 regmap_write(es8326->regmap, ES8326_VMIDLOW, 0x33); in es8326_calibrate()
729 regmap_write(es8326->regmap, ES8326_DAC2HPMIX, 0x88); in es8326_calibrate()
730 regmap_write(es8326->regmap, ES8326_HP_VOL, 0x80); in es8326_calibrate()
731 regmap_write(es8326->regmap, ES8326_HP_OFFSET_CAL, 0x8c); in es8326_calibrate()
732 regmap_write(es8326->regmap, ES8326_RESET, 0xc0); in es8326_calibrate()
735 regmap_write(es8326->regmap, ES8326_HP_OFFSET_CAL, ES8326_HP_OFF); in es8326_calibrate()
736 regmap_read(es8326->regmap, ES8326_CSM_MUTE_STA, &reg); in es8326_calibrate()
740 regmap_write(es8326->regmap, ES8326_HP_CAL, 0xd4); in es8326_calibrate()
742 regmap_write(es8326->regmap, ES8326_HP_CAL, 0x4d); in es8326_calibrate()
744 regmap_write(es8326->regmap, ES8326_HP_CAL, ES8326_HP_OFF); in es8326_calibrate()
745 regmap_read(es8326->regmap, ES8326_HPL_OFFSET_INI, &offset_l); in es8326_calibrate()
746 regmap_read(es8326->regmap, ES8326_HPR_OFFSET_INI, &offset_r); in es8326_calibrate()
747 regmap_write(es8326->regmap, ES8326_HP_OFFSET_CAL, 0x8c); in es8326_calibrate()
748 regmap_write(es8326->regmap, ES8326_HPL_OFFSET_INI, offset_l); in es8326_calibrate()
749 regmap_write(es8326->regmap, ES8326_HPR_OFFSET_INI, offset_r); in es8326_calibrate()
750 regmap_write(es8326->regmap, ES8326_CLK_INV, 0x00); in es8326_calibrate()
752 es8326->calibrated = true; in es8326_calibrate()
760 struct es8326_priv *es8326 = snd_soc_component_get_drvdata(component); in es8326_resume() local
762 regcache_cache_only(es8326->regmap, false); in es8326_resume()
763 regcache_sync(es8326->regmap); in es8326_resume()
766 regmap_write(es8326->regmap, ES8326_RESET, 0x1f); in es8326_resume()
767 regmap_write(es8326->regmap, ES8326_VMIDSEL, 0x0E); in es8326_resume()
769 regmap_write(es8326->regmap, ES8326_HPJACK_TIMER, 0x88); in es8326_resume()
771 regmap_write(es8326->regmap, ES8326_HPDET_TYPE, 0x81); in es8326_resume()
772 regmap_write(es8326->regmap, ES8326_CLK_RESAMPLE, 0x05); in es8326_resume()
775 regmap_write(es8326->regmap, ES8326_CLK_DIV_CPC, 0x84); in es8326_resume()
776 regmap_write(es8326->regmap, ES8326_CLK_CTL, ES8326_CLK_ON); in es8326_resume()
778 regmap_write(es8326->regmap, ES8326_RESET, 0x17); in es8326_resume()
780 regmap_write(es8326->regmap, ES8326_HP_MISC, 0x08); in es8326_resume()
781 regmap_write(es8326->regmap, ES8326_PULLUP_CTL, 0x00); in es8326_resume()
784 regmap_write(es8326->regmap, ES8326_HP_DRIVER, 0xa7); in es8326_resume()
786 regmap_write(es8326->regmap, ES8326_HP_DRIVER_REF, 0xab); in es8326_resume()
788 regmap_write(es8326->regmap, ES8326_HP_DRIVER_REF, 0xbb); in es8326_resume()
790 regmap_write(es8326->regmap, ES8326_HP_DRIVER, 0xa1); in es8326_resume()
792 regmap_write(es8326->regmap, ES8326_CLK_INV, 0x00); in es8326_resume()
793 regmap_write(es8326->regmap, ES8326_CLK_VMIDS1, 0xc4); in es8326_resume()
794 regmap_write(es8326->regmap, ES8326_CLK_VMIDS2, 0x81); in es8326_resume()
795 regmap_write(es8326->regmap, ES8326_CLK_CAL_TIME, 0x00); in es8326_resume()
799 regmap_write(es8326->regmap, ES8326_HP_CAL, 0x00); in es8326_resume()
801 regmap_write(es8326->regmap, ES8326_ANA_LP, 0xf0); in es8326_resume()
804 regmap_write(es8326->regmap, ES8326_ANA_MICBIAS, 0x4f); in es8326_resume()
805 regmap_write(es8326->regmap, ES8326_SYS_BIAS, 0x08); in es8326_resume()
806 regmap_write(es8326->regmap, ES8326_ANA_VSEL, 0x7F); in es8326_resume()
808 regmap_write(es8326->regmap, ES8326_VMIDLOW, 0x23); in es8326_resume()
810 regmap_write(es8326->regmap, ES8326_DAC_DSM, 0x08); in es8326_resume()
811 regmap_write(es8326->regmap, ES8326_DAC_VPPSCALE, 0x15); in es8326_resume()
813 regmap_write(es8326->regmap, ES8326_INT_SOURCE, in es8326_resume()
815 regmap_write(es8326->regmap, ES8326_INTOUT_IO, in es8326_resume()
816 es8326->interrupt_clk); in es8326_resume()
817 regmap_write(es8326->regmap, ES8326_SDINOUT1_IO, in es8326_resume()
819 regmap_write(es8326->regmap, ES8326_SDINOUT23_IO, ES8326_IO_INPUT); in es8326_resume()
821 regmap_write(es8326->regmap, ES8326_ANA_PDN, 0x3b); in es8326_resume()
822 regmap_write(es8326->regmap, ES8326_RESET, ES8326_CSM_ON); in es8326_resume()
823 regmap_update_bits(es8326->regmap, ES8326_PGAGAIN, ES8326_MIC_SEL_MASK, in es8326_resume()
826 regmap_update_bits(es8326->regmap, ES8326_DAC_MUTE, ES8326_MUTE_MASK, in es8326_resume()
829 regmap_write(es8326->regmap, ES8326_HPDET_TYPE, 0x80 | in es8326_resume()
830 ((es8326->version == ES8326_VERSION_B) ? in es8326_resume()
831 (ES8326_HP_DET_SRC_PIN9 | es8326->jack_pol) : in es8326_resume()
832 (ES8326_HP_DET_SRC_PIN9 | es8326->jack_pol | 0x04))); in es8326_resume()
834 es8326->jack_remove_retry = 0; in es8326_resume()
835 es8326->hp = 0; in es8326_resume()
841 struct es8326_priv *es8326 = snd_soc_component_get_drvdata(component); in es8326_suspend() local
843 cancel_delayed_work_sync(&es8326->jack_detect_work); in es8326_suspend()
845 es8326->calibrated = false; in es8326_suspend()
846 regmap_write(es8326->regmap, ES8326_CLK_CTL, ES8326_CLK_OFF); in es8326_suspend()
847 regcache_cache_only(es8326->regmap, true); in es8326_suspend()
848 regcache_mark_dirty(es8326->regmap); in es8326_suspend()
851 regmap_write(es8326->regmap, ES8326_CSM_I2C_STA, 0x01); in es8326_suspend()
853 regmap_write(es8326->regmap, ES8326_CSM_I2C_STA, 0x00); in es8326_suspend()
859 struct es8326_priv *es8326 = snd_soc_component_get_drvdata(component); in es8326_probe() local
862 es8326->component = component; in es8326_probe()
863 es8326->jd_inverted = device_property_read_bool(component->dev, in es8326_probe()
866 ret = device_property_read_u8(component->dev, "everest,mic1-src", &es8326->mic1_src); in es8326_probe()
869 es8326->mic1_src = ES8326_ADC_AMIC; in es8326_probe()
871 dev_dbg(component->dev, "mic1-src %x", es8326->mic1_src); in es8326_probe()
873 ret = device_property_read_u8(component->dev, "everest,mic2-src", &es8326->mic2_src); in es8326_probe()
876 es8326->mic2_src = ES8326_ADC_DMIC; in es8326_probe()
878 dev_dbg(component->dev, "mic2-src %x", es8326->mic2_src); in es8326_probe()
880 ret = device_property_read_u8(component->dev, "everest,jack-pol", &es8326->jack_pol); in es8326_probe()
883 es8326->jack_pol = ES8326_HP_TYPE_AUTO; in es8326_probe()
885 dev_dbg(component->dev, "jack-pol %x", es8326->jack_pol); in es8326_probe()
888 &es8326->interrupt_src); in es8326_probe()
891 es8326->interrupt_src = ES8326_HP_DET_SRC_PIN9; in es8326_probe()
893 dev_dbg(component->dev, "interrupt-src %x", es8326->interrupt_src); in es8326_probe()
896 &es8326->interrupt_clk); in es8326_probe()
899 es8326->interrupt_clk = 0x45; in es8326_probe()
901 dev_dbg(component->dev, "interrupt-clk %x", es8326->interrupt_clk); in es8326_probe()
910 struct es8326_priv *es8326 = snd_soc_component_get_drvdata(component); in es8326_enable_jack_detect() local
912 mutex_lock(&es8326->lock); in es8326_enable_jack_detect()
913 if (es8326->jd_inverted) in es8326_enable_jack_detect()
915 ES8326_HP_DET_JACK_POL, ~es8326->jack_pol); in es8326_enable_jack_detect()
916 es8326->jack = jack; in es8326_enable_jack_detect()
918 mutex_unlock(&es8326->lock); in es8326_enable_jack_detect()
919 es8326_irq(es8326->irq, es8326); in es8326_enable_jack_detect()
924 struct es8326_priv *es8326 = snd_soc_component_get_drvdata(component); in es8326_disable_jack_detect() local
927 if (!es8326->jack) in es8326_disable_jack_detect()
929 cancel_delayed_work_sync(&es8326->jack_detect_work); in es8326_disable_jack_detect()
931 mutex_lock(&es8326->lock); in es8326_disable_jack_detect()
932 if (es8326->jack->status & SND_JACK_MICROPHONE) { in es8326_disable_jack_detect()
934 snd_soc_jack_report(es8326->jack, 0, SND_JACK_HEADSET); in es8326_disable_jack_detect()
936 es8326->jack = NULL; in es8326_disable_jack_detect()
937 mutex_unlock(&es8326->lock); in es8326_disable_jack_detect()
976 struct es8326_priv *es8326; in es8326_i2c_probe() local
979 es8326 = devm_kzalloc(&i2c->dev, sizeof(struct es8326_priv), GFP_KERNEL); in es8326_i2c_probe()
980 if (!es8326) in es8326_i2c_probe()
983 i2c_set_clientdata(i2c, es8326); in es8326_i2c_probe()
984 es8326->i2c = i2c; in es8326_i2c_probe()
985 mutex_init(&es8326->lock); in es8326_i2c_probe()
986 es8326->regmap = devm_regmap_init_i2c(i2c, &es8326_regmap_config); in es8326_i2c_probe()
987 if (IS_ERR(es8326->regmap)) { in es8326_i2c_probe()
988 ret = PTR_ERR(es8326->regmap); in es8326_i2c_probe()
993 es8326->irq = i2c->irq; in es8326_i2c_probe()
994 INIT_DELAYED_WORK(&es8326->jack_detect_work, in es8326_i2c_probe()
996 INIT_DELAYED_WORK(&es8326->button_press_work, in es8326_i2c_probe()
999 ret = devm_request_threaded_irq(&i2c->dev, es8326->irq, NULL, es8326_irq, in es8326_i2c_probe()
1001 "es8326", es8326); in es8326_i2c_probe()
1004 es8326->irq, ret); in es8326_i2c_probe()
1005 es8326->irq = -ENXIO; in es8326_i2c_probe()
1008 es8326->mclk = devm_clk_get_optional(&i2c->dev, "mclk"); in es8326_i2c_probe()
1009 if (IS_ERR(es8326->mclk)) { in es8326_i2c_probe()
1011 return PTR_ERR(es8326->mclk); in es8326_i2c_probe()
1013 if (!es8326->mclk) in es8326_i2c_probe()
1016 ret = clk_prepare_enable(es8326->mclk); in es8326_i2c_probe()