--- /dev/null
+From: Takashi Iwai <tiwai@suse.de>
+Subject: ALSA: Fix sample rate of Lenovo Ideapad to 44.1kHz
+Patch-mainline:
+References: bnc#480391
+
+Noises can be heard on analog outputs of (some model of) Lenovo
+Ideapad due to the hardware problem, and the only workaround right now
+is to fix the sample rate to 44.1kHz.
+
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ sound/pci/hda/patch_realtek.c | 34 +++++++++++++++++++++++++++++++---
+ 1 file changed, 31 insertions(+), 3 deletions(-)
+
+--- a/sound/pci/hda/patch_realtek.c
++++ b/sound/pci/hda/patch_realtek.c
+@@ -12339,6 +12339,27 @@ static int alc269_auto_create_analog_inp
+ #define alc269_pcm_digital_playback alc880_pcm_digital_playback
+ #define alc269_pcm_digital_capture alc880_pcm_digital_capture
+
++static struct hda_pcm_stream alc269_44k_pcm_analog_playback = {
++ .substreams = 1,
++ .channels_min = 2,
++ .channels_max = 8,
++ .rates = SNDRV_PCM_RATE_44100, /* fixed rate */
++ /* NID is set in alc_build_pcms */
++ .ops = {
++ .open = alc880_playback_pcm_open,
++ .prepare = alc880_playback_pcm_prepare,
++ .cleanup = alc880_playback_pcm_cleanup
++ },
++};
++
++static struct hda_pcm_stream alc269_44k_pcm_analog_capture = {
++ .substreams = 1,
++ .channels_min = 2,
++ .channels_max = 2,
++ .rates = SNDRV_PCM_RATE_44100, /* fixed rate */
++ /* NID is set in alc_build_pcms */
++};
++
+ /*
+ * BIOS auto configuration
+ */
+@@ -12540,9 +12561,16 @@ static int patch_alc269(struct hda_codec
+ setup_preset(spec, &alc269_presets[board_config]);
+
+ spec->stream_name_analog = "ALC269 Analog";
+- spec->stream_analog_playback = &alc269_pcm_analog_playback;
+- spec->stream_analog_capture = &alc269_pcm_analog_capture;
+-
++ if (codec->subsystem_id == 0x17aa3bf8) {
++ /* Due to a hardware problem on Lenovo Ideadpad, we need to
++ * fix the sample rate of analog I/O to 44.1kHz
++ */
++ spec->stream_analog_playback = &alc269_44k_pcm_analog_playback;
++ spec->stream_analog_capture = &alc269_44k_pcm_analog_capture;
++ } else {
++ spec->stream_analog_playback = &alc269_pcm_analog_playback;
++ spec->stream_analog_capture = &alc269_pcm_analog_capture;
++ }
+ spec->stream_name_digital = "ALC269 Digital";
+ spec->stream_digital_playback = &alc269_pcm_digital_playback;
+ spec->stream_digital_capture = &alc269_pcm_digital_capture;