[U-Boot] [PATCH 1/2] mmc: sdhci: set to INT_DATA_END when there are data

Steve Rae
2016-07-25T23:28:40Z

On Mon, Jul 25, 2016 at 4:23 PM, Steve Rae <steve.rae@raedomain.com> wrote:
> Hi Jaehoon,
>
> On Mon, Jul 25, 2016 at 3:21 AM, Lukasz Majewski <l.majewski@samsung.com> wrote:
>> Hi Jaehoon,
>>
>>> Hi All,
>>>
>>> On 07/12/2016 09:55 PM, Lukasz Majewski wrote:
>>> > Hi Jaehoon,
>>> >
>>> >> There is no data, it doesn't needs to wait for completing data
>>> >> transfer. (It seems that it can be removed.)
>>> >> Almost all timeout error is occured from stop command without data.
>>> >> After applied this patch, I hope that we don't need to increase
>>> >> timeout value anymore.
>>> >
>>> > This patch fixes issue (in a better way) for Odroid U3 write
>>> > performance (http://patchwork.ozlabs.org/patch/646932/) and hence
>>> > should be used.
>>> >
>>>
>>> Is there any other opinion for this patch?
>>> Who is maintaining u-boot-mmc? Is Pantelis still maintaining
>>> u-boot-mmc?
>>>
>>> Who can apply this patch and patch relevant to mmc?
>>
>> To be honest, I do look forward to see this patch included to u-boot
>> master branch.
>>
>> Addition of some extra Odroid U3 tests hinge on it.
>>
>>>
>>> Best Regards,
>>> Jaehoon Chung
>>>
>>> >
>>> >>
>>> >> Signed-off-by: Jaehoon Chung <jh80.chung@samsung.com>
>>> >> ---
>>> >> drivers/mmc/sdhci.c | 3 ++-
>>> >> 1 file changed, 2 insertions(+), 1 deletion(-)
>>> >>
>>> >> diff --git a/drivers/mmc/sdhci.c b/drivers/mmc/sdhci.c
>>> >> index 604f18d..0a38a56 100644
>>> >> --- a/drivers/mmc/sdhci.c
>>> >> +++ b/drivers/mmc/sdhci.c
>>> >> @@ -175,7 +175,8 @@ static int sdhci_send_command(struct mmc *mmc,
>>> >> struct mmc_cmd *cmd, flags = SDHCI_CMD_RESP_LONG;
>>> >> else if (cmd->resp_type & MMC_RSP_BUSY) {
>>> >> flags = SDHCI_CMD_RESP_SHORT_BUSY;
>>> >> - mask |= SDHCI_INT_DATA_END;
>>> >> + if (data)
>>> >> + mask |= SDHCI_INT_DATA_END;
>>> >> } else
>>> >> flags = SDHCI_CMD_RESP_SHORT;
>>> >>
>>> >
>>> > Acked-by: Lukasz Majewski <l.majewski@samsung.com>
>>> > Tested-by: Lukasz Majewski <l.majewski@samsung.com>
>>> >
>>> > Test HW: Odroid U3 (Exynos4):
>>> >
>>> > Odroid # ext4load mmc 0:2 0x41000000 dat_31M.img
>>> > 32505856 bytes read in 1471 ms (21.1 MiB/s)
>>> > Odroid # ext4write mmc 0:2 0x41000000 /dat_w55.img 0x1f00000
>>> > File System is consistent
>>> > update journal finished
>>> > 32505856 bytes written in 3528 ms (8.8 MiB/s)
>>> >
>>> > Performance improvement is even better than with previously proposed
>>> > patches.
>>> >
>>> > Test HW: Odroid XU3 (Exynos5):
>>> >
>>> > ODROID-XU3 # ext4load mmc 0:2 0x41000000 dat_31M.img
>>> > 32505856 bytes read in 6309 ms (4.9 MiB/s)
>>> > ODROID-XU3 # ext4write mmc 0:2 0x41000000 /dat_w1.img 0x1f00000
>>> > File System is consistent
>>> > update journal finished
>>> > 32505856 bytes written in 4884 ms (6.3 MiB/s)
>>> >
>>> >
>>>
>>
>>
>>
>> --
>> Best regards,
>>
>> Lukasz Majewski
>>
>> Samsung R&D Institute Poland (SRPOL) | Linux Platform Group
>
> with this change, I can also set the following back to 100:
>
> diff --git a/drivers/mmc/sdhci.c b/drivers/mmc/sdhci.c
> index de8d8ea..d593dc6 100644
> --- a/drivers/mmc/sdhci.c
> +++ b/drivers/mmc/sdhci.c
> @@ -128,7 +128,7 @@ static int sdhci_transfer_data(struct sdhci_host
> *host, struct mmc_data *data,
> #define CONFIG_SDHCI_CMD_MAX_TIMEOUT 3200
> #endif
> #define CONFIG_SDHCI_CMD_DEFAULT_TIMEOUT 100
> -#define SDHCI_READ_STATUS_TIMEOUT 1000
> +#define SDHCI_READ_STATUS_TIMEOUT 100
>
> #ifdef CONFIG_DM_MMC_OPS
> static int sdhci_send_command(struct udevice *dev, struct mmc_cmd *cmd,
>
> And it still works on my board ! Thanks !
>
> Tested-by: Steve Rae <steve.rae@raedomain.com> [Test HW: bcm235xx board]

patchworks added a new entry; so try again:
Tested-by: Steve Rae <steve.rae@raedomain.com> [Test HW: bcm235xx board]