[U-Boot] [PATCH 1/2 V2] EXYNOS5: PINMUX: Added default pinumx settings
Rajeshwari Birje
rajeshwari.birje at gmail.com
Fri Jun 1 08:53:34 CEST 2012
Hi Minkyu Kang,
Thank you for comments.
On Fri, Jun 1, 2012 at 12:11 PM, Minkyu Kang <promsoft at gmail.com> wrote:
> Dear Simon Glass,
>
> On 1 June 2012 10:40, Simon Glass <sjg at chromium.org> wrote:
>> Hi,
>>
>> On Thu, May 31, 2012 at 2:57 AM, Minkyu Kang <promsoft at gmail.com> wrote:
>>>
>>> Dear Rajeshwari Shinde,
>>>
>>> On 23 May 2012 17:54, Rajeshwari Shinde <rajeshwari.s at 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.kesavan at samsung.com>
>>> > Signed-off-by: Che-Liang Chiou <clchiou at chromium.org>
>>> > Signed-off-by: Rajeshwari Shinde <rajeshwari.s at 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.kesavan at 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.
-- will do this modification will create separate function for each.
>
> 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 at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot
Regards,
Rajeshwari Shinde.
More information about the U-Boot
mailing list