diff mbox

[U-Boot,1/3] mmc: fsl_esdhc: enable dat[4:7] for eMMC4.5

Message ID 1442199877-1280-1-git-send-email-yangbo.lu@freescale.com
State Superseded, archived
Delegated to: York Sun
Headers show

Commit Message

Yangbo Lu Sept. 14, 2015, 3:04 a.m. UTC
If adapter card type identification is supported for platform, we would
enable dat[4:7] for eMMC4.5 card.

Signed-off-by: Yangbo Lu <yangbo.lu@freescale.com>
Cc: York Sun <yorksun@freescale.com>
---
 board/freescale/common/qixis.h | 2 ++
 drivers/mmc/fsl_esdhc.c        | 3 +++
 2 files changed, 5 insertions(+)

Comments

York Sun Sept. 14, 2015, 3:56 p.m. UTC | #1
Yangbo,

On 09/13/2015 08:04 PM, Yangbo Lu wrote:
> If adapter card type identification is supported for platform, we would
> enable dat[4:7] for eMMC4.5 card.
> 
> Signed-off-by: Yangbo Lu <yangbo.lu@freescale.com>
> Cc: York Sun <yorksun@freescale.com>
> ---
>  board/freescale/common/qixis.h | 2 ++
>  drivers/mmc/fsl_esdhc.c        | 3 +++
>  2 files changed, 5 insertions(+)
> 
> diff --git a/board/freescale/common/qixis.h b/board/freescale/common/qixis.h
> index 51ce9c3..450cd0d 100644
> --- a/board/freescale/common/qixis.h
> +++ b/board/freescale/common/qixis.h
> @@ -127,6 +127,8 @@ void qixis_write_i2c(unsigned int reg, u8 value);
>  #define QIXIS_ESDHC_NO_ADAPTER                  0x7	/* No Card is Present*/
>  #define QIXIS_SDCLKIN		0x08
>  #define QIXIS_SDCLKOUT		0x02
> +#define QIXIS_DAT5_6_7		0X02
> +#define QIXIS_DAT4		0X01
>  #endif
>  
>  #endif
> diff --git a/drivers/mmc/fsl_esdhc.c b/drivers/mmc/fsl_esdhc.c
> index 0b37002..639ec02 100644
> --- a/drivers/mmc/fsl_esdhc.c
> +++ b/drivers/mmc/fsl_esdhc.c
> @@ -747,6 +747,9 @@ void mmc_adapter_card_type_ident(void)
>  
>  	switch (card_id) {
>  	case QIXIS_ESDHC_ADAPTER_TYPE_EMMC45:
> +		value = QIXIS_READ(brdcfg[5]);
> +		value |= (QIXIS_DAT4 | QIXIS_DAT5_6_7);
> +		QIXIS_WRITE(brdcfg[5], value);
>  		break;
>  	case QIXIS_ESDHC_ADAPTER_TYPE_SDMMC_LEGACY:
>  		break;
> 

Does any other board have this identification feature? I see the code only use
qixis. How are RDB and customer boards handled?

York
Yangbo Lu Sept. 15, 2015, 2:22 a.m. UTC | #2
Hi York,

Please see my comments below.

> -----Original Message-----
> From: Sun York-R58495
> Sent: Monday, September 14, 2015 11:57 PM
> To: Lu Yangbo-B47093; u-boot@lists.denx.de
> Subject: Re: [PATCH 1/3] mmc: fsl_esdhc: enable dat[4:7] for eMMC4.5
> 
> Yangbo,
> 
> On 09/13/2015 08:04 PM, Yangbo Lu wrote:
> > If adapter card type identification is supported for platform, we
> > would enable dat[4:7] for eMMC4.5 card.
> >
> > Signed-off-by: Yangbo Lu <yangbo.lu@freescale.com>
> > Cc: York Sun <yorksun@freescale.com>
> > ---
> >  board/freescale/common/qixis.h | 2 ++
> >  drivers/mmc/fsl_esdhc.c        | 3 +++
> >  2 files changed, 5 insertions(+)
> >
> > diff --git a/board/freescale/common/qixis.h
> > b/board/freescale/common/qixis.h index 51ce9c3..450cd0d 100644
> > --- a/board/freescale/common/qixis.h
> > +++ b/board/freescale/common/qixis.h
> > @@ -127,6 +127,8 @@ void qixis_write_i2c(unsigned int reg, u8 value);
> >  #define QIXIS_ESDHC_NO_ADAPTER                  0x7	/* No Card is
> Present*/
> >  #define QIXIS_SDCLKIN		0x08
> >  #define QIXIS_SDCLKOUT		0x02
> > +#define QIXIS_DAT5_6_7		0X02
> > +#define QIXIS_DAT4		0X01
> >  #endif
> >
> >  #endif
> > diff --git a/drivers/mmc/fsl_esdhc.c b/drivers/mmc/fsl_esdhc.c index
> > 0b37002..639ec02 100644
> > --- a/drivers/mmc/fsl_esdhc.c
> > +++ b/drivers/mmc/fsl_esdhc.c
> > @@ -747,6 +747,9 @@ void mmc_adapter_card_type_ident(void)
> >
> >  	switch (card_id) {
> >  	case QIXIS_ESDHC_ADAPTER_TYPE_EMMC45:
> > +		value = QIXIS_READ(brdcfg[5]);
> > +		value |= (QIXIS_DAT4 | QIXIS_DAT5_6_7);
> > +		QIXIS_WRITE(brdcfg[5], value);
> >  		break;
> >  	case QIXIS_ESDHC_ADAPTER_TYPE_SDMMC_LEGACY:
> >  		break;
> >
> 
> Does any other board have this identification feature? I see the code
> only use qixis. How are RDB and customer boards handled?
> 
> York
[Lu Yangbo-B47093] This feature is used for QDS boards that use SDHC Adapter card. Now only T1040QDS and T2080QDS are enabled, because we want to support SD/MMC UHS-I speed mode on these two boards in kernel and these QIXIS configuration are needed for *the Adapter*. For RDB and customer boards, they don't use Adapter card and the default configuration is ok for SD/MMC Default speed mode and High speed mode.
York Sun Sept. 15, 2015, 2:29 a.m. UTC | #3
On 09/14/2015 07:22 PM, Lu Yangbo-B47093 wrote:
> Hi York,
> 
> Please see my comments below.
> 
>> -----Original Message-----
>> From: Sun York-R58495
>> Sent: Monday, September 14, 2015 11:57 PM
>> To: Lu Yangbo-B47093; u-boot@lists.denx.de
>> Subject: Re: [PATCH 1/3] mmc: fsl_esdhc: enable dat[4:7] for eMMC4.5
>>
>> Yangbo,
>>
>> On 09/13/2015 08:04 PM, Yangbo Lu wrote:
>>> If adapter card type identification is supported for platform, we
>>> would enable dat[4:7] for eMMC4.5 card.
>>>
>>> Signed-off-by: Yangbo Lu <yangbo.lu@freescale.com>
>>> Cc: York Sun <yorksun@freescale.com>
>>> ---
>>>  board/freescale/common/qixis.h | 2 ++
>>>  drivers/mmc/fsl_esdhc.c        | 3 +++
>>>  2 files changed, 5 insertions(+)
>>>
>>> diff --git a/board/freescale/common/qixis.h
>>> b/board/freescale/common/qixis.h index 51ce9c3..450cd0d 100644
>>> --- a/board/freescale/common/qixis.h
>>> +++ b/board/freescale/common/qixis.h
>>> @@ -127,6 +127,8 @@ void qixis_write_i2c(unsigned int reg, u8 value);
>>>  #define QIXIS_ESDHC_NO_ADAPTER                  0x7	/* No Card is
>> Present*/
>>>  #define QIXIS_SDCLKIN		0x08
>>>  #define QIXIS_SDCLKOUT		0x02
>>> +#define QIXIS_DAT5_6_7		0X02
>>> +#define QIXIS_DAT4		0X01
>>>  #endif
>>>
>>>  #endif
>>> diff --git a/drivers/mmc/fsl_esdhc.c b/drivers/mmc/fsl_esdhc.c index
>>> 0b37002..639ec02 100644
>>> --- a/drivers/mmc/fsl_esdhc.c
>>> +++ b/drivers/mmc/fsl_esdhc.c
>>> @@ -747,6 +747,9 @@ void mmc_adapter_card_type_ident(void)
>>>
>>>  	switch (card_id) {
>>>  	case QIXIS_ESDHC_ADAPTER_TYPE_EMMC45:
>>> +		value = QIXIS_READ(brdcfg[5]);
>>> +		value |= (QIXIS_DAT4 | QIXIS_DAT5_6_7);
>>> +		QIXIS_WRITE(brdcfg[5], value);
>>>  		break;
>>>  	case QIXIS_ESDHC_ADAPTER_TYPE_SDMMC_LEGACY:
>>>  		break;
>>>
>>
>> Does any other board have this identification feature? I see the code
>> only use qixis. How are RDB and customer boards handled?
>>
>> York
> [Lu Yangbo-B47093] This feature is used for QDS boards that use SDHC Adapter card. Now only T1040QDS and T2080QDS are enabled, because we want to support SD/MMC UHS-I speed mode on these two boards in kernel and these QIXIS configuration are needed for *the Adapter*. For RDB and customer boards, they don't use Adapter card and the default configuration is ok for SD/MMC Default speed mode and High speed mode.
> 

I am actually more concerned how a customer board can take advantage of this.

York
Yangbo Lu Sept. 15, 2015, 3:04 a.m. UTC | #4
> On 09/14/2015 07:22 PM, Lu Yangbo-B47093 wrote:
> > Hi York,
> >
> > Please see my comments below.
> >
> >> -----Original Message-----
> >> From: Sun York-R58495
> >> Sent: Monday, September 14, 2015 11:57 PM
> >> To: Lu Yangbo-B47093; u-boot@lists.denx.de
> >> Subject: Re: [PATCH 1/3] mmc: fsl_esdhc: enable dat[4:7] for eMMC4.5
> >>
> >> Yangbo,
> >>
> >> On 09/13/2015 08:04 PM, Yangbo Lu wrote:
> >>> If adapter card type identification is supported for platform, we
> >>> would enable dat[4:7] for eMMC4.5 card.
> >>>
> >>> Signed-off-by: Yangbo Lu <yangbo.lu@freescale.com>
> >>> Cc: York Sun <yorksun@freescale.com>
> >>> ---
> >>>  board/freescale/common/qixis.h | 2 ++
> >>>  drivers/mmc/fsl_esdhc.c        | 3 +++
> >>>  2 files changed, 5 insertions(+)
> >>>
> >>> diff --git a/board/freescale/common/qixis.h
> >>> b/board/freescale/common/qixis.h index 51ce9c3..450cd0d 100644
> >>> --- a/board/freescale/common/qixis.h
> >>> +++ b/board/freescale/common/qixis.h
> >>> @@ -127,6 +127,8 @@ void qixis_write_i2c(unsigned int reg, u8 value);
> >>>  #define QIXIS_ESDHC_NO_ADAPTER                  0x7	/* No Card is
> >> Present*/
> >>>  #define QIXIS_SDCLKIN		0x08
> >>>  #define QIXIS_SDCLKOUT		0x02
> >>> +#define QIXIS_DAT5_6_7		0X02
> >>> +#define QIXIS_DAT4		0X01
> >>>  #endif
> >>>
> >>>  #endif
> >>> diff --git a/drivers/mmc/fsl_esdhc.c b/drivers/mmc/fsl_esdhc.c index
> >>> 0b37002..639ec02 100644
> >>> --- a/drivers/mmc/fsl_esdhc.c
> >>> +++ b/drivers/mmc/fsl_esdhc.c
> >>> @@ -747,6 +747,9 @@ void mmc_adapter_card_type_ident(void)
> >>>
> >>>  	switch (card_id) {
> >>>  	case QIXIS_ESDHC_ADAPTER_TYPE_EMMC45:
> >>> +		value = QIXIS_READ(brdcfg[5]);
> >>> +		value |= (QIXIS_DAT4 | QIXIS_DAT5_6_7);
> >>> +		QIXIS_WRITE(brdcfg[5], value);
> >>>  		break;
> >>>  	case QIXIS_ESDHC_ADAPTER_TYPE_SDMMC_LEGACY:
> >>>  		break;
> >>>
> >>
> >> Does any other board have this identification feature? I see the code
> >> only use qixis. How are RDB and customer boards handled?
> >>
> >> York
> > [Lu Yangbo-B47093] This feature is used for QDS boards that use SDHC
> Adapter card. Now only T1040QDS and T2080QDS are enabled, because we want
> to support SD/MMC UHS-I speed mode on these two boards in kernel and
> these QIXIS configuration are needed for *the Adapter*. For RDB and
> customer boards, they don't use Adapter card and the default
> configuration is ok for SD/MMC Default speed mode and High speed mode.
> >
> 
> I am actually more concerned how a customer board can take advantage of
> this.
> 
> York
[Lu Yangbo-B47093] This feature is used to resolve pin multiplexing and Adapter card configuration on QDS board.
RDB and custom boards don't support Adapter card, and the FPGA/CPLD is easier(don't have these register and settings), having no need to change.
So they couldn't take advantage of this... 

Thanks.

-Yangbo Lu
diff mbox

Patch

diff --git a/board/freescale/common/qixis.h b/board/freescale/common/qixis.h
index 51ce9c3..450cd0d 100644
--- a/board/freescale/common/qixis.h
+++ b/board/freescale/common/qixis.h
@@ -127,6 +127,8 @@  void qixis_write_i2c(unsigned int reg, u8 value);
 #define QIXIS_ESDHC_NO_ADAPTER                  0x7	/* No Card is Present*/
 #define QIXIS_SDCLKIN		0x08
 #define QIXIS_SDCLKOUT		0x02
+#define QIXIS_DAT5_6_7		0X02
+#define QIXIS_DAT4		0X01
 #endif
 
 #endif
diff --git a/drivers/mmc/fsl_esdhc.c b/drivers/mmc/fsl_esdhc.c
index 0b37002..639ec02 100644
--- a/drivers/mmc/fsl_esdhc.c
+++ b/drivers/mmc/fsl_esdhc.c
@@ -747,6 +747,9 @@  void mmc_adapter_card_type_ident(void)
 
 	switch (card_id) {
 	case QIXIS_ESDHC_ADAPTER_TYPE_EMMC45:
+		value = QIXIS_READ(brdcfg[5]);
+		value |= (QIXIS_DAT4 | QIXIS_DAT5_6_7);
+		QIXIS_WRITE(brdcfg[5], value);
 		break;
 	case QIXIS_ESDHC_ADAPTER_TYPE_SDMMC_LEGACY:
 		break;