[RFC 2/2] mci: add Marvell Dove SDHCI driver
Sebastian Hesselbarth
sebastian.hesselbarth at gmail.com
Wed Feb 18 11:34:45 PST 2015
On 18.02.2015 00:43, Michael Grzeschik wrote:
> On Fri, Jul 05, 2013 at 11:22:19PM +0200, Sebastian Hesselbarth wrote:
Nice! It just bumped up the RFC from 1.5yrs back to top in my barebox
mail folder ;)
>> This adds a driver for the SDHCI controller found on Marvell Dove SoCs.
>> Despite a missing pinctrl driver, corresponding MPP config has to be
>> set on a per board basis.
[...]
>> diff --git a/drivers/mci/dove-sdhci.c b/drivers/mci/dove-sdhci.c
>> new file mode 100644
>> index 0000000..91ef8b0
>> --- /dev/null
>> +++ b/drivers/mci/dove-sdhci.c
[...]
>> +static int dove_sdhci_mci_send_cmd(struct mci_host *mci, struct mci_cmd *cmd,
>> + struct mci_data *data)
>> +{
>> + u16 val;
>> + u64 start;
>> + int ret;
>> + struct dove_sdhci *host = priv_from_mci_host(mci);
>> +
>> + dove_sdhci_writel(host, SDHCI_INT_STATUS, ~0);
>> +
>> + /* Do not wait for CMD_INHIBIT_DAT on stop commands */
>> + if (cmd->cmdidx == MMC_CMD_STOP_TRANSMISSION)
>> + val = SDHCI_CMD_INHIBIT_CMD;
>> + else
>> + val = SDHCI_CMD_INHIBIT_CMD | SDHCI_CMD_INHIBIT_DATA;
>> +
>> + /* Wait for bus idle */
>> + start = get_time_ns();
>> + while (1) {
>> + if (!(dove_sdhci_readw(host, SDHCI_PRESENT_STATE0) & val))
>> + break;
>> + if (is_timeout(start, 10 * MSECOND)) {
>
> I had to set something higher than 10 milliseconds to make this driver
> work with solidrun cubox. Otherwise it was always running into the
> timeout.
Can you tell to what value you had to increase the timeout?
I have no problem increasing the timeout, we shouldn't run into
any of them anyway at this point.
Sebastian
>> + dev_err(host->mci.hw_dev, "SDHCI timeout while waiting for idle\n");
>> + return -ETIMEDOUT;
>> + }
>> + }
[...]
More information about the barebox
mailing list