From: Stefano Babic <sbabic@denx.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 16/31] iMX28: Add GPIO control
Date: Fri, 09 Sep 2011 10:46:02 +0200 [thread overview]
Message-ID: <4E69D24A.4080701@denx.de> (raw)
In-Reply-To: <1315514579-19215-17-git-send-email-marek.vasut@gmail.com>
On 09/08/2011 10:42 PM, Marek Vasut wrote:
> Signed-off-by: Marek Vasut <marek.vasut@gmail.com>
> Cc: Stefano Babic <sbabic@denx.de>
> Cc: Wolfgang Denk <wd@denx.de>
> Cc: Detlev Zundel <dzu@denx.de>
> ---
> arch/arm/cpu/arm926ejs/mx28/Makefile | 2 +-
> arch/arm/cpu/arm926ejs/mx28/gpio.c | 108 +++++++++++++++++++++++++++++++++
> arch/arm/cpu/arm926ejs/mx28/mx28.c | 10 +++
> arch/arm/include/asm/arch-mx28/gpio.h | 32 ++++++++++
> 4 files changed, 151 insertions(+), 1 deletions(-)
> create mode 100644 arch/arm/cpu/arm926ejs/mx28/gpio.c
> create mode 100644 arch/arm/include/asm/arch-mx28/gpio.h
>
> diff --git a/arch/arm/cpu/arm926ejs/mx28/Makefile b/arch/arm/cpu/arm926ejs/mx28/Makefile
> index 7845310..e3f0a12 100644
> --- a/arch/arm/cpu/arm926ejs/mx28/Makefile
> +++ b/arch/arm/cpu/arm926ejs/mx28/Makefile
> @@ -25,7 +25,7 @@ include $(TOPDIR)/config.mk
>
> LIB = $(obj)lib$(SOC).o
>
> -COBJS = clock.o mx28.o iomux.o timer.o
> +COBJS = clock.o mx28.o gpio.o iomux.o timer.o
>
> SRCS := $(START:.o=.S) $(COBJS:.o=.c)
> OBJS := $(addprefix $(obj),$(COBJS))
> diff --git a/arch/arm/cpu/arm926ejs/mx28/gpio.c b/arch/arm/cpu/arm926ejs/mx28/gpio.c
No. All drivers go into the drivers directory (we try to follow the
Linux's rule..).
See drivers/gpio/.
As name, I suggest you steal the name from kernel (mxs_gpio.c seems to
me appropriate).
As remark: in the kernel, the structure for this SOC are identified by
the prefix mxs. This is valid for both MX28 and MX23. I want only to
point out how it is done in the kernel, I know we have not (yet) support
for MX23 in u-boot. Any chance to uniform names with the kernel ?
> new file mode 100644
> index 0000000..00d2cca
> --- /dev/null
> +++ b/arch/arm/cpu/arm926ejs/mx28/gpio.c
> @@ -0,0 +1,108 @@
> +/*
> + * Freescale i.MX28 GPIO control code
> + *
> + * Copyright (C) 2011 Marek Vasut <marek.vasut@gmail.com>
> + * on behalf of DENX Software Engineering GmbH
> + *
> + * 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 <netdev.h>
> +#include <asm/errno.h>
> +#include <asm/io.h>
> +#include <asm/arch/clock.h>
> +#include <asm/arch/regs-common.h>
> +#include <asm/arch/regs-base.h>
> +#include <asm/arch/iomux.h>
> +
> +#if defined(CONFIG_MX23)
Ok. So you *want* to add support for MX23, too. Thanks for doing that !
Then probably the name "mxs" is not very far to be used....
> +#define PINCTRL_BANKS 3
> +#define PINCTRL_DOUT(n) (0x0500 + ((n) * 0x10))
> +#define PINCTRL_DIN(n) (0x0600 + ((n) * 0x10))
> +#define PINCTRL_DOE(n) (0x0700 + ((n) * 0x10))
> +#define PINCTRL_PIN2IRQ(n) (0x0800 + ((n) * 0x10))
> +#define PINCTRL_IRQEN(n) (0x0900 + ((n) * 0x10))
> +#define PINCTRL_IRQSTAT(n) (0x0c00 + ((n) * 0x10))
No structures for that ?
> +void mxs_gpio_direction(iomux_cfg_t pad, int output)
> +{
This is not correct. Blackfin addes as first a common way to use gpio,
and we try to uniform the other SOC to the same rule. We should have not
special SOC_something_gpio_function.
The interface is in asm/asm/gpio.h. Each SOC must implement (you can
check on other i.MX SOCs) only those functions:
int gpio_request(int gp, const char *label);
void gpio_free(int gp);
void gpio_toggle_value(int gp);
int gpio_direction_input(int gp);
int gpio_direction_output(int gp, int value);
int gpio_get_value(int gp);
void gpio_set_value(int gp, int value);
This is the common interface - special definition for each SOC can be
put into asm/arch/gpio.h
> +void mxs_gpio_init(void)
> +{
> + int i;
> +
> + for (i = 0; i < PINCTRL_BANKS; i++) {
> + writel(0, MXS_PINCTRL_BASE + PINCTRL_PIN2IRQ(i));
> + writel(0, MXS_PINCTRL_BASE + PINCTRL_IRQEN(i));
> + /* Use SCT address here to clear the IRQSTAT bits */
> + writel(0xffffffff, MXS_PINCTRL_BASE + PINCTRL_IRQSTAT(i) + 8);
> + }
I am not sure this stuff should be done here. It should be
responsibility of the board maintainer to execute it - not only, to
decide how to set up the pinmux at all.
> diff --git a/arch/arm/cpu/arm926ejs/mx28/mx28.c b/arch/arm/cpu/arm926ejs/mx28/mx28.c
> index dca54d2..68f0da3 100644
> --- a/arch/arm/cpu/arm926ejs/mx28/mx28.c
> +++ b/arch/arm/cpu/arm926ejs/mx28/mx28.c
> @@ -30,6 +30,8 @@
> #include <asm/errno.h>
> #include <asm/io.h>
> #include <asm/arch/clock.h>
> +#include <asm/arch/iomux.h>
> +#include <asm/arch/gpio.h>
> #include <asm/arch/regs-common.h>
> #include <asm/arch/regs-base.h>
> #include <asm/arch/regs-clkctrl.h>
> @@ -118,6 +120,14 @@ int mx28_reset_block(struct mx28_register *reg)
> return 0;
> }
>
> +#ifdef CONFIG_ARCH_CPU_INIT
> +int arch_cpu_init(void)
> +{
> + mxs_gpio_init();
> + return 0;
> +}
Please squash your patches - I am already confused after a few patches.
> +#endif
> +
> #if defined(CONFIG_DISPLAY_CPUINFO)
> int print_cpuinfo(void)
> {
> diff --git a/arch/arm/include/asm/arch-mx28/gpio.h b/arch/arm/include/asm/arch-mx28/gpio.h
> new file mode 100644
> index 0000000..9435538
> --- /dev/null
> +++ b/arch/arm/include/asm/arch-mx28/gpio.h
> @@ -0,0 +1,32 @@
> +/*
> + * Freescale i.MX28 GPIO
> + *
> + * Copyright (C) 2011 Marek Vasut <marek.vasut@gmail.com>
> + * on behalf of DENX Software Engineering GmbH
> + *
> + * 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
> + *
> + */
> +
> +#ifndef __GPIO_H__
> +#define __GPIO_H__
> +
> +void mxs_gpio_set(iomux_cfg_t pad, int value);
> +int mxs_gpio_get(iomux_cfg_t pad);
> +void mxs_gpio_direction(iomux_cfg_t pad, int output);
No. This file should be dropped, it is not required.
Best regards,
Stefano Babic
--
=====================================================================
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-0 Fax: +49-8142-66989-80 Email: office at denx.de
=====================================================================
next prev parent reply other threads:[~2011-09-09 8:46 UTC|newest]
Thread overview: 68+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-09-08 20:42 [U-Boot] [PATCH 00/31] Support for the DENX M28 SoM Marek Vasut
2011-09-08 20:42 ` [U-Boot] [PATCH 01/31] iMX28: Initial support for iMX28 CPU Marek Vasut
2011-09-09 8:23 ` Stefano Babic
2011-09-09 8:54 ` Heiko Schocher
2011-09-09 10:12 ` Marek Vasut
2011-09-09 10:29 ` Stefano Babic
2011-09-09 10:50 ` Marek Vasut
2011-09-09 11:04 ` Stefano Babic
2011-09-08 20:42 ` [U-Boot] [PATCH 02/31] iMX28: Add basic support for DENX M28EVK board Marek Vasut
2011-09-09 7:13 ` Igor Grinberg
2011-09-09 8:26 ` Stefano Babic
2011-09-08 20:42 ` [U-Boot] [PATCH 03/31] iMX28: Add support for SSP MMC Marek Vasut
2011-09-08 20:42 ` [U-Boot] [PATCH 04/31] M28EVK: Enable MMC support Marek Vasut
2011-09-09 8:28 ` Stefano Babic
2011-09-08 20:42 ` [U-Boot] [PATCH 05/31] iMX28: Add pinctrl and ocotp register definitions Marek Vasut
2011-09-09 8:30 ` Stefano Babic
2011-09-08 20:42 ` [U-Boot] [PATCH 06/31] FEC: Add support for iMX28 quirks Marek Vasut
2011-09-08 20:42 ` [U-Boot] [PATCH 07/31] iMX28: Add CPU-specific FEC ethernet init Marek Vasut
2011-09-08 20:42 ` [U-Boot] [PATCH 08/31] M28EVK: Enable FEC0 and FEC1 Marek Vasut
2011-09-08 20:42 ` [U-Boot] [PATCH 09/31] iMX28: Add PINMUX control Marek Vasut
2011-09-08 20:42 ` [U-Boot] [PATCH 10/31] iMX28: Add RTC register definitions Marek Vasut
2011-09-08 20:42 ` [U-Boot] [PATCH 11/31] iMX28: Add I2C " Marek Vasut
2011-09-09 5:44 ` Heiko Schocher
2011-09-08 20:42 ` [U-Boot] [PATCH 12/31] iMX28: Add I2C bus driver Marek Vasut
2011-09-09 5:45 ` Heiko Schocher
2011-09-09 11:18 ` Marek Vasut
2011-09-09 11:26 ` Stefan Roese
2011-09-09 11:52 ` Marek Vasut
2011-09-08 20:42 ` [U-Boot] [PATCH 13/31] M28: Enable I2C, EEPROM and RTC Marek Vasut
2011-09-09 5:45 ` Heiko Schocher
2011-09-08 20:42 ` [U-Boot] [PATCH 14/31] iMX28: Add MMC SPL Marek Vasut
2011-09-09 5:44 ` Chander Kashyap
2011-09-09 7:33 ` Wolfgang Denk
[not found] ` <CANuQgHH_p-_HRf_jBKiPZz=br0+aCyWROWzHDZgV47xWg97aiQ@mail.gmail.com>
2011-09-09 12:49 ` Marek Vasut
2011-09-09 13:14 ` Chander Kashyap
2011-09-10 20:58 ` Marek Vasut
2011-09-10 21:04 ` Marek Vasut
2011-09-08 20:42 ` [U-Boot] [PATCH 15/31] M28: Enable " Marek Vasut
2011-09-08 20:42 ` [U-Boot] [PATCH 16/31] iMX28: Add GPIO control Marek Vasut
2011-09-09 8:46 ` Stefano Babic [this message]
2011-09-08 20:42 ` [U-Boot] [PATCH 17/31] M28: Enable use of GPIO configurators Marek Vasut
2011-09-08 20:42 ` [U-Boot] [PATCH 18/31] iMX28: Add SPI driver Marek Vasut
2011-09-09 8:51 ` Stefano Babic
2011-09-09 11:50 ` Marek Vasut
2011-09-09 12:34 ` Stefano Babic
2011-09-09 12:50 ` Marek Vasut
2011-09-08 20:42 ` [U-Boot] [PATCH 19/31] M28EVK: Enable SPI and SPI flash Marek Vasut
2011-09-08 20:42 ` [U-Boot] [PATCH 20/31] iMX28: Add APBH DMA driver Marek Vasut
2011-09-08 20:42 ` [U-Boot] [PATCH 21/31] iMX28: Add BCH and GPMI register definitions Marek Vasut
2011-09-08 20:42 ` [U-Boot] [PATCH 22/31] iMX28: Add GPMI NAND driver Marek Vasut
2011-09-08 20:42 ` [U-Boot] [PATCH 23/31] M28: Enable NAND Marek Vasut
2011-09-08 20:42 ` [U-Boot] [PATCH 24/31] iMX28: Add driver for internal RTC Marek Vasut
2011-09-08 20:42 ` [U-Boot] [PATCH 25/31] M28: Enable the internal RTC instead of the M41T62 Marek Vasut
2011-09-09 12:45 ` Stefano Babic
2011-09-09 12:51 ` Marek Vasut
2011-09-09 12:55 ` Stefano Babic
2011-09-08 20:42 ` [U-Boot] [PATCH 26/31] M28: Enable UBI and UBIFS Marek Vasut
2011-09-08 20:42 ` [U-Boot] [PATCH 27/31] M28: Save environment in NAND Marek Vasut
2011-09-16 19:15 ` Scott Wood
2011-09-17 8:20 ` Marek Vasut
2011-09-19 17:54 ` Scott Wood
2011-09-17 7:10 ` Fabio Estevam
2011-09-08 20:42 ` [U-Boot] [PATCH 28/31] iMX28: Add image header generator tool Marek Vasut
2011-09-09 8:58 ` Stefano Babic
2011-09-09 11:51 ` Marek Vasut
2011-09-08 20:42 ` [U-Boot] [PATCH 29/31] M28: Add NAND update scripts Marek Vasut
2011-09-08 20:42 ` [U-Boot] [PATCH 30/31] i.MX28: Add u-boot.sb target to Makefile Marek Vasut
2011-09-08 20:42 ` [U-Boot] [PATCH 31/31] M28: Add doc/README.m28 documentation Marek Vasut
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4E69D24A.4080701@denx.de \
--to=sbabic@denx.de \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.