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

Pull MMC host fixes from Ulf Hansson:

- meson-gx: Fix error handling in ->probe()

- mtk-sd: Fix a command problem when using cqe off/disable

- pxamci: Fix error handling in ->probe()

- sdhci-of-dwcmshc: Fix broken support for the BlueField-3 variant

* tag 'mmc-v6.0-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc:
mmc: sdhci-of-dwcmshc: Re-enable support for the BlueField-3 SoC
mmc: meson-gx: Fix an error handling path in meson_mmc_probe()
mmc: mtk-sd: Clear interrupts when cqe off/disable
mmc: pxamci: Fix another error handling path in pxamci_probe()
mmc: pxamci: Fix an error handling path in pxamci_probe()

+26 -6
+4 -2
drivers/mmc/host/meson-gx-mmc.c
··· 1172 1172 } 1173 1173 1174 1174 ret = device_reset_optional(&pdev->dev); 1175 - if (ret) 1176 - return dev_err_probe(&pdev->dev, ret, "device reset failed\n"); 1175 + if (ret) { 1176 + dev_err_probe(&pdev->dev, ret, "device reset failed\n"); 1177 + goto free_host; 1178 + } 1177 1179 1178 1180 res = platform_get_resource(pdev, IORESOURCE_MEM, 0); 1179 1181 host->regs = devm_ioremap_resource(&pdev->dev, res);
+6
drivers/mmc/host/mtk-sd.c
··· 2446 2446 /* disable busy check */ 2447 2447 sdr_clr_bits(host->base + MSDC_PATCH_BIT1, MSDC_PB1_BUSY_CHECK_SEL); 2448 2448 2449 + val = readl(host->base + MSDC_INT); 2450 + writel(val, host->base + MSDC_INT); 2451 + 2449 2452 if (recovery) { 2450 2453 sdr_set_field(host->base + MSDC_DMA_CTRL, 2451 2454 MSDC_DMA_CTRL_STOP, 1); ··· 2935 2932 struct mmc_host *mmc = dev_get_drvdata(dev); 2936 2933 struct msdc_host *host = mmc_priv(mmc); 2937 2934 int ret; 2935 + u32 val; 2938 2936 2939 2937 if (mmc->caps2 & MMC_CAP2_CQE) { 2940 2938 ret = cqhci_suspend(mmc); 2941 2939 if (ret) 2942 2940 return ret; 2941 + val = readl(host->base + MSDC_INT); 2942 + writel(val, host->base + MSDC_INT); 2943 2943 } 2944 2944 2945 2945 /*
+2 -2
drivers/mmc/host/pxamci.c
··· 648 648 649 649 ret = pxamci_of_init(pdev, mmc); 650 650 if (ret) 651 - return ret; 651 + goto out; 652 652 653 653 host = mmc_priv(mmc); 654 654 host->mmc = mmc; ··· 672 672 673 673 ret = pxamci_init_ocr(host); 674 674 if (ret < 0) 675 - return ret; 675 + goto out; 676 676 677 677 mmc->caps = 0; 678 678 host->cmdat = 0;
+14 -2
drivers/mmc/host/sdhci-of-dwcmshc.c
··· 349 349 .quirks2 = SDHCI_QUIRK2_PRESET_VALUE_BROKEN, 350 350 }; 351 351 352 + #ifdef CONFIG_ACPI 353 + static const struct sdhci_pltfm_data sdhci_dwcmshc_bf3_pdata = { 354 + .ops = &sdhci_dwcmshc_ops, 355 + .quirks = SDHCI_QUIRK_CAP_CLOCK_BASE_BROKEN, 356 + .quirks2 = SDHCI_QUIRK2_PRESET_VALUE_BROKEN | 357 + SDHCI_QUIRK2_ACMD23_BROKEN, 358 + }; 359 + #endif 360 + 352 361 static const struct sdhci_pltfm_data sdhci_dwcmshc_rk35xx_pdata = { 353 362 .ops = &sdhci_dwcmshc_rk35xx_ops, 354 363 .quirks = SDHCI_QUIRK_CAP_CLOCK_BASE_BROKEN | ··· 440 431 441 432 #ifdef CONFIG_ACPI 442 433 static const struct acpi_device_id sdhci_dwcmshc_acpi_ids[] = { 443 - { .id = "MLNXBF30" }, 434 + { 435 + .id = "MLNXBF30", 436 + .driver_data = (kernel_ulong_t)&sdhci_dwcmshc_bf3_pdata, 437 + }, 444 438 {} 445 439 }; 446 440 #endif ··· 459 447 int err; 460 448 u32 extra; 461 449 462 - pltfm_data = of_device_get_match_data(&pdev->dev); 450 + pltfm_data = device_get_match_data(&pdev->dev); 463 451 if (!pltfm_data) { 464 452 dev_err(&pdev->dev, "Error: No device match data found\n"); 465 453 return -ENODEV;