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

Pull MMC fixes from Ulf Hansson:

- Fix support for deferred probing for several host drivers

- litex_mmc: Use async probe as it's common for all mmc hosts

- meson-gx: Fix bug when scheduling while atomic

- mmci_stm32: Fix max busy timeout calculation

- sdhci-msm: Disable broken 64-bit DMA on MSM8916

* tag 'mmc-v6.4-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc:
mmc: usdhi60rol0: fix deferred probing
mmc: sunxi: fix deferred probing
mmc: sh_mmcif: fix deferred probing
mmc: sdhci-spear: fix deferred probing
mmc: sdhci-acpi: fix deferred probing
mmc: owl: fix deferred probing
mmc: omap_hsmmc: fix deferred probing
mmc: omap: fix deferred probing
mmc: mvsdio: fix deferred probing
mmc: mtk-sd: fix deferred probing
mmc: meson-gx: fix deferred probing
mmc: bcm2835: fix deferred probing
mmc: litex_mmc: set PROBE_PREFER_ASYNCHRONOUS
mmc: meson-gx: remove redundant mmc_request_done() call from irq context
mmc: mmci: stm32: fix max busy timeout calculation
mmc: sdhci-msm: Disable broken 64-bit DMA on MSM8916

+30 -27
+2 -2
drivers/mmc/host/bcm2835.c
··· 1403 1403 host->max_clk = clk_get_rate(clk); 1404 1404 1405 1405 host->irq = platform_get_irq(pdev, 0); 1406 - if (host->irq <= 0) { 1407 - ret = -EINVAL; 1406 + if (host->irq < 0) { 1407 + ret = host->irq; 1408 1408 goto err; 1409 1409 } 1410 1410
+1
drivers/mmc/host/litex_mmc.c
··· 649 649 .driver = { 650 650 .name = "litex-mmc", 651 651 .of_match_table = litex_match, 652 + .probe_type = PROBE_PREFER_ASYNCHRONOUS, 652 653 }, 653 654 }; 654 655 module_platform_driver(litex_mmc_driver);
+4 -10
drivers/mmc/host/meson-gx-mmc.c
··· 991 991 992 992 if (data && !cmd->error) 993 993 data->bytes_xfered = data->blksz * data->blocks; 994 - if (meson_mmc_bounce_buf_read(data) || 995 - meson_mmc_get_next_command(cmd)) 996 - ret = IRQ_WAKE_THREAD; 997 - else 998 - ret = IRQ_HANDLED; 994 + 995 + return IRQ_WAKE_THREAD; 999 996 } 1000 997 1001 998 out: ··· 1003 1006 start &= ~START_DESC_BUSY; 1004 1007 writel(start, host->regs + SD_EMMC_START); 1005 1008 } 1006 - 1007 - if (ret == IRQ_HANDLED) 1008 - meson_mmc_request_done(host->mmc, cmd->mrq); 1009 1009 1010 1010 return ret; 1011 1011 } ··· 1186 1192 return PTR_ERR(host->regs); 1187 1193 1188 1194 host->irq = platform_get_irq(pdev, 0); 1189 - if (host->irq <= 0) 1190 - return -EINVAL; 1195 + if (host->irq < 0) 1196 + return host->irq; 1191 1197 1192 1198 cd_irq = platform_get_irq_optional(pdev, 1); 1193 1199 mmc_gpio_set_cd_irq(mmc, cd_irq);
+2 -1
drivers/mmc/host/mmci.c
··· 1735 1735 return; 1736 1736 1737 1737 if (host->variant->busy_timeout && mmc->actual_clock) 1738 - max_busy_timeout = ~0UL / (mmc->actual_clock / MSEC_PER_SEC); 1738 + max_busy_timeout = U32_MAX / DIV_ROUND_UP(mmc->actual_clock, 1739 + MSEC_PER_SEC); 1739 1740 1740 1741 mmc->max_busy_timeout = max_busy_timeout; 1741 1742 }
+1 -1
drivers/mmc/host/mtk-sd.c
··· 2680 2680 2681 2681 host->irq = platform_get_irq(pdev, 0); 2682 2682 if (host->irq < 0) { 2683 - ret = -EINVAL; 2683 + ret = host->irq; 2684 2684 goto host_free; 2685 2685 } 2686 2686
+1 -1
drivers/mmc/host/mvsdio.c
··· 704 704 } 705 705 irq = platform_get_irq(pdev, 0); 706 706 if (irq < 0) 707 - return -ENXIO; 707 + return irq; 708 708 709 709 mmc = mmc_alloc_host(sizeof(struct mvsd_host), &pdev->dev); 710 710 if (!mmc) {
+1 -1
drivers/mmc/host/omap.c
··· 1343 1343 1344 1344 irq = platform_get_irq(pdev, 0); 1345 1345 if (irq < 0) 1346 - return -ENXIO; 1346 + return irq; 1347 1347 1348 1348 host->virt_base = devm_platform_get_and_ioremap_resource(pdev, 0, &res); 1349 1349 if (IS_ERR(host->virt_base))
+4 -2
drivers/mmc/host/omap_hsmmc.c
··· 1791 1791 } 1792 1792 1793 1793 res = platform_get_resource(pdev, IORESOURCE_MEM, 0); 1794 - irq = platform_get_irq(pdev, 0); 1795 - if (res == NULL || irq < 0) 1794 + if (!res) 1796 1795 return -ENXIO; 1796 + irq = platform_get_irq(pdev, 0); 1797 + if (irq < 0) 1798 + return irq; 1797 1799 1798 1800 base = devm_ioremap_resource(&pdev->dev, res); 1799 1801 if (IS_ERR(base))
+1 -1
drivers/mmc/host/owl-mmc.c
··· 637 637 638 638 owl_host->irq = platform_get_irq(pdev, 0); 639 639 if (owl_host->irq < 0) { 640 - ret = -EINVAL; 640 + ret = owl_host->irq; 641 641 goto err_release_channel; 642 642 } 643 643
+1 -1
drivers/mmc/host/sdhci-acpi.c
··· 829 829 host->ops = &sdhci_acpi_ops_dflt; 830 830 host->irq = platform_get_irq(pdev, 0); 831 831 if (host->irq < 0) { 832 - err = -EINVAL; 832 + err = host->irq; 833 833 goto err_free; 834 834 } 835 835
+3
drivers/mmc/host/sdhci-msm.c
··· 2479 2479 msm_host->ddr_config = DDR_CONFIG_POR_VAL; 2480 2480 2481 2481 of_property_read_u32(node, "qcom,dll-config", &msm_host->dll_config); 2482 + 2483 + if (of_device_is_compatible(node, "qcom,msm8916-sdhci")) 2484 + host->quirks2 |= SDHCI_QUIRK2_BROKEN_64_BIT_DMA; 2482 2485 } 2483 2486 2484 2487 static int sdhci_msm_gcc_reset(struct device *dev, struct sdhci_host *host)
+2 -2
drivers/mmc/host/sdhci-spear.c
··· 65 65 host->hw_name = "sdhci"; 66 66 host->ops = &sdhci_pltfm_ops; 67 67 host->irq = platform_get_irq(pdev, 0); 68 - if (host->irq <= 0) { 69 - ret = -EINVAL; 68 + if (host->irq < 0) { 69 + ret = host->irq; 70 70 goto err_host; 71 71 } 72 72 host->quirks = SDHCI_QUIRK_BROKEN_ADMA;
+1 -1
drivers/mmc/host/sh_mmcif.c
··· 1400 1400 irq[0] = platform_get_irq(pdev, 0); 1401 1401 irq[1] = platform_get_irq_optional(pdev, 1); 1402 1402 if (irq[0] < 0) 1403 - return -ENXIO; 1403 + return irq[0]; 1404 1404 1405 1405 reg = devm_platform_ioremap_resource(pdev, 0); 1406 1406 if (IS_ERR(reg))
+2 -2
drivers/mmc/host/sunxi-mmc.c
··· 1350 1350 return ret; 1351 1351 1352 1352 host->irq = platform_get_irq(pdev, 0); 1353 - if (host->irq <= 0) { 1354 - ret = -EINVAL; 1353 + if (host->irq < 0) { 1354 + ret = host->irq; 1355 1355 goto error_disable_mmc; 1356 1356 } 1357 1357
+4 -2
drivers/mmc/host/usdhi6rol0.c
··· 1757 1757 irq_cd = platform_get_irq_byname(pdev, "card detect"); 1758 1758 irq_sd = platform_get_irq_byname(pdev, "data"); 1759 1759 irq_sdio = platform_get_irq_byname(pdev, "SDIO"); 1760 - if (irq_sd < 0 || irq_sdio < 0) 1761 - return -ENODEV; 1760 + if (irq_sd < 0) 1761 + return irq_sd; 1762 + if (irq_sdio < 0) 1763 + return irq_sdio; 1762 1764 1763 1765 mmc = mmc_alloc_host(sizeof(struct usdhi6_host), dev); 1764 1766 if (!mmc)