[PATCH V3 2/3] ARM: mmc: bcm281xx SDHCI driver
Arnd Bergmann
arnd at arndb.de
Thu May 30 00:25:36 EST 2013
On Wednesday 29 May 2013, Christian Daudt wrote:
> +static int sdhci_bcm_kona_sd_reset(struct sdhci_host *host)
> +{
> + /*
> + * Back-to-Back register write needs a delay of 1ms at bootup (min 10uS)
> + * Back-to-Back writes to same register needs delay when SD bus clock
> + * is very low w.r.t AHB clock, mainly during boot-time and during card
> + * insert-removal.
> + */
> + mdelay(1);
> + sdhci_writel(host, val, KONA_SDHOST_CORECTRL);
This is now called always without spinlocks held and interrupts enabled,
so it should really be msleep() not mdelay().
> +static void sdhci_bcm_kona_sd_init(struct sdhci_host *host)
> +{
> + unsigned int val;
> +
> + /* enable the interrupt from the IP core */
> + val = sdhci_readl(host, KONA_SDHOST_COREIMR);
> + val |= KONA_SDHOST_IP;
> + sdhci_writel(host, val, KONA_SDHOST_COREIMR);
> +
> + /* Enable the AHB clock gating module to the host */
> + val = sdhci_readl(host, KONA_SDHOST_CORECTRL);
> + val |= KONA_SDHOST_EN;
> +
> + /*
> + * Back-to-Back register write needs a delay of 1ms at bootup (min 10uS)
> + * Back-to-Back writes to same register needs delay when SD bus clock
> + * is very low w.r.t AHB clock, mainly during boot-time and during card
> + * insert-removal.
> + */
> + mdelay(1);
> + sdhci_writel(host, val, KONA_SDHOST_CORECTRL);
> +}
Same here.
Looks good aside from that.
Arnd
More information about the devicetree-discuss
mailing list