Dear Simon Glass, On 1 June 2012 10:40, Simon Glass <s...@chromium.org> wrote: > Hi, > > On Thu, May 31, 2012 at 2:57 AM, Minkyu Kang <proms...@gmail.com> wrote: >> >> Dear Rajeshwari Shinde, >> >> On 23 May 2012 17:54, Rajeshwari Shinde <rajeshwar...@samsung.com> wrote: >> > This patch performs the pinmux configuration in a common file. >> > As of now only EXYNOS5 pinmux for SDMMC, UART and Ethernet is >> > supported. >> > >> > Signed-off-by: Abhilash Kesavan <a.kesa...@samsung.com> >> > Signed-off-by: Che-Liang Chiou <clch...@chromium.org> >> > Signed-off-by: Rajeshwari Shinde <rajeshwar...@samsung.com> >> > --- >> > changes in V2: >> > - Adding pinmux.c to Makefile moved to this patch. >> > - exynos5_pinmux_config made static. >> > arch/arm/cpu/armv7/exynos/Makefile | 2 +- >> > arch/arm/cpu/armv7/exynos/pinmux.c | 189 >> > +++++++++++++++++++++++++++++ >> > arch/arm/include/asm/arch-exynos/pinmux.h | 77 ++++++++++++ >> > 3 files changed, 267 insertions(+), 1 deletions(-) >> > create mode 100644 arch/arm/cpu/armv7/exynos/pinmux.c >> > create mode 100644 arch/arm/include/asm/arch-exynos/pinmux.h >> > >> > diff --git a/arch/arm/cpu/armv7/exynos/Makefile >> > b/arch/arm/cpu/armv7/exynos/Makefile >> > index 90ec2bd..9119961 100644 >> > --- a/arch/arm/cpu/armv7/exynos/Makefile >> > +++ b/arch/arm/cpu/armv7/exynos/Makefile >> > @@ -22,7 +22,7 @@ include $(TOPDIR)/config.mk >> > >> > LIB = $(obj)lib$(SOC).o >> > >> > -COBJS += clock.o power.o soc.o system.o >> > +COBJS += clock.o power.o soc.o system.o pinmux.o >> > >> > SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c) >> > OBJS := $(addprefix $(obj),$(COBJS) $(SOBJS)) >> > diff --git a/arch/arm/cpu/armv7/exynos/pinmux.c >> > b/arch/arm/cpu/armv7/exynos/pinmux.c >> > new file mode 100644 >> > index 0000000..c6392b2 >> > --- /dev/null >> > +++ b/arch/arm/cpu/armv7/exynos/pinmux.c >> > @@ -0,0 +1,189 @@ >> > +/* >> > + * Copyright (c) 2012 Samsung Electronics. >> > + * Abhilash Kesavan <a.kesa...@samsung.com> >> > + * >> > + * See file CREDITS for list of people who contributed to this >> > + * project. >> > + * >> > + * 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 <asm/arch/cpu.h> >> >> cpu.h is already included. >> >> > +#include <asm/arch/gpio.h> >> > +#include <asm/arch/pinmux.h> >> > +#include <asm/arch/sromc.h> >> > + >> > +static int exynos5_pinmux_config(int peripheral, int flags) >> > +{ >> > + struct exynos5_gpio_part1 *gpio1 = >> > + (struct exynos5_gpio_part1 *) >> > samsung_get_base_gpio_part1(); >> > + struct s5p_gpio_bank *bank, *bank_ext; >> > + int i, start, count; >> > + >> > + switch (peripheral) { >> > + case PERIPH_ID_UART0: >> > + case PERIPH_ID_UART1: >> > + case PERIPH_ID_UART2: >> > + case PERIPH_ID_UART3: >> > + switch (peripheral) { >> > + case PERIPH_ID_UART0: >> > + bank = &gpio1->a0; >> > + start = 0; count = 4; >> >> Please don't put multiple statement on a single line. fix it globally. >> >> > + break; >> > + case PERIPH_ID_UART1: >> > + bank = &gpio1->a0; >> > + start = 4; count = 4; >> > + break; >> > + case PERIPH_ID_UART2: >> > + bank = &gpio1->a1; >> > + start = 0; count = 4; >> > + break; >> > + case PERIPH_ID_UART3: >> > + bank = &gpio1->a1; >> > + start = 4; count = 2; >> > + break; >> > + } >> > + for (i = start; i < start + count; i++) { >> > + s5p_gpio_set_pull(bank, i, GPIO_PULL_NONE); >> > + s5p_gpio_cfg_pin(bank, i, GPIO_FUNC(0x2)); >> > + } >> > + break; >> >> Looks confused. >> Why don't you make function for each peripherals? >> e.g: exynos5_uart_config, exynos5_mmc_config. > > > The idea here is that later we can configure a peripheral just with the ID. > Ultimately we might do pinmux in a generic way using device tree. >
I know. It seems to me you misunderstand my opinion. Please see below pseudo code. static int exynos5_pinmux_config(args) { switch (peripheral) { case PERIPH_ID_UART0: case PERIPH_ID_UART1: case PERIPH_ID_UART2: case PERIPH_ID_UART3: exynos5_uart_config(args); break; case PERIPH_ID_SDMMC0: case PERIPH_ID_SDMMC1: case PERIPH_ID_SDMMC2: case PERIPH_ID_SDMMC3: exynos5_mmc_config(args); break; } } Thanks. Minkyu Kang. -- from. prom. www.promsoft.net _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot