68
static bool jack_det_enabled;
69
71
* fs_init_card - initialize the sound card
71
* This initilizes the audio paths to know values in case of this sound card
73
* This initializes the audio paths to know values in case of this sound card
73
75
static int fs_init_card(void)
157
159
return fs_enable_audiodac(UNMUTE);
160
static int fs_power_down_pb(void)
162
static int fs_power_down_pb(unsigned int device)
162
164
struct sc_reg_access sc_access[] = {
163
165
{POWERCTRL1, 0x00, 0xC6},
195
197
return sst_sc_reg_access(sc_access, PMIC_READ_MODIFY, 2);
198
static int fs_power_down_cp(void)
200
static int fs_power_down_cp(unsigned int device)
200
202
struct sc_reg_access sc_access[] = {
201
203
{POWERCTRL2, 0x00, 0x03},
758
static void fs_pmic_irq_enable(void *data)
760
struct snd_intelmad *intelmaddata = data;
761
struct sc_reg_access sc_access[] = {
762
{0x187, 0x00, MASK7},
763
{0x188, 0x10, MASK4},
764
{0x18b, 0x10, MASK4},
767
struct sc_reg_access sc_access_write[] = {
770
pr_debug("Audio interrupt enable\n");
771
sst_sc_reg_access(sc_access, PMIC_READ_MODIFY, 3);
772
sst_sc_reg_access(sc_access_write, PMIC_WRITE, 1);
774
intelmaddata->jack[0].jack_status = 0;
775
/*intelmaddata->jack[1].jack_status = 0;*/
777
jack_det_enabled = true;
781
static void fs_pmic_irq_cb(void *cb_data, u8 value)
783
struct mad_jack *mjack = NULL;
784
struct snd_intelmad *intelmaddata = cb_data;
785
unsigned int present = 0, jack_event_flag = 0, buttonpressflag = 0;
787
mjack = &intelmaddata->jack[0];
790
if (!jack_det_enabled)
791
fs_pmic_irq_enable(intelmaddata);
793
/* send headphone detect */
794
pr_debug(":MAD headphone %d\n", value & 0x4);
795
present = !(mjack->jack_status);
796
mjack->jack_status = present;
798
mjack->jack.type = SND_JACK_HEADPHONE;
802
/* send short push */
803
pr_debug(":MAD short push %d\n", value & 0x2);
807
mjack->jack.type = MID_JACK_HS_SHORT_PRESS;
812
pr_debug(":MAD long push %d\n", value & 0x1);
816
mjack->jack.type = MID_JACK_HS_LONG_PRESS;
820
if (!jack_det_enabled)
821
fs_pmic_irq_enable(intelmaddata);
822
/* send headset detect */
823
pr_debug(":MAD headset = %d\n", value & 0x8);
824
present = !(mjack->jack_status);
825
mjack->jack_status = present;
827
mjack->jack.type = SND_JACK_HEADSET;
832
sst_mad_send_jack_report(&mjack->jack,
833
buttonpressflag, present);
837
static int fs_jack_enable(void)
756
842
struct snd_pmic_ops snd_pmic_ops_fs = {
757
843
.set_input_dev = fs_set_selected_input_dev,
758
844
.set_output_dev = fs_set_selected_output_dev,
765
851
.set_pcm_voice_params = fs_set_pcm_voice_params,
766
852
.set_voice_port = fs_set_voice_port,
767
853
.set_audio_port = fs_set_audio_port,
768
.power_up_pmic_pb = fs_power_up_pb,
769
.power_up_pmic_cp = fs_power_up_cp,
770
.power_down_pmic_pb = fs_power_down_pb,
771
.power_down_pmic_cp = fs_power_down_cp,
772
.power_down_pmic = fs_power_down,
854
.power_up_pmic_pb = fs_power_up_pb,
855
.power_up_pmic_cp = fs_power_up_cp,
856
.power_down_pmic_pb = fs_power_down_pb,
857
.power_down_pmic_cp = fs_power_down_cp,
858
.power_down_pmic = fs_power_down,
859
.pmic_irq_cb = fs_pmic_irq_cb,
861
* Jack detection enabling
862
* need be delayed till first IRQ happen.
864
.pmic_irq_enable = NULL,
865
.pmic_jack_enable = fs_jack_enable,