[1/2] mmc: core: Enable erase/discard/trim support for all mmc hosts

Message ID 20200508112853.23525-1-ulf.hansson@linaro.org
State New
Headers show
Series
  • [1/2] mmc: core: Enable erase/discard/trim support for all mmc hosts
Related show

Commit Message

Ulf Hansson May 8, 2020, 11:28 a.m.
Step by step, mmc host drivers and the mmc core have been improved in
regards to support erase/discard/trim operations. We have now reached a
point when it no longer seems reasonable to use an opt-in approach to
enable the functionality. Therefore, let's switch to make the operations
always supported.

Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>

---
 drivers/mmc/core/core.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

-- 
2.20.1

Comments

Linus Walleij May 16, 2020, 9:27 a.m. | #1
On Fri, May 8, 2020 at 1:28 PM Ulf Hansson <ulf.hansson@linaro.org> wrote:

> Step by step, mmc host drivers and the mmc core have been improved in
> regards to support erase/discard/trim operations. We have now reached a
> point when it no longer seems reasonable to use an opt-in approach to
> enable the functionality. Therefore, let's switch to make the operations
> always supported.
>
> Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>

Excellent, the cars says it can do this, then we should use it, and
it would be so weird if hardware was so broken that it can't handle this.
We were working around something else I think?
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>

Yours,
Linus Walleij

Patch

diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c
index 4c5de6d37ac7..8d2b808e9b58 100644
--- a/drivers/mmc/core/core.c
+++ b/drivers/mmc/core/core.c
@@ -1815,8 +1815,7 @@  int mmc_erase(struct mmc_card *card, unsigned int from, unsigned int nr,
 	unsigned int rem, to = from + nr;
 	int err;
 
-	if (!(card->host->caps & MMC_CAP_ERASE) ||
-	    !(card->csd.cmdclass & CCC_ERASE))
+	if (!(card->csd.cmdclass & CCC_ERASE))
 		return -EOPNOTSUPP;
 
 	if (!card->erase_size)
@@ -1872,8 +1871,7 @@  EXPORT_SYMBOL(mmc_erase);
 
 int mmc_can_erase(struct mmc_card *card)
 {
-	if ((card->host->caps & MMC_CAP_ERASE) &&
-	    (card->csd.cmdclass & CCC_ERASE) && card->erase_size)
+	if (card->csd.cmdclass & CCC_ERASE && card->erase_size)
 		return 1;
 	return 0;
 }