* [U-Boot] [PATCH v2 2/2] arm nomadik: add i2c
[not found] ` <0b10781c46b757737db8ff5e49c2b8b745c9f269.1248427487.git.rubini@unipv.it>
@ 2009-07-27 9:45 ` Heiko Schocher
2009-07-27 20:04 ` Jean-Christophe PLAGNIOL-VILLARD
2009-07-28 10:37 ` Heiko Schocher
2 siblings, 0 replies; 11+ messages in thread
From: Heiko Schocher @ 2009-07-27 9:45 UTC (permalink / raw)
To: u-boot
Hello Alessandro,
Alessandro Rubini wrote:
> From: Alessandro Rubini <rubini@unipv.it>
>
>
> Signed-off-by: Alessandro Rubini <rubini@unipv.it>
> Acked-by: Andrea Gallo <andrea.gallo@stericsson.com>
> ---
> board/st/nhk8815/nhk8815.c | 16 ++++++++++++++--
> include/configs/nhk8815.h | 18 +++++++++++++++++-
> 2 files changed, 31 insertions(+), 3 deletions(-)
Acked-by: Heiko Schocher<hs@denx.de>
bye
Heiko
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
^ permalink raw reply [flat|nested] 11+ messages in thread* [U-Boot] [PATCH v2 2/2] arm nomadik: add i2c
[not found] ` <0b10781c46b757737db8ff5e49c2b8b745c9f269.1248427487.git.rubini@unipv.it>
2009-07-27 9:45 ` [U-Boot] [PATCH v2 2/2] arm nomadik: add i2c Heiko Schocher
@ 2009-07-27 20:04 ` Jean-Christophe PLAGNIOL-VILLARD
2009-07-27 20:22 ` Wolfgang Denk
2009-07-28 7:51 ` Heiko Schocher
2009-07-28 10:37 ` Heiko Schocher
2 siblings, 2 replies; 11+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2009-07-27 20:04 UTC (permalink / raw)
To: u-boot
> }
>
> diff --git a/include/configs/nhk8815.h b/include/configs/nhk8815.h
> index 3e2e09f..8a83d92 100644
> --- a/include/configs/nhk8815.h
> +++ b/include/configs/nhk8815.h
> @@ -93,7 +93,7 @@
> #define CONFIG_SYS_GBL_DATA_SIZE 128 /* for initial data */
> #define CONFIG_SYS_64BIT_VSPRINTF /* mtd desires this */
>
> -#define CONFIG_MISC_INIT_R /* call misc_init_r during start up */
> +#define BOARD_LATE_INIT /* call board_late_init during start up */
>
> /* timing informazion */
> #define CONFIG_SYS_HZ 1000 /* Mandatory... */
> @@ -110,6 +110,22 @@
> #define CONFIG_PL01x_PORTS { (void *)CFG_SERIAL0, (void *)CFG_SERIAL1 }
> #define CONFIG_PL011_CLOCK 48000000
>
> +/* i2c, for the port extenders (uses gpio.c in board directory) */
> +#ifndef __ASSEMBLY__
> +#include <asm/arch/gpio.h>
I really do not like to include file from the config
and it will be difficult to clean up when moving to Kconfig
> +#define CONFIG_CMD_I2C
> +#define CONFIG_SOFT_I2C
> +#define CONFIG_SYS_I2C_SPEED 400000
> +#define __SDA 63
> +#define __SCL 62
> +#define I2C_SDA(x) nmk_gpio_set(__SDA, x)
> +#define I2C_SCL(x) nmk_gpio_set(__SCL, x)
> +#define I2C_READ (nmk_gpio_get(__SDA)!=0)
> +#define I2C_ACTIVE nmk_gpio_dir(__SDA, 1)
> +#define I2C_TRISTATE nmk_gpio_dir(__SDA, 0)
> +#define I2C_DELAY (udelay(2))
it will better to define a couple of generic function where we implement it
as this
i2c_sda()
i2c_scl()
i2c_read()
i2c_activate()
i2c_tristate()
i2c_delay()
i2c_get_bus_num()
i2c_set_bus_num()
i2c_get_bus_speed()
i2c_set_bus_speed()
i2c_init()
Best Regards,
J.
^ permalink raw reply [flat|nested] 11+ messages in thread* [U-Boot] [PATCH v2 2/2] arm nomadik: add i2c
2009-07-27 20:04 ` Jean-Christophe PLAGNIOL-VILLARD
@ 2009-07-27 20:22 ` Wolfgang Denk
2009-07-28 7:51 ` Heiko Schocher
1 sibling, 0 replies; 11+ messages in thread
From: Wolfgang Denk @ 2009-07-27 20:22 UTC (permalink / raw)
To: u-boot
Dear Jean-Christophe PLAGNIOL-VILLARD,
In message <20090727200408.GC5259@game.jcrosoft.org> you wrote:
>
> > @@ -110,6 +110,22 @@
> > #define CONFIG_PL01x_PORTS { (void *)CFG_SERIAL0, (void *)CFG_SERIAL1 }
> > #define CONFIG_PL011_CLOCK 48000000
> >
> > +/* i2c, for the port extenders (uses gpio.c in board directory) */
> > +#ifndef __ASSEMBLY__
> > +#include <asm/arch/gpio.h>
> I really do not like to include file from the config
> and it will be difficult to clean up when moving to Kconfig
But this is what many other boards are doing as well:
$ grep '#[ ]*include' include/configs/* | wc -l
591
> > +#define CONFIG_CMD_I2C
> > +#define CONFIG_SOFT_I2C
> > +#define CONFIG_SYS_I2C_SPEED 400000
> > +#define __SDA 63
> > +#define __SCL 62
> > +#define I2C_SDA(x) nmk_gpio_set(__SDA, x)
> > +#define I2C_SCL(x) nmk_gpio_set(__SCL, x)
> > +#define I2C_READ (nmk_gpio_get(__SDA)!=0)
> > +#define I2C_ACTIVE nmk_gpio_dir(__SDA, 1)
> > +#define I2C_TRISTATE nmk_gpio_dir(__SDA, 0)
> > +#define I2C_DELAY (udelay(2))
> it will better to define a couple of generic function where we implement it
> as this
But that's how the CONFIG_SOFT_I2C interface is currently designed and
used by all other boards, too.
See for example here:
$ grep I2C_ include/configs/TQM885D.h
#define CONFIG_SYS_I2C_SPEED 93000 /* 93 kHz is supposed to work */
#define CONFIG_SYS_I2C_SLAVE 0xFE
#define I2C_INIT (immr->im_cpm.cp_pbdir |= PB_SCL)
#define I2C_ACTIVE (immr->im_cpm.cp_pbdir |= PB_SDA)
#define I2C_TRISTATE (immr->im_cpm.cp_pbdir &= ~PB_SDA)
#define I2C_READ ((immr->im_cpm.cp_pbdat & PB_SDA) != 0)
#define I2C_SDA(bit) if(bit) immr->im_cpm.cp_pbdat |= PB_SDA; \
#define I2C_SCL(bit) if(bit) immr->im_cpm.cp_pbdat |= PB_SCL; \
#define I2C_DELAY udelay(2) /* 1/4 I2C clock duration */
#define CONFIG_SYS_I2C_EEPROM_ADDR 0x50 /* EEPROM AT24C?? */
#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 2 /* two byte address */
# define CONFIG_SYS_I2C_RTC_ADDR 0x68
We should not attempt to change the design of the soft-I2C driver at
this point in a release cycle.
If you care about these things, you should have posted such comments
when Heiko asked for comments more than 4 months ago, see
http://thread.gmane.org/gmane.comp.boot-loaders.u-boot/56416
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
If a train station is a place where a train stops,
then what's a workstation?
^ permalink raw reply [flat|nested] 11+ messages in thread* [U-Boot] [PATCH v2 2/2] arm nomadik: add i2c
2009-07-27 20:04 ` Jean-Christophe PLAGNIOL-VILLARD
2009-07-27 20:22 ` Wolfgang Denk
@ 2009-07-28 7:51 ` Heiko Schocher
2009-07-28 9:24 ` Jean-Christophe PLAGNIOL-VILLARD
2009-07-28 9:41 ` Jean-Christophe PLAGNIOL-VILLARD
1 sibling, 2 replies; 11+ messages in thread
From: Heiko Schocher @ 2009-07-28 7:51 UTC (permalink / raw)
To: u-boot
Hello Jean-Christophe,
Jean-Christophe PLAGNIOL-VILLARD wrote:
>> }
>>
>> diff --git a/include/configs/nhk8815.h b/include/configs/nhk8815.h
>> index 3e2e09f..8a83d92 100644
>> --- a/include/configs/nhk8815.h
>> +++ b/include/configs/nhk8815.h
>> @@ -93,7 +93,7 @@
>> #define CONFIG_SYS_GBL_DATA_SIZE 128 /* for initial data */
>> #define CONFIG_SYS_64BIT_VSPRINTF /* mtd desires this */
>>
>> -#define CONFIG_MISC_INIT_R /* call misc_init_r during start up */
>> +#define BOARD_LATE_INIT /* call board_late_init during start up */
>>
>> /* timing informazion */
>> #define CONFIG_SYS_HZ 1000 /* Mandatory... */
>> @@ -110,6 +110,22 @@
>> #define CONFIG_PL01x_PORTS { (void *)CFG_SERIAL0, (void *)CFG_SERIAL1 }
>> #define CONFIG_PL011_CLOCK 48000000
>>
>> +/* i2c, for the port extenders (uses gpio.c in board directory) */
>> +#ifndef __ASSEMBLY__
>> +#include <asm/arch/gpio.h>
> I really do not like to include file from the config
> and it will be difficult to clean up when moving to Kconfig
>> +#define CONFIG_CMD_I2C
>> +#define CONFIG_SOFT_I2C
>> +#define CONFIG_SYS_I2C_SPEED 400000
>> +#define __SDA 63
>> +#define __SCL 62
>> +#define I2C_SDA(x) nmk_gpio_set(__SDA, x)
>> +#define I2C_SCL(x) nmk_gpio_set(__SCL, x)
>> +#define I2C_READ (nmk_gpio_get(__SDA)!=0)
>> +#define I2C_ACTIVE nmk_gpio_dir(__SDA, 1)
>> +#define I2C_TRISTATE nmk_gpio_dir(__SDA, 0)
>> +#define I2C_DELAY (udelay(2))
> it will better to define a couple of generic function where we implement it
> as this
> i2c_sda()
> i2c_scl()
> i2c_read()
> i2c_activate()
> i2c_tristate()
> i2c_delay()
> i2c_get_bus_num()
> i2c_set_bus_num()
> i2c_get_bus_speed()
> i2c_set_bus_speed()
> i2c_init()
I posted such a suggestion in this thread, see:
http://lists.denx.de/pipermail/u-boot/2009-July/056934.html
I got no responses for this suggestion, so I talked with Wolfgang,
and he convinced me, that this is not necessary.
bye
Heiko
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
^ permalink raw reply [flat|nested] 11+ messages in thread* [U-Boot] [PATCH v2 2/2] arm nomadik: add i2c
2009-07-28 7:51 ` Heiko Schocher
@ 2009-07-28 9:24 ` Jean-Christophe PLAGNIOL-VILLARD
2009-07-28 9:41 ` Jean-Christophe PLAGNIOL-VILLARD
1 sibling, 0 replies; 11+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2009-07-28 9:24 UTC (permalink / raw)
To: u-boot
On 09:51 Tue 28 Jul , Heiko Schocher wrote:
> Hello Jean-Christophe,
>
> Jean-Christophe PLAGNIOL-VILLARD wrote:
> >> }
> >>
> >> diff --git a/include/configs/nhk8815.h b/include/configs/nhk8815.h
> >> index 3e2e09f..8a83d92 100644
> >> --- a/include/configs/nhk8815.h
> >> +++ b/include/configs/nhk8815.h
> >> @@ -93,7 +93,7 @@
> >> #define CONFIG_SYS_GBL_DATA_SIZE 128 /* for initial data */
> >> #define CONFIG_SYS_64BIT_VSPRINTF /* mtd desires this */
> >>
> >> -#define CONFIG_MISC_INIT_R /* call misc_init_r during start up */
> >> +#define BOARD_LATE_INIT /* call board_late_init during start up */
> >>
> >> /* timing informazion */
> >> #define CONFIG_SYS_HZ 1000 /* Mandatory... */
> >> @@ -110,6 +110,22 @@
> >> #define CONFIG_PL01x_PORTS { (void *)CFG_SERIAL0, (void *)CFG_SERIAL1 }
> >> #define CONFIG_PL011_CLOCK 48000000
> >>
> >> +/* i2c, for the port extenders (uses gpio.c in board directory) */
> >> +#ifndef __ASSEMBLY__
> >> +#include <asm/arch/gpio.h>
> > I really do not like to include file from the config
> > and it will be difficult to clean up when moving to Kconfig
> >> +#define CONFIG_CMD_I2C
> >> +#define CONFIG_SOFT_I2C
> >> +#define CONFIG_SYS_I2C_SPEED 400000
> >> +#define __SDA 63
> >> +#define __SCL 62
> >> +#define I2C_SDA(x) nmk_gpio_set(__SDA, x)
> >> +#define I2C_SCL(x) nmk_gpio_set(__SCL, x)
> >> +#define I2C_READ (nmk_gpio_get(__SDA)!=0)
> >> +#define I2C_ACTIVE nmk_gpio_dir(__SDA, 1)
> >> +#define I2C_TRISTATE nmk_gpio_dir(__SDA, 0)
> >> +#define I2C_DELAY (udelay(2))
> > it will better to define a couple of generic function where we implement it
> > as this
> > i2c_sda()
> > i2c_scl()
> > i2c_read()
> > i2c_activate()
> > i2c_tristate()
> > i2c_delay()
> > i2c_get_bus_num()
> > i2c_set_bus_num()
> > i2c_get_bus_speed()
> > i2c_set_bus_speed()
> > i2c_init()
>
> I posted such a suggestion in this thread, see:
> http://lists.denx.de/pipermail/u-boot/2009-July/056934.html
sorry I've not seen yet it but full ack of the proposition :)
>
> I got no responses for this suggestion, so I talked with Wolfgang,
> and he convinced me, that this is not necessary.
Best Regards,
J.
^ permalink raw reply [flat|nested] 11+ messages in thread* [U-Boot] [PATCH v2 2/2] arm nomadik: add i2c
2009-07-28 7:51 ` Heiko Schocher
2009-07-28 9:24 ` Jean-Christophe PLAGNIOL-VILLARD
@ 2009-07-28 9:41 ` Jean-Christophe PLAGNIOL-VILLARD
2009-07-28 10:26 ` Heiko Schocher
1 sibling, 1 reply; 11+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2009-07-28 9:41 UTC (permalink / raw)
To: u-boot
> > it will better to define a couple of generic function where we implement it
> > as this
> > i2c_sda()
> > i2c_scl()
> > i2c_read()
> > i2c_activate()
> > i2c_tristate()
> > i2c_delay()
> > i2c_get_bus_num()
> > i2c_set_bus_num()
> > i2c_get_bus_speed()
> > i2c_set_bus_speed()
> > i2c_init()
>
> I posted such a suggestion in this thread, see:
> http://lists.denx.de/pipermail/u-boot/2009-July/056934.html
I've forget to mention it but we offcource can do it in 2 step
so you have my ack to applied it with the gpio patch
as IMHO it more i2c than ARM
Best Regards,
J.
^ permalink raw reply [flat|nested] 11+ messages in thread
* [U-Boot] [PATCH v2 2/2] arm nomadik: add i2c
2009-07-28 9:41 ` Jean-Christophe PLAGNIOL-VILLARD
@ 2009-07-28 10:26 ` Heiko Schocher
0 siblings, 0 replies; 11+ messages in thread
From: Heiko Schocher @ 2009-07-28 10:26 UTC (permalink / raw)
To: u-boot
Hello Jean-Christophe,
Jean-Christophe PLAGNIOL-VILLARD wrote:
>>> it will better to define a couple of generic function where we implement it
>>> as this
>>> i2c_sda()
>>> i2c_scl()
>>> i2c_read()
>>> i2c_activate()
>>> i2c_tristate()
>>> i2c_delay()
>>> i2c_get_bus_num()
>>> i2c_set_bus_num()
>>> i2c_get_bus_speed()
>>> i2c_set_bus_speed()
>>> i2c_init()
>> I posted such a suggestion in this thread, see:
>> http://lists.denx.de/pipermail/u-boot/2009-July/056934.html
> I've forget to mention it but we offcource can do it in 2 step
>
> so you have my ack to applied it with the gpio patch
> as IMHO it more i2c than ARM
OK, so I pick up this two patches with your Acked-by.
bye
Heiko
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
^ permalink raw reply [flat|nested] 11+ messages in thread
* [U-Boot] [PATCH v2 2/2] arm nomadik: add i2c
[not found] ` <0b10781c46b757737db8ff5e49c2b8b745c9f269.1248427487.git.rubini@unipv.it>
2009-07-27 9:45 ` [U-Boot] [PATCH v2 2/2] arm nomadik: add i2c Heiko Schocher
2009-07-27 20:04 ` Jean-Christophe PLAGNIOL-VILLARD
@ 2009-07-28 10:37 ` Heiko Schocher
2 siblings, 0 replies; 11+ messages in thread
From: Heiko Schocher @ 2009-07-28 10:37 UTC (permalink / raw)
To: u-boot
Hello Alessandro
Alessandro Rubini wrote:
> From: Alessandro Rubini <rubini@unipv.it>
>
>
> Signed-off-by: Alessandro Rubini <rubini@unipv.it>
> Acked-by: Andrea Gallo <andrea.gallo@stericsson.com>
> ---
> board/st/nhk8815/nhk8815.c | 16 ++++++++++++++--
> include/configs/nhk8815.h | 18 +++++++++++++++++-
> 2 files changed, 31 insertions(+), 3 deletions(-)
applied to u-boot-i2c.git, thanks!
bye
Heiko
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
^ permalink raw reply [flat|nested] 11+ messages in thread
* [U-Boot] [PATCH v2 1/2] arm nomadik: add gpio support
[not found] <0e975ff141a9923b58859fad00cf3df664f2fe04.1248427487.git.rubini@unipv.it>
[not found] ` <0b10781c46b757737db8ff5e49c2b8b745c9f269.1248427487.git.rubini@unipv.it>
@ 2009-07-28 9:41 ` Jean-Christophe PLAGNIOL-VILLARD
2009-07-28 10:37 ` Heiko Schocher
2 siblings, 0 replies; 11+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2009-07-28 9:41 UTC (permalink / raw)
To: u-boot
On 11:27 Fri 24 Jul , Alessandro Rubini wrote:
> From: Alessandro Rubini <rubini@unipv.it>
>
>
> Signed-off-by: Alessandro Rubini <rubini@unipv.it>
> Acked-by: Andrea Gallo <andrea.gallo@stericsson.com>
> ---
> cpu/arm926ejs/nomadik/Makefile | 2 +-
> cpu/arm926ejs/nomadik/gpio.c | 99 +++++++++++++++++++++++++++++++++++
> include/asm-arm/arch-nomadik/gpio.h | 42 +++++++++++++++
> 3 files changed, 142 insertions(+), 1 deletions(-)
> create mode 100644 cpu/arm926ejs/nomadik/gpio.c
> create mode 100644 include/asm-arm/arch-nomadik/gpio.h
Acked-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Best Regards,
J.
^ permalink raw reply [flat|nested] 11+ messages in thread* [U-Boot] [PATCH v2 1/2] arm nomadik: add gpio support
[not found] <0e975ff141a9923b58859fad00cf3df664f2fe04.1248427487.git.rubini@unipv.it>
[not found] ` <0b10781c46b757737db8ff5e49c2b8b745c9f269.1248427487.git.rubini@unipv.it>
2009-07-28 9:41 ` [U-Boot] [PATCH v2 1/2] arm nomadik: add gpio support Jean-Christophe PLAGNIOL-VILLARD
@ 2009-07-28 10:37 ` Heiko Schocher
2 siblings, 0 replies; 11+ messages in thread
From: Heiko Schocher @ 2009-07-28 10:37 UTC (permalink / raw)
To: u-boot
Hello Alessandro,
Alessandro Rubini wrote:
> From: Alessandro Rubini <rubini@unipv.it>
>
>
> Signed-off-by: Alessandro Rubini <rubini@unipv.it>
> Acked-by: Andrea Gallo <andrea.gallo@stericsson.com>
> ---
> cpu/arm926ejs/nomadik/Makefile | 2 +-
> cpu/arm926ejs/nomadik/gpio.c | 99 +++++++++++++++++++++++++++++++++++
> include/asm-arm/arch-nomadik/gpio.h | 42 +++++++++++++++
> 3 files changed, 142 insertions(+), 1 deletions(-)
> create mode 100644 cpu/arm926ejs/nomadik/gpio.c
> create mode 100644 include/asm-arm/arch-nomadik/gpio.h
applied to u-boot-i2c.git, thanks!
bye
Heiko
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
^ permalink raw reply [flat|nested] 11+ messages in thread* [U-Boot] [PATCH v2 1/2] arm nomadik: add gpio support
@ 2009-07-24 9:27 Alessandro Rubini
[not found] ` <0e975ff141a9923b58859fad00cf3df664f2fe04.1248427487.git.rubini @unipv.it>
0 siblings, 1 reply; 11+ messages in thread
From: Alessandro Rubini @ 2009-07-24 9:27 UTC (permalink / raw)
To: u-boot
From: Alessandro Rubini <rubini@unipv.it>
Signed-off-by: Alessandro Rubini <rubini@unipv.it>
Acked-by: Andrea Gallo <andrea.gallo@stericsson.com>
---
cpu/arm926ejs/nomadik/Makefile | 2 +-
cpu/arm926ejs/nomadik/gpio.c | 99 +++++++++++++++++++++++++++++++++++
include/asm-arm/arch-nomadik/gpio.h | 42 +++++++++++++++
3 files changed, 142 insertions(+), 1 deletions(-)
create mode 100644 cpu/arm926ejs/nomadik/gpio.c
create mode 100644 include/asm-arm/arch-nomadik/gpio.h
diff --git a/cpu/arm926ejs/nomadik/Makefile b/cpu/arm926ejs/nomadik/Makefile
index e3bd2ee..0fc9f2a 100644
--- a/cpu/arm926ejs/nomadik/Makefile
+++ b/cpu/arm926ejs/nomadik/Makefile
@@ -25,7 +25,7 @@ include $(TOPDIR)/config.mk
LIB = $(obj)lib$(SOC).a
-COBJS = timer.o
+COBJS = timer.o gpio.o
SOBJS = reset.o
SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
diff --git a/cpu/arm926ejs/nomadik/gpio.c b/cpu/arm926ejs/nomadik/gpio.c
new file mode 100644
index 0000000..62a375b
--- /dev/null
+++ b/cpu/arm926ejs/nomadik/gpio.c
@@ -0,0 +1,99 @@
+/*
+ * (C) Copyright 2009 Alessandro Rubini
+ *
+ * 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/io.h>
+#include <asm/arch/gpio.h>
+
+static unsigned long gpio_base[4] = {
+ NOMADIK_GPIO0_BASE,
+ NOMADIK_GPIO1_BASE,
+ NOMADIK_GPIO2_BASE,
+ NOMADIK_GPIO3_BASE
+};
+
+enum gpio_registers {
+ GPIO_DAT = 0x00, /* data register */
+ GPIO_DATS = 0x04, /* data set */
+ GPIO_DATC = 0x08, /* data clear */
+ GPIO_PDIS = 0x0c, /* pull disable */
+ GPIO_DIR = 0x10, /* direction */
+ GPIO_DIRS = 0x14, /* direction set */
+ GPIO_DIRC = 0x18, /* direction clear */
+ GPIO_AFSLA = 0x20, /* alternate function select A */
+ GPIO_AFSLB = 0x24, /* alternate function select B */
+};
+
+static inline unsigned long gpio_to_base(int gpio)
+{
+ return gpio_base[gpio / 32];
+}
+
+static inline u32 gpio_to_bit(int gpio)
+{
+ return 1 << (gpio & 0x1f);
+}
+
+void nmk_gpio_af(int gpio, int alternate_function)
+{
+ unsigned long base = gpio_to_base(gpio);
+ u32 bit = gpio_to_bit(gpio);
+ u32 afunc, bfunc;
+
+ /* alternate function is 0..3, with one bit per register */
+ afunc = readl(base + GPIO_AFSLA) & ~bit;
+ bfunc = readl(base + GPIO_AFSLB) & ~bit;
+ if (alternate_function & 1) afunc |= bit;
+ if (alternate_function & 2) bfunc |= bit;
+ writel(afunc, base + GPIO_AFSLA);
+ writel(bfunc, base + GPIO_AFSLB);
+}
+
+void nmk_gpio_dir(int gpio, int dir)
+{
+ unsigned long base = gpio_to_base(gpio);
+ u32 bit = gpio_to_bit(gpio);
+
+ if (dir)
+ writel(bit, base + GPIO_DIRS);
+ else
+ writel(bit, base + GPIO_DIRC);
+}
+
+void nmk_gpio_set(int gpio, int val)
+{
+ unsigned long base = gpio_to_base(gpio);
+ u32 bit = gpio_to_bit(gpio);
+
+ if (val)
+ writel(bit, base + GPIO_DATS);
+ else
+ writel(bit, base + GPIO_DATC);
+}
+
+int nmk_gpio_get(int gpio)
+{
+ unsigned long base = gpio_to_base(gpio);
+ u32 bit = gpio_to_bit(gpio);
+
+ return readl(base + GPIO_DAT) & bit;
+}
diff --git a/include/asm-arm/arch-nomadik/gpio.h b/include/asm-arm/arch-nomadik/gpio.h
new file mode 100644
index 0000000..1d3c9ce
--- /dev/null
+++ b/include/asm-arm/arch-nomadik/gpio.h
@@ -0,0 +1,42 @@
+/*
+ * (C) Copyright 2009 Alessandro Rubini
+ *
+ * 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
+ */
+#ifndef __NMK_GPIO_H__
+#define __NMK_GPIO_H__
+
+/*
+ * These functions are called from the soft-i2c driver, but
+ * are also used by board files to set output bits.
+ */
+
+enum nmk_af { /* alternate function settings */
+ GPIO_GPIO = 0,
+ GPIO_ALT_A,
+ GPIO_ALT_B,
+ GPIO_ALT_C
+};
+
+extern void nmk_gpio_af(int gpio, int alternate_function);
+extern void nmk_gpio_dir(int gpio, int dir);
+extern void nmk_gpio_set(int gpio, int val);
+extern int nmk_gpio_get(int gpio);
+
+#endif /* __NMK_GPIO_H__ */
--
1.6.0.2
^ permalink raw reply related [flat|nested] 11+ messages in thread
end of thread, other threads:[~2009-07-28 10:37 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <0e975ff141a9923b58859fad00cf3df664f2fe04.1248427487.git.rubini@unipv.it>
[not found] ` <0b10781c46b757737db8ff5e49c2b8b745c9f269.1248427487.git.rubini@unipv.it>
2009-07-27 9:45 ` [U-Boot] [PATCH v2 2/2] arm nomadik: add i2c Heiko Schocher
2009-07-27 20:04 ` Jean-Christophe PLAGNIOL-VILLARD
2009-07-27 20:22 ` Wolfgang Denk
2009-07-28 7:51 ` Heiko Schocher
2009-07-28 9:24 ` Jean-Christophe PLAGNIOL-VILLARD
2009-07-28 9:41 ` Jean-Christophe PLAGNIOL-VILLARD
2009-07-28 10:26 ` Heiko Schocher
2009-07-28 10:37 ` Heiko Schocher
2009-07-28 9:41 ` [U-Boot] [PATCH v2 1/2] arm nomadik: add gpio support Jean-Christophe PLAGNIOL-VILLARD
2009-07-28 10:37 ` Heiko Schocher
2009-07-24 9:27 Alessandro Rubini
[not found] ` <0e975ff141a9923b58859fad00cf3df664f2fe04.1248427487.git.rubini @unipv.it>
2009-07-24 9:27 ` [U-Boot] [PATCH v2 2/2] arm nomadik: add i2c Alessandro Rubini
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox