diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2016-07-06 12:12:43 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2016-07-06 12:12:43 -0400 |
| commit | 4cdbbbd11f53c32f2359722148033b5e13dd33b5 (patch) | |
| tree | 0238a9f3ed8be8718119003479301a5809259b78 | |
| parent | 4d0a279c7c9965d080c029f85b9e7fa4a8e1973e (diff) | |
| parent | 9cd25743765cfe851aed8d655a62d60156aed293 (diff) | |
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
...
| -rw-r--r-- | sound/core/timer.c | 2 | ||||
| -rw-r--r-- | sound/pci/au88x0/au88x0_core.c | 5 | ||||
| -rw-r--r-- | sound/pci/echoaudio/echoaudio.c | 4 | ||||
| -rw-r--r-- | sound/pci/hda/hda_generic.c | 2 | ||||
| -rw-r--r-- | sound/pci/hda/hda_intel.c | 6 | ||||
| -rw-r--r-- | sound/pci/hda/patch_realtek.c | 1 | ||||
| -rw-r--r-- | sound/soc/codecs/Kconfig | 7 | ||||
| -rw-r--r-- | sound/soc/codecs/ak4613.c | 2 | ||||
| -rw-r--r-- | sound/soc/codecs/cx20442.c | 1 | ||||
| -rw-r--r-- | sound/soc/codecs/hdac_hdmi.c | 20 | ||||
| -rw-r--r-- | sound/soc/codecs/rt5645.c | 2 | ||||
| -rw-r--r-- | sound/soc/codecs/rt5670.c | 2 | ||||
| -rw-r--r-- | sound/soc/codecs/wm5102.c | 2 | ||||
| -rw-r--r-- | sound/soc/codecs/wm5110.c | 1 | ||||
| -rw-r--r-- | sound/soc/codecs/wm8940.c | 1 | ||||
| -rw-r--r-- | sound/soc/davinci/davinci-mcasp.c | 56 | ||||
| -rw-r--r-- | sound/soc/davinci/davinci-mcasp.h | 4 | ||||
| -rw-r--r-- | sound/soc/fsl/fsl_ssi.c | 12 | ||||
| -rw-r--r-- | sound/soc/intel/atom/sst-mfld-platform-compress.c | 9 | ||||
| -rw-r--r-- | sound/soc/intel/skylake/bxt-sst.c | 1 | ||||
| -rw-r--r-- | sound/soc/sh/rcar/adg.c | 2 |
21 files changed, 113 insertions, 29 deletions
diff --git a/sound/core/timer.c b/sound/core/timer.c index e722022d325d..9a6157ea6881 100644 --- a/sound/core/timer.c +++ b/sound/core/timer.c | |||
| @@ -1955,6 +1955,7 @@ static ssize_t snd_timer_user_read(struct file *file, char __user *buffer, | |||
| 1955 | 1955 | ||
| 1956 | qhead = tu->qhead++; | 1956 | qhead = tu->qhead++; |
| 1957 | tu->qhead %= tu->queue_size; | 1957 | tu->qhead %= tu->queue_size; |
| 1958 | tu->qused--; | ||
| 1958 | spin_unlock_irq(&tu->qlock); | 1959 | spin_unlock_irq(&tu->qlock); |
| 1959 | 1960 | ||
| 1960 | if (tu->tread) { | 1961 | if (tu->tread) { |
| @@ -1968,7 +1969,6 @@ static ssize_t snd_timer_user_read(struct file *file, char __user *buffer, | |||
| 1968 | } | 1969 | } |
| 1969 | 1970 | ||
| 1970 | spin_lock_irq(&tu->qlock); | 1971 | spin_lock_irq(&tu->qlock); |
| 1971 | tu->qused--; | ||
| 1972 | if (err < 0) | 1972 | if (err < 0) |
| 1973 | goto _error; | 1973 | goto _error; |
| 1974 | result += unit; | 1974 | result += unit; |
diff --git a/sound/pci/au88x0/au88x0_core.c b/sound/pci/au88x0/au88x0_core.c index 4a054d720112..d3125c169684 100644 --- a/sound/pci/au88x0/au88x0_core.c +++ b/sound/pci/au88x0/au88x0_core.c | |||
| @@ -1444,9 +1444,8 @@ static int vortex_wtdma_bufshift(vortex_t * vortex, int wtdma) | |||
| 1444 | int page, p, pp, delta, i; | 1444 | int page, p, pp, delta, i; |
| 1445 | 1445 | ||
| 1446 | page = | 1446 | page = |
| 1447 | (hwread(vortex->mmio, VORTEX_WTDMA_STAT + (wtdma << 2)) & | 1447 | (hwread(vortex->mmio, VORTEX_WTDMA_STAT + (wtdma << 2)) |
| 1448 | WT_SUBBUF_MASK) | 1448 | >> WT_SUBBUF_SHIFT) & WT_SUBBUF_MASK; |
| 1449 | >> WT_SUBBUF_SHIFT; | ||
| 1450 | if (dma->nr_periods >= 4) | 1449 | if (dma->nr_periods >= 4) |
| 1451 | delta = (page - dma->period_real) & 3; | 1450 | delta = (page - dma->period_real) & 3; |
| 1452 | else { | 1451 | else { |
diff --git a/sound/pci/echoaudio/echoaudio.c b/sound/pci/echoaudio/echoaudio.c index 1cb85aeb0cea..286f5e3686a3 100644 --- a/sound/pci/echoaudio/echoaudio.c +++ b/sound/pci/echoaudio/echoaudio.c | |||
| @@ -2200,11 +2200,11 @@ static int snd_echo_resume(struct device *dev) | |||
| 2200 | u32 pipe_alloc_mask; | 2200 | u32 pipe_alloc_mask; |
| 2201 | int err; | 2201 | int err; |
| 2202 | 2202 | ||
| 2203 | commpage_bak = kmalloc(sizeof(struct echoaudio), GFP_KERNEL); | 2203 | commpage_bak = kmalloc(sizeof(*commpage), GFP_KERNEL); |
| 2204 | if (commpage_bak == NULL) | 2204 | if (commpage_bak == NULL) |
| 2205 | return -ENOMEM; | 2205 | return -ENOMEM; |
| 2206 | commpage = chip->comm_page; | 2206 | commpage = chip->comm_page; |
| 2207 | memcpy(commpage_bak, commpage, sizeof(struct comm_page)); | 2207 | memcpy(commpage_bak, commpage, sizeof(*commpage)); |
| 2208 | 2208 | ||
| 2209 | err = init_hw(chip, chip->pci->device, chip->pci->subsystem_device); | 2209 | err = init_hw(chip, chip->pci->device, chip->pci->subsystem_device); |
| 2210 | if (err < 0) { | 2210 | if (err < 0) { |
diff --git a/sound/pci/hda/hda_generic.c b/sound/pci/hda/hda_generic.c index 320445f3bf73..79c7b340acc2 100644 --- a/sound/pci/hda/hda_generic.c +++ b/sound/pci/hda/hda_generic.c | |||
| @@ -3977,6 +3977,8 @@ static hda_nid_t set_path_power(struct hda_codec *codec, hda_nid_t nid, | |||
| 3977 | 3977 | ||
| 3978 | for (n = 0; n < spec->paths.used; n++) { | 3978 | for (n = 0; n < spec->paths.used; n++) { |
| 3979 | path = snd_array_elem(&spec->paths, n); | 3979 | path = snd_array_elem(&spec->paths, n); |
| 3980 | if (!path->depth) | ||
| 3981 | continue; | ||
| 3980 | if (path->path[0] == nid || | 3982 | if (path->path[0] == nid || |
| 3981 | path->path[path->depth - 1] == nid) { | 3983 | path->path[path->depth - 1] == nid) { |
| 3982 | bool pin_old = path->pin_enabled; | 3984 | bool pin_old = path->pin_enabled; |
diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c index 94089fc71884..e320c44714b1 100644 --- a/sound/pci/hda/hda_intel.c +++ b/sound/pci/hda/hda_intel.c | |||
| @@ -367,9 +367,10 @@ enum { | |||
| 367 | #define IS_SKL_LP(pci) ((pci)->vendor == 0x8086 && (pci)->device == 0x9d70) | 367 | #define IS_SKL_LP(pci) ((pci)->vendor == 0x8086 && (pci)->device == 0x9d70) |
| 368 | #define IS_KBL(pci) ((pci)->vendor == 0x8086 && (pci)->device == 0xa171) | 368 | #define IS_KBL(pci) ((pci)->vendor == 0x8086 && (pci)->device == 0xa171) |
| 369 | #define IS_KBL_LP(pci) ((pci)->vendor == 0x8086 && (pci)->device == 0x9d71) | 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 | #define IS_BXT(pci) ((pci)->vendor == 0x8086 && (pci)->device == 0x5a98) | 371 | #define IS_BXT(pci) ((pci)->vendor == 0x8086 && (pci)->device == 0x5a98) |
| 371 | #define IS_SKL_PLUS(pci) (IS_SKL(pci) || IS_SKL_LP(pci) || IS_BXT(pci)) || \ | 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 | static char *driver_short_names[] = { | 375 | static char *driver_short_names[] = { |
| 375 | [AZX_DRIVER_ICH] = "HDA Intel", | 376 | [AZX_DRIVER_ICH] = "HDA Intel", |
| @@ -2190,6 +2191,9 @@ static const struct pci_device_id azx_ids[] = { | |||
| 2190 | /* Kabylake-LP */ | 2191 | /* Kabylake-LP */ |
| 2191 | { PCI_DEVICE(0x8086, 0x9d71), | 2192 | { PCI_DEVICE(0x8086, 0x9d71), |
| 2192 | .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_INTEL_SKYLAKE }, | 2193 | .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_INTEL_SKYLAKE }, |
| 2194 | /* Kabylake-H */ | ||
| 2195 | { PCI_DEVICE(0x8086, 0xa2f0), | ||
| 2196 | .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_INTEL_SKYLAKE }, | ||
| 2193 | /* Broxton-P(Apollolake) */ | 2197 | /* Broxton-P(Apollolake) */ |
| 2194 | { PCI_DEVICE(0x8086, 0x5a98), | 2198 | { PCI_DEVICE(0x8086, 0x5a98), |
| 2195 | .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_INTEL_BROXTON }, | 2199 | .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_INTEL_BROXTON }, |
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index 900bfbc3368c..5fac786e4982 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c | |||
| @@ -5651,6 +5651,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = { | |||
| 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), | 5653 | SND_PCI_QUIRK(0x17aa, 0x5050, "Thinkpad T560p", ALC292_FIXUP_TPT460), |
| 5654 | SND_PCI_QUIRK(0x17aa, 0x5051, "Thinkpad L460", ALC292_FIXUP_TPT460), | ||
| 5654 | SND_PCI_QUIRK(0x17aa, 0x5053, "Thinkpad T460", ALC292_FIXUP_TPT460), | 5655 | SND_PCI_QUIRK(0x17aa, 0x5053, "Thinkpad T460", ALC292_FIXUP_TPT460), |
| 5655 | SND_PCI_QUIRK(0x17aa, 0x5109, "Thinkpad", ALC269_FIXUP_LIMIT_INT_MIC_BOOST), | 5656 | SND_PCI_QUIRK(0x17aa, 0x5109, "Thinkpad", ALC269_FIXUP_LIMIT_INT_MIC_BOOST), |
| 5656 | SND_PCI_QUIRK(0x17aa, 0x3bf8, "Quanta FL1", ALC269_FIXUP_PCM_44K), | 5657 | SND_PCI_QUIRK(0x17aa, 0x3bf8, "Quanta FL1", ALC269_FIXUP_PCM_44K), |
diff --git a/sound/soc/codecs/Kconfig b/sound/soc/codecs/Kconfig index 4d82a58ff6b0..f3fb98f0a995 100644 --- a/sound/soc/codecs/Kconfig +++ b/sound/soc/codecs/Kconfig | |||
| @@ -483,9 +483,10 @@ config SND_SOC_DMIC | |||
| 483 | tristate | 483 | tristate |
| 484 | 484 | ||
| 485 | config SND_SOC_HDMI_CODEC | 485 | config SND_SOC_HDMI_CODEC |
| 486 | tristate | 486 | tristate |
| 487 | select SND_PCM_ELD | 487 | select SND_PCM_ELD |
| 488 | select SND_PCM_IEC958 | 488 | select SND_PCM_IEC958 |
| 489 | select HDMI | ||
| 489 | 490 | ||
| 490 | config SND_SOC_ES8328 | 491 | config SND_SOC_ES8328 |
| 491 | tristate "Everest Semi ES8328 CODEC" | 492 | tristate "Everest Semi ES8328 CODEC" |
diff --git a/sound/soc/codecs/ak4613.c b/sound/soc/codecs/ak4613.c index 647f69de6baa..5013d2ba0c10 100644 --- a/sound/soc/codecs/ak4613.c +++ b/sound/soc/codecs/ak4613.c | |||
| @@ -146,6 +146,7 @@ static const struct regmap_config ak4613_regmap_cfg = { | |||
| 146 | .max_register = 0x16, | 146 | .max_register = 0x16, |
| 147 | .reg_defaults = ak4613_reg, | 147 | .reg_defaults = ak4613_reg, |
| 148 | .num_reg_defaults = ARRAY_SIZE(ak4613_reg), | 148 | .num_reg_defaults = ARRAY_SIZE(ak4613_reg), |
| 149 | .cache_type = REGCACHE_RBTREE, | ||
| 149 | }; | 150 | }; |
| 150 | 151 | ||
| 151 | static const struct of_device_id ak4613_of_match[] = { | 152 | static const struct of_device_id ak4613_of_match[] = { |
| @@ -530,7 +531,6 @@ static int ak4613_i2c_remove(struct i2c_client *client) | |||
| 530 | static struct i2c_driver ak4613_i2c_driver = { | 531 | static struct i2c_driver ak4613_i2c_driver = { |
| 531 | .driver = { | 532 | .driver = { |
| 532 | .name = "ak4613-codec", | 533 | .name = "ak4613-codec", |
| 533 | .owner = THIS_MODULE, | ||
| 534 | .of_match_table = ak4613_of_match, | 534 | .of_match_table = ak4613_of_match, |
| 535 | }, | 535 | }, |
| 536 | .probe = ak4613_i2c_probe, | 536 | .probe = ak4613_i2c_probe, |
diff --git a/sound/soc/codecs/cx20442.c b/sound/soc/codecs/cx20442.c index d6f4abbbf8a7..fb3885fe0afb 100644 --- a/sound/soc/codecs/cx20442.c +++ b/sound/soc/codecs/cx20442.c | |||
| @@ -226,6 +226,7 @@ static int v253_open(struct tty_struct *tty) | |||
| 226 | if (!tty->disc_data) | 226 | if (!tty->disc_data) |
| 227 | return -ENODEV; | 227 | return -ENODEV; |
| 228 | 228 | ||
| 229 | tty->receive_room = 16; | ||
| 229 | if (tty->ops->write(tty, v253_init, len) != len) { | 230 | if (tty->ops->write(tty, v253_init, len) != len) { |
| 230 | ret = -EIO; | 231 | ret = -EIO; |
| 231 | goto err; | 232 | goto err; |
diff --git a/sound/soc/codecs/hdac_hdmi.c b/sound/soc/codecs/hdac_hdmi.c index 181cd3bf0b92..2abb742fc47b 100644 --- a/sound/soc/codecs/hdac_hdmi.c +++ b/sound/soc/codecs/hdac_hdmi.c | |||
| @@ -1474,6 +1474,11 @@ static int hdmi_codec_probe(struct snd_soc_codec *codec) | |||
| 1474 | * exit, we call pm_runtime_suspend() so that will do for us | 1474 | * exit, we call pm_runtime_suspend() so that will do for us |
| 1475 | */ | 1475 | */ |
| 1476 | hlink = snd_hdac_ext_bus_get_link(edev->ebus, dev_name(&edev->hdac.dev)); | 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 | snd_hdac_ext_bus_link_get(edev->ebus, hlink); | 1482 | snd_hdac_ext_bus_link_get(edev->ebus, hlink); |
| 1478 | 1483 | ||
| 1479 | ret = create_fill_widget_route_map(dapm); | 1484 | ret = create_fill_widget_route_map(dapm); |
| @@ -1634,6 +1639,11 @@ static int hdac_hdmi_dev_probe(struct hdac_ext_device *edev) | |||
| 1634 | 1639 | ||
| 1635 | /* hold the ref while we probe */ | 1640 | /* hold the ref while we probe */ |
| 1636 | hlink = snd_hdac_ext_bus_get_link(edev->ebus, dev_name(&edev->hdac.dev)); | 1641 | hlink = snd_hdac_ext_bus_get_link(edev->ebus, dev_name(&edev->hdac.dev)); |
| 1642 | if (!hlink) { | ||
| 1643 | dev_err(&edev->hdac.dev, "hdac link not found\n"); | ||
| 1644 | return -EIO; | ||
| 1645 | } | ||
| 1646 | |||
| 1637 | snd_hdac_ext_bus_link_get(edev->ebus, hlink); | 1647 | snd_hdac_ext_bus_link_get(edev->ebus, hlink); |
| 1638 | 1648 | ||
| 1639 | hdmi_priv = devm_kzalloc(&codec->dev, sizeof(*hdmi_priv), GFP_KERNEL); | 1649 | hdmi_priv = devm_kzalloc(&codec->dev, sizeof(*hdmi_priv), GFP_KERNEL); |
| @@ -1744,6 +1754,11 @@ static int hdac_hdmi_runtime_suspend(struct device *dev) | |||
| 1744 | } | 1754 | } |
| 1745 | 1755 | ||
| 1746 | hlink = snd_hdac_ext_bus_get_link(ebus, dev_name(dev)); | 1756 | hlink = snd_hdac_ext_bus_get_link(ebus, dev_name(dev)); |
| 1757 | if (!hlink) { | ||
| 1758 | dev_err(dev, "hdac link not found\n"); | ||
| 1759 | return -EIO; | ||
| 1760 | } | ||
| 1761 | |||
| 1747 | snd_hdac_ext_bus_link_put(ebus, hlink); | 1762 | snd_hdac_ext_bus_link_put(ebus, hlink); |
| 1748 | 1763 | ||
| 1749 | return 0; | 1764 | return 0; |
| @@ -1765,6 +1780,11 @@ static int hdac_hdmi_runtime_resume(struct device *dev) | |||
| 1765 | return 0; | 1780 | return 0; |
| 1766 | 1781 | ||
| 1767 | hlink = snd_hdac_ext_bus_get_link(ebus, dev_name(dev)); | 1782 | hlink = snd_hdac_ext_bus_get_link(ebus, dev_name(dev)); |
| 1783 | if (!hlink) { | ||
| 1784 | dev_err(dev, "hdac link not found\n"); | ||
| 1785 | return -EIO; | ||
| 1786 | } | ||
| 1787 | |||
| 1768 | snd_hdac_ext_bus_link_get(ebus, hlink); | 1788 | snd_hdac_ext_bus_link_get(ebus, hlink); |
| 1769 | 1789 | ||
| 1770 | err = snd_hdac_display_power(bus, true); | 1790 | err = snd_hdac_display_power(bus, true); |
diff --git a/sound/soc/codecs/rt5645.c b/sound/soc/codecs/rt5645.c index 3c6594da6c9c..d70847c9eeb0 100644 --- a/sound/soc/codecs/rt5645.c +++ b/sound/soc/codecs/rt5645.c | |||
| @@ -253,7 +253,7 @@ static const struct reg_default rt5650_reg[] = { | |||
| 253 | { 0x2b, 0x5454 }, | 253 | { 0x2b, 0x5454 }, |
| 254 | { 0x2c, 0xaaa0 }, | 254 | { 0x2c, 0xaaa0 }, |
| 255 | { 0x2d, 0x0000 }, | 255 | { 0x2d, 0x0000 }, |
| 256 | { 0x2f, 0x1002 }, | 256 | { 0x2f, 0x5002 }, |
| 257 | { 0x31, 0x5000 }, | 257 | { 0x31, 0x5000 }, |
| 258 | { 0x32, 0x0000 }, | 258 | { 0x32, 0x0000 }, |
| 259 | { 0x33, 0x0000 }, | 259 | { 0x33, 0x0000 }, |
diff --git a/sound/soc/codecs/rt5670.c b/sound/soc/codecs/rt5670.c index 49a9e7049e2b..0af5ddbef1da 100644 --- a/sound/soc/codecs/rt5670.c +++ b/sound/soc/codecs/rt5670.c | |||
| @@ -619,7 +619,7 @@ static const struct snd_kcontrol_new rt5670_snd_controls[] = { | |||
| 619 | RT5670_L_MUTE_SFT, RT5670_R_MUTE_SFT, 1, 1), | 619 | RT5670_L_MUTE_SFT, RT5670_R_MUTE_SFT, 1, 1), |
| 620 | SOC_DOUBLE_TLV("HP Playback Volume", RT5670_HP_VOL, | 620 | SOC_DOUBLE_TLV("HP Playback Volume", RT5670_HP_VOL, |
| 621 | RT5670_L_VOL_SFT, RT5670_R_VOL_SFT, | 621 | RT5670_L_VOL_SFT, RT5670_R_VOL_SFT, |
| 622 | 39, 0, out_vol_tlv), | 622 | 39, 1, out_vol_tlv), |
| 623 | /* OUTPUT Control */ | 623 | /* OUTPUT Control */ |
| 624 | SOC_DOUBLE("OUT Channel Switch", RT5670_LOUT1, | 624 | SOC_DOUBLE("OUT Channel Switch", RT5670_LOUT1, |
| 625 | RT5670_VOL_L_SFT, RT5670_VOL_R_SFT, 1, 1), | 625 | RT5670_VOL_L_SFT, RT5670_VOL_R_SFT, 1, 1), |
diff --git a/sound/soc/codecs/wm5102.c b/sound/soc/codecs/wm5102.c index da60e3fe5ee7..e7fe6b7b95b7 100644 --- a/sound/soc/codecs/wm5102.c +++ b/sound/soc/codecs/wm5102.c | |||
| @@ -1872,7 +1872,7 @@ static struct snd_soc_dai_driver wm5102_dai[] = { | |||
| 1872 | .capture = { | 1872 | .capture = { |
| 1873 | .stream_name = "Audio Trace CPU", | 1873 | .stream_name = "Audio Trace CPU", |
| 1874 | .channels_min = 1, | 1874 | .channels_min = 1, |
| 1875 | .channels_max = 6, | 1875 | .channels_max = 4, |
| 1876 | .rates = WM5102_RATES, | 1876 | .rates = WM5102_RATES, |
| 1877 | .formats = WM5102_FORMATS, | 1877 | .formats = WM5102_FORMATS, |
| 1878 | }, | 1878 | }, |
diff --git a/sound/soc/codecs/wm5110.c b/sound/soc/codecs/wm5110.c index b5820e4d5471..d54f1b46c9ec 100644 --- a/sound/soc/codecs/wm5110.c +++ b/sound/soc/codecs/wm5110.c | |||
| @@ -1723,6 +1723,7 @@ static const struct snd_soc_dapm_route wm5110_dapm_routes[] = { | |||
| 1723 | { "OUT2L", NULL, "SYSCLK" }, | 1723 | { "OUT2L", NULL, "SYSCLK" }, |
| 1724 | { "OUT2R", NULL, "SYSCLK" }, | 1724 | { "OUT2R", NULL, "SYSCLK" }, |
| 1725 | { "OUT3L", NULL, "SYSCLK" }, | 1725 | { "OUT3L", NULL, "SYSCLK" }, |
| 1726 | { "OUT3R", NULL, "SYSCLK" }, | ||
| 1726 | { "OUT4L", NULL, "SYSCLK" }, | 1727 | { "OUT4L", NULL, "SYSCLK" }, |
| 1727 | { "OUT4R", NULL, "SYSCLK" }, | 1728 | { "OUT4R", NULL, "SYSCLK" }, |
| 1728 | { "OUT5L", NULL, "SYSCLK" }, | 1729 | { "OUT5L", NULL, "SYSCLK" }, |
diff --git a/sound/soc/codecs/wm8940.c b/sound/soc/codecs/wm8940.c index f6f9395ea38e..1c600819f768 100644 --- a/sound/soc/codecs/wm8940.c +++ b/sound/soc/codecs/wm8940.c | |||
| @@ -743,6 +743,7 @@ static const struct regmap_config wm8940_regmap = { | |||
| 743 | .max_register = WM8940_MONOMIX, | 743 | .max_register = WM8940_MONOMIX, |
| 744 | .reg_defaults = wm8940_reg_defaults, | 744 | .reg_defaults = wm8940_reg_defaults, |
| 745 | .num_reg_defaults = ARRAY_SIZE(wm8940_reg_defaults), | 745 | .num_reg_defaults = ARRAY_SIZE(wm8940_reg_defaults), |
| 746 | .cache_type = REGCACHE_RBTREE, | ||
| 746 | 747 | ||
| 747 | .readable_reg = wm8940_readable_register, | 748 | .readable_reg = wm8940_readable_register, |
| 748 | .volatile_reg = wm8940_volatile_register, | 749 | .volatile_reg = wm8940_volatile_register, |
diff --git a/sound/soc/davinci/davinci-mcasp.c b/sound/soc/davinci/davinci-mcasp.c index 0f66fda2c772..237dc67002ef 100644 --- a/sound/soc/davinci/davinci-mcasp.c +++ b/sound/soc/davinci/davinci-mcasp.c | |||
| @@ -1513,8 +1513,9 @@ static struct davinci_mcasp_pdata am33xx_mcasp_pdata = { | |||
| 1513 | }; | 1513 | }; |
| 1514 | 1514 | ||
| 1515 | static struct davinci_mcasp_pdata dra7_mcasp_pdata = { | 1515 | static struct davinci_mcasp_pdata dra7_mcasp_pdata = { |
| 1516 | .tx_dma_offset = 0x200, | 1516 | /* The CFG port offset will be calculated if it is needed */ |
| 1517 | .rx_dma_offset = 0x284, | 1517 | .tx_dma_offset = 0, |
| 1518 | .rx_dma_offset = 0, | ||
| 1518 | .version = MCASP_VERSION_4, | 1519 | .version = MCASP_VERSION_4, |
| 1519 | }; | 1520 | }; |
| 1520 | 1521 | ||
| @@ -1734,6 +1735,52 @@ static int davinci_mcasp_get_dma_type(struct davinci_mcasp *mcasp) | |||
| 1734 | return PCM_EDMA; | 1735 | return PCM_EDMA; |
| 1735 | } | 1736 | } |
| 1736 | 1737 | ||
| 1738 | static u32 davinci_mcasp_txdma_offset(struct davinci_mcasp_pdata *pdata) | ||
| 1739 | { | ||
| 1740 | int i; | ||
| 1741 | u32 offset = 0; | ||
| 1742 | |||
| 1743 | if (pdata->version != MCASP_VERSION_4) | ||
| 1744 | return pdata->tx_dma_offset; | ||
| 1745 | |||
| 1746 | for (i = 0; i < pdata->num_serializer; i++) { | ||
| 1747 | if (pdata->serial_dir[i] == TX_MODE) { | ||
| 1748 | if (!offset) { | ||
| 1749 | offset = DAVINCI_MCASP_TXBUF_REG(i); | ||
| 1750 | } else { | ||
| 1751 | pr_err("%s: Only one serializer allowed!\n", | ||
| 1752 | __func__); | ||
| 1753 | break; | ||
| 1754 | } | ||
| 1755 | } | ||
| 1756 | } | ||
| 1757 | |||
| 1758 | return offset; | ||
| 1759 | } | ||
| 1760 | |||
| 1761 | static u32 davinci_mcasp_rxdma_offset(struct davinci_mcasp_pdata *pdata) | ||
| 1762 | { | ||
| 1763 | int i; | ||
| 1764 | u32 offset = 0; | ||
| 1765 | |||
| 1766 | if (pdata->version != MCASP_VERSION_4) | ||
| 1767 | return pdata->rx_dma_offset; | ||
| 1768 | |||
| 1769 | for (i = 0; i < pdata->num_serializer; i++) { | ||
| 1770 | if (pdata->serial_dir[i] == RX_MODE) { | ||
| 1771 | if (!offset) { | ||
| 1772 | offset = DAVINCI_MCASP_RXBUF_REG(i); | ||
| 1773 | } else { | ||
| 1774 | pr_err("%s: Only one serializer allowed!\n", | ||
| 1775 | __func__); | ||
| 1776 | break; | ||
| 1777 | } | ||
| 1778 | } | ||
| 1779 | } | ||
| 1780 | |||
| 1781 | return offset; | ||
| 1782 | } | ||
| 1783 | |||
| 1737 | static int davinci_mcasp_probe(struct platform_device *pdev) | 1784 | static int davinci_mcasp_probe(struct platform_device *pdev) |
| 1738 | { | 1785 | { |
| 1739 | struct snd_dmaengine_dai_dma_data *dma_data; | 1786 | struct snd_dmaengine_dai_dma_data *dma_data; |
| @@ -1862,7 +1909,7 @@ static int davinci_mcasp_probe(struct platform_device *pdev) | |||
| 1862 | if (dat) | 1909 | if (dat) |
| 1863 | dma_data->addr = dat->start; | 1910 | dma_data->addr = dat->start; |
| 1864 | else | 1911 | else |
| 1865 | dma_data->addr = mem->start + pdata->tx_dma_offset; | 1912 | dma_data->addr = mem->start + davinci_mcasp_txdma_offset(pdata); |
| 1866 | 1913 | ||
| 1867 | dma = &mcasp->dma_request[SNDRV_PCM_STREAM_PLAYBACK]; | 1914 | dma = &mcasp->dma_request[SNDRV_PCM_STREAM_PLAYBACK]; |
| 1868 | res = platform_get_resource(pdev, IORESOURCE_DMA, 0); | 1915 | res = platform_get_resource(pdev, IORESOURCE_DMA, 0); |
| @@ -1883,7 +1930,8 @@ static int davinci_mcasp_probe(struct platform_device *pdev) | |||
| 1883 | if (dat) | 1930 | if (dat) |
| 1884 | dma_data->addr = dat->start; | 1931 | dma_data->addr = dat->start; |
| 1885 | else | 1932 | else |
| 1886 | dma_data->addr = mem->start + pdata->rx_dma_offset; | 1933 | dma_data->addr = |
| 1934 | mem->start + davinci_mcasp_rxdma_offset(pdata); | ||
| 1887 | 1935 | ||
| 1888 | dma = &mcasp->dma_request[SNDRV_PCM_STREAM_CAPTURE]; | 1936 | dma = &mcasp->dma_request[SNDRV_PCM_STREAM_CAPTURE]; |
| 1889 | res = platform_get_resource(pdev, IORESOURCE_DMA, 1); | 1937 | res = platform_get_resource(pdev, IORESOURCE_DMA, 1); |
diff --git a/sound/soc/davinci/davinci-mcasp.h b/sound/soc/davinci/davinci-mcasp.h index 1e8787fb3fb7..afddc8010c54 100644 --- a/sound/soc/davinci/davinci-mcasp.h +++ b/sound/soc/davinci/davinci-mcasp.h | |||
| @@ -85,9 +85,9 @@ | |||
| 85 | (n << 2)) | 85 | (n << 2)) |
| 86 | 86 | ||
| 87 | /* Transmit Buffer for Serializer n */ | 87 | /* Transmit Buffer for Serializer n */ |
| 88 | #define DAVINCI_MCASP_TXBUF_REG 0x200 | 88 | #define DAVINCI_MCASP_TXBUF_REG(n) (0x200 + (n << 2)) |
| 89 | /* Receive Buffer for Serializer n */ | 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 | /* McASP FIFO Registers */ | 92 | /* McASP FIFO Registers */ |
| 93 | #define DAVINCI_MCASP_V2_AFIFO_BASE (0x1010) | 93 | #define DAVINCI_MCASP_V2_AFIFO_BASE (0x1010) |
diff --git a/sound/soc/fsl/fsl_ssi.c b/sound/soc/fsl/fsl_ssi.c index 632ecc0e3956..bedec4a32581 100644 --- a/sound/soc/fsl/fsl_ssi.c +++ b/sound/soc/fsl/fsl_ssi.c | |||
| @@ -952,16 +952,16 @@ static int _fsl_ssi_set_dai_fmt(struct device *dev, | |||
| 952 | ssi_private->i2s_mode = CCSR_SSI_SCR_NET; | 952 | ssi_private->i2s_mode = CCSR_SSI_SCR_NET; |
| 953 | switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) { | 953 | switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) { |
| 954 | case SND_SOC_DAIFMT_I2S: | 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 | switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) { | 961 | switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) { |
| 956 | case SND_SOC_DAIFMT_CBM_CFS: | 962 | case SND_SOC_DAIFMT_CBM_CFS: |
| 957 | case SND_SOC_DAIFMT_CBS_CFS: | 963 | case SND_SOC_DAIFMT_CBS_CFS: |
| 958 | ssi_private->i2s_mode |= CCSR_SSI_SCR_I2S_MODE_MASTER; | 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 | break; | 965 | break; |
| 966 | case SND_SOC_DAIFMT_CBM_CFM: | 966 | case SND_SOC_DAIFMT_CBM_CFM: |
| 967 | ssi_private->i2s_mode |= CCSR_SSI_SCR_I2S_MODE_SLAVE; | 967 | ssi_private->i2s_mode |= CCSR_SSI_SCR_I2S_MODE_SLAVE; |
diff --git a/sound/soc/intel/atom/sst-mfld-platform-compress.c b/sound/soc/intel/atom/sst-mfld-platform-compress.c index 395168986462..1bead81bb510 100644 --- a/sound/soc/intel/atom/sst-mfld-platform-compress.c +++ b/sound/soc/intel/atom/sst-mfld-platform-compress.c | |||
| @@ -182,24 +182,29 @@ static int sst_platform_compr_trigger(struct snd_compr_stream *cstream, int cmd) | |||
| 182 | case SNDRV_PCM_TRIGGER_START: | 182 | case SNDRV_PCM_TRIGGER_START: |
| 183 | if (stream->compr_ops->stream_start) | 183 | if (stream->compr_ops->stream_start) |
| 184 | return stream->compr_ops->stream_start(sst->dev, stream->id); | 184 | return stream->compr_ops->stream_start(sst->dev, stream->id); |
| 185 | break; | ||
| 185 | case SNDRV_PCM_TRIGGER_STOP: | 186 | case SNDRV_PCM_TRIGGER_STOP: |
| 186 | if (stream->compr_ops->stream_drop) | 187 | if (stream->compr_ops->stream_drop) |
| 187 | return stream->compr_ops->stream_drop(sst->dev, stream->id); | 188 | return stream->compr_ops->stream_drop(sst->dev, stream->id); |
| 189 | break; | ||
| 188 | case SND_COMPR_TRIGGER_DRAIN: | 190 | case SND_COMPR_TRIGGER_DRAIN: |
| 189 | if (stream->compr_ops->stream_drain) | 191 | if (stream->compr_ops->stream_drain) |
| 190 | return stream->compr_ops->stream_drain(sst->dev, stream->id); | 192 | return stream->compr_ops->stream_drain(sst->dev, stream->id); |
| 193 | break; | ||
| 191 | case SND_COMPR_TRIGGER_PARTIAL_DRAIN: | 194 | case SND_COMPR_TRIGGER_PARTIAL_DRAIN: |
| 192 | if (stream->compr_ops->stream_partial_drain) | 195 | if (stream->compr_ops->stream_partial_drain) |
| 193 | return stream->compr_ops->stream_partial_drain(sst->dev, stream->id); | 196 | return stream->compr_ops->stream_partial_drain(sst->dev, stream->id); |
| 197 | break; | ||
| 194 | case SNDRV_PCM_TRIGGER_PAUSE_PUSH: | 198 | case SNDRV_PCM_TRIGGER_PAUSE_PUSH: |
| 195 | if (stream->compr_ops->stream_pause) | 199 | if (stream->compr_ops->stream_pause) |
| 196 | return stream->compr_ops->stream_pause(sst->dev, stream->id); | 200 | return stream->compr_ops->stream_pause(sst->dev, stream->id); |
| 201 | break; | ||
| 197 | case SNDRV_PCM_TRIGGER_PAUSE_RELEASE: | 202 | case SNDRV_PCM_TRIGGER_PAUSE_RELEASE: |
| 198 | if (stream->compr_ops->stream_pause_release) | 203 | if (stream->compr_ops->stream_pause_release) |
| 199 | return stream->compr_ops->stream_pause_release(sst->dev, stream->id); | 204 | return stream->compr_ops->stream_pause_release(sst->dev, stream->id); |
| 200 | default: | 205 | break; |
| 201 | return -EINVAL; | ||
| 202 | } | 206 | } |
| 207 | return -EINVAL; | ||
| 203 | } | 208 | } |
| 204 | 209 | ||
| 205 | static int sst_platform_compr_pointer(struct snd_compr_stream *cstream, | 210 | static int sst_platform_compr_pointer(struct snd_compr_stream *cstream, |
diff --git a/sound/soc/intel/skylake/bxt-sst.c b/sound/soc/intel/skylake/bxt-sst.c index 965ce40ce752..8b95e09e23e8 100644 --- a/sound/soc/intel/skylake/bxt-sst.c +++ b/sound/soc/intel/skylake/bxt-sst.c | |||
| @@ -291,6 +291,7 @@ int bxt_sst_dsp_init(struct device *dev, void __iomem *mmio_base, int irq, | |||
| 291 | sst_dsp_mailbox_init(sst, (BXT_ADSP_SRAM0_BASE + SKL_ADSP_W0_STAT_SZ), | 291 | sst_dsp_mailbox_init(sst, (BXT_ADSP_SRAM0_BASE + SKL_ADSP_W0_STAT_SZ), |
| 292 | SKL_ADSP_W0_UP_SZ, BXT_ADSP_SRAM1_BASE, SKL_ADSP_W1_SZ); | 292 | SKL_ADSP_W0_UP_SZ, BXT_ADSP_SRAM1_BASE, SKL_ADSP_W1_SZ); |
| 293 | 293 | ||
| 294 | INIT_LIST_HEAD(&sst->module_list); | ||
| 294 | ret = skl_ipc_init(dev, skl); | 295 | ret = skl_ipc_init(dev, skl); |
| 295 | if (ret) | 296 | if (ret) |
| 296 | return ret; | 297 | return ret; |
diff --git a/sound/soc/sh/rcar/adg.c b/sound/soc/sh/rcar/adg.c index 49354d17ea55..c4c51a4d3c8f 100644 --- a/sound/soc/sh/rcar/adg.c +++ b/sound/soc/sh/rcar/adg.c | |||
| @@ -518,7 +518,7 @@ static void rsnd_adg_get_clkout(struct rsnd_priv *priv, | |||
| 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 | rsnd_mod_write(adg_mod, BRRA, rbga); | 522 | rsnd_mod_write(adg_mod, BRRA, rbga); |
| 523 | rsnd_mod_write(adg_mod, BRRB, rbgb); | 523 | rsnd_mod_write(adg_mod, BRRB, rbgb); |
| 524 | 524 | ||
