linux-mmc.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] mmc: enable BKOPS for supported eMMC(4.41)
@ 2013-08-30 12:09 Prasanna NAVARATNA
  2013-09-02  6:24 ` Jaehoon Chung
  0 siblings, 1 reply; 8+ messages in thread
From: Prasanna NAVARATNA @ 2013-08-30 12:09 UTC (permalink / raw)
  To: linux-mmc

>From d596be94f87b86ccb372a4ae55ee478951524895 Mon Sep 17 00:00:00 2001
From: Prasanna NAVARATNA <prasanna.navaratna@broadcom.com>
Date: Fri, 30 Aug 2013 17:18:32 +0530
Subject: [PATCH] mmc: enable BKOPS for supported eMMC(4.41)

BKOPS feature is optional for eMMC 4.41. If an eMMC supports BKOPS
and is of version 4.41 then BKOPS feature is ignored and not enabled.

Enable BKOPS for such eMMC. Also a capability is added to control
the enabling of feature (only for eMMC 4.41, not valid for 4.5)

Signed-off-by: Prasanna NAVARATNA <prasanna.navaratna@broadcom.com>
---
 drivers/mmc/core/mmc.c   |   18 ++++++++++++++++++
 include/linux/mmc/host.h |    1 +
 2 files changed, 19 insertions(+), 0 deletions(-)

diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c
index 6d02012..fc44fd7 100644
--- a/drivers/mmc/core/mmc.c
+++ b/drivers/mmc/core/mmc.c
@@ -1269,6 +1269,24 @@ static int mmc_init_card(struct mmc_host *host, u32 ocr,
 	}
 
 	/*
+	 * Enable BKOPS feature (if supported and not enabled)
+	 */
+	if (!card->ext_csd.bkops_en && (host->caps2 & MMC_CAP2_BKOPS_EN) &&
+			(ext_csd[EXT_CSD_BKOPS_SUPPORT] & 0x1)) {
+		err = mmc_switch(card, EXT_CSD_CMD_SET_NORMAL,
+				EXT_CSD_BKOPS_EN, 1,
+				card->ext_csd.generic_cmd6_time);
+		if (err && err != -EBADMSG)
+			goto free_card;
+		if (err) {
+			pr_warning("%s: Enabling BKOPS failed\n",
+				   mmc_hostname(card->host));
+			err = 0;
+		} else
+			card->ext_csd.bkops_en = 1;
+	}
+
+	/*
 	 * Enable HPI feature (if supported)
 	 */
 	if (card->ext_csd.hpi) {
diff --git a/include/linux/mmc/host.h b/include/linux/mmc/host.h
index 3b0c33a..2c79487 100644
--- a/include/linux/mmc/host.h
+++ b/include/linux/mmc/host.h
@@ -281,6 +281,7 @@ struct mmc_host {
 				 MMC_CAP2_PACKED_WR)
 #define MMC_CAP2_NO_PRESCAN_POWERUP (1 << 14)	/* Don't power up before scan */
 #define MMC_CAP2_SANITIZE	(1 << 15)		/* Support Sanitize */
+#define MMC_CAP2_BKOPS_EN	(1 << 16)		/* Enable BKOPS */
 
 	mmc_pm_flag_t		pm_caps;	/* supported pm features */
 
-- 
1.7.6




^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH] mmc: enable BKOPS for supported eMMC(4.41)
  2013-08-30 12:09 [PATCH] mmc: enable BKOPS for supported eMMC(4.41) Prasanna NAVARATNA
@ 2013-09-02  6:24 ` Jaehoon Chung
  2013-09-03  8:58   ` Prasanna NAVARATNA
  0 siblings, 1 reply; 8+ messages in thread
From: Jaehoon Chung @ 2013-09-02  6:24 UTC (permalink / raw)
  To: Prasanna NAVARATNA; +Cc: linux-mmc

Hi, Prasanna. 

Why do you use MMC_CAP2_BKOPS_EN?
Maybe we had discussed about this point. i know that we can enable the BKOPS with the mmc-util.
(Actually, This code had included into my first patch. but it's removed.)

Best Regards,
Jaehoon Chung

On 08/30/2013 09:09 PM, Prasanna NAVARATNA wrote:
>>From d596be94f87b86ccb372a4ae55ee478951524895 Mon Sep 17 00:00:00 2001
> From: Prasanna NAVARATNA <prasanna.navaratna@broadcom.com>
> Date: Fri, 30 Aug 2013 17:18:32 +0530
> Subject: [PATCH] mmc: enable BKOPS for supported eMMC(4.41)
> 
> BKOPS feature is optional for eMMC 4.41. If an eMMC supports BKOPS
> and is of version 4.41 then BKOPS feature is ignored and not enabled.
> 
> Enable BKOPS for such eMMC. Also a capability is added to control
> the enabling of feature (only for eMMC 4.41, not valid for 4.5)
> 
> Signed-off-by: Prasanna NAVARATNA <prasanna.navaratna@broadcom.com>
> ---
>  drivers/mmc/core/mmc.c   |   18 ++++++++++++++++++
>  include/linux/mmc/host.h |    1 +
>  2 files changed, 19 insertions(+), 0 deletions(-)
> 
> diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c
> index 6d02012..fc44fd7 100644
> --- a/drivers/mmc/core/mmc.c
> +++ b/drivers/mmc/core/mmc.c
> @@ -1269,6 +1269,24 @@ static int mmc_init_card(struct mmc_host *host, u32 ocr,
>  	}
>  
>  	/*
> +	 * Enable BKOPS feature (if supported and not enabled)
> +	 */
> +	if (!card->ext_csd.bkops_en && (host->caps2 & MMC_CAP2_BKOPS_EN) &&
> +			(ext_csd[EXT_CSD_BKOPS_SUPPORT] & 0x1)) {
> +		err = mmc_switch(card, EXT_CSD_CMD_SET_NORMAL,
> +				EXT_CSD_BKOPS_EN, 1,
> +				card->ext_csd.generic_cmd6_time);
> +		if (err && err != -EBADMSG)
> +			goto free_card;
> +		if (err) {
> +			pr_warning("%s: Enabling BKOPS failed\n",
> +				   mmc_hostname(card->host));
> +			err = 0;
> +		} else
> +			card->ext_csd.bkops_en = 1;
> +	}
> +
> +	/*
>  	 * Enable HPI feature (if supported)
>  	 */
>  	if (card->ext_csd.hpi) {
> diff --git a/include/linux/mmc/host.h b/include/linux/mmc/host.h
> index 3b0c33a..2c79487 100644
> --- a/include/linux/mmc/host.h
> +++ b/include/linux/mmc/host.h
> @@ -281,6 +281,7 @@ struct mmc_host {
>  				 MMC_CAP2_PACKED_WR)
>  #define MMC_CAP2_NO_PRESCAN_POWERUP (1 << 14)	/* Don't power up before scan */
>  #define MMC_CAP2_SANITIZE	(1 << 15)		/* Support Sanitize */
> +#define MMC_CAP2_BKOPS_EN	(1 << 16)		/* Enable BKOPS */
>  
>  	mmc_pm_flag_t		pm_caps;	/* supported pm features */
>  
> 


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] mmc: enable BKOPS for supported eMMC(4.41)
  2013-09-02  6:24 ` Jaehoon Chung
