mmc: block: Support alternative_gpt_sector() operation
Support generic alternative_gpt_sector() block device operation. It calculates location of GPT entry for eMMC of NVIDIA Tegra Android devices. Add new MMC_CAP2_ALT_GPT_TEGRA flag that enables scanning of alternative GPT sector and add raw_boot_mult field to mmc_ext_csd which allows to get size of the boot partitions that is needed for the calculation. Signed-off-by: Dmitry Osipenko <digetx@gmail.com> Reviewed-by: Ulf Hansson <ulf.hansson@linaro.org> Link: https://lore.kernel.org/r/20210820004536.15791-4-digetx@gmail.com Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
committed by
Jens Axboe
parent
466d9c4904
commit
dc913385dd
@@ -831,6 +831,26 @@ static int mmc_blk_compat_ioctl(struct block_device *bdev, fmode_t mode,
|
||||
}
|
||||
#endif
|
||||
|
||||
static int mmc_blk_alternative_gpt_sector(struct gendisk *disk,
|
||||
sector_t *sector)
|
||||
{
|
||||
struct mmc_blk_data *md;
|
||||
int ret;
|
||||
|
||||
md = mmc_blk_get(disk);
|
||||
if (!md)
|
||||
return -EINVAL;
|
||||
|
||||
if (md->queue.card)
|
||||
ret = mmc_card_alternative_gpt_sector(md->queue.card, sector);
|
||||
else
|
||||
ret = -ENODEV;
|
||||
|
||||
mmc_blk_put(md);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static const struct block_device_operations mmc_bdops = {
|
||||
.open = mmc_blk_open,
|
||||
.release = mmc_blk_release,
|
||||
@@ -840,6 +860,7 @@ static const struct block_device_operations mmc_bdops = {
|
||||
#ifdef CONFIG_COMPAT
|
||||
.compat_ioctl = mmc_blk_compat_ioctl,
|
||||
#endif
|
||||
.alternative_gpt_sector = mmc_blk_alternative_gpt_sector,
|
||||
};
|
||||
|
||||
static int mmc_blk_part_switch_pre(struct mmc_card *card,
|
||||
|
||||
Reference in New Issue
Block a user