Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'sound-4.7-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound

Pull sound fixes from Takashi Iwai:
"Here are a collection of small fixes: at this time, we've got a
slightly high amount, but all small and trivial fixes, and nothing
scary can be seen there"

* tag 'sound-4.7-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (21 commits)
ALSA: hda/realtek: Add Lenovo L460 to docking unit fixup
ALSA: timer: Fix negative queue usage by racy accesses
ASoC: rt5645: fix reg-2f default value.
ASoC: fsl_ssi: Fix number of words per frame for I2S-slave mode
ALSA: au88x0: Fix calculation in vortex_wtdma_bufshift()
ALSA: hda - Add PCI ID for Kabylake-H
ALSA: echoaudio: Fix memory allocation
ASoC: Intel: atom: fix missing breaks that would cause the wrong operation to execute
ALSA: hda - fix read before array start
ASoC: cx20442: set tty->receiver_room in v253_open
ASoC: ak4613: Enable cache usage to fix crashes on resume
ASoC: wm8940: Enable cache usage to fix crashes on resume
ASoC: Intel: Skylake: Initialize module list for Broxton
ASoC: wm5102: Correct supported channels on trace compressed DAI
ASoC: wm5110: Add missing route from OUT3R to SYSCLK
ASoC: rt5670: fix HP Playback Volume control
ASoC: hdmi-codec: select CONFIG_HDMI
ASoC: davinci-mcasp: Fix dra7 DMA offset when using CFG port
ASoC: hdac_hdmi: Fix potential NULL dereference
ASoC: ak4613: Remove owner assignment from platform_driver
...