@ 2013-09-03  8:58   ` Prasanna NAVARATNA
  2013-09-03  9:34     ` Nitin Singla
  0 siblings, 1 reply; 8+ messages in thread
From: Prasanna NAVARATNA @ 2013-09-03  8:58 UTC (permalink / raw)
  To: linux-mmc

Hello Jaehoon,

> Why do you use MMC_CAP2_BKOPS_EN?
Because BKOPS on eMMC4.41 is optional. So the capability is provided for the
platform to either enable/disable this feature (its not mandatory to always
enable BKOPS on 4.41)

> Maybe we had discussed about this point. i know that we can enable the
BKOPS with the mmc-util.
> (Actually, This code had included into my first patch. but it's removed.)
I'm not aware of this discussion and currently I'm running on eMMC4.41 and
bkops is supported but not enabled. So i suggested this patch.
Do you mean to say, right now, i can enable it using mmc-utils?
Will you please elaborate?

Thanks,
Prasanna


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] mmc: enable BKOPS for supported eMMC(4.41)
  2013-09-03  8:58   ` Prasanna NAVARATNA
@ 2013-09-03  9:34     ` Nitin Singla
  2013-09-04  2:34       ` Jaehoon Chung
  0 siblings, 1 reply; 8+ messages in thread
From: Nitin Singla @ 2013-09-03  9:34 UTC (permalink / raw)
  To: Prasanna NAVARATNA; +Cc: linux-mmc

Hi Prasanna,

MMC-Utils open source utility for enabling and disabling features.
It use ioctl defined in block/card to send commands to host.
git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc-utils.git

Thanks,
Nitin

On Tue, Sep 3, 2013 at 2:28 PM, Prasanna NAVARATNA
<prasanna.navaratna@gmail.com> wrote:
> Hello Jaehoon,
>
>> Why do you use MMC_CAP2_BKOPS_EN?
> Because BKOPS on eMMC4.41 is optional. So the capability is provided for the
> platform to either enable/disable this feature (its not mandatory to always
> enable BKOPS on 4.41)
>
>> Maybe we had discussed about this point. i know that we can enable the
> BKOPS with the mmc-util.
>> (Actually, This code had included into my first patch. but it's removed.)
> I'm not aware of this discussion and currently I'm running on eMMC4.41 and
> bkops is supported but not enabled. So i suggested this patch.
> Do you mean to say, right now, i can enable it using mmc-utils?
> Will you please elaborate?
>
> Thanks,
> Prasanna
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] mmc: enable BKOPS for supported eMMC(4.41)
  2013-09-03  9:34     ` Nitin Singla
