2015-03-17 4:13 GMT+01:00 Chaotian Jing <chaotian.jing@xxxxxxxxxxxx>: > Add Mediatek MMC driver code > > Signed-off-by: Chaotian Jing <chaotian.jing@xxxxxxxxxxxx> > --- > drivers/mmc/host/Kconfig | 8 + > drivers/mmc/host/Makefile | 1 + > drivers/mmc/host/mtk-sd.c | 1412 +++++++++++++++++++++++++++++++++++++++++++++ > 3 files changed, 1421 insertions(+) > create mode 100644 drivers/mmc/host/mtk-sd.c > > diff --git a/drivers/mmc/host/Kconfig b/drivers/mmc/host/Kconfig > index 61ac63a..8b64377 100644 > --- a/drivers/mmc/host/Kconfig > +++ b/drivers/mmc/host/Kconfig > @@ -768,3 +768,11 @@ config MMC_TOSHIBA_PCI > tristate "Toshiba Type A SD/MMC Card Interface Driver" > depends on PCI > help > + > +config MMC_MTK > + tristate "MediaTek SD/MMC Card Interface support" > + help > + This selects the MediaTek(R) Secure digital and Multimedia card Interface. > + If you have a machine with a integrated SD/MMC card reader, say Y or M here. > + This is needed if support for any SD/SDIO/MMC devices is required. > + If unsure, say N. > diff --git a/drivers/mmc/host/Makefile b/drivers/mmc/host/Makefile > index 6a7cfe0..161b3e4 100644 > --- a/drivers/mmc/host/Makefile > +++ b/drivers/mmc/host/Makefile > @@ -20,6 +20,7 @@ obj-$(CONFIG_MMC_SDHCI_F_SDH30) += sdhci_f_sdh30.o > obj-$(CONFIG_MMC_SDHCI_SPEAR) += sdhci-spear.o > obj-$(CONFIG_MMC_WBSD) += wbsd.o > obj-$(CONFIG_MMC_AU1X) += au1xmmc.o > +obj-$(CONFIG_MMC_MTK) += mtk-sd.o > obj-$(CONFIG_MMC_OMAP) += omap.o > obj-$(CONFIG_MMC_OMAP_HS) += omap_hsmmc.o > obj-$(CONFIG_MMC_ATMELMCI) += atmel-mci.o > diff --git a/drivers/mmc/host/mtk-sd.c b/drivers/mmc/host/mtk-sd.c > new file mode 100644 > index 0000000..86c999b > --- /dev/null > +++ b/drivers/mmc/host/mtk-sd.c > @@ -0,0 +1,1412 @@ > +/* > + * Copyright (c) 2014-2015 MediaTek Inc. > + * Author: Chaotian.Jing <chaotian.jing@xxxxxxxxxxxx> > + * > + * 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. > + */ > + > +#include <linux/clk.h> > +#include <linux/delay.h> > +#include <linux/dma-mapping.h> > +#include <linux/ioport.h> > +#include <linux/irq.h> > +#include <linux/of_address.h> > +#include <linux/of_irq.h> > +#include <linux/of_gpio.h> > +#include <linux/platform_device.h> > +#include <linux/regulator/consumer.h> > +#include <linux/spinlock.h> > + > +#include <linux/mmc/card.h> > +#include <linux/mmc/core.h> > +#include <linux/mmc/host.h> > +#include <linux/mmc/mmc.h> > +#include <linux/mmc/sd.h> > +#include <linux/mmc/sdio.h> > + > +#define MAX_GPD_NUM (1 + 1) /* one null gpd */ > +#define MAX_BD_NUM 1024 > +#define MAX_BD_PER_GPD MAX_BD_NUM This looks strange. Why don't you define MAX_GPD_NUM as two? Why do you define MAX_BD_PER_GPD when it is the same as MAX_BD_NUM? Cheers, Matthias -- motzblog.wordpress.com -- To unsubscribe from this list: send the line "unsubscribe linux-gpio" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html