From mboxrd@z Thu Jan 1 00:00:00 1970 From: saeed bishara Subject: Re: [PATCH v4 1/2] MMC: add support for the Marvell Dove SDHCI controller Date: Mon, 22 Nov 2010 09:42:33 +0200 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: QUOTED-PRINTABLE Return-path: Received: from mail-qy0-f181.google.com ([209.85.216.181]:61921 "EHLO mail-qy0-f181.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751714Ab0KVHme convert rfc822-to-8bit (ORCPT ); Mon, 22 Nov 2010 02:42:34 -0500 Received: by qyk5 with SMTP id 5so470323qyk.19 for ; Sun, 21 Nov 2010 23:42:33 -0800 (PST) In-Reply-To: Sender: linux-mmc-owner@vger.kernel.org List-Id: linux-mmc@vger.kernel.org To: Mike Rapoport Cc: linux-mmc@vger.kernel.org, Chris Ball , Saeed Bishara , linux-arm-kernel@lists.infradead.org On Thu, Oct 28, 2010 at 9:23 PM, Mike Rapoport wr= ote: > Implement an sdhci-pltfm driver for the controller found on Marvell > Dove SoC > > Signed-off-by: Mike Rapoport > CC: Saeed Bishara Acked-by: Saeed Bishara > --- > =C2=A0drivers/mmc/host/Kconfig =C2=A0 =C2=A0 =C2=A0 | =C2=A0 13 +++++= ++ > =C2=A0drivers/mmc/host/Makefile =C2=A0 =C2=A0 =C2=A0| =C2=A0 =C2=A01 = + > =C2=A0drivers/mmc/host/sdhci-dove.c =C2=A0| =C2=A0 70 +++++++++++++++= +++++++++++++++++++++++++ > =C2=A0drivers/mmc/host/sdhci-pltfm.c | =C2=A0 =C2=A03 ++ > =C2=A0drivers/mmc/host/sdhci-pltfm.h | =C2=A0 =C2=A01 + > =C2=A05 files changed, 88 insertions(+), 0 deletions(-) > =C2=A0create 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 > > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0If unsure, say N. > > +config MMC_SDHCI_DOVE > + =C2=A0 =C2=A0 =C2=A0 bool "SDHCI support on Marvell's Dove SoC" > + =C2=A0 =C2=A0 =C2=A0 depends on ARCH_DOVE > + =C2=A0 =C2=A0 =C2=A0 depends on MMC_SDHCI_PLTFM > + =C2=A0 =C2=A0 =C2=A0 select MMC_SDHCI_IO_ACCESSORS > + =C2=A0 =C2=A0 =C2=A0 help > + =C2=A0 =C2=A0 =C2=A0 =C2=A0 This selects the Secure Digital Host Co= ntroller Interface in > + =C2=A0 =C2=A0 =C2=A0 =C2=A0 Marvell's Dove SoC. > + > + =C2=A0 =C2=A0 =C2=A0 =C2=A0 If you have a controller with this inte= rface, say Y or M here. > + > + =C2=A0 =C2=A0 =C2=A0 =C2=A0 If unsure, say N. > + > =C2=A0config MMC_SDHCI_S3C > =C2=A0 =C2=A0 =C2=A0 =C2=A0tristate "SDHCI support on Samsung S3C SoC= " > =C2=A0 =C2=A0 =C2=A0 =C2=A0depends 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) =C2=A0 =C2=A0 =C2=A0+=3D j= z4740_mmc.o > =C2=A0obj-$(CONFIG_MMC_SDHCI_PLTFM) =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0+=3D sdhci-platform.o > =C2=A0sdhci-platform-y =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 :=3D sdhci-plt= fm.o > =C2=A0sdhci-platform-$(CONFIG_MMC_SDHCI_CNS3XXX) =C2=A0 =C2=A0 +=3D s= dhci-cns3xxx.o > +sdhci-platform-$(CONFIG_MMC_SDHCI_DOVE) =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0+=3D sdhci-dove.o > > =C2=A0obj-$(CONFIG_MMC_SDHCI_OF) =C2=A0 =C2=A0 +=3D sdhci-of.o > =C2=A0sdhci-of-y =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 :=3D sdhci-of-core.o > diff --git a/drivers/mmc/host/sdhci-dove.c b/drivers/mmc/host/sdhci-d= ove.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 > + * =C2=A0 =C2=A0 =C2=A0 =C2=A0Mike Rapoport > + * Based on =C2=A0sdhci-cns3xxx.c > + * > + * This program is free software; you can redistribute it and/or mod= ify > + * 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. =C2=A0See th= e > + * 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 > +#include > + > +#include "sdhci.h" > +#include "sdhci-pltfm.h" > + > +static u16 sdhci_dove_readw(struct sdhci_host *host, int reg) > +{ > + =C2=A0 =C2=A0 =C2=A0 u16 ret; > + > + =C2=A0 =C2=A0 =C2=A0 switch (reg) { > + =C2=A0 =C2=A0 =C2=A0 case SDHCI_HOST_VERSION: > + =C2=A0 =C2=A0 =C2=A0 case SDHCI_SLOT_INT_STATUS: > + =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* those registers= don't exist */ > + =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 return 0; > + =C2=A0 =C2=A0 =C2=A0 default: > + =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ret =3D readw(host= ->ioaddr + reg); > + =C2=A0 =C2=A0 =C2=A0 } > + =C2=A0 =C2=A0 =C2=A0 return ret; > +} > + > +static u32 sdhci_dove_readl(struct sdhci_host *host, int reg) > +{ > + =C2=A0 =C2=A0 =C2=A0 u32 ret; > + > + =C2=A0 =C2=A0 =C2=A0 switch (reg) { > + =C2=A0 =C2=A0 =C2=A0 case SDHCI_CAPABILITIES: > + =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ret =3D readl(host= ->ioaddr + reg); > + =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* Mask the suppor= t for 3.0V */ > + =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ret &=3D ~SDHCI_CA= N_VDD_300; > + =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 break; > + =C2=A0 =C2=A0 =C2=A0 default: > + =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ret =3D readl(host= ->ioaddr + reg); > + =C2=A0 =C2=A0 =C2=A0 } > + =C2=A0 =C2=A0 =C2=A0 return ret; > +} > + > +static struct sdhci_ops sdhci_dove_ops =3D { > + =C2=A0 =C2=A0 =C2=A0 .read_w =3D sdhci_dove_readw, > + =C2=A0 =C2=A0 =C2=A0 .read_l =3D sdhci_dove_readl, > +}; > + > +struct sdhci_pltfm_data sdhci_dove_pdata =3D { > + =C2=A0 =C2=A0 =C2=A0 .ops =C2=A0 =C2=A0=3D &sdhci_dove_ops, > + =C2=A0 =C2=A0 =C2=A0 .quirks =3D SDHCI_QUIRK_NO_SIMULT_VDD_AND_POWE= R | > + =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 SDHCI_QUIRK= _NO_BUSY_IRQ | > + =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 SDHCI_QUIRK= _BROKEN_TIMEOUT_VAL | > + =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 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_pltf= m_ids[] =3D { > =C2=A0#ifdef CONFIG_MMC_SDHCI_CNS3XXX > =C2=A0 =C2=A0 =C2=A0 =C2=A0{ "sdhci-cns3xxx", (kernel_ulong_t)&sdhci_= cns3xxx_pdata }, > =C2=A0#endif > +#ifdef CONFIG_MMC_SDHCI_DOVE > + =C2=A0 =C2=A0 =C2=A0 { "sdhci-dove", (kernel_ulong_t)&sdhci_dove_pd= ata }, > +#endif > =C2=A0 =C2=A0 =C2=A0 =C2=A0{ }, > =C2=A0}; > =C2=A0MODULE_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 @@ > =C2=A0#include > > =C2=A0extern struct sdhci_pltfm_data sdhci_cns3xxx_pdata; > +extern struct sdhci_pltfm_data sdhci_dove_pdata; > > =C2=A0#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@vger.kernel.org > More majordomo info at =C2=A0http://vger.kernel.org/majordomo-info.ht= ml > From mboxrd@z Thu Jan 1 00:00:00 1970 From: saeed.bishara@gmail.com (saeed bishara) Date: Mon, 22 Nov 2010 09:42:33 +0200 Subject: [PATCH v4 1/2] MMC: add support for the Marvell Dove SDHCI controller In-Reply-To: References: Message-ID: To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On Thu, Oct 28, 2010 at 9:23 PM, Mike Rapoport wrote: > Implement an sdhci-pltfm driver for the controller found on Marvell > Dove SoC > > Signed-off-by: Mike Rapoport > CC: Saeed Bishara Acked-by: Saeed Bishara > --- > ?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 > + * ? ? ? ?Mike Rapoport > + * 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 > +#include > + > +#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 > > ?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 at vger.kernel.org > More majordomo info at ?http://vger.kernel.org/majordomo-info.html >