[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