@ 2013-09-04  2:34       ` Jaehoon Chung
  2013-09-05  9:12         ` Prasanna NAVARATNA
  0 siblings, 1 reply; 8+ messages in thread
From: Jaehoon Chung @ 2013-09-04  2:34 UTC (permalink / raw)
  To: Nitin Singla; +Cc: Prasanna NAVARATNA, linux-mmc

Hi Prasanna,

You can refer to

http://permalink.gmane.org/gmane.linux.kernel.mmc/15430

Best Regards,
Jaehoon Chung

On 09/03/2013 06:34 PM, Nitin Singla wrote:
> Hi Prasanna,
> 
> MMC-Utils open source utility for enabling and disabling features.
> It use ioctl defined in block/card to send commands to host.
> git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc-utils.git
> 
> Thanks,
> Nitin
> 
> On Tue, Sep 3, 2013 at 2:28 PM, Prasanna NAVARATNA
> <prasanna.navaratna@gmail.com> wrote:
>> Hello Jaehoon,
>>
>>> Why do you use MMC_CAP2_BKOPS_EN?
>> Because BKOPS on eMMC4.41 is optional. So the capability is provided for the
>> platform to either enable/disable this feature (its not mandatory to always
>> enable BKOPS on 4.41)
>>
>>> Maybe we had discussed about this point. i know that we can enable the
>> BKOPS with the mmc-util.
>>> (Actually, This code had included into my first patch. but it's removed.)
>> I'm not aware of this discussion and currently I'm running on eMMC4.41 and
>> bkops is supported but not enabled. So i suggested this patch.
>> Do you mean to say, right now, i can enable it using mmc-utils?
>> Will you please elaborate?
>>
>> Thanks,
>> Prasanna
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> --
> To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] mmc: enable BKOPS for supported eMMC(4.41)
  2013-09-04  2:34       ` Jaehoon Chung
@ 2013-09-05  9:12         ` Prasanna NAVARATNA
  2013-09-05 13:03           ` Jaehoon Chung
  0 siblings, 1 reply; 8+ messages in thread
From: Prasanna NAVARATNA @ 2013-09-05  9:12 UTC (permalink / raw)
  To: linux-mmc

Hello,
 
> http://permalink.gmane.org/gmane.linux.kernel.mmc/15430
This link mentions that BKOPS_EN 163bit in EXT_CSD is one-time programmable
flag but from JEDEC Standard No. 84-A441 spec, it is R/W bit. Please
re-confirm about the statement.


> > MMC-Utils open source utility for enabling and disabling features.
> > It use ioctl defined in block/card to send commands to host.
> > git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc-utils.git

I am not able to find this git in my platform repo. 
Is this mmc-utils git mandatory to have? 
What if, somebody don't have it and need to enabled BKOPS for eMMMC4.41?
Is mmc-utils the only way to enable BKOPS?

Regards,
Prasanna NAVARATNA


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] mmc: enable BKOPS for supported eMMC(4.41)
  2013-09-05  9:12         ` Prasanna NAVARATNA
