Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

mmc: sdhci-tegra: Enable MMC_CAP2_ALT_GPT_TEGRA

Tegra20/30/114/124 Android devices place GPT at a non-standard location.
Enable GPT entry scanning at that location.

Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
Acked-by: Thierry Reding <treding@nvidia.com>
Reviewed-by: Ulf Hansson <ulf.hansson@linaro.org>
Link: https://lore.kernel.org/r/20210820004536.15791-5-digetx@gmail.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>

authored by

Dmitry Osipenko and committed by
Jens Axboe
1743fa54 dc913385

+9
+9
drivers/mmc/host/sdhci-tegra.c
··· 116 116 */ 117 117 #define NVQUIRK_HAS_TMCLK BIT(10) 118 118 119 + #define NVQUIRK_HAS_ANDROID_GPT_SECTOR BIT(11) 120 + 119 121 /* SDMMC CQE Base Address for Tegra Host Ver 4.1 and Higher */ 120 122 #define SDHCI_TEGRA_CQE_BASE_ADDR 0xF000 121 123 ··· 1363 1361 .pdata = &sdhci_tegra20_pdata, 1364 1362 .dma_mask = DMA_BIT_MASK(32), 1365 1363 .nvquirks = NVQUIRK_FORCE_SDHCI_SPEC_200 | 1364 + NVQUIRK_HAS_ANDROID_GPT_SECTOR | 1366 1365 NVQUIRK_ENABLE_BLOCK_GAP_DET, 1367 1366 }; 1368 1367 ··· 1393 1390 .nvquirks = NVQUIRK_ENABLE_SDHCI_SPEC_300 | 1394 1391 NVQUIRK_ENABLE_SDR50 | 1395 1392 NVQUIRK_ENABLE_SDR104 | 1393 + NVQUIRK_HAS_ANDROID_GPT_SECTOR | 1396 1394 NVQUIRK_HAS_PADCALIB, 1397 1395 }; 1398 1396 ··· 1426 1422 static const struct sdhci_tegra_soc_data soc_data_tegra114 = { 1427 1423 .pdata = &sdhci_tegra114_pdata, 1428 1424 .dma_mask = DMA_BIT_MASK(32), 1425 + .nvquirks = NVQUIRK_HAS_ANDROID_GPT_SECTOR, 1429 1426 }; 1430 1427 1431 1428 static const struct sdhci_pltfm_data sdhci_tegra124_pdata = { ··· 1443 1438 static const struct sdhci_tegra_soc_data soc_data_tegra124 = { 1444 1439 .pdata = &sdhci_tegra124_pdata, 1445 1440 .dma_mask = DMA_BIT_MASK(34), 1441 + .nvquirks = NVQUIRK_HAS_ANDROID_GPT_SECTOR, 1446 1442 }; 1447 1443 1448 1444 static const struct sdhci_ops tegra210_sdhci_ops = { ··· 1621 1615 tegra_host->pad_calib_required = false; 1622 1616 tegra_host->pad_control_available = false; 1623 1617 tegra_host->soc_data = soc_data; 1618 + 1619 + if (soc_data->nvquirks & NVQUIRK_HAS_ANDROID_GPT_SECTOR) 1620 + host->mmc->caps2 |= MMC_CAP2_ALT_GPT_TEGRA; 1624 1621 1625 1622 if (soc_data->nvquirks & NVQUIRK_NEEDS_PAD_CONTROL) { 1626 1623 rc = tegra_sdhci_init_pinctrl_info(&pdev->dev, tegra_host);