aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Documentation/sysctl/fs.txt4
-rw-r--r--MAINTAINERS4
-rw-r--r--arch/alpha/include/asm/irq.h6
-rw-r--r--arch/alpha/mm/fault.c2
-rw-r--r--arch/s390/kernel/swsusp.S4
-rw-r--r--arch/s390/pci/pci.c4
-rw-r--r--drivers/s390/block/dasd_eckd.c8
-rw-r--r--drivers/s390/crypto/ap_bus.c3
-rw-r--r--drivers/thermal/cpu_cooling.c2
-rw-r--r--drivers/thermal/of-thermal.c4
-rw-r--r--fs/ext4/fsync.c13
-rw-r--r--sound/core/pcm_lib.c20
-rw-r--r--sound/pci/hda/patch_conexant.c1
-rw-r--r--sound/soc/codecs/hdmi-codec.c4
-rw-r--r--sound/soc/codecs/rt5682.c2
-rw-r--r--sound/soc/samsung/i2s.c10
-rw-r--r--sound/soc/sh/rcar/core.c8
-rw-r--r--sound/soc/sh/rcar/ssi.c2
-rw-r--r--sound/soc/sh/rcar/ssiu.c2
-rw-r--r--sound/soc/soc-core.c9
-rw-r--r--sound/soc/soc-dapm.c24
-rw-r--r--sound/soc/soc-topology.c5
-rw-r--r--sound/usb/pcm.c9
-rw-r--r--tools/include/uapi/asm/bitsperlong.h2
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
80dcache isn't pruned yet. 80dcache isn't pruned yet.
81 81
82nr_negative shows the number of unused dentries that are also 82nr_negative shows the number of unused dentries that are also
83negative dentries which do not mapped to actual files. 83negative dentries which do not map to any files. Instead,
84they help speeding up rejection of non-existing files provided
85by 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
6151M: Timur Tabi <timur@kernel.org> 6151M: Timur Tabi <timur@kernel.org>
6152M: Nicolin Chen <nicoleotsuka@gmail.com> 6152M: Nicolin Chen <nicoleotsuka@gmail.com>
6153M: Xiubo Li <Xiubo.Lee@gmail.com> 6153M: Xiubo Li <Xiubo.Lee@gmail.com>
6154R: Fabio Estevam <fabio.estevam@nxp.com> 6154R: Fabio Estevam <festevam@gmail.com>
6155L: alsa-devel@alsa-project.org (moderated for non-subscribers) 6155L: alsa-devel@alsa-project.org (moderated for non-subscribers)
6156L: linuxppc-dev@lists.ozlabs.org 6156L: linuxppc-dev@lists.ozlabs.org
6157S: Maintained 6157S: Maintained
@@ -10898,7 +10898,7 @@ F: include/linux/nvmem-consumer.h
10898F: include/linux/nvmem-provider.h 10898F: include/linux/nvmem-provider.h
10899 10899
10900NXP SGTL5000 DRIVER 10900NXP SGTL5000 DRIVER
10901M: Fabio Estevam <fabio.estevam@nxp.com> 10901M: Fabio Estevam <festevam@gmail.com>
10902L: alsa-devel@alsa-project.org (moderated for non-subscribers) 10902L: alsa-devel@alsa-project.org (moderated for non-subscribers)
10903S: Maintained 10903S: Maintained
10904F: Documentation/devicetree/bindings/sound/sgtl5000.txt 10904F: 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
83asmlinkage void 83asmlinkage void
84do_page_fault(unsigned long address, unsigned long mmcsr, 84do_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
31ENTRY(swsusp_arch_suspend) 31ENTRY(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)
248static inline int ap_test_config_card_id(unsigned int id) 248static 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 */
2123snd_pcm_sframes_t __snd_pcm_lib_xfer(struct snd_pcm_substream *substream, 2116snd_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 */
317static int set_sync_ep_implicit_fb_quirk(struct snd_usb_substream *subs, 320static 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
390static int set_sync_endpoint(struct snd_usb_substream *subs, 393static 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