From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kailang Subject: Re: FW: move eapd coef function before ACT_PRE_PROBE state Date: Wed, 8 May 2019 09:17:30 +0000 Message-ID: <6FAB7C47BCF00940BB0999A99BE3547A1D765CA5@RTITMBSVM07.realtek.com.tw> References: <6FAB7C47BCF00940BB0999A99BE3547A1D765A9D@RTITMBSVM07.realtek.com.tw> <6FAB7C47BCF00940BB0999A99BE3547A1D765C5E@RTITMBSVM07.realtek.com.tw> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from rtits2.realtek.com.tw (rtits2.realtek.com [211.75.126.72]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by alsa1.perex.cz (Postfix) with ESMTPS id 99105F896E6 for ; Wed, 8 May 2019 11:17:34 +0200 (CEST) In-Reply-To: Content-Language: zh-TW List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: alsa-devel-bounces@alsa-project.org Sender: "Alsa-devel" To: Takashi Iwai Cc: " (alsa-devel@alsa-project.org)" List-Id: alsa-devel@alsa-project.org Sorry!! I didn't get the mail. > -----Original Message----- > From: Takashi Iwai > Sent: Wednesday, May 8, 2019 3:28 PM > To: Kailang > Cc: (alsa-devel@alsa-project.org) > Subject: Re: FW: move eapd coef function before ACT_PRE_PROBE state > > On Wed, 08 May 2019 08:59:02 +0200, > Kailang wrote: > > > > Hi Takashi, > > > > I recreate patch as attach. > > No, no, it's not what I meant. I already *reviewed* and replied your patch. > > I copy my previous reply once again. Please read and test it. Patch fail. patch: **** malformed patch at line 10: @@ -796,10 +795,22 @@ static int alc_build_controls(struct hda_codec *codec) > > === > > Unfortuantely, moving this doesn't suffice. There is the hibernation resume > that needs the explicit initialization again. > > Also, calling this in alc_alloc_spec() isn't intuitive. Although it'd become a > larger patch, I prefer making it more explicit, e.g. creating > alc_pre_init() function handling the pre-init procedure and call it from > appropriate places. > > So I can imagine a patch like below. Does it work for you? > > > thanks, > > Takashi > > --- a/sound/pci/hda/patch_realtek.c > +++ b/sound/pci/hda/patch_realtek.c > @@ -501,7 +501,6 @@ static void alc_eapd_shutup(struct hda_codec *codec) > /* generic EAPD initialization */ > static void alc_auto_init_amp(struct hda_codec *codec, int type) { > - alc_fill_eapd_coef(codec); > alc_auto_setup_eapd(codec, true); > alc_write_gpio(codec); > switch (type) { > @@ -796,10 +795,22 @@ static int alc_build_controls(struct hda_codec > *codec) > * Common callbacks > */ > > +static void alc_pre_init(struct hda_codec *codec) { > + alc_fill_eapd_coef(codec); > +} > + > +#define is_s4_resume(codec) \ > + ((codec)->core.dev.power.power_state.event == PM_EVENT_RESTORE) > + > static int alc_init(struct hda_codec *codec) { > struct alc_spec *spec = codec->spec; > > + /* hibernation resume needs the full chip initialization */ > + if (is_s4_resume(codec)) > + alc_pre_init(codec); > + > if (spec->init_hook) > spec->init_hook(codec); > > @@ -1537,6 +1548,8 @@ static int patch_alc880(struct hda_codec *codec) > > codec->patch_ops.unsol_event = alc880_unsol_event; > > + alc_pre_init(codec); > + > snd_hda_pick_fixup(codec, alc880_fixup_models, alc880_fixup_tbl, > alc880_fixups); > snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PRE_PROBE); @@ -1788,6 > +1801,8 @@ static int patch_alc260(struct hda_codec *codec) > > spec->shutup = alc_eapd_shutup; > > + alc_pre_init(codec); > + > snd_hda_pick_fixup(codec, alc260_fixup_models, alc260_fixup_tbl, > alc260_fixups); > snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PRE_PROBE); @@ -2491,6 > +2506,8 @@ static int patch_alc882(struct hda_codec *codec) > break; > } > > + alc_pre_init(codec); > + > snd_hda_pick_fixup(codec, alc882_fixup_models, alc882_fixup_tbl, > alc882_fixups); > snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PRE_PROBE); @@ -2665,6 > +2682,8 @@ static int patch_alc262(struct hda_codec *codec) #endif > alc_fix_pll_init(codec, 0x20, 0x0a, 10); > > + alc_pre_init(codec); > + > snd_hda_pick_fixup(codec, alc262_fixup_models, alc262_fixup_tbl, > alc262_fixups); > snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PRE_PROBE); @@ -2809,6 > +2828,8 @@ static int patch_alc268(struct hda_codec *codec) > > spec->shutup = alc_eapd_shutup; > > + alc_pre_init(codec); > + > snd_hda_pick_fixup(codec, alc268_fixup_models, alc268_fixup_tbl, > alc268_fixups); > snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PRE_PROBE); > > @@ -7768,6 +7789,8 @@ static int patch_alc269(struct hda_codec *codec) > spec->init_hook = alc5505_dsp_init; > } > > + alc_pre_init(codec); > + > snd_hda_pick_fixup(codec, alc269_fixup_models, > alc269_fixup_tbl, alc269_fixups); > snd_hda_pick_pin_fixup(codec, alc269_pin_fixup_tbl, alc269_fixups); @@ > -7910,6 +7933,8 @@ static int patch_alc861(struct hda_codec *codec) > spec->power_hook = alc_power_eapd; > #endif > > + alc_pre_init(codec); > + > snd_hda_pick_fixup(codec, NULL, alc861_fixup_tbl, alc861_fixups); > snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PRE_PROBE); > > @@ -8007,6 +8032,8 @@ static int patch_alc861vd(struct hda_codec *codec) > > spec->shutup = alc_eapd_shutup; > > + alc_pre_init(codec); > + > snd_hda_pick_fixup(codec, NULL, alc861vd_fixup_tbl, alc861vd_fixups); > snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PRE_PROBE); > > @@ -8742,6 +8769,8 @@ static int patch_alc662(struct hda_codec *codec) > break; > } > > + alc_pre_init(codec); > + > snd_hda_pick_fixup(codec, alc662_fixup_models, > alc662_fixup_tbl, alc662_fixups); > snd_hda_pick_pin_fixup(codec, alc662_pin_fixup_tbl, alc662_fixups); > > > ------Please consider the environment before printing this e-mail.