Skip to contentSkip to conversation

simple sd card performance bug fix on OMAP

DISCUSSION Stephen Schwarm, CSDP 4 participants 6 messages May 28, 2010 – Jun 10, 2010

lore
Share & tools
lore
#0 lore raw

I have not had time to make a formal patch for this but I thought it was significant enough just to send it out. The problem is on omap systems that use omap_hsmmc.c to run sd or mmc cards. If the system you are using has an 8 wire interface, it will only use a one wire interface to 4 wire cards (eg, sd class 4 and sd class 6).

In the file driver/mmc/omap_hsmmc.c in the function omap_hsmmc_probe:
at about line 1739 change:

   if (mmc_slot(host).wires >= 8)
       mmc->caps |= MMC_CAP_8_BIT_DATA;
   else if (mmc_slot(host).wires >= 4)
       mmc->caps |= MMC_CAP_4_BIT_DATA;

to:

   if (mmc_slot(host).wires >= 8)
       mmc->caps |= MMC_CAP_8_BIT_DATA;
   if (mmc_slot(host).wires >= 4)
       mmc->caps |= w;

just delete the word "else". This sets the MMC_CAP_4_BIT_DATA bit on interfaces that have 8 wire interfaces.

We have seen a BIG performance improvement on our systems.

Steve Schwarm

begin:vcard
fn:Stephen Schwarm, CSDP
n:Schwarm, CSDP;Stephen
adr;dom:;;30 Hayden Woods;Wrentham;MA;02093
email;internet:[email protected]
tel;home:508-384-7697
tel;cell:508-922-9688
x-mozilla-html:FALSE
version:2.1
end:vcard

#1 lore raw
Quoted 9 lines

-----Original Message-----
From: [email protected] [mailto:linux-omap- [email protected]] On Behalf Of Stephen Schwarm, CSDP
Sent: Friday, May 28, 2010 2:05 PM
To: [email protected]
Subject: simple sd card performance bug fix on OMAP

Quoted 6 lines

I have not had time to make a formal patch for this but I thought it was significant enough just to send it out. The problem is on omap systems that use omap_hsmmc.c to run sd or mmc cards. If the system you are using has an 8 wire interface, it will only use a one wire interface to 4 wire cards (eg, sd class 4 and sd class 6).

A patch to fix this was already posted on LO by Kishore.

Regards,
Madhu

Quoted 22 lines

In the file driver/mmc/omap_hsmmc.c in the function omap_hsmmc_probe:
at about line 1739 change:

    if (mmc_slot(host).wires >= 8)
        mmc->caps |= MMC_CAP_8_BIT_DATA;
    else if (mmc_slot(host).wires >= 4)
        mmc->caps |= MMC_CAP_4_BIT_DATA;

to:

    if (mmc_slot(host).wires >= 8)
        mmc->caps |= MMC_CAP_8_BIT_DATA;
    if (mmc_slot(host).wires >= 4)
        mmc->caps |= w;

just delete the word "else". This sets the MMC_CAP_4_BIT_DATA bit on interfaces that have 8 wire interfaces.

We have seen a BIG performance improvement on our systems.

Steve Schwarm

#2 lore raw
In reply to Stephen Schwarm, CSDP
Quoted 22 lines · CSDP

I have not had time to make a formal patch for this but I thought it was significant enough just to send it out. The problem is on omap systems that use omap_hsmmc.c to run sd or mmc cards. If the system you are using has an 8 wire interface, it will only use a one wire interface to 4 wire cards (eg, sd class 4 and sd class 6).

In the file driver/mmc/omap_hsmmc.c in the function omap_hsmmc_probe:
at about line 1739 change:

    if (mmc_slot(host).wires >= 8)
        mmc->caps |= MMC_CAP_8_BIT_DATA;
    else if (mmc_slot(host).wires >= 4)
        mmc->caps |= MMC_CAP_4_BIT_DATA;

to:

    if (mmc_slot(host).wires >= 8)
        mmc->caps |= MMC_CAP_8_BIT_DATA;
    if (mmc_slot(host).wires >= 4)
        mmc->caps |= w;
Quoted 5 lines

just delete the word "else". This sets the MMC_CAP_4_BIT_DATA bit on interfaces that have 8 wire interfaces.

We have seen a BIG performance improvement on our systems.

Thanks for reporting this.

A similar patch was posted a while ago and is currently marked as "awaiting upstream", although it looks like it got lost again.

<https://patchwork.kernel.org/patch/78713/>

- Anand

#3 lore raw
Quoted 38 lines

-----Original Message-----
From: [email protected] [mailto:linux-omap- [email protected]] On Behalf Of Gadiyar, Anand
Sent: Friday, May 28, 2010 2:55 PM
To: Stephen Schwarm, CSDP; [email protected]
Subject: RE: simple sd card performance bug fix on OMAP

Quoted 22 lines · CSDP

I have not had time to make a formal patch for this but I thought it was significant enough just to send it out. The problem is on omap systems that use omap_hsmmc.c to run sd or mmc cards. If the system you are using has an 8 wire interface, it will only use a one wire interface to 4 wire cards (eg, sd class 4 and sd class 6).

In the file driver/mmc/omap_hsmmc.c in the function omap_hsmmc_probe:
at about line 1739 change:

    if (mmc_slot(host).wires >= 8)
        mmc->caps |= MMC_CAP_8_BIT_DATA;
    else if (mmc_slot(host).wires >= 4)
        mmc->caps |= MMC_CAP_4_BIT_DATA;

