@@ -79,11 +79,9 @@ static struct snd_soc_jack_pin card_headset_pins[] = {
7979
8080static int avs_nau8825_codec_init (struct snd_soc_pcm_runtime * runtime )
8181{
82- struct snd_soc_dai * codec_dai = asoc_rtd_to_codec (runtime , 0 );
83- struct snd_soc_component * component = codec_dai -> component ;
82+ struct snd_soc_card * card = runtime -> card ;
8483 struct snd_soc_jack_pin * pins ;
8584 struct snd_soc_jack * jack ;
86- struct snd_soc_card * card = runtime -> card ;
8785 int num_pins , ret ;
8886
8987 jack = snd_soc_card_get_drvdata (card );
@@ -108,11 +106,12 @@ static int avs_nau8825_codec_init(struct snd_soc_pcm_runtime *runtime)
108106 snd_jack_set_key (jack -> jack , SND_JACK_BTN_2 , KEY_VOLUMEUP );
109107 snd_jack_set_key (jack -> jack , SND_JACK_BTN_3 , KEY_VOLUMEDOWN );
110108
111- //snd_soc_component_set_jack(component, jack, NULL);
112- // TODO: Fix nau8825 codec to use .set_jack, like everyone else
113- nau8825_enable_jack_detect (component , jack );
109+ return snd_soc_component_set_jack (asoc_rtd_to_codec (runtime , 0 )-> component , jack , NULL );
110+ }
114111
115- return 0 ;
112+ static void avs_nau8825_codec_exit (struct snd_soc_pcm_runtime * rtd )
113+ {
114+ snd_soc_component_set_jack (asoc_rtd_to_codec (rtd , 0 )-> component , NULL , NULL );
116115}
117116
118117static int
@@ -203,6 +202,7 @@ static int avs_create_dai_link(struct device *dev, const char *platform_name, in
203202 dl -> id = 0 ;
204203 dl -> dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBS_CFS ;
205204 dl -> init = avs_nau8825_codec_init ;
205+ dl -> exit = avs_nau8825_codec_exit ;
206206 dl -> be_hw_params_fixup = avs_nau8825_be_fixup ;
207207 dl -> ops = & avs_nau8825_ops ;
208208 dl -> nonatomic = 1 ;
@@ -247,23 +247,11 @@ static int avs_create_dapm_routes(struct device *dev, int ssp_port,
247247 return 0 ;
248248}
249249
250- static int avs_card_set_jack (struct snd_soc_card * card , struct snd_soc_jack * jack )
251- {
252- struct snd_soc_component * component ;
253-
254- for_each_card_components (card , component )
255- snd_soc_component_set_jack (component , jack , NULL );
256- return 0 ;
257- }
258-
259- static int avs_card_remove (struct snd_soc_card * card )
260- {
261- return avs_card_set_jack (card , NULL );
262- }
263-
264250static int avs_card_suspend_pre (struct snd_soc_card * card )
265251{
266- return avs_card_set_jack (card , NULL );
252+ struct snd_soc_dai * codec_dai = snd_soc_card_get_codec_dai (card , SKL_NUVOTON_CODEC_DAI );
253+
254+ return snd_soc_component_set_jack (codec_dai -> component , NULL , NULL );
267255}
268256
269257static int avs_card_resume_post (struct snd_soc_card * card )
@@ -280,7 +268,7 @@ static int avs_card_resume_post(struct snd_soc_card *card)
280268 codec_dai -> playback_widget -> active )
281269 snd_soc_dai_set_sysclk (codec_dai , NAU8825_CLK_FLL_FS , 0 , SND_SOC_CLOCK_IN );
282270
283- return avs_card_set_jack ( card , jack );
271+ return snd_soc_component_set_jack ( codec_dai -> component , jack , NULL );
284272}
285273
286274static int avs_nau8825_probe (struct platform_device * pdev )
@@ -318,7 +306,6 @@ static int avs_nau8825_probe(struct platform_device *pdev)
318306 card -> name = "avs_nau8825" ;
319307 card -> dev = dev ;
320308 card -> owner = THIS_MODULE ;
321- card -> remove = avs_card_remove ;
322309 card -> suspend_pre = avs_card_suspend_pre ;
323310 card -> resume_post = avs_card_resume_post ;
324311 card -> dai_link = dai_link ;
0 commit comments