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 'mmc-v5.4-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc

Pull MMC fixes from Ulf Hansson:
"MMC host:
- sdhci-iproc: Prevent some spurious interrupts
- renesas_sdhi/sh_mmcif: Avoid false warnings about IRQs not found

MEMSTICK host:
- jmb38x_ms: Fix an error handling path at ->probe()"

* tag 'mmc-v5.4-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc:
memstick: jmb38x_ms: Fix an error handling path in 'jmb38x_ms_probe()'
mmc: sdhci-iproc: fix spurious interrupts on Multiblock reads with bcm2711
mmc: sh_mmcif: Use platform_get_irq_optional() for optional interrupt
mmc: renesas_sdhi: Do not use platform_get_irq() to count interrupts

+23 -17
+1 -1
drivers/memstick/host/jmb38x_ms.c
··· 941 941 if (!cnt) { 942 942 rc = -ENODEV; 943 943 pci_dev_busy = 1; 944 - goto err_out; 944 + goto err_out_int; 945 945 } 946 946 947 947 jm = kzalloc(sizeof(struct jmb38x_ms)
+19 -12
drivers/mmc/host/renesas_sdhi_core.c
··· 646 646 struct tmio_mmc_dma *dma_priv; 647 647 struct tmio_mmc_host *host; 648 648 struct renesas_sdhi *priv; 649 + int num_irqs, irq, ret, i; 649 650 struct resource *res; 650 - int irq, ret, i; 651 651 u16 ver; 652 652 653 653 of_data = of_device_get_match_data(&pdev->dev); ··· 825 825 host->hs400_complete = renesas_sdhi_hs400_complete; 826 826 } 827 827 828 - i = 0; 829 - while (1) { 828 + num_irqs = platform_irq_count(pdev); 829 + if (num_irqs < 0) { 830 + ret = num_irqs; 831 + goto eirq; 832 + } 833 + 834 + /* There must be at least one IRQ source */ 835 + if (!num_irqs) { 836 + ret = -ENXIO; 837 + goto eirq; 838 + } 839 + 840 + for (i = 0; i < num_irqs; i++) { 830 841 irq = platform_get_irq(pdev, i); 831 - if (irq < 0) 832 - break; 833 - i++; 842 + if (irq < 0) { 843 + ret = irq; 844 + goto eirq; 845 + } 846 + 834 847 ret = devm_request_irq(&pdev->dev, irq, tmio_mmc_irq, 0, 835 848 dev_name(&pdev->dev), host); 836 849 if (ret) 837 850 goto eirq; 838 - } 839 - 840 - /* There must be at least one IRQ source */ 841 - if (!i) { 842 - ret = irq; 843 - goto eirq; 844 851 } 845 852 846 853 dev_info(&pdev->dev, "%s base at 0x%08lx max clock rate %u MHz\n",
+1
drivers/mmc/host/sdhci-iproc.c
··· 262 262 }; 263 263 264 264 static const struct sdhci_pltfm_data sdhci_bcm2711_pltfm_data = { 265 + .quirks = SDHCI_QUIRK_MULTIBLOCK_READ_ACMD12, 265 266 .ops = &sdhci_iproc_32only_ops, 266 267 }; 267 268
+2 -4
drivers/mmc/host/sh_mmcif.c
··· 1393 1393 const char *name; 1394 1394 1395 1395 irq[0] = platform_get_irq(pdev, 0); 1396 - irq[1] = platform_get_irq(pdev, 1); 1397 - if (irq[0] < 0) { 1398 - dev_err(dev, "Get irq error\n"); 1396 + irq[1] = platform_get_irq_optional(pdev, 1); 1397 + if (irq[0] < 0) 1399 1398 return -ENXIO; 1400 - } 1401 1399 1402 1400 res = platform_get_resource(pdev, IORESOURCE_MEM, 0); 1403 1401 reg = devm_ioremap_resource(dev, res);