lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <s5hbp01f78l.wl%tiwai@suse.de>
Date:	Wed, 20 Apr 2011 14:16:26 +0200
From:	Takashi Iwai <tiwai@...e.de>
To:	Mike Waychison <mikew@...gle.com>
Cc:	Jaroslav Kysela <perex@...ex.cz>,
	Raymond Yau <superquad.vortex2@...il.com>,
	David Henningsson <david.henningsson@...onical.com>,
	Luke Yelavich <luke.yelavich@...onical.com>,
	alsa-devel@...a-project.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH] ALSA: hda - Fix unused warnings when !SND_HDA_NEEDS_RESUME

At Tue, 19 Apr 2011 14:02:17 -0700,
Mike Waychison wrote:
> 
> When SND_HDA_NEEDS_RESUME is not defined, the compiler identifies that
> the following symbols are static but not used:
> 
>   restore_shutup_pins
>   hda_cleanup_all_streams

I prefer adding ifdef around the functions for these, since they are
related with the functions around them.  Otherwise the corelation will
be lost.

>   ad198x_power_eapd
>   ad198x_power_eapd_write

They can be better moved, indeed.
OTOH, I'm going to apply ad198x_power_eapd() also for the normal
shutdown case, so they will be not only with SND_HDA_NEEDS_RESUME.
Please leave them as they are for now.

Could you resubmit the patch?


thanks,

Takashi

> 
> Fix warnings by moving the above functions to be SND_HDA_NEEDS_RESUME
> guards.
> 
> Signed-off-by: Mike Waychison <mikew@...gle.com>
> ---
> Applies to v2.6.39-rc4.
> Compile tested with and without CONFIG_SND_HDA_POWER_SAVE.
> ---
>  sound/pci/hda/hda_codec.c    |   58 +++++++++++++++++++++---------------------
>  sound/pci/hda/patch_analog.c |   28 ++++++++++----------
>  2 files changed, 43 insertions(+), 43 deletions(-)
> 
> diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c
> index 430f41d..fbb046f 100644
> --- a/sound/pci/hda/hda_codec.c
> +++ b/sound/pci/hda/hda_codec.c
> @@ -937,23 +937,6 @@ void snd_hda_shutup_pins(struct hda_codec *codec)
>  }
>  EXPORT_SYMBOL_HDA(snd_hda_shutup_pins);
>  
> -/* Restore the pin controls cleared previously via snd_hda_shutup_pins() */
> -static void restore_shutup_pins(struct hda_codec *codec)
> -{
> -	int i;
> -	if (!codec->pins_shutup)
> -		return;
> -	if (codec->bus->shutdown)
> -		return;
> -	for (i = 0; i < codec->init_pins.used; i++) {
> -		struct hda_pincfg *pin = snd_array_elem(&codec->init_pins, i);
> -		snd_hda_codec_write(codec, pin->nid, 0,
> -				    AC_VERB_SET_PIN_WIDGET_CONTROL,
> -				    pin->ctrl);
> -	}
> -	codec->pins_shutup = 0;
> -}
> -
>  static void init_hda_cache(struct hda_cache_rec *cache,
>  			   unsigned int record_size);
>  static void free_hda_cache(struct hda_cache_rec *cache);
> @@ -1329,18 +1312,6 @@ static void purify_inactive_streams(struct hda_codec *codec)
>  	}
>  }
>  
> -/* clean up all streams; called from suspend */
> -static void hda_cleanup_all_streams(struct hda_codec *codec)
> -{
> -	int i;
> -
> -	for (i = 0; i < codec->cvt_setups.used; i++) {
> -		struct hda_cvt_setup *p = snd_array_elem(&codec->cvt_setups, i);
> -		if (p->stream_tag)
> -			really_cleanup_stream(codec, p);
> -	}
> -}
> -
>  /*
>   * amp access functions
>   */
> @@ -3049,6 +3020,18 @@ static inline void hda_exec_init_verbs(struct hda_codec *codec) {}
>  #endif
>  
>  #ifdef SND_HDA_NEEDS_RESUME
> +/* clean up all streams; called from suspend */
> +static void hda_cleanup_all_streams(struct hda_codec *codec)
> +{
> +	int i;
> +
> +	for (i = 0; i < codec->cvt_setups.used; i++) {
> +		struct hda_cvt_setup *p = snd_array_elem(&codec->cvt_setups, i);
> +		if (p->stream_tag)
> +			really_cleanup_stream(codec, p);
> +	}
> +}
> +
>  /*
>   * call suspend and power-down; used both from PM and power-save
>   */
> @@ -3069,6 +3052,23 @@ static void hda_call_codec_suspend(struct hda_codec *codec)
>  #endif
>  }
>  
> +/* Restore the pin controls cleared previously via snd_hda_shutup_pins() */
> +static void restore_shutup_pins(struct hda_codec *codec)
> +{
> +	int i;
> +	if (!codec->pins_shutup)
> +		return;
> +	if (codec->bus->shutdown)
> +		return;
> +	for (i = 0; i < codec->init_pins.used; i++) {
> +		struct hda_pincfg *pin = snd_array_elem(&codec->init_pins, i);
> +		snd_hda_codec_write(codec, pin->nid, 0,
> +				    AC_VERB_SET_PIN_WIDGET_CONTROL,
> +				    pin->ctrl);
> +	}
> +	codec->pins_shutup = 0;
> +}
> +
>  /*
>   * kick up codec; used both from PM and power-save
>   */
> diff --git a/sound/pci/hda/patch_analog.c b/sound/pci/hda/patch_analog.c
> index 2942d2a..bcabcee 100644
> --- a/sound/pci/hda/patch_analog.c
> +++ b/sound/pci/hda/patch_analog.c
> @@ -507,6 +507,20 @@ static void ad198x_free_kctls(struct hda_codec *codec)
>  	snd_array_free(&spec->kctls);
>  }
>  
> +static void ad198x_free(struct hda_codec *codec)
> +{
> +	struct ad198x_spec *spec = codec->spec;
> +
> +	if (!spec)
> +		return;
> +
> +	ad198x_shutup(codec);
> +	ad198x_free_kctls(codec);
> +	kfree(spec);
> +	snd_hda_detach_beep_device(codec);
> +}
> +
> +#ifdef SND_HDA_NEEDS_RESUME
>  static void ad198x_power_eapd_write(struct hda_codec *codec, hda_nid_t front,
>  				hda_nid_t hp)
>  {
> @@ -547,20 +561,6 @@ static void ad198x_power_eapd(struct hda_codec *codec)
>  	}
>  }
>  
> -static void ad198x_free(struct hda_codec *codec)
> -{
> -	struct ad198x_spec *spec = codec->spec;
> -
> -	if (!spec)
> -		return;
> -
> -	ad198x_shutup(codec);
> -	ad198x_free_kctls(codec);
> -	kfree(spec);
> -	snd_hda_detach_beep_device(codec);
> -}
> -
> -#ifdef SND_HDA_NEEDS_RESUME
>  static int ad198x_suspend(struct hda_codec *codec, pm_message_t state)
>  {
>  	ad198x_shutup(codec);
> -- 
> 1.7.3.1
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