diff options
| -rw-r--r-- | Documentation/sysctl/fs.txt | 4 | ||||
| -rw-r--r-- | MAINTAINERS | 4 | ||||
| -rw-r--r-- | arch/alpha/include/asm/irq.h | 6 | ||||
| -rw-r--r-- | arch/alpha/mm/fault.c | 2 | ||||
| -rw-r--r-- | arch/s390/kernel/swsusp.S | 4 | ||||
| -rw-r--r-- | arch/s390/pci/pci.c | 4 | ||||
| -rw-r--r-- | drivers/s390/block/dasd_eckd.c | 8 | ||||
| -rw-r--r-- | drivers/s390/crypto/ap_bus.c | 3 | ||||
| -rw-r--r-- | drivers/thermal/cpu_cooling.c | 2 | ||||
| -rw-r--r-- | drivers/thermal/of-thermal.c | 4 | ||||
| -rw-r--r-- | fs/ext4/fsync.c | 13 | ||||
| -rw-r--r-- | sound/core/pcm_lib.c | 20 | ||||
| -rw-r--r-- | sound/pci/hda/patch_conexant.c | 1 | ||||
| -rw-r--r-- | sound/soc/codecs/hdmi-codec.c | 4 | ||||
| -rw-r--r-- | sound/soc/codecs/rt5682.c | 2 | ||||
| -rw-r--r-- | sound/soc/samsung/i2s.c | 10 | ||||
| -rw-r--r-- | sound/soc/sh/rcar/core.c | 8 | ||||
| -rw-r--r-- | sound/soc/sh/rcar/ssi.c | 2 | ||||
| -rw-r--r-- | sound/soc/sh/rcar/ssiu.c | 2 | ||||
| -rw-r--r-- | sound/soc/soc-core.c | 9 | ||||
| -rw-r--r-- | sound/soc/soc-dapm.c | 24 | ||||
| -rw-r--r-- | sound/soc/soc-topology.c | 5 | ||||
| -rw-r--r-- | sound/usb/pcm.c | 9 | ||||
| -rw-r--r-- | tools/include/uapi/asm/bitsperlong.h | 2 |
24 files changed, 97 insertions, 55 deletions
diff --git a/Documentation/sysctl/fs.txt b/Documentation/sysctl/fs.txt index 58649bd4fcfc..ebc679bcb2dc 100644 --- a/Documentation/sysctl/fs.txt +++ b/Documentation/sysctl/fs.txt | |||
| @@ -80,7 +80,9 @@ nonzero when shrink_dcache_pages() has been called and the | |||
| 80 | dcache isn't pruned yet. | 80 | dcache isn't pruned yet. |
| 81 | 81 | ||
| 82 | nr_negative shows the number of unused dentries that are also | 82 | nr_negative shows the number of unused dentries that are also |
| 83 | negative dentries which do not mapped to actual files. | 83 | negative dentries which do not map to any files. Instead, |
| 84 | they help speeding up rejection of non-existing files provided | ||
| 85 | by the users. | ||
| 84 | 86 | ||
| 85 | ============================================================== | 87 | ============================================================== |
| 86 | 88 | ||
diff --git a/MAINTAINERS b/MAINTAINERS index 9919840d54cd..41ce5f4ad838 100644 --- a/MAINTAINERS +++ b/MAINTAINERS | |||
| @@ -6151,7 +6151,7 @@ FREESCALE SOC SOUND DRIVERS | |||
| 6151 | M: Timur Tabi <timur@kernel.org> | 6151 | M: Timur Tabi <timur@kernel.org> |
| 6152 | M: Nicolin Chen <nicoleotsuka@gmail.com> | 6152 | M: Nicolin Chen <nicoleotsuka@gmail.com> |
| 6153 | M: Xiubo Li <Xiubo.Lee@gmail.com> | 6153 | M: Xiubo Li <Xiubo.Lee@gmail.com> |
| 6154 | R: Fabio Estevam <fabio.estevam@nxp.com> | 6154 | R: Fabio Estevam <festevam@gmail.com> |
| 6155 | L: alsa-devel@alsa-project.org (moderated for non-subscribers) | 6155 | L: alsa-devel@alsa-project.org (moderated for non-subscribers) |
| 6156 | L: linuxppc-dev@lists.ozlabs.org | 6156 | L: linuxppc-dev@lists.ozlabs.org |
| 6157 | S: Maintained | 6157 | S: Maintained |
| @@ -10898,7 +10898,7 @@ F: include/linux/nvmem-consumer.h | |||
| 10898 | F: include/linux/nvmem-provider.h | 10898 | F: include/linux/nvmem-provider.h |
| 10899 | 10899 | ||
| 10900 | NXP SGTL5000 DRIVER | 10900 | NXP SGTL5000 DRIVER |
| 10901 | M: Fabio Estevam <fabio.estevam@nxp.com> | 10901 | M: Fabio Estevam <festevam@gmail.com> |
| 10902 | L: alsa-devel@alsa-project.org (moderated for non-subscribers) | 10902 | L: alsa-devel@alsa-project.org (moderated for non-subscribers) |
| 10903 | S: Maintained | 10903 | S: Maintained |
| 10904 | F: Documentation/devicetree/bindings/sound/sgtl5000.txt | 10904 | F: Documentation/devicetree/bindings/sound/sgtl5000.txt |
diff --git a/arch/alpha/include/asm/irq.h b/arch/alpha/include/asm/irq.h index 4d17cacd1462..432402c8e47f 100644 --- a/arch/alpha/include/asm/irq.h +++ b/arch/alpha/include/asm/irq.h | |||
| @@ -56,15 +56,15 @@ | |||
| 56 | 56 | ||
| 57 | #elif defined(CONFIG_ALPHA_DP264) || \ | 57 | #elif defined(CONFIG_ALPHA_DP264) || \ |
| 58 | defined(CONFIG_ALPHA_LYNX) || \ | 58 | defined(CONFIG_ALPHA_LYNX) || \ |
| 59 | defined(CONFIG_ALPHA_SHARK) || \ | 59 | defined(CONFIG_ALPHA_SHARK) |
| 60 | defined(CONFIG_ALPHA_EIGER) | ||
| 61 | # define NR_IRQS 64 | 60 | # define NR_IRQS 64 |
| 62 | 61 | ||
| 63 | #elif defined(CONFIG_ALPHA_TITAN) | 62 | #elif defined(CONFIG_ALPHA_TITAN) |
| 64 | #define NR_IRQS 80 | 63 | #define NR_IRQS 80 |
| 65 | 64 | ||
| 66 | #elif defined(CONFIG_ALPHA_RAWHIDE) || \ | 65 | #elif defined(CONFIG_ALPHA_RAWHIDE) || \ |
| 67 | defined(CONFIG_ALPHA_TAKARA) | 66 | defined(CONFIG_ALPHA_TAKARA) || \ |
| 67 | defined(CONFIG_ALPHA_EIGER) | ||
| 68 | # define NR_IRQS 128 | 68 | # define NR_IRQS 128 |
| 69 | 69 | ||
| 70 | #elif defined(CONFIG_ALPHA_WILDFIRE) | 70 | #elif defined(CONFIG_ALPHA_WILDFIRE) |
diff --git a/arch/alpha/mm/fault.c b/arch/alpha/mm/fault.c index d73dc473fbb9..188fc9256baf 100644 --- a/arch/alpha/mm/fault.c +++ b/arch/alpha/mm/fault.c | |||
| @@ -78,7 +78,7 @@ __load_new_mm_context(struct mm_struct *next_mm) | |||
| 78 | /* Macro for exception fixup code to access integer registers. */ | 78 | /* Macro for exception fixup code to access integer registers. */ |
| 79 | #define dpf_reg(r) \ | 79 | #define dpf_reg(r) \ |
| 80 | (((unsigned long *)regs)[(r) <= 8 ? (r) : (r) <= 15 ? (r)-16 : \ | 80 | (((unsigned long *)regs)[(r) <= 8 ? (r) : (r) <= 15 ? (r)-16 : \ |
| 81 | (r) <= 18 ? (r)+8 : (r)-10]) | 81 | (r) <= 18 ? (r)+10 : (r)-10]) |
| 82 | 82 | ||
| 83 | asmlinkage void | 83 | asmlinkage void |
| 84 | do_page_fault(unsigned long address, unsigned long mmcsr, | 84 | do_page_fault(unsigned long address, unsigned long mmcsr, |
diff --git a/arch/s390/kernel/swsusp.S b/arch/s390/kernel/swsusp.S index 537f97fde37f..b6796e616812 100644 --- a/arch/s390/kernel/swsusp.S +++ b/arch/s390/kernel/swsusp.S | |||
| @@ -30,10 +30,10 @@ | |||
| 30 | .section .text | 30 | .section .text |
| 31 | ENTRY(swsusp_arch_suspend) | 31 | ENTRY(swsusp_arch_suspend) |
| 32 | lg %r1,__LC_NODAT_STACK | 32 | lg %r1,__LC_NODAT_STACK |
| 33 | aghi %r1,-STACK_FRAME_OVERHEAD | ||
| 34 | stmg %r6,%r15,__SF_GPRS(%r1) | 33 | stmg %r6,%r15,__SF_GPRS(%r1) |
| 34 | aghi %r1,-STACK_FRAME_OVERHEAD | ||
| 35 | stg %r15,__SF_BACKCHAIN(%r1) | 35 | stg %r15,__SF_BACKCHAIN(%r1) |
| 36 | lgr %r1,%r15 | 36 | lgr %r15,%r1 |
| 37 | 37 | ||
| 38 | /* Store FPU registers */ | 38 | /* Store FPU registers */ |
| 39 | brasl %r14,save_fpu_regs | 39 | brasl %r14,save_fpu_regs |
diff --git a/arch/s390/pci/pci.c b/arch/s390/pci/pci.c index a966d7bfac57..4266a4de3160 100644 --- a/arch/s390/pci/pci.c +++ b/arch/s390/pci/pci.c | |||
| @@ -382,7 +382,9 @@ static void zpci_irq_handler(struct airq_struct *airq) | |||
| 382 | if (ai == -1UL) | 382 | if (ai == -1UL) |
| 383 | break; | 383 | break; |
| 384 | inc_irq_stat(IRQIO_MSI); | 384 | inc_irq_stat(IRQIO_MSI); |
| 385 | airq_iv_lock(aibv, ai); | ||
| 385 | generic_handle_irq(airq_iv_get_data(aibv, ai)); | 386 | generic_handle_irq(airq_iv_get_data(aibv, ai)); |
| 387 | airq_iv_unlock(aibv, ai); | ||
| 386 | } | 388 | } |
| 387 | } | 389 | } |
| 388 | } | 390 | } |
| @@ -408,7 +410,7 @@ int arch_setup_msi_irqs(struct pci_dev *pdev, int nvec, int type) | |||
| 408 | zdev->aisb = aisb; | 410 | zdev->aisb = aisb; |
| 409 | 411 | ||
| 410 | /* Create adapter interrupt vector */ | 412 | /* Create adapter interrupt vector */ |
| 411 | zdev->aibv = airq_iv_create(msi_vecs, AIRQ_IV_DATA); | 413 | zdev->aibv = airq_iv_create(msi_vecs, AIRQ_IV_DATA | AIRQ_IV_BITLOCK); |
| 412 | if (!zdev->aibv) | 414 | if (!zdev->aibv) |
| 413 | return -ENOMEM; | 415 | return -ENOMEM; |
| 414 | 416 | ||
diff --git a/drivers/s390/block/dasd_eckd.c b/drivers/s390/block/dasd_eckd.c index 4e7b55a14b1a..6e294b4d3635 100644 --- a/drivers/s390/block/dasd_eckd.c +++ b/drivers/s390/block/dasd_eckd.c | |||
| @@ -4469,6 +4469,14 @@ static int dasd_symm_io(struct dasd_device *device, void __user *argp) | |||
| 4469 | usrparm.psf_data &= 0x7fffffffULL; | 4469 | usrparm.psf_data &= 0x7fffffffULL; |
| 4470 | usrparm.rssd_result &= 0x7fffffffULL; | 4470 | usrparm.rssd_result &= 0x7fffffffULL; |
| 4471 | } | 4471 | } |
| 4472 | /* at least 2 bytes are accessed and should be allocated */ | ||
| 4473 | if (usrparm.psf_data_len < 2) { | ||
| 4474 | DBF_DEV_EVENT(DBF_WARNING, device, | ||
| 4475 | "Symmetrix ioctl invalid data length %d", | ||
| 4476 | usrparm.psf_data_len); | ||
| 4477 | rc = -EINVAL; | ||
| 4478 | goto out; | ||
| 4479 | } | ||
| 4472 | /* alloc I/O data area */ | 4480 | /* alloc I/O data area */ |
| 4473 | psf_data = kzalloc(usrparm.psf_data_len, GFP_KERNEL | GFP_DMA); | 4481 | psf_data = kzalloc(usrparm.psf_data_len, GFP_KERNEL | GFP_DMA); |
| 4474 | rssd_result = kzalloc(usrparm.rssd_result_len, GFP_KERNEL | GFP_DMA); | 4482 | rssd_result = kzalloc(usrparm.rssd_result_len, GFP_KERNEL | GFP_DMA); |
diff --git a/drivers/s390/crypto/ap_bus.c b/drivers/s390/crypto/ap_bus.c index 48ea0004a56d..5a699746c357 100644 --- a/drivers/s390/crypto/ap_bus.c +++ b/drivers/s390/crypto/ap_bus.c | |||
| @@ -248,7 +248,8 @@ static inline int ap_test_config(unsigned int *field, unsigned int nr) | |||
| 248 | static inline int ap_test_config_card_id(unsigned int id) | 248 | static inline int ap_test_config_card_id(unsigned int id) |
| 249 | { | 249 | { |
| 250 | if (!ap_configuration) /* QCI not supported */ | 250 | if (!ap_configuration) /* QCI not supported */ |
| 251 | return 1; | 251 | /* only ids 0...3F may be probed */ |
| 252 | return id < 0x40 ? 1 : 0; | ||
| 252 | return ap_test_config(ap_configuration->apm, id); | 253 | return ap_test_config(ap_configuration->apm, id); |
| 253 | } | 254 | } |
| 254 | 255 | ||
diff --git a/drivers/thermal/cpu_cooling.c b/drivers/thermal/cpu_cooling.c index dfd23245f778..6fff16113628 100644 --- a/drivers/thermal/cpu_cooling.c +++ b/drivers/thermal/cpu_cooling.c | |||
| @@ -774,7 +774,7 @@ of_cpufreq_cooling_register(struct cpufreq_policy *policy) | |||
| 774 | 774 | ||
| 775 | cdev = __cpufreq_cooling_register(np, policy, capacitance); | 775 | cdev = __cpufreq_cooling_register(np, policy, capacitance); |
| 776 | if (IS_ERR(cdev)) { | 776 | if (IS_ERR(cdev)) { |
| 777 | pr_err("cpu_cooling: cpu%d is not running as cooling device: %ld\n", | 777 | pr_err("cpu_cooling: cpu%d failed to register as cooling device: %ld\n", |
| 778 | policy->cpu, PTR_ERR(cdev)); | 778 | policy->cpu, PTR_ERR(cdev)); |
| 779 | cdev = NULL; | 779 | cdev = NULL; |
| 780 | } | 780 | } |
diff --git a/drivers/thermal/of-thermal.c b/drivers/thermal/of-thermal.c index 4bfdb4a1e47d..2df059cc07e2 100644 --- a/drivers/thermal/of-thermal.c +++ b/drivers/thermal/of-thermal.c | |||
| @@ -867,14 +867,14 @@ __init *thermal_of_build_thermal_zone(struct device_node *np) | |||
| 867 | 867 | ||
| 868 | ret = of_property_read_u32(np, "polling-delay-passive", &prop); | 868 | ret = of_property_read_u32(np, "polling-delay-passive", &prop); |
| 869 | if (ret < 0) { | 869 | if (ret < 0) { |
| 870 | pr_err("missing polling-delay-passive property\n"); | 870 | pr_err("%pOFn: missing polling-delay-passive property\n", np); |
| 871 | goto free_tz; | 871 | goto free_tz; |
| 872 | } | 872 | } |
| 873 | tz->passive_delay = prop; | 873 | tz->passive_delay = prop; |
| 874 | 874 | ||
| 875 | ret = of_property_read_u32(np, "polling-delay", &prop); | 875 | ret = of_property_read_u32(np, "polling-delay", &prop); |
| 876 | if (ret < 0) { | 876 | if (ret < 0) { |
| 877 | pr_err("missing polling-delay property\n"); | 877 | pr_err("%pOFn: missing polling-delay property\n", np); |
| 878 | goto free_tz; | 878 | goto free_tz; |
| 879 | } | 879 | } |
| 880 | tz->polling_delay = prop; | 880 | tz->polling_delay = prop; |
diff --git a/fs/ext4/fsync.c b/fs/ext4/fsync.c index 712f00995390..5508baa11bb6 100644 --- a/fs/ext4/fsync.c +++ b/fs/ext4/fsync.c | |||
| @@ -116,16 +116,8 @@ int ext4_sync_file(struct file *file, loff_t start, loff_t end, int datasync) | |||
| 116 | goto out; | 116 | goto out; |
| 117 | } | 117 | } |
| 118 | 118 | ||
| 119 | ret = file_write_and_wait_range(file, start, end); | ||
| 120 | if (ret) | ||
| 121 | return ret; | ||
| 122 | |||
| 123 | if (!journal) { | 119 | if (!journal) { |
| 124 | struct writeback_control wbc = { | 120 | ret = __generic_file_fsync(file, start, end, datasync); |
| 125 | .sync_mode = WB_SYNC_ALL | ||
| 126 | }; | ||
| 127 | |||
| 128 | ret = ext4_write_inode(inode, &wbc); | ||
| 129 | if (!ret) | 121 | if (!ret) |
| 130 | ret = ext4_sync_parent(inode); | 122 | ret = ext4_sync_parent(inode); |
| 131 | if (test_opt(inode->i_sb, BARRIER)) | 123 | if (test_opt(inode->i_sb, BARRIER)) |
| @@ -133,6 +125,9 @@ int ext4_sync_file(struct file *file, loff_t start, loff_t end, int datasync) | |||
| 133 | goto out; | 125 | goto out; |
| 134 | } | 126 | } |
| 135 | 127 | ||
| 128 | ret = file_write_and_wait_range(file, start, end); | ||
| 129 | if (ret) | ||
| 130 | return ret; | ||
| 136 | /* | 131 | /* |
| 137 | * data=writeback,ordered: | 132 | * data=writeback,ordered: |
| 138 | * The caller's filemap_fdatawrite()/wait will sync the data. | 133 | * The caller's filemap_fdatawrite()/wait will sync the data. |
diff --git a/sound/core/pcm_lib.c b/sound/core/pcm_lib.c index 6c99fa8ac5fa..6c0b30391ba9 100644 --- a/sound/core/pcm_lib.c +++ b/sound/core/pcm_lib.c | |||
| @@ -2112,13 +2112,6 @@ int pcm_lib_apply_appl_ptr(struct snd_pcm_substream *substream, | |||
| 2112 | return 0; | 2112 | return 0; |
| 2113 | } | 2113 | } |
| 2114 | 2114 | ||
| 2115 | /* allow waiting for a capture stream that hasn't been started */ | ||
| 2116 | #if IS_ENABLED(CONFIG_SND_PCM_OSS) | ||
| 2117 | #define wait_capture_start(substream) ((substream)->oss.oss) | ||
| 2118 | #else | ||
| 2119 | #define wait_capture_start(substream) false | ||
| 2120 | #endif | ||
| 2121 | |||
| 2122 | /* the common loop for read/write data */ | 2115 | /* the common loop for read/write data */ |
| 2123 | snd_pcm_sframes_t __snd_pcm_lib_xfer(struct snd_pcm_substream *substream, | 2116 | snd_pcm_sframes_t __snd_pcm_lib_xfer(struct snd_pcm_substream *substream, |
| 2124 | void *data, bool interleaved, | 2117 | void *data, bool interleaved, |
| @@ -2184,16 +2177,11 @@ snd_pcm_sframes_t __snd_pcm_lib_xfer(struct snd_pcm_substream *substream, | |||
| 2184 | snd_pcm_update_hw_ptr(substream); | 2177 | snd_pcm_update_hw_ptr(substream); |
| 2185 | 2178 | ||
| 2186 | if (!is_playback && | 2179 | if (!is_playback && |
| 2187 | runtime->status->state == SNDRV_PCM_STATE_PREPARED) { | 2180 | runtime->status->state == SNDRV_PCM_STATE_PREPARED && |
| 2188 | if (size >= runtime->start_threshold) { | 2181 | size >= runtime->start_threshold) { |
| 2189 | err = snd_pcm_start(substream); | 2182 | err = snd_pcm_start(substream); |
| 2190 | if (err < 0) | 2183 | if (err < 0) |
| 2191 | goto _end_unlock; | ||
| 2192 | } else if (!wait_capture_start(substream)) { | ||
| 2193 | /* nothing to do */ | ||
| 2194 | err = 0; | ||
| 2195 | goto _end_unlock; | 2184 | goto _end_unlock; |
| 2196 | } | ||
| 2197 | } | 2185 | } |
| 2198 | 2186 | ||
| 2199 | avail = snd_pcm_avail(substream); | 2187 | avail = snd_pcm_avail(substream); |
diff --git a/sound/pci/hda/patch_conexant.c b/sound/pci/hda/patch_conexant.c index 152f54137082..a4ee7656d9ee 100644 --- a/sound/pci/hda/patch_conexant.c +++ b/sound/pci/hda/patch_conexant.c | |||
| @@ -924,6 +924,7 @@ static const struct snd_pci_quirk cxt5066_fixups[] = { | |||
| 924 | SND_PCI_QUIRK(0x103c, 0x807C, "HP EliteBook 820 G3", CXT_FIXUP_HP_DOCK), | 924 | SND_PCI_QUIRK(0x103c, 0x807C, "HP EliteBook 820 G3", CXT_FIXUP_HP_DOCK), |
| 925 | SND_PCI_QUIRK(0x103c, 0x80FD, "HP ProBook 640 G2", CXT_FIXUP_HP_DOCK), | 925 | SND_PCI_QUIRK(0x103c, 0x80FD, "HP ProBook 640 G2", CXT_FIXUP_HP_DOCK), |
| 926 | SND_PCI_QUIRK(0x103c, 0x828c, "HP EliteBook 840 G4", CXT_FIXUP_HP_DOCK), | 926 | SND_PCI_QUIRK(0x103c, 0x828c, "HP EliteBook 840 G4", CXT_FIXUP_HP_DOCK), |
| 927 | SND_PCI_QUIRK(0x103c, 0x83b2, "HP EliteBook 840 G5", CXT_FIXUP_HP_DOCK), | ||
| 927 | SND_PCI_QUIRK(0x103c, 0x83b3, "HP EliteBook 830 G5", CXT_FIXUP_HP_DOCK), | 928 | SND_PCI_QUIRK(0x103c, 0x83b3, "HP EliteBook 830 G5", CXT_FIXUP_HP_DOCK), |
| 928 | SND_PCI_QUIRK(0x103c, 0x83d3, "HP ProBook 640 G4", CXT_FIXUP_HP_DOCK), | 929 | SND_PCI_QUIRK(0x103c, 0x83d3, "HP ProBook 640 G4", CXT_FIXUP_HP_DOCK), |
| 929 | SND_PCI_QUIRK(0x103c, 0x8174, "HP Spectre x360", CXT_FIXUP_HP_SPECTRE), | 930 | SND_PCI_QUIRK(0x103c, 0x8174, "HP Spectre x360", CXT_FIXUP_HP_SPECTRE), |
diff --git a/sound/soc/codecs/hdmi-codec.c b/sound/soc/codecs/hdmi-codec.c index d00734d31e04..e5b6769b9797 100644 --- a/sound/soc/codecs/hdmi-codec.c +++ b/sound/soc/codecs/hdmi-codec.c | |||
| @@ -795,6 +795,8 @@ static int hdmi_codec_probe(struct platform_device *pdev) | |||
| 795 | if (hcd->spdif) | 795 | if (hcd->spdif) |
| 796 | hcp->daidrv[i] = hdmi_spdif_dai; | 796 | hcp->daidrv[i] = hdmi_spdif_dai; |
| 797 | 797 | ||
| 798 | dev_set_drvdata(dev, hcp); | ||
| 799 | |||
| 798 | ret = devm_snd_soc_register_component(dev, &hdmi_driver, hcp->daidrv, | 800 | ret = devm_snd_soc_register_component(dev, &hdmi_driver, hcp->daidrv, |
| 799 | dai_count); | 801 | dai_count); |
| 800 | if (ret) { | 802 | if (ret) { |
| @@ -802,8 +804,6 @@ static int hdmi_codec_probe(struct platform_device *pdev) | |||
| 802 | __func__, ret); | 804 | __func__, ret); |
| 803 | return ret; | 805 | return ret; |
| 804 | } | 806 | } |
| 805 | |||
| 806 | dev_set_drvdata(dev, hcp); | ||
| 807 | return 0; | 807 | return 0; |
| 808 | } | 808 | } |
| 809 | 809 | ||
diff --git a/sound/soc/codecs/rt5682.c b/sound/soc/codecs/rt5682.c index 89c43b26c379..a9b91bcfcc09 100644 --- a/sound/soc/codecs/rt5682.c +++ b/sound/soc/codecs/rt5682.c | |||
| @@ -1778,7 +1778,9 @@ static const struct snd_soc_dapm_route rt5682_dapm_routes[] = { | |||
| 1778 | {"ADC Stereo1 Filter", NULL, "ADC STO1 ASRC", is_using_asrc}, | 1778 | {"ADC Stereo1 Filter", NULL, "ADC STO1 ASRC", is_using_asrc}, |
| 1779 | {"DAC Stereo1 Filter", NULL, "DAC STO1 ASRC", is_using_asrc}, | 1779 | {"DAC Stereo1 Filter", NULL, "DAC STO1 ASRC", is_using_asrc}, |
| 1780 | {"ADC STO1 ASRC", NULL, "AD ASRC"}, | 1780 | {"ADC STO1 ASRC", NULL, "AD ASRC"}, |
| 1781 | {"ADC STO1 ASRC", NULL, "DA ASRC"}, | ||
| 1781 | {"ADC STO1 ASRC", NULL, "CLKDET"}, | 1782 | {"ADC STO1 ASRC", NULL, "CLKDET"}, |
| 1783 | {"DAC STO1 ASRC", NULL, "AD ASRC"}, | ||
| 1782 | {"DAC STO1 ASRC", NULL, "DA ASRC"}, | 1784 | {"DAC STO1 ASRC", NULL, "DA ASRC"}, |
| 1783 | {"DAC STO1 ASRC", NULL, "CLKDET"}, | 1785 | {"DAC STO1 ASRC", NULL, "CLKDET"}, |
| 1784 | 1786 | ||
diff --git a/sound/soc/samsung/i2s.c b/sound/soc/samsung/i2s.c index d6c62aa13041..ce00fe2f6aae 100644 --- a/sound/soc/samsung/i2s.c +++ b/sound/soc/samsung/i2s.c | |||
| @@ -700,6 +700,7 @@ static int i2s_hw_params(struct snd_pcm_substream *substream, | |||
| 700 | { | 700 | { |
| 701 | struct i2s_dai *i2s = to_info(dai); | 701 | struct i2s_dai *i2s = to_info(dai); |
| 702 | u32 mod, mask = 0, val = 0; | 702 | u32 mod, mask = 0, val = 0; |
| 703 | struct clk *rclksrc; | ||
| 703 | unsigned long flags; | 704 | unsigned long flags; |
| 704 | 705 | ||
| 705 | WARN_ON(!pm_runtime_active(dai->dev)); | 706 | WARN_ON(!pm_runtime_active(dai->dev)); |
| @@ -782,6 +783,10 @@ static int i2s_hw_params(struct snd_pcm_substream *substream, | |||
| 782 | 783 | ||
| 783 | i2s->frmclk = params_rate(params); | 784 | i2s->frmclk = params_rate(params); |
| 784 | 785 | ||
| 786 | rclksrc = i2s->clk_table[CLK_I2S_RCLK_SRC]; | ||
| 787 | if (rclksrc && !IS_ERR(rclksrc)) | ||
| 788 | i2s->rclk_srcrate = clk_get_rate(rclksrc); | ||
| 789 | |||
| 785 | return 0; | 790 | return 0; |
| 786 | } | 791 | } |
| 787 | 792 | ||
| @@ -886,11 +891,6 @@ static int config_setup(struct i2s_dai *i2s) | |||
| 886 | return 0; | 891 | return 0; |
| 887 | 892 | ||
| 888 | if (!(i2s->quirks & QUIRK_NO_MUXPSR)) { | 893 | if (!(i2s->quirks & QUIRK_NO_MUXPSR)) { |
| 889 | struct clk *rclksrc = i2s->clk_table[CLK_I2S_RCLK_SRC]; | ||
| 890 | |||
| 891 | if (rclksrc && !IS_ERR(rclksrc)) | ||
| 892 | i2s->rclk_srcrate = clk_get_rate(rclksrc); | ||
| 893 | |||
| 894 | psr = i2s->rclk_srcrate / i2s->frmclk / rfs; | 894 | psr = i2s->rclk_srcrate / i2s->frmclk / rfs; |
| 895 | writel(((psr - 1) << 8) | PSR_PSREN, i2s->addr + I2SPSR); | 895 | writel(((psr - 1) << 8) | PSR_PSREN, i2s->addr + I2SPSR); |
| 896 | dev_dbg(&i2s->pdev->dev, | 896 | dev_dbg(&i2s->pdev->dev, |
diff --git a/sound/soc/sh/rcar/core.c b/sound/soc/sh/rcar/core.c index 59e250cc2e9d..e819e965e1db 100644 --- a/sound/soc/sh/rcar/core.c +++ b/sound/soc/sh/rcar/core.c | |||
| @@ -1526,14 +1526,14 @@ int rsnd_kctrl_new(struct rsnd_mod *mod, | |||
| 1526 | int ret; | 1526 | int ret; |
| 1527 | 1527 | ||
| 1528 | /* | 1528 | /* |
| 1529 | * 1) Avoid duplicate register (ex. MIXer case) | 1529 | * 1) Avoid duplicate register for DVC with MIX case |
| 1530 | * 2) re-register if card was rebinded | 1530 | * 2) Allow duplicate register for MIX |
| 1531 | * 3) re-register if card was rebinded | ||
| 1531 | */ | 1532 | */ |
| 1532 | list_for_each_entry(kctrl, &card->controls, list) { | 1533 | list_for_each_entry(kctrl, &card->controls, list) { |
| 1533 | struct rsnd_kctrl_cfg *c = kctrl->private_data; | 1534 | struct rsnd_kctrl_cfg *c = kctrl->private_data; |
| 1534 | 1535 | ||
| 1535 | if (strcmp(kctrl->id.name, name) == 0 && | 1536 | if (c == cfg) |
| 1536 | c->mod == mod) | ||
| 1537 | return 0; | 1537 | return 0; |
| 1538 | } | 1538 | } |
| 1539 | 1539 | ||
diff --git a/sound/soc/sh/rcar/ssi.c b/sound/soc/sh/rcar/ssi.c index 45ef295743ec..f5afab631abb 100644 --- a/sound/soc/sh/rcar/ssi.c +++ b/sound/soc/sh/rcar/ssi.c | |||
| @@ -286,7 +286,7 @@ static int rsnd_ssi_master_clk_start(struct rsnd_mod *mod, | |||
| 286 | if (rsnd_ssi_is_multi_slave(mod, io)) | 286 | if (rsnd_ssi_is_multi_slave(mod, io)) |
| 287 | return 0; | 287 | return 0; |
| 288 | 288 | ||
| 289 | if (ssi->usrcnt > 1) { | 289 | if (ssi->usrcnt > 0) { |
| 290 | if (ssi->rate != rate) { | 290 | if (ssi->rate != rate) { |
| 291 | dev_err(dev, "SSI parent/child should use same rate\n"); | 291 | dev_err(dev, "SSI parent/child should use same rate\n"); |
| 292 | return -EINVAL; | 292 | return -EINVAL; |
diff --git a/sound/soc/sh/rcar/ssiu.c b/sound/soc/sh/rcar/ssiu.c index c5934adcfd01..c74991dd18ab 100644 --- a/sound/soc/sh/rcar/ssiu.c +++ b/sound/soc/sh/rcar/ssiu.c | |||
| @@ -79,7 +79,7 @@ static int rsnd_ssiu_init(struct rsnd_mod *mod, | |||
| 79 | break; | 79 | break; |
| 80 | case 9: | 80 | case 9: |
| 81 | for (i = 0; i < 4; i++) | 81 | for (i = 0; i < 4; i++) |
| 82 | rsnd_mod_write(mod, SSI_SYS_STATUS((i * 2) + 1), 0xf << (id * 4)); | 82 | rsnd_mod_write(mod, SSI_SYS_STATUS((i * 2) + 1), 0xf << 4); |
| 83 | break; | 83 | break; |
| 84 | } | 84 | } |
| 85 | 85 | ||
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c index aae450ba4f08..50617db05c46 100644 --- a/sound/soc/soc-core.c +++ b/sound/soc/soc-core.c | |||
| @@ -735,12 +735,17 @@ static struct snd_soc_component *soc_find_component( | |||
| 735 | const struct device_node *of_node, const char *name) | 735 | const struct device_node *of_node, const char *name) |
| 736 | { | 736 | { |
| 737 | struct snd_soc_component *component; | 737 | struct snd_soc_component *component; |
| 738 | struct device_node *component_of_node; | ||
| 738 | 739 | ||
| 739 | lockdep_assert_held(&client_mutex); | 740 | lockdep_assert_held(&client_mutex); |
| 740 | 741 | ||
| 741 | for_each_component(component) { | 742 | for_each_component(component) { |
| 742 | if (of_node) { | 743 | if (of_node) { |
| 743 | if (component->dev->of_node == of_node) | 744 | component_of_node = component->dev->of_node; |
| 745 | if (!component_of_node && component->dev->parent) | ||
| 746 | component_of_node = component->dev->parent->of_node; | ||
| 747 | |||
| 748 | if (component_of_node == of_node) | ||
| 744 | return component; | 749 | return component; |
| 745 | } else if (name && strcmp(component->name, name) == 0) { | 750 | } else if (name && strcmp(component->name, name) == 0) { |
| 746 | return component; | 751 | return component; |
| @@ -951,7 +956,7 @@ static void soc_remove_dai(struct snd_soc_dai *dai, int order) | |||
| 951 | { | 956 | { |
| 952 | int err; | 957 | int err; |
| 953 | 958 | ||
| 954 | if (!dai || !dai->probed || | 959 | if (!dai || !dai->probed || !dai->driver || |
| 955 | dai->driver->remove_order != order) | 960 | dai->driver->remove_order != order) |
| 956 | return; | 961 | return; |
| 957 | 962 | ||
diff --git a/sound/soc/soc-dapm.c b/sound/soc/soc-dapm.c index 2c4c13419539..20bad755888b 100644 --- a/sound/soc/soc-dapm.c +++ b/sound/soc/soc-dapm.c | |||
| @@ -70,12 +70,16 @@ static int dapm_up_seq[] = { | |||
| 70 | [snd_soc_dapm_clock_supply] = 1, | 70 | [snd_soc_dapm_clock_supply] = 1, |
| 71 | [snd_soc_dapm_supply] = 2, | 71 | [snd_soc_dapm_supply] = 2, |
| 72 | [snd_soc_dapm_micbias] = 3, | 72 | [snd_soc_dapm_micbias] = 3, |
| 73 | [snd_soc_dapm_vmid] = 3, | ||
| 73 | [snd_soc_dapm_dai_link] = 2, | 74 | [snd_soc_dapm_dai_link] = 2, |
| 74 | [snd_soc_dapm_dai_in] = 4, | 75 | [snd_soc_dapm_dai_in] = 4, |
| 75 | [snd_soc_dapm_dai_out] = 4, | 76 | [snd_soc_dapm_dai_out] = 4, |
| 76 | [snd_soc_dapm_aif_in] = 4, | 77 | [snd_soc_dapm_aif_in] = 4, |
| 77 | [snd_soc_dapm_aif_out] = 4, | 78 | [snd_soc_dapm_aif_out] = 4, |
| 78 | [snd_soc_dapm_mic] = 5, | 79 | [snd_soc_dapm_mic] = 5, |
| 80 | [snd_soc_dapm_siggen] = 5, | ||
| 81 | [snd_soc_dapm_input] = 5, | ||
| 82 | [snd_soc_dapm_output] = 5, | ||
| 79 | [snd_soc_dapm_mux] = 6, | 83 | [snd_soc_dapm_mux] = 6, |
| 80 | [snd_soc_dapm_demux] = 6, | 84 | [snd_soc_dapm_demux] = 6, |
| 81 | [snd_soc_dapm_dac] = 7, | 85 | [snd_soc_dapm_dac] = 7, |
| @@ -83,11 +87,19 @@ static int dapm_up_seq[] = { | |||
| 83 | [snd_soc_dapm_mixer] = 8, | 87 | [snd_soc_dapm_mixer] = 8, |
| 84 | [snd_soc_dapm_mixer_named_ctl] = 8, | 88 | [snd_soc_dapm_mixer_named_ctl] = 8, |
| 85 | [snd_soc_dapm_pga] = 9, | 89 | [snd_soc_dapm_pga] = 9, |
| 90 | [snd_soc_dapm_buffer] = 9, | ||
| 91 | [snd_soc_dapm_scheduler] = 9, | ||
| 92 | [snd_soc_dapm_effect] = 9, | ||
| 93 | [snd_soc_dapm_src] = 9, | ||
| 94 | [snd_soc_dapm_asrc] = 9, | ||
| 95 | [snd_soc_dapm_encoder] = 9, | ||
| 96 | [snd_soc_dapm_decoder] = 9, | ||
| 86 | [snd_soc_dapm_adc] = 10, | 97 | [snd_soc_dapm_adc] = 10, |
| 87 | [snd_soc_dapm_out_drv] = 11, | 98 | [snd_soc_dapm_out_drv] = 11, |
| 88 | [snd_soc_dapm_hp] = 11, | 99 | [snd_soc_dapm_hp] = 11, |
| 89 | [snd_soc_dapm_spk] = 11, | 100 | [snd_soc_dapm_spk] = 11, |
| 90 | [snd_soc_dapm_line] = 11, | 101 | [snd_soc_dapm_line] = 11, |
| 102 | [snd_soc_dapm_sink] = 11, | ||
| 91 | [snd_soc_dapm_kcontrol] = 12, | 103 | [snd_soc_dapm_kcontrol] = 12, |
| 92 | [snd_soc_dapm_post] = 13, | 104 | [snd_soc_dapm_post] = 13, |
| 93 | }; | 105 | }; |
| @@ -100,13 +112,25 @@ static int dapm_down_seq[] = { | |||
| 100 | [snd_soc_dapm_spk] = 3, | 112 | [snd_soc_dapm_spk] = 3, |
| 101 | [snd_soc_dapm_line] = 3, | 113 | [snd_soc_dapm_line] = 3, |
| 102 | [snd_soc_dapm_out_drv] = 3, | 114 | [snd_soc_dapm_out_drv] = 3, |
| 115 | [snd_soc_dapm_sink] = 3, | ||
| 103 | [snd_soc_dapm_pga] = 4, | 116 | [snd_soc_dapm_pga] = 4, |
| 117 | [snd_soc_dapm_buffer] = 4, | ||
| 118 | [snd_soc_dapm_scheduler] = 4, | ||
| 119 | [snd_soc_dapm_effect] = 4, | ||
| 120 | [snd_soc_dapm_src] = 4, | ||
| 121 | [snd_soc_dapm_asrc] = 4, | ||
| 122 | [snd_soc_dapm_encoder] = 4, | ||
| 123 | [snd_soc_dapm_decoder] = 4, | ||
| 104 | [snd_soc_dapm_switch] = 5, | 124 | [snd_soc_dapm_switch] = 5, |
| 105 | [snd_soc_dapm_mixer_named_ctl] = 5, | 125 | [snd_soc_dapm_mixer_named_ctl] = 5, |
| 106 | [snd_soc_dapm_mixer] = 5, | 126 | [snd_soc_dapm_mixer] = 5, |
| 107 | [snd_soc_dapm_dac] = 6, | 127 | [snd_soc_dapm_dac] = 6, |
| 108 | [snd_soc_dapm_mic] = 7, | 128 | [snd_soc_dapm_mic] = 7, |
| 129 | [snd_soc_dapm_siggen] = 7, | ||
| 130 | [snd_soc_dapm_input] = 7, | ||
| 131 | [snd_soc_dapm_output] = 7, | ||
| 109 | [snd_soc_dapm_micbias] = 8, | 132 | [snd_soc_dapm_micbias] = 8, |
| 133 | [snd_soc_dapm_vmid] = 8, | ||
| 110 | [snd_soc_dapm_mux] = 9, | 134 | [snd_soc_dapm_mux] = 9, |
| 111 | [snd_soc_dapm_demux] = 9, | 135 | [snd_soc_dapm_demux] = 9, |
| 112 | [snd_soc_dapm_aif_in] = 10, | 136 | [snd_soc_dapm_aif_in] = 10, |
diff --git a/sound/soc/soc-topology.c b/sound/soc/soc-topology.c index 045ef136903d..fc79ec6927e3 100644 --- a/sound/soc/soc-topology.c +++ b/sound/soc/soc-topology.c | |||
| @@ -502,6 +502,7 @@ static void remove_dai(struct snd_soc_component *comp, | |||
| 502 | { | 502 | { |
| 503 | struct snd_soc_dai_driver *dai_drv = | 503 | struct snd_soc_dai_driver *dai_drv = |
| 504 | container_of(dobj, struct snd_soc_dai_driver, dobj); | 504 | container_of(dobj, struct snd_soc_dai_driver, dobj); |
| 505 | struct snd_soc_dai *dai; | ||
| 505 | 506 | ||
| 506 | if (pass != SOC_TPLG_PASS_PCM_DAI) | 507 | if (pass != SOC_TPLG_PASS_PCM_DAI) |
| 507 | return; | 508 | return; |
| @@ -509,6 +510,10 @@ static void remove_dai(struct snd_soc_component *comp, | |||
| 509 | if (dobj->ops && dobj->ops->dai_unload) | 510 | if (dobj->ops && dobj->ops->dai_unload) |
| 510 | dobj->ops->dai_unload(comp, dobj); | 511 | dobj->ops->dai_unload(comp, dobj); |
| 511 | 512 | ||
| 513 | list_for_each_entry(dai, &comp->dai_list, list) | ||
| 514 | if (dai->driver == dai_drv) | ||
| 515 | dai->driver = NULL; | ||
| 516 | |||
| 512 | kfree(dai_drv->name); | 517 | kfree(dai_drv->name); |
| 513 | list_del(&dobj->list); | 518 | list_del(&dobj->list); |
| 514 | kfree(dai_drv); | 519 | kfree(dai_drv); |
diff --git a/sound/usb/pcm.c b/sound/usb/pcm.c index 382847154227..db114f3977e0 100644 --- a/sound/usb/pcm.c +++ b/sound/usb/pcm.c | |||
| @@ -314,6 +314,9 @@ static int search_roland_implicit_fb(struct usb_device *dev, int ifnum, | |||
| 314 | return 0; | 314 | return 0; |
| 315 | } | 315 | } |
| 316 | 316 | ||
| 317 | /* Setup an implicit feedback endpoint from a quirk. Returns 0 if no quirk | ||
| 318 | * applies. Returns 1 if a quirk was found. | ||
| 319 | */ | ||
| 317 | static int set_sync_ep_implicit_fb_quirk(struct snd_usb_substream *subs, | 320 | static int set_sync_ep_implicit_fb_quirk(struct snd_usb_substream *subs, |
| 318 | struct usb_device *dev, | 321 | struct usb_device *dev, |
| 319 | struct usb_interface_descriptor *altsd, | 322 | struct usb_interface_descriptor *altsd, |
| @@ -384,7 +387,7 @@ add_sync_ep: | |||
| 384 | 387 | ||
| 385 | subs->data_endpoint->sync_master = subs->sync_endpoint; | 388 | subs->data_endpoint->sync_master = subs->sync_endpoint; |
| 386 | 389 | ||
| 387 | return 0; | 390 | return 1; |
| 388 | } | 391 | } |
| 389 | 392 | ||
| 390 | static int set_sync_endpoint(struct snd_usb_substream *subs, | 393 | static int set_sync_endpoint(struct snd_usb_substream *subs, |
| @@ -423,6 +426,10 @@ static int set_sync_endpoint(struct snd_usb_substream *subs, | |||
| 423 | if (err < 0) | 426 | if (err < 0) |
| 424 | return err; | 427 | return err; |
| 425 | 428 | ||
| 429 | /* endpoint set by quirk */ | ||
| 430 | if (err > 0) | ||
| 431 | return 0; | ||
| 432 | |||
| 426 | if (altsd->bNumEndpoints < 2) | 433 | if (altsd->bNumEndpoints < 2) |
| 427 | return 0; | 434 | return 0; |
| 428 | 435 | ||
diff --git a/tools/include/uapi/asm/bitsperlong.h b/tools/include/uapi/asm/bitsperlong.h index fd92ce8388fc..57aaeaf8e192 100644 --- a/tools/include/uapi/asm/bitsperlong.h +++ b/tools/include/uapi/asm/bitsperlong.h | |||
| @@ -15,6 +15,8 @@ | |||
| 15 | #include "../../arch/ia64/include/uapi/asm/bitsperlong.h" | 15 | #include "../../arch/ia64/include/uapi/asm/bitsperlong.h" |
| 16 | #elif defined(__riscv) | 16 | #elif defined(__riscv) |
| 17 | #include "../../arch/riscv/include/uapi/asm/bitsperlong.h" | 17 | #include "../../arch/riscv/include/uapi/asm/bitsperlong.h" |
| 18 | #elif defined(__alpha__) | ||
| 19 | #include "../../arch/alpha/include/uapi/asm/bitsperlong.h" | ||
| 18 | #else | 20 | #else |
| 19 | #include <asm-generic/bitsperlong.h> | 21 | #include <asm-generic/bitsperlong.h> |
| 20 | #endif | 22 | #endif |