@ 2013-09-05 13:03           ` Jaehoon Chung
  2013-09-05 14:12             ` Prasanna NAVARATNA
  0 siblings, 1 reply; 8+ messages in thread
From: Jaehoon Chung @ 2013-09-05 13:03 UTC (permalink / raw)
  To: Prasanna NAVARATNA; +Cc: linux-mmc

On 09/05/2013 06:12 PM, Prasanna NAVARATNA wrote:
> Hello,
>  
>> http://permalink.gmane.org/gmane.linux.kernel.mmc/15430
> This link mentions that BKOPS_EN 163bit in EXT_CSD is one-time programmable
> flag but from JEDEC Standard No. 84-A441 spec, it is R/W bit. Please
> re-confirm about the statement.
R/W bit is one-time programmable and readable. what do you mean?
> 
> 
>>> MMC-Utils open source utility for enabling and disabling features.
>>> It use ioctl defined in block/card to send commands to host.
>>> git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc-utils.git
> 
> I am not able to find this git in my platform repo. 
> Is this mmc-utils git mandatory to have? 
> What if, somebody don't have it and need to enabled BKOPS for eMMMC4.41?
> Is mmc-utils the only way to enable BKOPS?
If you want to enable the bkops, then you can use your patch at your local repo, not mainline.

Best Regards,
Jaehoon Chung
> 
> Regards,
> Prasanna NAVARATNA
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] mmc: enable BKOPS for supported eMMC(4.41)
  2013-09-05 13:03           ` Jaehoon Chung
@ 2013-09-05 14:12             ` Prasanna NAVARATNA
  0 siblings, 0 replies; 8+ messages in thread
From: Prasanna NAVARATNA @ 2013-09-05 14:12 UTC (permalink / raw)
  To: linux-mmc

Hello Jaehoon,

> R/W bit is one-time programmable and readable. what do you mean?
Yes, right. Sorry, I was confused with word one-time programmable as W bit.

> If you want to enable the bkops, then you can use your patch at your local
repo, not mainline.
OK. Thanks for the information.

Regards,
Prasanna NAVARATNA


^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2013-09-05 14:12 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-08-30 12:09 [PATCH] mmc: enable BKOPS for supported eMMC(4.41) Prasanna NAVARATNA
2013-09-02  6:24 ` Jaehoon Chung
2013-09-03  8:58   ` Prasanna NAVARATNA
2013-09-03  9:34     ` Nitin Singla
2013-09-04  2:34       ` Jaehoon Chung
2013-09-05  9:12         ` Prasanna NAVARATNA
2013-09-05 13:03           ` Jaehoon Chung
2013-09-05 14:12             ` Prasanna NAVARATNA

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).