Skip to contentSkip to conversation

drivers/mfd/sh_mobile_sdhi.c: uses optimized block transfer

PATCH In review Markus Pietrek 2 participants 4 messages Jul 15, 2010 – Jul 20, 2010

Subsystems (4)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 drivers/mfd/sh_mobile_sdhi.c: uses optimized block transfer

On the SH7723, these settings improve PIO reads from 4MB/s to 13MB/s and writes from 1MB/s to 4.1MB/s

---
 drivers/mfd/sh_mobile_sdhi.c |    9 +++++++++
 drivers/mmc/host/tmio_mmc.c  |   14 ++++++++++++++
 include/linux/mfd/tmio.h     |    9 +++++++++
 3 files changed, 32 insertions(+), 0 deletions(-)
drivers/mfd/sh_mobile_sdhi.c +9 -0
index cd16459..0bd80a3 100644
@@ -107,6 +107,15 @@ static int __init sh_mobile_sdhi_probe(struct platform_device *pdev)
        mmc_data->hclk = clk_get_rate(priv->clk);
        mmc_data->set_pwr = sh_mobile_sdhi_set_pwr;
        mmc_data->capabilities = MMC_CAP_MMC_HIGHSPEED;
+
+       /* values are taken from the firmware based sh_sdhi.c driver */
+       mmc_data->max_hw_segs   = 32;
+       mmc_data->max_phys_segs = 32;
+       mmc_data->max_blk_count = 65535; /* actually it's 65536, but the value 65536 is handled differently and we want to keep the code simple */
+       mmc_data->max_req_size  = 131072;
+       mmc_data->max_seg_size  = mmc_data->max_req_size;
+       mmc_data->max_blk_size  = mmc_data->max_blk_size;
+
        if (p) {
                mmc_data->flags = p->tmio_flags;
                mmc_data->ocr_mask = p->tmio_ocr_mask;
drivers/mmc/host/tmio_mmc.c +14 -0
index ee7d0a5..cdb3a6a 100644
@@ -847,6 +847,20 @@ static int __devinit tmio_mmc_probe(struct platform_device *dev)
        mmc->caps |= pdata->capabilities;
        mmc->f_max = pdata->hclk;
        mmc->f_min = mmc->f_max / 512;
+
+       if (pdata->max_hw_segs)
+               mmc->max_hw_segs = pdata->max_hw_segs;
+       if (pdata->max_phys_segs)
+               mmc->max_phys_segs = pdata->max_phys_segs;
+       if (pdata->max_seg_size)
+               mmc->max_seg_size = pdata->max_seg_size;
+       if (pdata->max_req_size)
+               mmc->max_req_size = pdata->max_req_size;
+       if (pdata->max_blk_size)
+               mmc->max_blk_size = pdata->max_blk_size;
+       if (pdata->max_blk_count)
+               mmc->max_blk_count = pdata->max_blk_count;
+
        if (pdata->ocr_mask)
                mmc->ocr_avail = pdata->ocr_mask;
        else
include/linux/mfd/tmio.h +9 -0
index f07425b..4eb7358 100644
@@ -71,6 +71,15 @@ struct tmio_mmc_data {
        unsigned long                   capabilities;
        unsigned long                   flags;
        u32                             ocr_mask;       /* available voltages */
+
+       /* overrides for "struct mmc_host" variables */
+       unsigned int            max_seg_size;
+       unsigned short          max_hw_segs;
+       unsigned short          max_phys_segs;
+       unsigned int            max_req_size;
+       unsigned int            max_blk_size;
+       unsigned int            max_blk_count;
+
        struct tmio_mmc_dma             *dma;
        void (*set_pwr)(struct platform_device *host, int state);
        void (*set_clk_div)(struct platform_device *host, int state);

--
1.7.0.4

_____________________________________

Amtsgericht Mannheim
HRB 110 300
Geschäftsführer: Dieter Baur, Ramona Maurer
_____________________________________

Important Note:
- This e-mail may contain trade secrets or privileged, undisclosed or otherwise confidential information.
- If you have received this e-mail in error, you are hereby notified that any review, copying or distribution of it is strictly prohibited.
- Please inform us immediately and destroy the original transmittal.

Thank you for your cooperation.

#1 lore raw

Re: [PATCH] drivers/mfd/sh_mobile_sdhi.c: uses optimized block

Hi Markus

I tried the test of this patch.
However, I was not able to apply a patch.
Is this patch a patch for which kernel(commit number)?

cheers,
Goda

Quoted 96 lines · Markus Pietrek

On the SH7723, these settings improve PIO reads from 4MB/s to 13MB/s and writes from 1MB/s to 4.1MB/s

---
 drivers/mfd/sh_mobile_sdhi.c |    9 +++++++++
 drivers/mmc/host/tmio_mmc.c  |   14 ++++++++++++++
 include/linux/mfd/tmio.h     |    9 +++++++++
 3 files changed, 32 insertions(+), 0 deletions(-)
drivers/mfd/sh_mobile_sdhi.c +9 -0
index cd16459..0bd80a3 100644
@@ -107,6 +107,15 @@ static int __init sh_mobile_sdhi_probe(struct platform_device *pdev)
        mmc_data->hclk = clk_get_rate(priv->clk);
        mmc_data->set_pwr = sh_mobile_sdhi_set_pwr;
        mmc_data->capabilities = MMC_CAP_MMC_HIGHSPEED;
+
+       /* values are taken from the firmware based sh_sdhi.c driver */
+       mmc_data->max_hw_segs   = 32;
+       mmc_data->max_phys_segs = 32;
+       mmc_data->max_blk_count = 65535; /* actually it's 65536, but the value 65536 is handled differently and we want to keep the code simple */
+       mmc_data->max_req_size  = 131072;
+       mmc_data->max_seg_size  = mmc_data->max_req_size;
+       mmc_data->max_blk_size  = mmc_data->max_blk_size;
+
        if (p) {
                mmc_data->flags = p->tmio_flags;
                mmc_data->ocr_mask = p->tmio_ocr_mask;
drivers/mmc/host/tmio_mmc.c +14 -0
index ee7d0a5..cdb3a6a 100644
@@ -847,6 +847,20 @@ static int __devinit tmio_mmc_probe(struct platform_device *dev)
        mmc->caps |= pdata->capabilities;
        mmc->f_max = pdata->hclk;
        mmc->f_min = mmc->f_max / 512;
+
+       if (pdata->max_hw_segs)
+               mmc->max_hw_segs = pdata->max_hw_segs;
+       if (pdata->max_phys_segs)
+               mmc->max_phys_segs = pdata->max_phys_segs;
+       if (pdata->max_seg_size)
+               mmc->max_seg_size = pdata->max_seg_size;
+       if (pdata->max_req_size)
+               mmc->max_req_size = pdata->max_req_size;
+       if (pdata->max_blk_size)
+               mmc->max_blk_size = pdata->max_blk_size;
+       if (pdata->max_blk_count)
+               mmc->max_blk_count = pdata->max_blk_count;
+
        if (pdata->ocr_mask)
                mmc->ocr_avail = pdata->ocr_mask;
        else
include/linux/mfd/tmio.h +9 -1
index f07425b..4eb7358 100644
@@ -71,6 +71,15 @@ struct tmio_mmc_data {
        unsigned long                   capabilities;
        unsigned long                   flags;
        u32                             ocr_mask;       /* available voltages */
+
+       /* overrides for "struct mmc_host" variables */
+       unsigned int            max_seg_size;
+       unsigned short          max_hw_segs;
+       unsigned short          max_phys_segs;
+       unsigned int            max_req_size;
+       unsigned int            max_blk_size;
+       unsigned int            max_blk_count;
+
        struct tmio_mmc_dma             *dma;
        void (*set_pwr)(struct platform_device *host, int state);
        void (*set_clk_div)(struct platform_device *host, int state);
--

1.7.0.4

_____________________________________

Amtsgericht Mannheim
HRB 110 300
Geschäftsführer: Dieter Baur, Ramona Maurer
_____________________________________

Important Note:
- This e-mail may contain trade secrets or privileged, undisclosed or otherwise confidential information.
- If you have received this e-mail in error, you are hereby notified that any review, copying or distribution of it is strictly prohibited.
- Please inform us immediately and destroy the original transmittal.

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

#2 lore raw

AW: [PATCH] drivers/mfd/sh_mobile_sdhi.c: uses optimized block

In reply to Markus Pietrek

Hello Yusuke,

I did pull the kernel from sh-2.6.git on 13.07.10

The latest commits were
9b0d8f82dd4d4ae53050a800e4ce5dd2b1828ad7 "sound/soc/sh/siu: Fixed undefined dma_length of scatter gather list" 36239c6704b71da7fb8e2a9429e159a84d0c5a3e "sh: add sh7757lcr board support"

Bye,
Markus

Quoted 115 lines

-----Ursprüngliche Nachricht-----
Von: [email protected] [mailto:[email protected]]
Gesendet: Dienstag, 20. Juli 2010 08:33
An: Pietrek, Markus
Cc: [email protected]; [email protected]
Betreff: Re: [PATCH] drivers/mfd/sh_mobile_sdhi.c: uses optimized block transfer settings for improved performance

Hi Markus

I tried the test of this patch.
However, I was not able to apply a patch.
Is this patch a patch for which kernel(commit number)?

cheers,
Goda

Quoted 1 line · Markus Pietrek

On the SH7723, these settings improve PIO reads from 4MB/s to 13MB/s

and writes from 1MB/s to 4.1MB/s

Review

Quoted 9 lines
---
 drivers/mfd/sh_mobile_sdhi.c |    9 +++++++++
 drivers/mmc/host/tmio_mmc.c  |   14 ++++++++++++++
 include/linux/mfd/tmio.h     |    9 +++++++++
 3 files changed, 32 insertions(+), 0 deletions(-)
(quoted diff) +0 -0

b/drivers/mfd/sh_mobile_sdhi.c

drivers/mfd/sh_mobile_sdhi.c static int __init sh_mobile_sdhi_probe(struct

Quoted 4 lines

index cd16459..0bd80a3 100644

drivers/mfd/sh_mobile_sdhi.c +0 -0
@@ -107,6 +107,15 @@ static int __init sh_mobile_sdhi_probe(struct

platform_device *pdev)

drivers/mfd/sh_mobile_sdhi.c static int __init sh_mobile_sdhi_probe(struct platform_device *pdev)

Quoted 5 lines
drivers/mfd/sh_mobile_sdhi.c +2 -0
        mmc_data->hclk = clk_get_rate(priv->clk);
        mmc_data->set_pwr = sh_mobile_sdhi_set_pwr;
        mmc_data->capabilities = MMC_CAP_MMC_HIGHSPEED;
+
+       /* values are taken from the firmware based sh_sdhi.c driver

*/

drivers/mfd/sh_mobile_sdhi.c static int __init sh_mobile_sdhi_probe(struct platform_device *pdev)

Quoted 3 lines
drivers/mfd/sh_mobile_sdhi.c +3 -0
+       mmc_data->max_hw_segs   = 32;
+       mmc_data->max_phys_segs = 32;
+       mmc_data->max_blk_count = 65535; /* actually it's 65536, but

the value 65536 is handled differently and we want to keep the code simple */

Review

Quoted 8 lines
drivers/mfd/sh_mobile_sdhi.c +4 -0
+       mmc_data->max_req_size  = 131072;
+       mmc_data->max_seg_size  = mmc_data->max_req_size;
+       mmc_data->max_blk_size  = mmc_data->max_blk_size;
+
        if (p) {
                mmc_data->flags = p->tmio_flags;
                mmc_data->ocr_mask = p->tmio_ocr_mask;
(quoted diff) +0 -0

b/drivers/mmc/host/tmio_mmc.c

drivers/mmc/host/tmio_mmc.c static int __devinit tmio_mmc_probe(struct

Quoted 4 lines

index ee7d0a5..cdb3a6a 100644

drivers/mmc/host/tmio_mmc.c +0 -0
@@ -847,6 +847,20 @@ static int __devinit tmio_mmc_probe(struct

platform_device *dev)

Quoted 25 lines
drivers/mmc/host/tmio_mmc.c +14 -0
        mmc->caps |= pdata->capabilities;
        mmc->f_max = pdata->hclk;
        mmc->f_min = mmc->f_max / 512;
+
+       if (pdata->max_hw_segs)
+               mmc->max_hw_segs = pdata->max_hw_segs;
+       if (pdata->max_phys_segs)
+               mmc->max_phys_segs = pdata->max_phys_segs;
+       if (pdata->max_seg_size)
+               mmc->max_seg_size = pdata->max_seg_size;
+       if (pdata->max_req_size)
+               mmc->max_req_size = pdata->max_req_size;
+       if (pdata->max_blk_size)
+               mmc->max_blk_size = pdata->max_blk_size;
+       if (pdata->max_blk_count)
+               mmc->max_blk_count = pdata->max_blk_count;
+
        if (pdata->ocr_mask)
                mmc->ocr_avail = pdata->ocr_mask;
        else
include/linux/mfd/tmio.h +0 -0
index f07425b..4eb7358 100644

include/linux/mfd/tmio.h struct tmio_mmc_data { · line 73

Quoted 3 lines
include/linux/mfd/tmio.h +0 -0
@@ -71,6 +71,15 @@ struct tmio_mmc_data {
        unsigned long                   capabilities;
        unsigned long                   flags;
        u32                             ocr_mask;       /* available

voltages */

Quoted 18 lines
include/linux/mfd/tmio.h +9 -1
+
+       /* overrides for "struct mmc_host" variables */
+       unsigned int            max_seg_size;
+       unsigned short          max_hw_segs;
+       unsigned short          max_phys_segs;
+       unsigned int            max_req_size;
+       unsigned int            max_blk_size;
+       unsigned int            max_blk_count;
+
        struct tmio_mmc_dma             *dma;
        void (*set_pwr)(struct platform_device *host, int state);
        void (*set_clk_div)(struct platform_device *host, int state);
--

1.7.0.4

_____________________________________

Quoted 7 lines

Amtsgericht Mannheim
HRB 110 300
Geschäftsführer: Dieter Baur, Ramona Maurer
_____________________________________

Important Note:
- This e-mail may contain trade secrets or privileged, undisclosed or

otherwise confidential information.

Quoted 11 lines
Quoted 1 line

- If you have received this e-mail in error, you are hereby notified

that any review, copying or distribution of it is strictly prohibited.

Quoted 5 lines

- Please inform us immediately and destroy the original transmittal.

Thank you for your cooperation.
--
To unsubscribe from this list: send the line "unsubscribe linux-sh"

in

Quoted 3 lines

the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html

_____________________________________

Amtsgericht Mannheim
HRB 110 300
Geschäftsführer: Dieter Baur, Ramona Maurer
_____________________________________

Important Note:
- This e-mail may contain trade secrets or privileged, undisclosed or otherwise confidential information.
- If you have received this e-mail in error, you are hereby notified that any review, copying or distribution of it is strictly prohibited.
- Please inform us immediately and destroy the original transmittal.

Thank you for your cooperation.

#3 lore raw

Re: AW: [PATCH] drivers/mfd/sh_mobile_sdhi.c: uses optimized block

In reply to Markus Pietrek

Hi Markus

As for your patch, all tabs are converted into the space.

Refer to : Documentation/email-clients.txt

cheers,
Goda

Quoted 152 lines · Markus

Hello Yusuke,

I did pull the kernel from sh-2.6.git on 13.07.10

The latest commits were
9b0d8f82dd4d4ae53050a800e4ce5dd2b1828ad7 "sound/soc/sh/siu: Fixed undefined dma_length of scatter gather list" 36239c6704b71da7fb8e2a9429e159a84d0c5a3e "sh: add sh7757lcr board support"

Bye,
Markus

Quoted 114 lines

-----Ursprüngliche Nachricht-----
Von: [email protected] [mailto:[email protected]]
Gesendet: Dienstag, 20. Juli 2010 08:33
An: Pietrek, Markus
Cc: [email protected]; [email protected]
Betreff: Re: [PATCH] drivers/mfd/sh_mobile_sdhi.c: uses optimized block transfer settings for improved performance

Hi Markus

I tried the test of this patch.
However, I was not able to apply a patch.
Is this patch a patch for which kernel(commit number)?

cheers,
Goda

Quoted 1 line · Markus Pietrek

On the SH7723, these settings improve PIO reads from 4MB/s to 13MB/s

and writes from 1MB/s to 4.1MB/s

Review

Quoted 8 lines
---
 drivers/mfd/sh_mobile_sdhi.c |    9 +++++++++
 drivers/mmc/host/tmio_mmc.c  |   14 ++++++++++++++
 include/linux/mfd/tmio.h     |    9 +++++++++
 3 files changed, 32 insertions(+), 0 deletions(-)
(quoted diff) +0 -0

b/drivers/mfd/sh_mobile_sdhi.c

drivers/mfd/sh_mobile_sdhi.c static int __init sh_mobile_sdhi_probe(struct

Quoted 4 lines

index cd16459..0bd80a3 100644

drivers/mfd/sh_mobile_sdhi.c +0 -0
@@ -107,6 +107,15 @@ static int __init sh_mobile_sdhi_probe(struct

platform_device *pdev)

drivers/mfd/sh_mobile_sdhi.c static int __init sh_mobile_sdhi_probe(struct platform_device *pdev)

Quoted 5 lines
drivers/mfd/sh_mobile_sdhi.c +2 -0
        mmc_data->hclk = clk_get_rate(priv->clk);
        mmc_data->set_pwr = sh_mobile_sdhi_set_pwr;
        mmc_data->capabilities = MMC_CAP_MMC_HIGHSPEED;
+
+       /* values are taken from the firmware based sh_sdhi.c driver

*/

drivers/mfd/sh_mobile_sdhi.c static int __init sh_mobile_sdhi_probe(struct platform_device *pdev)

Quoted 3 lines
drivers/mfd/sh_mobile_sdhi.c +3 -0
+       mmc_data->max_hw_segs   = 32;
+       mmc_data->max_phys_segs = 32;
+       mmc_data->max_blk_count = 65535; /* actually it's 65536, but

the value 65536 is handled differently and we want to keep the code simple */

Review

Quoted 8 lines
drivers/mfd/sh_mobile_sdhi.c +4 -0
+       mmc_data->max_req_size  = 131072;
+       mmc_data->max_seg_size  = mmc_data->max_req_size;
+       mmc_data->max_blk_size  = mmc_data->max_blk_size;
+
        if (p) {
                mmc_data->flags = p->tmio_flags;
                mmc_data->ocr_mask = p->tmio_ocr_mask;
(quoted diff) +0 -0

b/drivers/mmc/host/tmio_mmc.c

drivers/mmc/host/tmio_mmc.c static int __devinit tmio_mmc_probe(struct

Quoted 4 lines

index ee7d0a5..cdb3a6a 100644

drivers/mmc/host/tmio_mmc.c +0 -0
@@ -847,6 +847,20 @@ static int __devinit tmio_mmc_probe(struct

platform_device *dev)

Quoted 25 lines
drivers/mmc/host/tmio_mmc.c +14 -0
        mmc->caps |= pdata->capabilities;
        mmc->f_max = pdata->hclk;
        mmc->f_min = mmc->f_max / 512;
+
+       if (pdata->max_hw_segs)
+               mmc->max_hw_segs = pdata->max_hw_segs;
+       if (pdata->max_phys_segs)
+               mmc->max_phys_segs = pdata->max_phys_segs;
+       if (pdata->max_seg_size)
+               mmc->max_seg_size = pdata->max_seg_size;
+       if (pdata->max_req_size)
+               mmc->max_req_size = pdata->max_req_size;
+       if (pdata->max_blk_size)
+               mmc->max_blk_size = pdata->max_blk_size;
+       if (pdata->max_blk_count)
+               mmc->max_blk_count = pdata->max_blk_count;
+
        if (pdata->ocr_mask)
                mmc->ocr_avail = pdata->ocr_mask;
        else
include/linux/mfd/tmio.h +0 -0
index f07425b..4eb7358 100644

include/linux/mfd/tmio.h struct tmio_mmc_data { · line 73

Quoted 3 lines
include/linux/mfd/tmio.h +0 -0
@@ -71,6 +71,15 @@ struct tmio_mmc_data {
        unsigned long                   capabilities;
        unsigned long                   flags;
        u32                             ocr_mask;       /* available

voltages */

Quoted 18 lines
include/linux/mfd/tmio.h +9 -1
+
+       /* overrides for "struct mmc_host" variables */
+       unsigned int            max_seg_size;
+       unsigned short          max_hw_segs;
+       unsigned short          max_phys_segs;
+       unsigned int            max_req_size;
+       unsigned int            max_blk_size;
+       unsigned int            max_blk_count;
+
        struct tmio_mmc_dma             *dma;
        void (*set_pwr)(struct platform_device *host, int state);
        void (*set_clk_div)(struct platform_device *host, int state);
--

1.7.0.4

_____________________________________

Quoted 7 lines

Amtsgericht Mannheim
HRB 110 300
Geschäftsführer: Dieter Baur, Ramona Maurer
_____________________________________

Important Note:
- This e-mail may contain trade secrets or privileged, undisclosed or

otherwise confidential information.

Quoted 11 lines
Quoted 1 line

- If you have received this e-mail in error, you are hereby notified

that any review, copying or distribution of it is strictly prohibited.

Quoted 5 lines

- Please inform us immediately and destroy the original transmittal.

Thank you for your cooperation.
--
To unsubscribe from this list: send the line "unsubscribe linux-sh"

in

Quoted 3 lines

the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html

_____________________________________

Amtsgericht Mannheim
HRB 110 300
Geschäftsführer: Dieter Baur, Ramona Maurer
_____________________________________

Important Note:
- This e-mail may contain trade secrets or privileged, undisclosed or otherwise confidential information.
- If you have received this e-mail in error, you are hereby notified that any review, copying or distribution of it is strictly prohibited.
- Please inform us immediately and destroy the original transmittal.

Thank you for your cooperation.