On Thu, Oct 28, 2010 at 9:23 PM, Mike Rapoport <mike@xxxxxxxxxxxxxx> wrote: > Implement an sdhci-pltfm driver for the controller found on Marvell > Dove SoC > > Signed-off-by: Mike Rapoport <mike@xxxxxxxxxxxxxx> > CC: Saeed Bishara <saeed@xxxxxxxxxxx> Acked-by: Saeed Bishara <saeed@xxxxxxxxxxx> > --- > Âdrivers/mmc/host/Kconfig    |  13 +++++++ > Âdrivers/mmc/host/Makefile   Â|  Â1 + > Âdrivers/mmc/host/sdhci-dove.c Â|  70 ++++++++++++++++++++++++++++++++++++++++ > Âdrivers/mmc/host/sdhci-pltfm.c |  Â3 ++ > Âdrivers/mmc/host/sdhci-pltfm.h |  Â1 + > Â5 files changed, 88 insertions(+), 0 deletions(-) > Âcreate mode 100644 drivers/mmc/host/sdhci-dove.c > > diff --git a/drivers/mmc/host/Kconfig b/drivers/mmc/host/Kconfig > index 68d1279..4958839 100644 > --- a/drivers/mmc/host/Kconfig > +++ b/drivers/mmc/host/Kconfig > @@ -130,6 +130,19 @@ config MMC_SDHCI_CNS3XXX > >     ÂIf unsure, say N. > > +config MMC_SDHCI_DOVE > +    bool "SDHCI support on Marvell's Dove SoC" > +    depends on ARCH_DOVE > +    depends on MMC_SDHCI_PLTFM > +    select MMC_SDHCI_IO_ACCESSORS > +    help > +     This selects the Secure Digital Host Controller Interface in > +     Marvell's Dove SoC. > + > +     If you have a controller with this interface, say Y or M here. > + > +     If unsure, say N. > + > Âconfig MMC_SDHCI_S3C >    Âtristate "SDHCI support on Samsung S3C SoC" >    Âdepends on MMC_SDHCI && PLAT_SAMSUNG > diff --git a/drivers/mmc/host/Makefile b/drivers/mmc/host/Makefile > index 840bcb5..9e1c418 100644 > --- a/drivers/mmc/host/Makefile > +++ b/drivers/mmc/host/Makefile > @@ -40,6 +40,7 @@ obj-$(CONFIG_MMC_JZ4740)   Â+= jz4740_mmc.o > Âobj-$(CONFIG_MMC_SDHCI_PLTFM)         Â+= sdhci-platform.o > Âsdhci-platform-y                := sdhci-pltfm.o > Âsdhci-platform-$(CONFIG_MMC_SDHCI_CNS3XXX)   += sdhci-cns3xxx.o > +sdhci-platform-$(CONFIG_MMC_SDHCI_DOVE)        Â+= sdhci-dove.o > > Âobj-$(CONFIG_MMC_SDHCI_OF)   += sdhci-of.o > Âsdhci-of-y               := sdhci-of-core.o > diff --git a/drivers/mmc/host/sdhci-dove.c b/drivers/mmc/host/sdhci-dove.c > new file mode 100644 > index 0000000..561167c > --- /dev/null > +++ b/drivers/mmc/host/sdhci-dove.c > @@ -0,0 +1,70 @@ > +/* > + * sdhci-dove.c Support for SDHCI on Marvell's Dove SoC > + * > + * Author: Saeed Bishara <saeed@xxxxxxxxxxx> > + *    ÂMike Rapoport <mike@xxxxxxxxxxxxxx> > + * Based on Âsdhci-cns3xxx.c > + * > + * This program is free software; you can redistribute it and/or modify > + * it under the terms of the GNU General Public License version 2 as > + * published by the Free Software Foundation. > + * > + * This program is distributed in the hope that it will be useful, > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ÂSee the > + * GNU General Public License for more details. > + * > + * You should have received a copy of the GNU General Public License > + * along with this program; if not, write to the Free Software > + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. > + */ > + > +#include <linux/io.h> > +#include <linux/mmc/host.h> > + > +#include "sdhci.h" > +#include "sdhci-pltfm.h" > + > +static u16 sdhci_dove_readw(struct sdhci_host *host, int reg) > +{ > +    u16 ret; > + > +    switch (reg) { > +    case SDHCI_HOST_VERSION: > +    case SDHCI_SLOT_INT_STATUS: > +        /* those registers don't exist */ > +        return 0; > +    default: > +        ret = readw(host->ioaddr + reg); > +    } > +    return ret; > +} > + > +static u32 sdhci_dove_readl(struct sdhci_host *host, int reg) > +{ > +    u32 ret; > + > +    switch (reg) { > +    case SDHCI_CAPABILITIES: > +        ret = readl(host->ioaddr + reg); > +        /* Mask the support for 3.0V */ > +        ret &= ~SDHCI_CAN_VDD_300; > +        break; > +    default: > +        ret = readl(host->ioaddr + reg); > +    } > +    return ret; > +} > + > +static struct sdhci_ops sdhci_dove_ops = { > +    .read_w = sdhci_dove_readw, > +    .read_l = sdhci_dove_readl, > +}; > + > +struct sdhci_pltfm_data sdhci_dove_pdata = { > +    .ops  Â= &sdhci_dove_ops, > +    .quirks = SDHCI_QUIRK_NO_SIMULT_VDD_AND_POWER | > +         SDHCI_QUIRK_NO_BUSY_IRQ | > +         SDHCI_QUIRK_BROKEN_TIMEOUT_VAL | > +         SDHCI_QUIRK_FORCE_DMA, > +}; > diff --git a/drivers/mmc/host/sdhci-pltfm.c b/drivers/mmc/host/sdhci-pltfm.c > index e045e3c..28d818e 100644 > --- a/drivers/mmc/host/sdhci-pltfm.c > +++ b/drivers/mmc/host/sdhci-pltfm.c > @@ -161,6 +161,9 @@ static const struct platform_device_id sdhci_pltfm_ids[] = { > Â#ifdef CONFIG_MMC_SDHCI_CNS3XXX >    Â{ "sdhci-cns3xxx", (kernel_ulong_t)&sdhci_cns3xxx_pdata }, > Â#endif > +#ifdef CONFIG_MMC_SDHCI_DOVE > +    { "sdhci-dove", (kernel_ulong_t)&sdhci_dove_pdata }, > +#endif >    Â{ }, > Â}; > ÂMODULE_DEVICE_TABLE(platform, sdhci_pltfm_ids); > diff --git a/drivers/mmc/host/sdhci-pltfm.h b/drivers/mmc/host/sdhci-pltfm.h > index 900f329..718d837 100644 > --- a/drivers/mmc/host/sdhci-pltfm.h > +++ b/drivers/mmc/host/sdhci-pltfm.h > @@ -14,5 +14,6 @@ > Â#include <linux/sdhci-pltfm.h> > > Âextern struct sdhci_pltfm_data sdhci_cns3xxx_pdata; > +extern struct sdhci_pltfm_data sdhci_dove_pdata; > > Â#endif /* _DRIVERS_MMC_SDHCI_PLTFM_H */ > -- > 1.7.3.1 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-mmc" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at Âhttp://vger.kernel.org/majordomo-info.html > -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html