+113 -29
+1 -1
sound/core/timer.c
··· 1955 1955 1956 1956 qhead = tu->qhead++; 1957 1957 tu->qhead %= tu->queue_size; 1958 + tu->qused--; 1958 1959 spin_unlock_irq(&tu->qlock); 1959 1960 1960 1961 if (tu->tread) { ··· 1969 1968 } 1970 1969 1971 1970 spin_lock_irq(&tu->qlock); 1972 - tu->qused--; 1973 1971 if (err < 0) 1974 1972 goto _error; 1975 1973 result += unit;
+2 -3
sound/pci/au88x0/au88x0_core.c
··· 1444 1444 int page, p, pp, delta, i; 1445 1445 1446 1446 page = 1447 - (hwread(vortex->mmio, VORTEX_WTDMA_STAT + (wtdma << 2)) & 1448 - WT_SUBBUF_MASK) 1449 - >> WT_SUBBUF_SHIFT; 1447 + (hwread(vortex->mmio, VORTEX_WTDMA_STAT + (wtdma << 2)) 1448 + >> WT_SUBBUF_SHIFT) & WT_SUBBUF_MASK; 1450 1449 if (dma->nr_periods >= 4) 1451 1450 delta = (page - dma->period_real) & 3; 1452 1451 else {
+2 -2
sound/pci/echoaudio/echoaudio.c
··· 2200 2200 u32 pipe_alloc_mask; 2201 2201 int err; 2202 2202 2203 - commpage_bak = kmalloc(sizeof(struct echoaudio), GFP_KERNEL); 2203 + commpage_bak = kmalloc(sizeof(*commpage), GFP_KERNEL); 2204 2204 if (commpage_bak == NULL) 2205 2205 return -ENOMEM; 2206 2206 commpage = chip->comm_page; 2207 - memcpy(commpage_bak, commpage, sizeof(struct comm_page)); 2207 + memcpy(commpage_bak, commpage, sizeof(*commpage)); 2208 2208 2209 2209 err = init_hw(chip, chip->pci->device, chip->pci->subsystem_device); 2210 2210 if (err < 0) {
+2
sound/pci/hda/hda_generic.c
··· 3977 3977 3978 3978 for (n = 0; n < spec->paths.used; n++) { 3979 3979 path = snd_array_elem(&spec->paths, n); 3980 + if (!path->depth) 3981 + continue; 3980 3982 if (path->path[0] == nid || 3981 3983 path->path[path->depth - 1] == nid) { 3982 3984 bool pin_old = path->pin_enabled;
+5 -1
sound/pci/hda/hda_intel.c
··· 367 367 #define IS_SKL_LP(pci) ((pci)->vendor == 0x8086 && (pci)->device == 0x9d70) 368 368 #define IS_KBL(pci) ((pci)->vendor == 0x8086 && (pci)->device == 0xa171) 369 369 #define IS_KBL_LP(pci) ((pci)->vendor == 0x8086 && (pci)->device == 0x9d71) 370 + #define IS_KBL_H(pci) ((pci)->vendor == 0x8086 && (pci)->device == 0xa2f0) 370 371 #define IS_BXT(pci) ((pci)->vendor == 0x8086 && (pci)->device == 0x5a98) 371 372 #define IS_SKL_PLUS(pci) (IS_SKL(pci) || IS_SKL_LP(pci) || IS_BXT(pci)) || \ 372 - IS_KBL(pci) || IS_KBL_LP(pci) 373 + IS_KBL(pci) || IS_KBL_LP(pci) || IS_KBL_H(pci) 373 374 374 375 static char *driver_short_names[] = { 375 376 [AZX_DRIVER_ICH] = "HDA Intel", ··· 2190 2189 .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_INTEL_SKYLAKE }, 2191 2190 /* Kabylake-LP */ 2192 2191 { PCI_DEVICE(0x8086, 0x9d71), 2192 + .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_INTEL_SKYLAKE }, 2193 + /* Kabylake-H */ 2194 + { PCI_DEVICE(0x8086, 0xa2f0), 2193 2195 .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_INTEL_SKYLAKE }, 2194 2196 /* Broxton-P(Apollolake) */ 2195 2197 { PCI_DEVICE(0x8086, 0x5a98),
+1
sound/pci/hda/patch_realtek.c
··· 5651 5651 SND_PCI_QUIRK(0x17aa, 0x504a, "ThinkPad X260", ALC292_FIXUP_TPT440_DOCK), 5652 5652 SND_PCI_QUIRK(0x17aa, 0x504b, "Thinkpad", ALC293_FIXUP_LENOVO_SPK_NOISE), 5653 5653 SND_PCI_QUIRK(0x17aa, 0x5050, "Thinkpad T560p", ALC292_FIXUP_TPT460), 5654 + SND_PCI_QUIRK(0x17aa, 0x5051, "Thinkpad L460", ALC292_FIXUP_TPT460), 5654 5655 SND_PCI_QUIRK(0x17aa, 0x5053, "Thinkpad T460", ALC292_FIXUP_TPT460), 5655 5656 SND_PCI_QUIRK(0x17aa, 0x5109, "Thinkpad", ALC269_FIXUP_LIMIT_INT_MIC_BOOST), 5656 5657 SND_PCI_QUIRK(0x17aa, 0x3bf8, "Quanta FL1", ALC269_FIXUP_PCM_44K),
+4 -3
sound/soc/codecs/Kconfig
··· 483 483 tristate 484 484 485 485 config SND_SOC_HDMI_CODEC 486 - tristate 487 - select SND_PCM_ELD 488 - select SND_PCM_IEC958 486 + tristate 487 + select SND_PCM_ELD 488 + select SND_PCM_IEC958 489 + select HDMI 489 490 490 491 config SND_SOC_ES8328 491 492 tristate "Everest Semi ES8328 CODEC"
+1 -1
sound/soc/codecs/ak4613.c
··· 146 146 .max_register = 0x16, 147 147 .reg_defaults = ak4613_reg, 148 148 .num_reg_defaults = ARRAY_SIZE(ak4613_reg), 149 + .cache_type = REGCACHE_RBTREE, 149 150 }; 150 151 151 152 static const struct of_device_id ak4613_of_match[] = { ··· 531 530 static struct i2c_driver ak4613_i2c_driver = { 532 531 .driver = { 533 532 .name = "ak4613-codec", 534 - .owner = THIS_MODULE, 535 533 .of_match_table = ak4613_of_match, 536 534 }, 537 535 .probe = ak4613_i2c_probe,
+1
sound/soc/codecs/cx20442.c
··· 226 226 if (!tty->disc_data) 227 227 return -ENODEV; 228 228 229 + tty->receive_room = 16; 229 230 if (tty->ops->write(tty, v253_init, len) != len) { 230 231 ret = -EIO; 231 232 goto err;
+20
sound/soc/codecs/hdac_hdmi.c
··· 1474 1474 * exit, we call pm_runtime_suspend() so that will do for us 1475 1475 */ 1476 1476 hlink = snd_hdac_ext_bus_get_link(edev->ebus, dev_name(&edev->hdac.dev)); 1477 + if (!hlink) { 1478 + dev_err(&edev->hdac.dev, "hdac link not found\n"); 1479 + return -EIO; 1480 + } 1481 + 1477 1482 snd_hdac_ext_bus_link_get(edev->ebus, hlink); 1478 1483 1479 1484 ret = create_fill_widget_route_map(dapm); ··· 1639 1634 1640 1635 /* hold the ref while we probe */ 1641 1636 hlink = snd_hdac_ext_bus_get_link(edev->ebus, dev_name(&edev->hdac.dev)); 1637 + if (!hlink) { 1638 + dev_err(&edev->hdac.dev, "hdac link not found\n"); 1639 + return -EIO; 1640 + } 1641 + 1642 1642 snd_hdac_ext_bus_link_get(edev->ebus, hlink); 1643 1643 1644 1644 hdmi_priv = devm_kzalloc(&codec->dev, sizeof(*hdmi_priv), GFP_KERNEL); ··· 1754 1744 } 1755 1745 1756 1746 hlink = snd_hdac_ext_bus_get_link(ebus, dev_name(dev)); 1747 + if (!hlink) { 1748 + dev_err(dev, "hdac link not found\n"); 1749 + return -EIO; 1750 + } 1751 + 1757 1752 snd_hdac_ext_bus_link_put(ebus, hlink); 1758 1753 1759 1754 return 0; ··· 1780 1765 return 0; 1781 1766 1782 1767 hlink = snd_hdac_ext_bus_get_link(ebus, dev_name(dev)); 1768 + if (!hlink) { 1769 + dev_err(dev, "hdac link not found\n"); 1770 + return -EIO; 1771 + } 1772 + 1783 1773 snd_hdac_ext_bus_link_get(ebus, hlink); 1784 1774 1785 1775 err = snd_hdac_display_power(bus, true);
+1 -1
sound/soc/codecs/rt5645.c
··· 253 253 { 0x2b, 0x5454 }, 254 254 { 0x2c, 0xaaa0 }, 255 255 { 0x2d, 0x0000 }, 256 - { 0x2f, 0x1002 }, 256 + { 0x2f, 0x5002 }, 257 257 { 0x31, 0x5000 }, 258 258 { 0x32, 0x0000 }, 259 259 { 0x33, 0x0000 },
+1 -1
sound/soc/codecs/rt5670.c
··· 619 619 RT5670_L_MUTE_SFT, RT5670_R_MUTE_SFT, 1, 1), 620 620 SOC_DOUBLE_TLV("HP Playback Volume", RT5670_HP_VOL, 621 621 RT5670_L_VOL_SFT, RT5670_R_VOL_SFT, 622 - 39, 0, out_vol_tlv), 622 + 39, 1, out_vol_tlv), 623 623 /* OUTPUT Control */ 624 624 SOC_DOUBLE("OUT Channel Switch", RT5670_LOUT1, 625 625 RT5670_VOL_L_SFT, RT5670_VOL_R_SFT, 1, 1),
+1 -1
sound/soc/codecs/wm5102.c
··· 1872 1872 .capture = { 1873 1873 .stream_name = "Audio Trace CPU", 1874 1874 .channels_min = 1, 1875 - .channels_max = 6, 1875 + .channels_max = 4, 1876 1876 .rates = WM5102_RATES, 1877 1877 .formats = WM5102_FORMATS, 1878 1878 },
+1
sound/soc/codecs/wm5110.c
··· 1723 1723 { "OUT2L", NULL, "SYSCLK" }, 1724 1724 { "OUT2R", NULL, "SYSCLK" }, 1725 1725 { "OUT3L", NULL, "SYSCLK" }, 1726 + { "OUT3R", NULL, "SYSCLK" }, 1726 1727 { "OUT4L", NULL, "SYSCLK" }, 1727 1728 { "OUT4R", NULL, "SYSCLK" }, 1728 1729 { "OUT5L", NULL, "SYSCLK" },
+1
sound/soc/codecs/wm8940.c
··· 743 743 .max_register = WM8940_MONOMIX, 744 744 .reg_defaults = wm8940_reg_defaults, 745 745 .num_reg_defaults = ARRAY_SIZE(wm8940_reg_defaults), 746 + .cache_type = REGCACHE_RBTREE, 746 747 747 748 .readable_reg = wm8940_readable_register, 748 749 .volatile_reg = wm8940_volatile_register,
+52 -4
sound/soc/davinci/davinci-mcasp.c
··· 1513 1513 }; 1514 1514 1515 1515 static struct davinci_mcasp_pdata dra7_mcasp_pdata = { 1516 - .tx_dma_offset = 0x200, 1517 - .rx_dma_offset = 0x284, 1516 + /* The CFG port offset will be calculated if it is needed */ 1517 + .tx_dma_offset = 0, 1518 + .rx_dma_offset = 0, 1518 1519 .version = MCASP_VERSION_4, 1519 1520 }; 1520 1521 ··· 1735 1734 return PCM_EDMA; 1736 1735 } 1737 1736 1737 + static u32 davinci_mcasp_txdma_offset(struct davinci_mcasp_pdata *pdata) 1738 + { 1739 + int i; 1740 + u32 offset = 0; 1741 + 1742 + if (pdata->version != MCASP_VERSION_4) 1743 + return pdata->tx_dma_offset; 1744 + 1745 + for (i = 0; i < pdata->num_serializer; i++) { 1746 + if (pdata->serial_dir[i] == TX_MODE) { 1747 + if (!offset) { 1748 + offset = DAVINCI_MCASP_TXBUF_REG(i); 1749 + } else { 1750 + pr_err("%s: Only one serializer allowed!\n", 1751 + __func__); 1752 + break; 1753 + } 1754 + } 1755 + } 1756 + 1757 + return offset; 1758 + } 1759 + 1760 + static u32 davinci_mcasp_rxdma_offset(struct davinci_mcasp_pdata *pdata) 1761 + { 1762 + int i; 1763 + u32 offset = 0; 1764 + 1765 + if (pdata->version != MCASP_VERSION_4) 1766 + return pdata->rx_dma_offset; 1767 + 1768 + for (i = 0; i < pdata->num_serializer; i++) { 1769 + if (pdata->serial_dir[i] == RX_MODE) { 1770 + if (!offset) { 1771 + offset = DAVINCI_MCASP_RXBUF_REG(i); 1772 + } else { 1773 + pr_err("%s: Only one serializer allowed!\n", 1774 + __func__); 1775 + break; 1776 + } 1777 + } 1778 + } 1779 + 1780 + return offset; 1781 + } 1782 + 1738 1783 static int davinci_mcasp_probe(struct platform_device *pdev) 1739 1784 { 1740 1785 struct snd_dmaengine_dai_dma_data *dma_data; ··· 1909 1862 if (dat) 1910 1863 dma_data->addr = dat->start; 1911 1864 else 1912 - dma_data->addr = mem->start + pdata->tx_dma_offset; 1865 + dma_data->addr = mem->start + davinci_mcasp_txdma_offset(pdata); 1913 1866 1914 1867 dma = &mcasp->dma_request[SNDRV_PCM_STREAM_PLAYBACK]; 1915 1868 res = platform_get_resource(pdev, IORESOURCE_DMA, 0); ··· 1930 1883 if (dat) 1931 1884 dma_data->addr = dat->start; 1932 1885 else 1933 - dma_data->addr = mem->start + pdata->rx_dma_offset; 1886 + dma_data->addr = 1887 + mem->start + davinci_mcasp_rxdma_offset(pdata); 1934 1888 1935 1889 dma = &mcasp->dma_request[SNDRV_PCM_STREAM_CAPTURE]; 1936 1890 res = platform_get_resource(pdev, IORESOURCE_DMA, 1);
+2 -2
sound/soc/davinci/davinci-mcasp.h
··· 85 85 (n << 2)) 86 86 87 87 /* Transmit Buffer for Serializer n */ 88 - #define DAVINCI_MCASP_TXBUF_REG 0x200 88 + #define DAVINCI_MCASP_TXBUF_REG(n) (0x200 + (n << 2)) 89 89 /* Receive Buffer for Serializer n */ 90 - #define DAVINCI_MCASP_RXBUF_REG 0x280 90 + #define DAVINCI_MCASP_RXBUF_REG(n) (0x280 + (n << 2)) 91 91 92 92 /* McASP FIFO Registers */ 93 93 #define DAVINCI_MCASP_V2_AFIFO_BASE (0x1010)
+6 -6
sound/soc/fsl/fsl_ssi.c
··· 952 952 ssi_private->i2s_mode = CCSR_SSI_SCR_NET; 953 953 switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) { 954 954 case SND_SOC_DAIFMT_I2S: 955 + regmap_update_bits(regs, CCSR_SSI_STCCR, 956 + CCSR_SSI_SxCCR_DC_MASK, 957 + CCSR_SSI_SxCCR_DC(2)); 958 + regmap_update_bits(regs, CCSR_SSI_SRCCR, 959 + CCSR_SSI_SxCCR_DC_MASK, 960 + CCSR_SSI_SxCCR_DC(2)); 955 961 switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) { 956 962 case SND_SOC_DAIFMT_CBM_CFS: 957 963 case SND_SOC_DAIFMT_CBS_CFS: 958 964 ssi_private->i2s_mode |= CCSR_SSI_SCR_I2S_MODE_MASTER; 959 - regmap_update_bits(regs, CCSR_SSI_STCCR, 960 - CCSR_SSI_SxCCR_DC_MASK, 961 - CCSR_SSI_SxCCR_DC(2)); 962 - regmap_update_bits(regs, CCSR_SSI_SRCCR, 963 - CCSR_SSI_SxCCR_DC_MASK, 964 - CCSR_SSI_SxCCR_DC(2)); 965 965 break; 966 966 case SND_SOC_DAIFMT_CBM_CFM: 967 967 ssi_private->i2s_mode |= CCSR_SSI_SCR_I2S_MODE_SLAVE;
+7 -2
sound/soc/intel/atom/sst-mfld-platform-compress.c
··· 182 182 case SNDRV_PCM_TRIGGER_START: 183 183 if (stream->compr_ops->stream_start) 184 184 return stream->compr_ops->stream_start(sst->dev, stream->id); 185 + break; 185 186 case SNDRV_PCM_TRIGGER_STOP: 186 187 if (stream->compr_ops->stream_drop) 187 188 return stream->compr_ops->stream_drop(sst->dev, stream->id); 189 + break; 188 190 case SND_COMPR_TRIGGER_DRAIN: 189 191 if (stream->compr_ops->stream_drain) 190 192 return stream->compr_ops->stream_drain(sst->dev, stream->id); 193 + break; 191 194 case SND_COMPR_TRIGGER_PARTIAL_DRAIN: 192 195 if (stream->compr_ops->stream_partial_drain) 193 196 return stream->compr_ops->stream_partial_drain(sst->dev, stream->id); 197 + break; 194 198 case SNDRV_PCM_TRIGGER_PAUSE_PUSH: 195 199 if (stream->compr_ops->stream_pause) 196 200 return stream->compr_ops->stream_pause(sst->dev, stream->id); 201 + break; 197 202 case SNDRV_PCM_TRIGGER_PAUSE_RELEASE: 198 203 if (stream->compr_ops->stream_pause_release) 199 204 return stream->compr_ops->stream_pause_release(sst->dev, stream->id); 200 - default: 201 - return -EINVAL; 205 + break; 202 206 } 207 + return -EINVAL; 203 208 } 204 209 205 210 static int sst_platform_compr_pointer(struct snd_compr_stream *cstream,
+1
sound/soc/intel/skylake/bxt-sst.c
··· 291 291 sst_dsp_mailbox_init(sst, (BXT_ADSP_SRAM0_BASE + SKL_ADSP_W0_STAT_SZ), 292 292 SKL_ADSP_W0_UP_SZ, BXT_ADSP_SRAM1_BASE, SKL_ADSP_W1_SZ); 293 293 294 + INIT_LIST_HEAD(&sst->module_list); 294 295 ret = skl_ipc_init(dev, skl); 295 296 if (ret) 296 297 return ret;
+1 -1
sound/soc/sh/rcar/adg.c
··· 518 518 } 519 519 } 520 520 521 - rsnd_mod_bset(adg_mod, SSICKR, 0x00FF0000, ckr); 521 + rsnd_mod_bset(adg_mod, SSICKR, 0x80FF0000, ckr); 522 522 rsnd_mod_write(adg_mod, BRRA, rbga); 523 523 rsnd_mod_write(adg_mod, BRRB, rbgb); 524 524