From: Jaehoon Chung <jh80.chung@samsung.com>
To: James Hogan <james.hogan@imgtec.com>
Cc: Yuvaraj Kumar <yuvaraj.cd@gmail.com>,
linux-mmc <linux-mmc@vger.kernel.org>,
linux-samsung-soc@vger.kernel.org,
"Chris Ball (laptop.org)" <cjb@laptop.org>,
Will <will.newton@imgtec.com>,
kgene.kim@samsung.com,
"Girish K S (Linaro)" <girish.shivananjappa@linaro.org>,
"Thomas Abraham (Linaro)" <thomas.abraham@linaro.org>,
patches@linaro.org, Yuvaraj CD <yuvaraj.cd@samsung.com>,
Seungwon Jeon <tgih.jun@samsung.com>
Subject: Re: [PATCH] mmc: dw_mmc: enable controller interrupt before calling mmc_start_host
Date: Wed, 21 Nov 2012 12:21:00 +0900 [thread overview]
Message-ID: <50AC489C.7070002@samsung.com> (raw)
In-Reply-To: <50AB4FDF.7080602@imgtec.com>
Hi All,
Well, i didn't find the James's error message.
But i confused about the clock value.
Bus speed : 99840000Hz
request : 200000Hz
Div : 250
If bus_speed is divided with div, then actual value should be 399360Hz.
But this log is produced 199680Hz. What's wrong?
I think this message can be confused to debug.
Best Regards,
Jaehoon Chung
On 11/20/2012 06:39 PM, James Hogan wrote:
> Hi Yuvaraj,
>
> On 20/11/12 05:35, Yuvaraj Kumar wrote:
>> Its not sufficient.In my case, sdio_reset command was submitted to
>> dw_mmc controller before interrupts are enabled.
>> By looking at your log,it seems something wrong with frequency set by
>> your U-boot.
>
> I'm not using U-boot, I'm booting with JTAG. In any case it works if I
> revert your patch so I think the clocks are fine. I'll continue
> debugging it and see if I can figure out what's happening.
>
> Cheers
> James
>
>>
>> Best Regards
>> Yuvaraj
>>
>> On Mon, Nov 19, 2012 at 6:50 PM, James Hogan <james.hogan@imgtec.com> wrote:
>>> On 19/11/12 13:01, Yuvaraj CD wrote:
>>>> As mmc_start_host is getting called before enabling the dw_mmc controller
>>>> interrupt, there is a problem of missing the SDMMC_INT_CMD_DONE for the
>>>> very first command sent by the sdio_reset.
>>>> This problem occurs only when we disable MMC debugging i.e, MMC_DEBUG [=n].
>>>> Hence this patch enables the dw_mmc controller interrupt before mmc_start_host.
>>>>
>>>> Signed-off-by: Yuvaraj CD <yuvaraj.cd@samsung.com>
>>>
>>> Hi Yuvaraj,
>>>
>>> I get the following errors after this patch is applied
>>> (2da1d7f2948900cd50d38643db39f790edb3cc96, merged in v3.7-rc5) and the
>>> driver doesn't work as a result. Reverting it fixes the problem.
>>>
>>> mmc0: error -110 whilst initialising SD card
>>> mmc_host mmc0: Bus speed (slot 0) = 99840000Hz (slot req 300000Hz, actual 298922HZ div = 167)
>>> mmc0: error -110 whilst initialising SD card
>>> mmc_host mmc0: Bus speed (slot 0) = 99840000Hz (slot req 200000Hz, actual 199680HZ div = 250)
>>> mmc0: error -110 whilst initialising SD card
>>> mmc_host mmc0: Bus speed (slot 0) = 99840000Hz (slot req 195765Hz, actual 195764HZ div = 255)
>>> mmc0: error -110 whilst initialising SD card
>>> mmc_host mmc0: Bus speed (slot 0) = 99840000Hz (slot req 400000Hz, actual 399360HZ div = 125)
>>> mmc0: error -110 whilst initialising SD card
>>> mmc_host mmc0: Bus speed (slot 0) = 99840000Hz (slot req 300000Hz, actual 298922HZ div = 167)
>>> mmc0: error -110 whilst initialising SD card
>>> mmc_host mmc0: Bus speed (slot 0) = 99840000Hz (slot req 200000Hz, actual 199680HZ div = 250)
>>> mmc0: error -110 whilst initialising SD card
>>> mmc_host mmc0: Bus speed (slot 0) = 99840000Hz (slot req 195765Hz, actual 195764HZ div = 255)
>>> mmc0: error -110 whilst initialising SD card
>>>
>>> The interrupts are already cleared and disabled at the beginning of the
>>> probe function, so is the following sufficient (after reverting your
>>> patch) to fix the problem you've been observing?
>>>
>>> Thanks
>>> James
>>>
>>> diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
>>> index ec9b5a8..2be9899 100644
>>> --- a/drivers/mmc/host/dw_mmc.c
>>> +++ b/drivers/mmc/host/dw_mmc.c
>>> @@ -2266,7 +2266,6 @@ int dw_mci_probe(struct dw_mci *host)
>>> * Enable interrupts for command done, data over, data empty, card det,
>>> * receive ready and error such as transmit, receive timeout, crc error
>>> */
>>> - mci_writel(host, RINTSTS, 0xFFFFFFFF);
>>> mci_writel(host, INTMASK, SDMMC_INT_CMD_DONE | SDMMC_INT_DATA_OVER |
>>> SDMMC_INT_TXDR | SDMMC_INT_RXDR |
>>> DW_MCI_ERROR_FLAGS | SDMMC_INT_CD);
>>>
>>>
>>>> ---
>>>> drivers/mmc/host/dw_mmc.c | 29 +++++++++++++++--------------
>>>> 1 file changed, 15 insertions(+), 14 deletions(-)
>>>>
>>>> diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
>>>> index a23af77..729c031 100644
>>>> --- a/drivers/mmc/host/dw_mmc.c
>>>> +++ b/drivers/mmc/host/dw_mmc.c
>>>> @@ -2233,6 +2233,21 @@ int dw_mci_probe(struct dw_mci *host)
>>>> else
>>>> host->num_slots = ((mci_readl(host, HCON) >> 1) & 0x1F) + 1;
>>>>
>>>> + /*
>>>> + * Enable interrupts for command done, data over, data empty, card det,
>>>> + * receive ready and error such as transmit, receive timeout, crc error
>>>> + */
>>>> + mci_writel(host, RINTSTS, 0xFFFFFFFF);
>>>> + mci_writel(host, INTMASK, SDMMC_INT_CMD_DONE | SDMMC_INT_DATA_OVER |
>>>> + SDMMC_INT_TXDR | SDMMC_INT_RXDR |
>>>> + DW_MCI_ERROR_FLAGS | SDMMC_INT_CD);
>>>> + mci_writel(host, CTRL, SDMMC_CTRL_INT_ENABLE); /* Enable mci
>>>> interrupt */
>>>> +
>>>> + dev_info(host->dev, "DW MMC controller at irq %d, "
>>>> + "%d bit host data width, "
>>>> + "%u deep fifo\n",
>>>> + host->irq, width, fifo_size);
>>>> +
>>>> /* We need at least one slot to succeed */
>>>> for (i = 0; i < host->num_slots; i++) {
>>>> ret = dw_mci_init_slot(host, i);
>>>> @@ -2262,20 +2277,6 @@ int dw_mci_probe(struct dw_mci *host)
>>>> else
>>>> host->data_offset = DATA_240A_OFFSET;
>>>>
>>>> - /*
>>>> - * Enable interrupts for command done, data over, data empty, card det,
>>>> - * receive ready and error such as transmit, receive timeout, crc error
>>>> - */
>>>> - mci_writel(host, RINTSTS, 0xFFFFFFFF);
>>>> - mci_writel(host, INTMASK, SDMMC_INT_CMD_DONE | SDMMC_INT_DATA_OVER |
>>>> - SDMMC_INT_TXDR | SDMMC_INT_RXDR |
>>>> - DW_MCI_ERROR_FLAGS | SDMMC_INT_CD);
>>>> - mci_writel(host, CTRL, SDMMC_CTRL_INT_ENABLE); /* Enable mci
>>>> interrupt */
>>>> -
>>>> - dev_info(host->dev, "DW MMC controller at irq %d, "
>>>> - "%d bit host data width, "
>>>> - "%u deep fifo\n",
>>>> - host->irq, width, fifo_size);
>>>> if (host->quirks & DW_MCI_QUIRK_IDMAC_DTO)
>>>> dev_info(host->dev, "Internal DMAC interrupt fix enabled.\n");
>>>>
>>>> --
>>>> 1.7.9.5
>>>>
>>>> --
>>>> To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
>>>> the body of a message to majordomo@vger.kernel.org
>>>> More majordomo info at http://vger.kernel.org/majordomo-info.html
>>>>
>>>>
>>>> --
>>>> James Hogan
>>>>
>>>
>
>
next prev parent reply other threads:[~2012-11-21 3:21 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-10-08 8:59 [PATCH] mmc: dw_mmc: enable controller interrupt before calling mmc_start_host Yuvaraj CD
2012-10-08 12:55 ` Girish K S
2012-10-08 12:58 ` Will Newton
2012-10-23 21:19 ` Chris Ball
2012-10-25 10:09 ` Yuvaraj CD
2012-10-25 12:43 ` Chris Ball
[not found] ` <CAAG0J9_ngZm7uGopaW6rdBUDQZhQWqt6gd=y1i5BifsGrZg-hg@mail.gmail.com>
2012-11-19 13:20 ` James Hogan
2012-11-20 5:35 ` Yuvaraj Kumar
2012-11-20 9:39 ` James Hogan
2012-11-21 3:21 ` Jaehoon Chung [this message]
2012-11-23 13:21 ` James Hogan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=50AC489C.7070002@samsung.com \
--to=jh80.chung@samsung.com \
--cc=cjb@laptop.org \
--cc=girish.shivananjappa@linaro.org \
--cc=james.hogan@imgtec.com \
--cc=kgene.kim@samsung.com \
--cc=linux-mmc@vger.kernel.org \
--cc=linux-samsung-soc@vger.kernel.org \
--cc=patches@linaro.org \
--cc=tgih.jun@samsung.com \
--cc=thomas.abraham@linaro.org \
--cc=will.newton@imgtec.com \
--cc=yuvaraj.cd@gmail.com \
--cc=yuvaraj.cd@samsung.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.