Re: [PATCH 2/2] mmc: host: Drop redundant MMC_CAP_ERASE

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Ulf,
On Fri, May 08, 2020 at 01:29:02PM +0200, Ulf Hansson wrote:
> The MMC_CAP_ERASE bit is no longer used by the mmc core as erase, discard
> and trim operations are now always supported. Therefore, drop the bit and
> move all mmc hosts away from using it.
> 
> Signed-off-by: Ulf Hansson <ulf.hansson@xxxxxxxxxx>

For the greybus/sdio change:

Reviewed-by: Rui Miguel Silva <rmfrfs@xxxxxxxxx>

------
Cheers,
     Rui

> ---
>  drivers/mmc/host/bcm2835.c        | 3 +--
>  drivers/mmc/host/cavium.c         | 3 +--
>  drivers/mmc/host/dw_mmc.c         | 6 ------
>  drivers/mmc/host/meson-mx-sdio.c  | 2 +-
>  drivers/mmc/host/mtk-sd.c         | 2 +-
>  drivers/mmc/host/mvsdio.c         | 2 --
>  drivers/mmc/host/mxs-mmc.c        | 3 +--
>  drivers/mmc/host/omap.c           | 2 +-
>  drivers/mmc/host/omap_hsmmc.c     | 2 +-
>  drivers/mmc/host/rtsx_pci_sdmmc.c | 2 +-
>  drivers/mmc/host/rtsx_usb_sdmmc.c | 2 +-
>  drivers/mmc/host/sdhci.c          | 2 +-
>  drivers/mmc/host/sunxi-mmc.c      | 2 +-
>  drivers/mmc/host/tmio_mmc_core.c  | 2 +-
>  drivers/staging/greybus/sdio.c    | 1 -
>  include/linux/mmc/host.h          | 1 -
>  16 files changed, 12 insertions(+), 25 deletions(-)
> 
> diff --git a/drivers/mmc/host/bcm2835.c b/drivers/mmc/host/bcm2835.c
> index c3d949847cbd..a0767790a826 100644
> --- a/drivers/mmc/host/bcm2835.c
> +++ b/drivers/mmc/host/bcm2835.c
> @@ -1280,8 +1280,7 @@ static int bcm2835_add_host(struct bcm2835_host *host)
>  
>  	/* host controller capabilities */
>  	mmc->caps |= MMC_CAP_SD_HIGHSPEED | MMC_CAP_MMC_HIGHSPEED |
> -		     MMC_CAP_NEEDS_POLL | MMC_CAP_HW_RESET | MMC_CAP_ERASE |
> -		     MMC_CAP_CMD23;
> +		     MMC_CAP_NEEDS_POLL | MMC_CAP_HW_RESET | MMC_CAP_CMD23;
>  
>  	spin_lock_init(&host->lock);
>  	mutex_init(&host->mutex);
> diff --git a/drivers/mmc/host/cavium.c b/drivers/mmc/host/cavium.c
> index 89deb451e0ac..c5da3aaee334 100644
> --- a/drivers/mmc/host/cavium.c
> +++ b/drivers/mmc/host/cavium.c
> @@ -1038,8 +1038,7 @@ int cvm_mmc_of_slot_probe(struct device *dev, struct cvm_mmc_host *host)
>  	 * Disable bounce buffers for max_segs = 1
>  	 */
>  	mmc->caps |= MMC_CAP_MMC_HIGHSPEED | MMC_CAP_SD_HIGHSPEED |
> -		     MMC_CAP_ERASE | MMC_CAP_CMD23 | MMC_CAP_POWER_OFF_CARD |
> -		     MMC_CAP_3_3V_DDR;
> +		     MMC_CAP_CMD23 | MMC_CAP_POWER_OFF_CARD | MMC_CAP_3_3V_DDR;
>  
>  	if (host->use_sg)
>  		mmc->max_segs = 16;
> diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
> index 5d1f8a3ec3a5..35ae5737c622 100644
> --- a/drivers/mmc/host/dw_mmc.c
> +++ b/drivers/mmc/host/dw_mmc.c
> @@ -2751,12 +2751,6 @@ static int dw_mci_init_slot_caps(struct dw_mci_slot *slot)
>  	if (host->pdata->caps)
>  		mmc->caps = host->pdata->caps;
>  
> -	/*
> -	 * Support MMC_CAP_ERASE by default.
> -	 * It needs to use trim/discard/erase commands.
> -	 */
> -	mmc->caps |= MMC_CAP_ERASE;
> -
>  	if (host->pdata->pm_caps)
>  		mmc->pm_caps = host->pdata->pm_caps;
>  
> diff --git a/drivers/mmc/host/meson-mx-sdio.c b/drivers/mmc/host/meson-mx-sdio.c
> index 3813b544f571..9b2cf7afc246 100644
> --- a/drivers/mmc/host/meson-mx-sdio.c
> +++ b/drivers/mmc/host/meson-mx-sdio.c
> @@ -564,7 +564,7 @@ static int meson_mx_mmc_add_host(struct meson_mx_mmc_host *host)
>  	mmc->f_max = clk_round_rate(host->cfg_div_clk,
>  				    clk_get_rate(host->parent_clk));
>  
> -	mmc->caps |= MMC_CAP_ERASE | MMC_CAP_CMD23 | MMC_CAP_WAIT_WHILE_BUSY;
> +	mmc->caps |= MMC_CAP_CMD23 | MMC_CAP_WAIT_WHILE_BUSY;
>  	mmc->ops = &meson_mx_mmc_ops;
>  
>  	ret = mmc_of_parse(mmc);
> diff --git a/drivers/mmc/host/mtk-sd.c b/drivers/mmc/host/mtk-sd.c
> index 53819ae9f271..39e7fc54c438 100644
> --- a/drivers/mmc/host/mtk-sd.c
> +++ b/drivers/mmc/host/mtk-sd.c
> @@ -2326,7 +2326,7 @@ static int msdc_drv_probe(struct platform_device *pdev)
>  	if (mmc->caps & MMC_CAP_SDIO_IRQ)
>  		mmc->caps2 |= MMC_CAP2_SDIO_IRQ_NOTHREAD;
>  
> -	mmc->caps |= MMC_CAP_ERASE | MMC_CAP_CMD23;
> +	mmc->caps |= MMC_CAP_CMD23;
>  	/* MMC core transfer sizes tunable parameters */
>  	mmc->max_segs = MAX_BD_NUM;
>  	if (host->dev_comp->support_64g)
> diff --git a/drivers/mmc/host/mvsdio.c b/drivers/mmc/host/mvsdio.c
> index 203b61712601..cc0752a9df6d 100644
> --- a/drivers/mmc/host/mvsdio.c
> +++ b/drivers/mmc/host/mvsdio.c
> @@ -752,8 +752,6 @@ static int mvsd_probe(struct platform_device *pdev)
>  	if (maxfreq)
>  		mmc->f_max = maxfreq;
>  
> -	mmc->caps |= MMC_CAP_ERASE;
> -
>  	spin_lock_init(&host->lock);
>  
>  	host->base = devm_platform_ioremap_resource(pdev, 0);
> diff --git a/drivers/mmc/host/mxs-mmc.c b/drivers/mmc/host/mxs-mmc.c
> index d82674aed447..b1820def36c0 100644
> --- a/drivers/mmc/host/mxs-mmc.c
> +++ b/drivers/mmc/host/mxs-mmc.c
> @@ -634,8 +634,7 @@ static int mxs_mmc_probe(struct platform_device *pdev)
>  	/* set mmc core parameters */
>  	mmc->ops = &mxs_mmc_ops;
>  	mmc->caps = MMC_CAP_SD_HIGHSPEED | MMC_CAP_MMC_HIGHSPEED |
> -		    MMC_CAP_SDIO_IRQ | MMC_CAP_NEEDS_POLL | MMC_CAP_CMD23 |
> -		    MMC_CAP_ERASE;
> +		    MMC_CAP_SDIO_IRQ | MMC_CAP_NEEDS_POLL | MMC_CAP_CMD23;
>  
>  	host->broken_cd = of_property_read_bool(np, "broken-cd");
>  
> diff --git a/drivers/mmc/host/omap.c b/drivers/mmc/host/omap.c
> index d74e73c95fdf..33d7af7c7762 100644
> --- a/drivers/mmc/host/omap.c
> +++ b/drivers/mmc/host/omap.c
> @@ -1244,7 +1244,7 @@ static int mmc_omap_new_slot(struct mmc_omap_host *host, int id)
>  
>  	mmc->caps = 0;
>  	if (host->pdata->slots[id].wires >= 4)
> -		mmc->caps |= MMC_CAP_4_BIT_DATA | MMC_CAP_ERASE;
> +		mmc->caps |= MMC_CAP_4_BIT_DATA;
>  
>  	mmc->ops = &mmc_omap_ops;
>  	mmc->f_min = 400000;
> diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.c
> index a379c45b985c..37b8740513f5 100644
> --- a/drivers/mmc/host/omap_hsmmc.c
> +++ b/drivers/mmc/host/omap_hsmmc.c
> @@ -1922,7 +1922,7 @@ static int omap_hsmmc_probe(struct platform_device *pdev)
>  	mmc->max_req_size = mmc->max_blk_size * mmc->max_blk_count;
>  
>  	mmc->caps |= MMC_CAP_MMC_HIGHSPEED | MMC_CAP_SD_HIGHSPEED |
> -		     MMC_CAP_WAIT_WHILE_BUSY | MMC_CAP_ERASE | MMC_CAP_CMD23;
> +		     MMC_CAP_WAIT_WHILE_BUSY | MMC_CAP_CMD23;
>  
>  	mmc->caps |= mmc_pdata(host)->caps;
>  	if (mmc->caps & MMC_CAP_8_BIT_DATA)
> diff --git a/drivers/mmc/host/rtsx_pci_sdmmc.c b/drivers/mmc/host/rtsx_pci_sdmmc.c
> index 11087976ab19..5a71f6678fd3 100644
> --- a/drivers/mmc/host/rtsx_pci_sdmmc.c
> +++ b/drivers/mmc/host/rtsx_pci_sdmmc.c
> @@ -1347,7 +1347,7 @@ static void realtek_init_host(struct realtek_pci_sdmmc *host)
>  	mmc->ocr_avail = MMC_VDD_32_33 | MMC_VDD_33_34 | MMC_VDD_165_195;
>  	mmc->caps = MMC_CAP_4_BIT_DATA | MMC_CAP_SD_HIGHSPEED |
>  		MMC_CAP_MMC_HIGHSPEED | MMC_CAP_BUS_WIDTH_TEST |
> -		MMC_CAP_UHS_SDR12 | MMC_CAP_UHS_SDR25 | MMC_CAP_ERASE;
> +		MMC_CAP_UHS_SDR12 | MMC_CAP_UHS_SDR25;
>  	mmc->caps2 = MMC_CAP2_NO_PRESCAN_POWERUP | MMC_CAP2_FULL_PWR_CYCLE;
>  	mmc->max_current_330 = 400;
>  	mmc->max_current_180 = 800;
> diff --git a/drivers/mmc/host/rtsx_usb_sdmmc.c b/drivers/mmc/host/rtsx_usb_sdmmc.c
> index 81d0dfe553a8..a7084c50ad65 100644
> --- a/drivers/mmc/host/rtsx_usb_sdmmc.c
> +++ b/drivers/mmc/host/rtsx_usb_sdmmc.c
> @@ -1314,7 +1314,7 @@ static void rtsx_usb_init_host(struct rtsx_usb_sdmmc *host)
>  	mmc->caps = MMC_CAP_4_BIT_DATA | MMC_CAP_SD_HIGHSPEED |
>  		MMC_CAP_MMC_HIGHSPEED | MMC_CAP_BUS_WIDTH_TEST |
>  		MMC_CAP_UHS_SDR12 | MMC_CAP_UHS_SDR25 | MMC_CAP_UHS_SDR50 |
> -		MMC_CAP_ERASE | MMC_CAP_SYNC_RUNTIME_PM;
> +		MMC_CAP_SYNC_RUNTIME_PM;
>  	mmc->caps2 = MMC_CAP2_NO_PRESCAN_POWERUP | MMC_CAP2_FULL_PWR_CYCLE |
>  		MMC_CAP2_NO_SDIO;
>  
> diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
> index 1bb6b6796318..95cc08c1fed9 100644
> --- a/drivers/mmc/host/sdhci.c
> +++ b/drivers/mmc/host/sdhci.c
> @@ -4331,7 +4331,7 @@ int sdhci_setup_host(struct sdhci_host *host)
>  	    !host->ops->get_max_timeout_count)
>  		mmc->max_busy_timeout = 0;
>  
> -	mmc->caps |= MMC_CAP_SDIO_IRQ | MMC_CAP_ERASE | MMC_CAP_CMD23;
> +	mmc->caps |= MMC_CAP_SDIO_IRQ | MMC_CAP_CMD23;
>  	mmc->caps2 |= MMC_CAP2_SDIO_IRQ_NOTHREAD;
>  
>  	if (host->quirks & SDHCI_QUIRK_MULTIBLOCK_READ_ACMD12)
> diff --git a/drivers/mmc/host/sunxi-mmc.c b/drivers/mmc/host/sunxi-mmc.c
> index 3bfbd89bd4ab..5e95bbc51644 100644
> --- a/drivers/mmc/host/sunxi-mmc.c
> +++ b/drivers/mmc/host/sunxi-mmc.c
> @@ -1394,7 +1394,7 @@ static int sunxi_mmc_probe(struct platform_device *pdev)
>  	mmc->f_min		=   400000;
>  	mmc->f_max		= 52000000;
>  	mmc->caps	       |= MMC_CAP_MMC_HIGHSPEED | MMC_CAP_SD_HIGHSPEED |
> -				  MMC_CAP_ERASE | MMC_CAP_SDIO_IRQ;
> +				  MMC_CAP_SDIO_IRQ;
>  
>  	/*
>  	 * Some H5 devices do not have signal traces precise enough to
> diff --git a/drivers/mmc/host/tmio_mmc_core.c b/drivers/mmc/host/tmio_mmc_core.c
> index 9520bd94cf43..f31afd1c2671 100644
> --- a/drivers/mmc/host/tmio_mmc_core.c
> +++ b/drivers/mmc/host/tmio_mmc_core.c
> @@ -1128,7 +1128,7 @@ int tmio_mmc_host_probe(struct tmio_mmc_host *_host)
>  	if (ret == -EPROBE_DEFER)
>  		return ret;
>  
> -	mmc->caps |= MMC_CAP_ERASE | MMC_CAP_4_BIT_DATA | pdata->capabilities;
> +	mmc->caps |= MMC_CAP_4_BIT_DATA | pdata->capabilities;
>  	mmc->caps2 |= pdata->capabilities2;
>  	mmc->max_segs = pdata->max_segs ? : 32;
>  	mmc->max_blk_size = TMIO_MAX_BLK_SIZE;
> diff --git a/drivers/staging/greybus/sdio.c b/drivers/staging/greybus/sdio.c
> index c4b16bb5c1a4..0939f4a4c963 100644
> --- a/drivers/staging/greybus/sdio.c
> +++ b/drivers/staging/greybus/sdio.c
> @@ -67,7 +67,6 @@ static void _gb_sdio_set_host_caps(struct gb_sdio_host *host, u32 r)
>  		((r & GB_SDIO_CAP_8_BIT_DATA) ? MMC_CAP_8_BIT_DATA : 0) |
>  		((r & GB_SDIO_CAP_MMC_HS) ? MMC_CAP_MMC_HIGHSPEED : 0) |
>  		((r & GB_SDIO_CAP_SD_HS) ? MMC_CAP_SD_HIGHSPEED : 0) |
> -		((r & GB_SDIO_CAP_ERASE) ? MMC_CAP_ERASE : 0) |
>  		((r & GB_SDIO_CAP_1_2V_DDR) ? MMC_CAP_1_2V_DDR : 0) |
>  		((r & GB_SDIO_CAP_1_8V_DDR) ? MMC_CAP_1_8V_DDR : 0) |
>  		((r & GB_SDIO_CAP_POWER_OFF_CARD) ? MMC_CAP_POWER_OFF_CARD : 0) |
> diff --git a/include/linux/mmc/host.h b/include/linux/mmc/host.h
> index d4a50e5dc111..7149bab555d7 100644
> --- a/include/linux/mmc/host.h
> +++ b/include/linux/mmc/host.h
> @@ -321,7 +321,6 @@ struct mmc_host {
>  #define MMC_CAP_AGGRESSIVE_PM	(1 << 7)	/* Suspend (e)MMC/SD at idle  */
>  #define MMC_CAP_NONREMOVABLE	(1 << 8)	/* Nonremovable e.g. eMMC */
>  #define MMC_CAP_WAIT_WHILE_BUSY	(1 << 9)	/* Waits while card is busy */
> -#define MMC_CAP_ERASE		(1 << 10)	/* Allow erase/trim commands */
>  #define MMC_CAP_3_3V_DDR	(1 << 11)	/* Host supports eMMC DDR 3.3V */
>  #define MMC_CAP_1_8V_DDR	(1 << 12)	/* Host supports eMMC DDR 1.8V */
>  #define MMC_CAP_1_2V_DDR	(1 << 13)	/* Host supports eMMC DDR 1.2V */
> -- 
> 2.20.1
> 



[Index of Archives]     [Linux Memonry Technology]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux