diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2016-06-25 09:55:48 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2016-06-25 09:55:48 -0400 |
commit | ca83a55c9fe20b45a26101853a772e08aff90dcb (patch) | |
tree | aa597c32d9a4062616cfdf38abb668c1758fc843 | |
parent | 9a949a98596c45763299158b9018f3491e3cbf99 (diff) | |
parent | d5dbbe6569481bf12dcbe3e12cff72c5f78d272c (diff) |
Merge tag 'sound-4.7-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound
Pull sound fixes from Takashi Iwai:
"Again pretty calm weeks: we've had only a few trivial / stable
HD-audio fixes in addition to a possible race fix for snd-dummy driver
spotted by syzkaller"
* tag 'sound-4.7-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
ALSA: dummy: Fix a use-after-free at closing
ALSA: hda / realtek - add two more Thinkpad IDs (5050,5053) for tpt460 fixup
ALSA: hda - Fix the headset mic jack detection on Dell machine
ALSA: hda/tegra: iomem fixups for sparse warnings
ALSA: hdac_regmap - fix the register access for runtime PM
-rw-r--r-- | sound/drivers/dummy.c | 1 | ||||
-rw-r--r-- | sound/hda/hdac_regmap.c | 4 | ||||
-rw-r--r-- | sound/pci/hda/hda_tegra.c | 20 | ||||
-rw-r--r-- | sound/pci/hda/patch_realtek.c | 6 |
4 files changed, 19 insertions, 12 deletions
diff --git a/sound/drivers/dummy.c b/sound/drivers/dummy.c index c0f8f613f1f1..172dacd925f5 100644 --- a/sound/drivers/dummy.c +++ b/sound/drivers/dummy.c | |||
@@ -420,6 +420,7 @@ static int dummy_hrtimer_stop(struct snd_pcm_substream *substream) | |||
420 | 420 | ||
421 | static inline void dummy_hrtimer_sync(struct dummy_hrtimer_pcm *dpcm) | 421 | static inline void dummy_hrtimer_sync(struct dummy_hrtimer_pcm *dpcm) |
422 | { | 422 | { |
423 | hrtimer_cancel(&dpcm->timer); | ||
423 | tasklet_kill(&dpcm->tasklet); | 424 | tasklet_kill(&dpcm->tasklet); |
424 | } | 425 | } |
425 | 426 | ||
diff --git a/sound/hda/hdac_regmap.c b/sound/hda/hdac_regmap.c index 87041ddd29cb..47a358fab132 100644 --- a/sound/hda/hdac_regmap.c +++ b/sound/hda/hdac_regmap.c | |||
@@ -444,7 +444,7 @@ int snd_hdac_regmap_write_raw(struct hdac_device *codec, unsigned int reg, | |||
444 | err = reg_raw_write(codec, reg, val); | 444 | err = reg_raw_write(codec, reg, val); |
445 | if (err == -EAGAIN) { | 445 | if (err == -EAGAIN) { |
446 | err = snd_hdac_power_up_pm(codec); | 446 | err = snd_hdac_power_up_pm(codec); |
447 | if (!err) | 447 | if (err >= 0) |
448 | err = reg_raw_write(codec, reg, val); | 448 | err = reg_raw_write(codec, reg, val); |
449 | snd_hdac_power_down_pm(codec); | 449 | snd_hdac_power_down_pm(codec); |
450 | } | 450 | } |
@@ -470,7 +470,7 @@ static int __snd_hdac_regmap_read_raw(struct hdac_device *codec, | |||
470 | err = reg_raw_read(codec, reg, val, uncached); | 470 | err = reg_raw_read(codec, reg, val, uncached); |
471 | if (err == -EAGAIN) { | 471 | if (err == -EAGAIN) { |
472 | err = snd_hdac_power_up_pm(codec); | 472 | err = snd_hdac_power_up_pm(codec); |
473 | if (!err) | 473 | if (err >= 0) |
474 | err = reg_raw_read(codec, reg, val, uncached); | 474 | err = reg_raw_read(codec, reg, val, uncached); |
475 | snd_hdac_power_down_pm(codec); | 475 | snd_hdac_power_down_pm(codec); |
476 | } | 476 | } |
diff --git a/sound/pci/hda/hda_tegra.c b/sound/pci/hda/hda_tegra.c index 17fd81736d3d..0621920f7617 100644 --- a/sound/pci/hda/hda_tegra.c +++ b/sound/pci/hda/hda_tegra.c | |||
@@ -115,20 +115,20 @@ static int substream_free_pages(struct azx *chip, | |||
115 | /* | 115 | /* |
116 | * Register access ops. Tegra HDA register access is DWORD only. | 116 | * Register access ops. Tegra HDA register access is DWORD only. |
117 | */ | 117 | */ |
118 | static void hda_tegra_writel(u32 value, u32 *addr) | 118 | static void hda_tegra_writel(u32 value, u32 __iomem *addr) |
119 | { | 119 | { |
120 | writel(value, addr); | 120 | writel(value, addr); |
121 | } | 121 | } |
122 | 122 | ||
123 | static u32 hda_tegra_readl(u32 *addr) | 123 | static u32 hda_tegra_readl(u32 __iomem *addr) |
124 | { | 124 | { |
125 | return readl(addr); | 125 | return readl(addr); |
126 | } | 126 | } |
127 | 127 | ||
128 | static void hda_tegra_writew(u16 value, u16 *addr) | 128 | static void hda_tegra_writew(u16 value, u16 __iomem *addr) |
129 | { | 129 | { |
130 | unsigned int shift = ((unsigned long)(addr) & 0x3) << 3; | 130 | unsigned int shift = ((unsigned long)(addr) & 0x3) << 3; |
131 | void *dword_addr = (void *)((unsigned long)(addr) & ~0x3); | 131 | void __iomem *dword_addr = (void __iomem *)((unsigned long)(addr) & ~0x3); |
132 | u32 v; | 132 | u32 v; |
133 | 133 | ||
134 | v = readl(dword_addr); | 134 | v = readl(dword_addr); |
@@ -137,20 +137,20 @@ static void hda_tegra_writew(u16 value, u16 *addr) | |||
137 | writel(v, dword_addr); | 137 | writel(v, dword_addr); |
138 | } | 138 | } |
139 | 139 | ||
140 | static u16 hda_tegra_readw(u16 *addr) | 140 | static u16 hda_tegra_readw(u16 __iomem *addr) |
141 | { | 141 | { |
142 | unsigned int shift = ((unsigned long)(addr) & 0x3) << 3; | 142 | unsigned int shift = ((unsigned long)(addr) & 0x3) << 3; |
143 | void *dword_addr = (void *)((unsigned long)(addr) & ~0x3); | 143 | void __iomem *dword_addr = (void __iomem *)((unsigned long)(addr) & ~0x3); |
144 | u32 v; | 144 | u32 v; |
145 | 145 | ||
146 | v = readl(dword_addr); | 146 | v = readl(dword_addr); |
147 | return (v >> shift) & 0xffff; | 147 | return (v >> shift) & 0xffff; |
148 | } | 148 | } |
149 | 149 | ||
150 | static void hda_tegra_writeb(u8 value, u8 *addr) | 150 | static void hda_tegra_writeb(u8 value, u8 __iomem *addr) |
151 | { | 151 | { |
152 | unsigned int shift = ((unsigned long)(addr) & 0x3) << 3; | 152 | unsigned int shift = ((unsigned long)(addr) & 0x3) << 3; |
153 | void *dword_addr = (void *)((unsigned long)(addr) & ~0x3); | 153 | void __iomem *dword_addr = (void __iomem *)((unsigned long)(addr) & ~0x3); |
154 | u32 v; | 154 | u32 v; |
155 | 155 | ||
156 | v = readl(dword_addr); | 156 | v = readl(dword_addr); |
@@ -159,10 +159,10 @@ static void hda_tegra_writeb(u8 value, u8 *addr) | |||
159 | writel(v, dword_addr); | 159 | writel(v, dword_addr); |
160 | } | 160 | } |
161 | 161 | ||
162 | static u8 hda_tegra_readb(u8 *addr) | 162 | static u8 hda_tegra_readb(u8 __iomem *addr) |
163 | { | 163 | { |
164 | unsigned int shift = ((unsigned long)(addr) & 0x3) << 3; | 164 | unsigned int shift = ((unsigned long)(addr) & 0x3) << 3; |
165 | void *dword_addr = (void *)((unsigned long)(addr) & ~0x3); | 165 | void __iomem *dword_addr = (void __iomem *)((unsigned long)(addr) & ~0x3); |
166 | u32 v; | 166 | u32 v; |
167 | 167 | ||
168 | v = readl(dword_addr); | 168 | v = readl(dword_addr); |
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index 0fe18ede3e85..900bfbc3368c 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c | |||
@@ -5650,6 +5650,8 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = { | |||
5650 | SND_PCI_QUIRK(0x17aa, 0x503c, "Thinkpad L450", ALC292_FIXUP_TPT440_DOCK), | 5650 | SND_PCI_QUIRK(0x17aa, 0x503c, "Thinkpad L450", ALC292_FIXUP_TPT440_DOCK), |
5651 | SND_PCI_QUIRK(0x17aa, 0x504a, "ThinkPad X260", ALC292_FIXUP_TPT440_DOCK), | 5651 | SND_PCI_QUIRK(0x17aa, 0x504a, "ThinkPad X260", ALC292_FIXUP_TPT440_DOCK), |
5652 | SND_PCI_QUIRK(0x17aa, 0x504b, "Thinkpad", ALC293_FIXUP_LENOVO_SPK_NOISE), | 5652 | SND_PCI_QUIRK(0x17aa, 0x504b, "Thinkpad", ALC293_FIXUP_LENOVO_SPK_NOISE), |
5653 | SND_PCI_QUIRK(0x17aa, 0x5050, "Thinkpad T560p", ALC292_FIXUP_TPT460), | ||
5654 | SND_PCI_QUIRK(0x17aa, 0x5053, "Thinkpad T460", ALC292_FIXUP_TPT460), | ||
5653 | SND_PCI_QUIRK(0x17aa, 0x5109, "Thinkpad", ALC269_FIXUP_LIMIT_INT_MIC_BOOST), | 5655 | SND_PCI_QUIRK(0x17aa, 0x5109, "Thinkpad", ALC269_FIXUP_LIMIT_INT_MIC_BOOST), |
5654 | SND_PCI_QUIRK(0x17aa, 0x3bf8, "Quanta FL1", ALC269_FIXUP_PCM_44K), | 5656 | SND_PCI_QUIRK(0x17aa, 0x3bf8, "Quanta FL1", ALC269_FIXUP_PCM_44K), |
5655 | SND_PCI_QUIRK(0x17aa, 0x9e54, "LENOVO NB", ALC269_FIXUP_LENOVO_EAPD), | 5657 | SND_PCI_QUIRK(0x17aa, 0x9e54, "LENOVO NB", ALC269_FIXUP_LENOVO_EAPD), |
@@ -5832,6 +5834,10 @@ static const struct snd_hda_pin_quirk alc269_pin_fixup_tbl[] = { | |||
5832 | {0x14, 0x90170120}, | 5834 | {0x14, 0x90170120}, |
5833 | {0x21, 0x02211030}), | 5835 | {0x21, 0x02211030}), |
5834 | SND_HDA_PIN_QUIRK(0x10ec0256, 0x1028, "Dell", ALC255_FIXUP_DELL1_MIC_NO_PRESENCE, | 5836 | SND_HDA_PIN_QUIRK(0x10ec0256, 0x1028, "Dell", ALC255_FIXUP_DELL1_MIC_NO_PRESENCE, |
5837 | {0x12, 0x90a60170}, | ||
5838 | {0x14, 0x90170120}, | ||
5839 | {0x21, 0x02211030}), | ||
5840 | SND_HDA_PIN_QUIRK(0x10ec0256, 0x1028, "Dell", ALC255_FIXUP_DELL1_MIC_NO_PRESENCE, | ||
5835 | ALC256_STANDARD_PINS), | 5841 | ALC256_STANDARD_PINS), |
5836 | SND_HDA_PIN_QUIRK(0x10ec0280, 0x103c, "HP", ALC280_FIXUP_HP_GPIO4, | 5842 | SND_HDA_PIN_QUIRK(0x10ec0280, 0x103c, "HP", ALC280_FIXUP_HP_GPIO4, |
5837 | {0x12, 0x90a60130}, | 5843 | {0x12, 0x90a60130}, |