to:

    if (mmc_slot(host).wires >= 8)
        mmc->caps |= MMC_CAP_8_BIT_DATA;
    if (mmc_slot(host).wires >= 4)
        mmc->caps |= w;
Quoted 5 lines

just delete the word "else". This sets the MMC_CAP_4_BIT_DATA bit on interfaces that have 8 wire interfaces.

We have seen a BIG performance improvement on our systems.

Quoted 7 lines

Thanks for reporting this.

A similar patch was posted a while ago and is currently marked as "awaiting upstream", although it looks like it got lost again.

<https://patchwork.kernel.org/patch/78713/>

A revised version of the same patch was posted.

https://patchwork.kernel.org/patch/93519/

Tony, Can you please push this?

Regards,
Madhu

Quoted 5 lines

- Anand
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html

#4 lore raw
Quoted 43 lines · Madhusudhan
Quoted 43 lines

-----Original Message-----
From: [email protected] [mailto:linux-omap- [email protected]] On Behalf Of Gadiyar, Anand
Sent: Friday, May 28, 2010 2:55 PM
To: Stephen Schwarm, CSDP; [email protected]
Subject: RE: simple sd card performance bug fix on OMAP

Quoted 22 lines · CSDP

I have not had time to make a formal patch for this but I thought it was significant enough just to send it out. The problem is on omap systems that use omap_hsmmc.c to run sd or mmc cards. If the system you are using has an 8 wire interface, it will only use a one wire interface to 4 wire cards (eg, sd class 4 and sd class 6).

In the file driver/mmc/omap_hsmmc.c in the function omap_hsmmc_probe:
at about line 1739 change:

    if (mmc_slot(host).wires >= 8)
        mmc->caps |= MMC_CAP_8_BIT_DATA;
    else if (mmc_slot(host).wires >= 4)
        mmc->caps |= MMC_CAP_4_BIT_DATA;

to:

    if (mmc_slot(host).wires >= 8)
        mmc->caps |= MMC_CAP_8_BIT_DATA;
    if (mmc_slot(host).wires >= 4)
        mmc->caps |= w;
Quoted 5 lines

just delete the word "else". This sets the MMC_CAP_4_BIT_DATA bit on interfaces that have 8 wire interfaces.

We have seen a BIG performance improvement on our systems.

Thanks for reporting this.

A similar patch was posted a while ago and is currently marked as "awaiting upstream", although it looks like it got lost again.

Quoted 7 lines
Quoted 2 lines

<https://patchwork.kernel.org/patch/78713/>

A revised version of the same patch was posted.

https://patchwork.kernel.org/patch/93519/

Tony, Can you please push this?

This needs to get merged via linux-mmc list.

Regards,

Tony

#5 lore raw
Quoted 60 lines

-----Original Message-----
From: Tony Lindgren [mailto:[email protected]]
Sent: Thursday, June 10, 2010 1:36 AM
To: Madhusudhan
Cc: 'Gadiyar, Anand'; 'Stephen Schwarm, CSDP'; [email protected]
Subject: Re: simple sd card performance bug fix on OMAP

Quoted 9 lines · Madhusudhan
Quoted 9 lines

-----Original Message-----
From: [email protected] [mailto:linux-omap- [email protected]] On Behalf Of Gadiyar, Anand
Sent: Friday, May 28, 2010 2:55 PM
To: Stephen Schwarm, CSDP; [email protected]
Subject: RE: simple sd card performance bug fix on OMAP

Quoted 3 lines
Quoted 3 lines
Quoted 2 lines · CSDP

I have not had time to make a formal patch for this but I thought it

was

Quoted 1 line
Quoted 1 line
Quoted 1 line

significant enough just to send it out. The problem is on omap

systems

Quoted 2 lines
Quoted 2 lines
Quoted 2 lines

that use omap_hsmmc.c to run sd or mmc cards. If the system you are using has an 8 wire interface, it will only use a one wire interface

to

Quoted 3 lines
Quoted 3 lines
Quoted 3 lines

4 wire cards (eg, sd class 4 and sd class 6).

In the file driver/mmc/omap_hsmmc.c in the function

omap_hsmmc_probe:

Quoted 7 lines
Quoted 7 lines
Quoted 7 lines

at about line 1739 change:

    if (mmc_slot(host).wires >= 8)
        mmc->caps |= MMC_CAP_8_BIT_DATA;
    else if (mmc_slot(host).wires >= 4)
        mmc->caps |= MMC_CAP_4_BIT_DATA;
Quoted 8 lines
Quoted 8 lines
Quoted 8 lines

to:

    if (mmc_slot(host).wires >= 8)
        mmc->caps |= MMC_CAP_8_BIT_DATA;
    if (mmc_slot(host).wires >= 4)
        mmc->caps |= w;

just delete the word "else". This sets the MMC_CAP_4_BIT_DATA bit

on

Quoted 12 lines
Quoted 12 lines
Quoted 4 lines

interfaces that have 8 wire interfaces.

We have seen a BIG performance improvement on our systems.

Thanks for reporting this.

A similar patch was posted a while ago and is currently marked as "awaiting upstream", although it looks like it got lost again.

<https://patchwork.kernel.org/patch/78713/>

Quoted 8 lines
Quoted 5 lines

A revised version of the same patch was posted.

https://patchwork.kernel.org/patch/93519/

Tony, Can you please push this?

This needs to get merged via linux-mmc list.

Sure. We will repost it.

Regards,
Madhu

Quoted 3 lines

Regards,

Tony