| Submitter | Jaehoon Chung |
|---|---|
| Date | Oct. 16, 2012, 5:10 a.m. |
| Message ID | <507CEC47.7030203@samsung.com> |
| Download | mbox | patch |
| Permalink | /patch/191723/ |
| State | Awaiting Upstream |
| Delegated to: | Andy Fleming |
| Headers | show |
Comments
Dear, Mr.Kang Could you merge this patch? This patch is samsung specific file. DesignWare controller has merged at u-boot-mmc repository. If Mr.Kang can't merge this, could Andy merge this? Best Regards, Jaehoon Chung On 10/16/2012 02:10 PM, Jaehoon Chung wrote: > Support DesignWare MMC Controller for Samsung Specific. > > Signed-off-by: Jaehoon Chung <jh80.chung@samsung.com> > Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> > Signed-off-by: Rajeshawari Shinde <rajeshwari.s@samsung.com> > --- > Changelog V3: > - Removed the unnecessary code. > Changelog V2: > - Nothing > --- > arch/arm/include/asm/arch-exynos/dwmmc.h | 36 +++++++++++++++++++ > drivers/mmc/Makefile | 1 + > drivers/mmc/exynos_dw_mmc.c | 57 ++++++++++++++++++++++++++++++ > 3 files changed, 94 insertions(+), 0 deletions(-) > create mode 100644 arch/arm/include/asm/arch-exynos/dwmmc.h > create mode 100644 drivers/mmc/exynos_dw_mmc.c > > diff --git a/arch/arm/include/asm/arch-exynos/dwmmc.h b/arch/arm/include/asm/arch-exynos/dwmmc.h > new file mode 100644 > index 0000000..8acdf9b > --- /dev/null > +++ b/arch/arm/include/asm/arch-exynos/dwmmc.h > @@ -0,0 +1,36 @@ > +/* > + * (C) Copyright 2012 SAMSUNG Electronics > + * Jaehoon Chung <jh80.chung@samsung.com> > + * > + * This program is free software; you can redistribute it and/or modify > + * it under the terms of the GNU General Public License as published by > + * the Free Software Foundation; either version 2 of the License, or > + * (at your option) any later version. > + * > + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA > + * > + */ > + > +#define DWMCI_CLKSEL 0x09C > +#define DWMCI_SHIFT_0 0x0 > +#define DWMCI_SHIFT_1 0x1 > +#define DWMCI_SHIFT_2 0x2 > +#define DWMCI_SHIFT_3 0x3 > +#define DWMCI_SET_SAMPLE_CLK(x) (x) > +#define DWMCI_SET_DRV_CLK(x) ((x) << 16) > +#define DWMCI_SET_DIV_RATIO(x) ((x) << 24) > + > +int exynos_dwmci_init(u32 regbase, int bus_width, int index); > + > +static inline unsigned int exynos_dwmmc_init(int index, int bus_width) > +{ > + unsigned int base = samsung_get_base_mmc() + (0x10000 * index); > + return exynos_dwmci_init(base, bus_width, index); > +} > diff --git a/drivers/mmc/Makefile b/drivers/mmc/Makefile > index 9ef82a6..cb7c7f6 100644 > --- a/drivers/mmc/Makefile > +++ b/drivers/mmc/Makefile > @@ -48,6 +48,7 @@ COBJS-$(CONFIG_S5P_SDHCI) += s5p_sdhci.o > COBJS-$(CONFIG_SH_MMCIF) += sh_mmcif.o > COBJS-$(CONFIG_TEGRA_MMC) += tegra_mmc.o > COBJS-$(CONFIG_DWMMC) += dw_mmc.o > +COBJS-$(CONFIG_EXYNOS_DWMMC) += exynos_dw_mmc.o > > COBJS := $(COBJS-y) > SRCS := $(COBJS:.o=.c) > diff --git a/drivers/mmc/exynos_dw_mmc.c b/drivers/mmc/exynos_dw_mmc.c > new file mode 100644 > index 0000000..72a31b7 > --- /dev/null > +++ b/drivers/mmc/exynos_dw_mmc.c > @@ -0,0 +1,57 @@ > +/* > + * (C) Copyright 2012 SAMSUNG Electronics > + * Jaehoon Chung <jh80.chung@samsung.com> > + * > + * This program is free software; you can redistribute it and/or > + * modify it under the terms of the GNU General Public License as > + * published by the Free Software Foundation; either version 2 of > + * the License, or (at your option) any later version. > + * > + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA > + * > + */ > + > +#include <common.h> > +#include <malloc.h> > +#include <dwmmc.h> > +#include <asm/arch/dwmmc.h> > +#include <asm/arch/clk.h> > + > +static char *EXYNOS_NAME = "EXYNOS DWMMC"; > + > +static void exynos_dwmci_clksel(struct dwmci_host *host) > +{ > + u32 val; > + val = DWMCI_SET_SAMPLE_CLK(DWMCI_SHIFT_0) | > + DWMCI_SET_DRV_CLK(DWMCI_SHIFT_0) | DWMCI_SET_DIV_RATIO(0); > + > + dwmci_writel(host, DWMCI_CLKSEL, val); > +} > + > +int exynos_dwmci_init(u32 regbase, int bus_width, int index) > +{ > + struct dwmci_host *host = NULL; > + host = malloc(sizeof(struct dwmci_host)); > + if (!host) { > + printf("dwmci_host malloc fail!\n"); > + return 1; > + } > + > + host->name = EXYNOS_NAME; > + host->ioaddr = (void *)regbase; > + host->buswidth = bus_width; > + host->clksel = exynos_dwmci_clksel; > + host->dev_index = index; > + > + add_dwmci(host, 52000000, 400000); > + > + return 0; > +} > + >
Dear Jaehoon and Andy, On 23 October 2012 19:02, Jaehoon Chung <jh80.chung@samsung.com> wrote: > Dear, Mr.Kang > > Could you merge this patch? > This patch is samsung specific file. > DesignWare controller has merged at u-boot-mmc repository. > If Mr.Kang can't merge this, could Andy merge this? > This patch have dependency of dw-mmc patch. (because of Makefile) It should be merged to Andy's tree. Andy, I've delegate this patch to you. http://patchwork.ozlabs.org/patch/191723/ Please check. Thanks. Minkyu Kang.
Dear Andy, Do you have any opinion about this patch? If you didn't have any others, could you apply this patch at u-boot-mmc repository? Best Regards, Jaehoon Chung On 10/23/2012 08:11 PM, Minkyu Kang wrote: > Dear Jaehoon and Andy, > > On 23 October 2012 19:02, Jaehoon Chung <jh80.chung@samsung.com> wrote: >> Dear, Mr.Kang >> >> Could you merge this patch? >> This patch is samsung specific file. >> DesignWare controller has merged at u-boot-mmc repository. >> If Mr.Kang can't merge this, could Andy merge this? >> > > This patch have dependency of dw-mmc patch. (because of Makefile) > It should be merged to Andy's tree. > > Andy, > I've delegate this patch to you. > http://patchwork.ozlabs.org/patch/191723/ > Please check. > > Thanks. > Minkyu Kang. >
I got buried in other work. I should get to this by the end of the week On Nov 21, 2012, at 22:04, "Jaehoon Chung" <jh80.chung@samsung.com> wrote: > Dear Andy, > > Do you have any opinion about this patch? > If you didn't have any others, could you apply this patch at u-boot-mmc repository? > > Best Regards, > Jaehoon Chung > > On 10/23/2012 08:11 PM, Minkyu Kang wrote: >> Dear Jaehoon and Andy, >> >> On 23 October 2012 19:02, Jaehoon Chung <jh80.chung@samsung.com> wrote: >>> Dear, Mr.Kang >>> >>> Could you merge this patch? >>> This patch is samsung specific file. >>> DesignWare controller has merged at u-boot-mmc repository. >>> If Mr.Kang can't merge this, could Andy merge this? >> >> This patch have dependency of dw-mmc patch. (because of Makefile) >> It should be merged to Andy's tree. >> >> Andy, >> I've delegate this patch to you. >> http://patchwork.ozlabs.org/patch/191723/ >> Please check. >> >> Thanks. >> Minkyu Kang. > >
Patch
diff --git a/arch/arm/include/asm/arch-exynos/dwmmc.h b/arch/arm/include/asm/arch-exynos/dwmmc.h new file mode 100644 index 0000000..8acdf9b --- /dev/null +++ b/arch/arm/include/asm/arch-exynos/dwmmc.h @@ -0,0 +1,36 @@ +/* + * (C) Copyright 2012 SAMSUNG Electronics + * Jaehoon Chung <jh80.chung@samsung.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +#define DWMCI_CLKSEL 0x09C +#define DWMCI_SHIFT_0 0x0 +#define DWMCI_SHIFT_1 0x1 +#define DWMCI_SHIFT_2 0x2 +#define DWMCI_SHIFT_3 0x3 +#define DWMCI_SET_SAMPLE_CLK(x) (x) +#define DWMCI_SET_DRV_CLK(x) ((x) << 16) +#define DWMCI_SET_DIV_RATIO(x) ((x) << 24) + +int exynos_dwmci_init(u32 regbase, int bus_width, int index); + +static inline unsigned int exynos_dwmmc_init(int index, int bus_width) +{ + unsigned int base = samsung_get_base_mmc() + (0x10000 * index); + return exynos_dwmci_init(base, bus_width, index); +} diff --git a/drivers/mmc/Makefile b/drivers/mmc/Makefile index 9ef82a6..cb7c7f6 100644 --- a/drivers/mmc/Makefile +++ b/drivers/mmc/Makefile @@ -48,6 +48,7 @@ COBJS-$(CONFIG_S5P_SDHCI) += s5p_sdhci.o COBJS-$(CONFIG_SH_MMCIF) += sh_mmcif.o COBJS-$(CONFIG_TEGRA_MMC) += tegra_mmc.o COBJS-$(CONFIG_DWMMC) += dw_mmc.o +COBJS-$(CONFIG_EXYNOS_DWMMC) += exynos_dw_mmc.o COBJS := $(COBJS-y) SRCS := $(COBJS:.o=.c) diff --git a/drivers/mmc/exynos_dw_mmc.c b/drivers/mmc/exynos_dw_mmc.c new file mode 100644 index 0000000..72a31b7 --- /dev/null +++ b/drivers/mmc/exynos_dw_mmc.c @@ -0,0 +1,57 @@ +/* + * (C) Copyright 2012 SAMSUNG Electronics + * Jaehoon Chung <jh80.chung@samsung.com> + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +#include <common.h> +#include <malloc.h> +#include <dwmmc.h> +#include <asm/arch/dwmmc.h> +#include <asm/arch/clk.h> + +static char *EXYNOS_NAME = "EXYNOS DWMMC"; + +static void exynos_dwmci_clksel(struct dwmci_host *host) +{ + u32 val; + val = DWMCI_SET_SAMPLE_CLK(DWMCI_SHIFT_0) | + DWMCI_SET_DRV_CLK(DWMCI_SHIFT_0) | DWMCI_SET_DIV_RATIO(0); + + dwmci_writel(host, DWMCI_CLKSEL, val); +} + +int exynos_dwmci_init(u32 regbase, int bus_width, int index) +{ + struct dwmci_host *host = NULL; + host = malloc(sizeof(struct dwmci_host)); + if (!host) { + printf("dwmci_host malloc fail!\n"); + return 1; + } + + host->name = EXYNOS_NAME; + host->ioaddr = (void *)regbase; + host->buswidth = bus_width; + host->clksel = exynos_dwmci_clksel; + host->dev_index = index; + + add_dwmci(host, 52000000, 400000); + + return 0; +} +