[U-Boot] [PATCH] mvebu_mmc: Driver addition
Mario Schuknecht
mario.schuknecht at dresearch-fe.de
Mon Aug 25 12:53:11 CEST 2014
2014-08-25 11:55 GMT+02:00 Stefan Roese <sr at denx.de>:
> On 24.08.2014 21:31, Mario Schuknecht wrote:
>
>> In function mvebu_mmc_write notice command timeout. It is possible that a
>> command is done, but a timeout occurred.
>>
>> Enable timeout in set bus function.
>>
>> Set window registers. Without that I could not use the driver on a
>> Kirkwood
>> 88F6282 SoC.
>>
>> Set high capacity and 52MHz driver feature.
>>
>
> Thanks. A few review comments below.
>
>
> Signed-off-by: Mario Schuknecht <mario.schuknecht at dresearch-fe.de>
>> ---
>> drivers/mmc/mvebu_mmc.c | 59 ++++++++++++++++++++++++++++++
>> ++++++++++++++++++-
>> 1 file changed, 58 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/mmc/mvebu_mmc.c b/drivers/mmc/mvebu_mmc.c
>> index 9759198..53754aa 100644
>> --- a/drivers/mmc/mvebu_mmc.c
>> +++ b/drivers/mmc/mvebu_mmc.c
>> @@ -17,8 +17,12 @@
>> #include <asm/arch/kirkwood.h>
>> #include <mvebu_mmc.h>
>>
>> +DECLARE_GLOBAL_DATA_PTR;
>> +
>> #define DRIVER_NAME "MVEBU_MMC"
>>
>> +#define MVEBU_TARGET_DRAM 0
>> +
>> static void mvebu_mmc_write(u32 offs, u32 val)
>> {
>> writel(val, CONFIG_SYS_MMC_BASE + (offs));
>> @@ -164,6 +168,9 @@ static int mvebu_mmc_send_cmd(struct mmc *mmc, struct
>> mmc_cmd *cmd,
>> return TIMEOUT;
>> }
>> }
>> + if (mvebu_mmc_read(SDIO_ERR_INTR_STATUS) &
>> + (SDIO_ERR_CMD_TIMEOUT | SDIO_ERR_DATA_TIMEOUT))
>> + return TIMEOUT;
>>
>> /* Handling response */
>> if (cmd->resp_type & MMC_RSP_136) {
>> @@ -271,6 +278,7 @@ static void mvebu_mmc_set_bus(unsigned int bus)
>>
>> /* default to maximum timeout */
>> ctrl_reg |= SDIO_HOST_CTRL_TMOUT(SDIO_HOST_CTRL_TMOUT_MAX);
>> + ctrl_reg |= SDIO_HOST_CTRL_TMOUT_EN;
>>
>> ctrl_reg |= SDIO_HOST_CTRL_PUSH_PULL_EN;
>>
>> @@ -296,6 +304,53 @@ static void mvebu_mmc_set_ios(struct mmc *mmc)
>> mvebu_mmc_set_clk(mmc->clock);
>> }
>>
>> +/*
>> + * Set window register.
>> + */
>> +static void mvebu_window_setup(void)
>> +{
>> + int i;
>> +
>> + for (i = 0; i < 4; i++) {
>> + mvebu_mmc_write(WINDOW_CTRL(i), 0);
>> + mvebu_mmc_write(WINDOW_BASE(i), 0);
>> + }
>>
>
> Spaces instead of tabs for indentation. Please fix globally (checkpatch
> clean)
>
> A question. What is meant by "Spaces instead of tabs for indentation"?
In the whole file (and other files) tabs are used for indentation.
Should I create two patches. The first corrects all indentations (spaces
instead of tabs)
and the second contains the actual patch?
>
> + for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++) {
>> + u32 size, base, attrib;
>> +
>> + /* Enable DRAM bank */
>> + switch (i) {
>> + case 0:
>> + attrib = KWCPU_ATTR_DRAM_CS0;
>> + break;
>> + case 1:
>> + attrib = KWCPU_ATTR_DRAM_CS1;
>> + break;
>> + case 2:
>> + attrib = KWCPU_ATTR_DRAM_CS2;
>> + break;
>> + case 3:
>> + attrib = KWCPU_ATTR_DRAM_CS3;
>> + break;
>> + default:
>> + /* invalide bank, disable access */
>> + attrib = 0;
>> + break;
>> + }
>> +
>> + size = gd->bd->bi_dram[i].size;
>> + base = gd->bd->bi_dram[i].start;
>> + if ((size) && (attrib))
>>
>
> size and attrib don't need parentheses here.
>
You're right.
>
> + mvebu_mmc_write(WINDOW_CTRL(i),
>> + MVCPU_WIN_CTRL_DATA(size,
>> MVEBU_TARGET_DRAM,
>> + attrib, MVCPU_WIN_ENABLE));
>> + else
>> + mvebu_mmc_write(WINDOW_CTRL(i),
>> MVCPU_WIN_DISABLE);
>>
>
> Please use correct coding style for multi-line statements. So this
> should look like this:
>
> if (size && attrib) {
> mvebu_mmc_write(WINDOW_CTRL(i),
> MVCPU_WIN_CTRL_DATA(size, MVEBU_TARGET_DRAM,
> attrib, MVCPU_WIN_ENABLE));
> } else {
> mvebu_mmc_write(WINDOW_CTRL(i), MVCPU_WIN_DISABLE);
> }
>
> Ok, I'll change that.
Regards,
Mario
> Thanks,
> Stefan
>
>
More information about the U-Boot
mailing list