Re: [U-Boot] [PATCH1/2] Kirkwood: add Marvell Kirkwood gpio driver

2009-07-22 Thread Jean-Christophe PLAGNIOL-VILLARD
 From fcdea0c7bba3c25a1fb183bbcaf6d1a4ec32a157 Mon Sep 17 00:00:00 2001
 From: Dieter Kiermaier dk-arm-li...@gmx.de
 Date: Mon, 29 Jun 2009 14:22:13 +0200
 Subject: [PATCH] Kirkwood: add Marvell Kirkwood gpio driver
 
 
 Signed-off-by: Dieter Kiermaier dk-arm-li...@gmx.de
 ---
  drivers/gpio/Makefile|1 +
  drivers/gpio/kw_gpio.c   |  151 
 ++
  include/asm-arm/arch-kirkwood/gpio.h |   51 
  3 files changed, 203 insertions(+), 0 deletions(-)
  create mode 100644 drivers/gpio/kw_gpio.c
  create mode 100644 include/asm-arm/arch-kirkwood/gpio.h
applied to u-boot-arm

Best Regards,
J.
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH1/2] Kirkwood: add Marvell Kirkwood gpio driver

2009-07-09 Thread Prafulla Wadaskar
 

 -Original Message-
 From: u-boot-boun...@lists.denx.de 
 [mailto:u-boot-boun...@lists.denx.de] On Behalf Of Heiko Schocher
 Sent: Thursday, July 09, 2009 11:11 AM
 To: Jean-Christophe PLAGNIOL-VILLARD
 Cc: Nicolas Pitre; u-boot@lists.denx.de
 Subject: Re: [U-Boot] [PATCH1/2] Kirkwood: add Marvell 
 Kirkwood gpio driver
 
 Hello Jean-Christophe,
 
 Jean-Christophe PLAGNIOL-VILLARD wrote:
  On 14:45 Mon 29 Jun , Dieter Kiermaier wrote:
  Hi again,
 
  Here is my first out of 2 patches which adds gpio support 
 to arch/kirkwood.
  Any suggestions?
 
  Cheers,
  Dieter
 
 
  From fcdea0c7bba3c25a1fb183bbcaf6d1a4ec32a157 Mon Sep 17 00:00:00 
  2001
  From: Dieter Kiermaier dk-arm-li...@gmx.de
  Date: Mon, 29 Jun 2009 14:22:13 +0200
  Subject: [PATCH] Kirkwood: add Marvell Kirkwood gpio driver
 
 
  Signed-off-by: Dieter Kiermaier dk-arm-li...@gmx.de
  looks fine
  Prafulla  nico for you?
Okay, Ack, mostly code coming from Linux :-)

Regards..
Prafulla . .

 
 I actually tested this driver on the suen3 board with the i2c 
 bitbang driver and it works fine :-), so I do a:
 
 Tested-by: Heiko Schocher h...@denx.de
 
 bye
 Heiko
 -- 
 DENX Software Engineering GmbH, MD: Wolfgang Denk  Detlev Zundel
 HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, 
 Germany ___
 U-Boot mailing list
 U-Boot@lists.denx.de
 http://lists.denx.de/mailman/listinfo/u-boot
 
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH1/2] Kirkwood: add Marvell Kirkwood gpio driver

2009-07-08 Thread Heiko Schocher
Hello Jean-Christophe,

Jean-Christophe PLAGNIOL-VILLARD wrote:
 On 14:45 Mon 29 Jun , Dieter Kiermaier wrote:
 Hi again,

 Here is my first out of 2 patches which adds gpio support to arch/kirkwood.
 Any suggestions?

 Cheers,
 Dieter


 From fcdea0c7bba3c25a1fb183bbcaf6d1a4ec32a157 Mon Sep 17 00:00:00 2001
 From: Dieter Kiermaier dk-arm-li...@gmx.de
 Date: Mon, 29 Jun 2009 14:22:13 +0200
 Subject: [PATCH] Kirkwood: add Marvell Kirkwood gpio driver


 Signed-off-by: Dieter Kiermaier dk-arm-li...@gmx.de
 looks fine
 Prafulla  nico for you?

I actually tested this driver on the suen3 board with the i2c
bitbang driver and it works fine :-), so I do a:

Tested-by: Heiko Schocher h...@denx.de

bye
Heiko
-- 
DENX Software Engineering GmbH, MD: Wolfgang Denk  Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH1/2] Kirkwood: add Marvell Kirkwood gpio driver

2009-06-29 Thread Dieter Kiermaier
Hi again,

Here is my first out of 2 patches which adds gpio support to arch/kirkwood.
Any suggestions?

Cheers,
Dieter


From fcdea0c7bba3c25a1fb183bbcaf6d1a4ec32a157 Mon Sep 17 00:00:00 2001
From: Dieter Kiermaier dk-arm-li...@gmx.de
Date: Mon, 29 Jun 2009 14:22:13 +0200
Subject: [PATCH] Kirkwood: add Marvell Kirkwood gpio driver


Signed-off-by: Dieter Kiermaier dk-arm-li...@gmx.de
---
 drivers/gpio/Makefile|1 +
 drivers/gpio/kw_gpio.c   |  151 ++
 include/asm-arm/arch-kirkwood/gpio.h |   51 
 3 files changed, 203 insertions(+), 0 deletions(-)
 create mode 100644 drivers/gpio/kw_gpio.c
 create mode 100644 include/asm-arm/arch-kirkwood/gpio.h

diff --git a/drivers/gpio/Makefile b/drivers/gpio/Makefile
index f10144f..acba56c 100644
--- a/drivers/gpio/Makefile
+++ b/drivers/gpio/Makefile
@@ -25,6 +25,7 @@ include $(TOPDIR)/config.mk
 
 LIB:= $(obj)libgpio.a
 
+COBJS-$(CONFIG_KIRKWOOD_GPIO)  += kw_gpio.o
 COBJS-$(CONFIG_MX31_GPIO)  += mx31_gpio.o
 COBJS-$(CONFIG_PCA953X)+= pca953x.o
 
diff --git a/drivers/gpio/kw_gpio.c b/drivers/gpio/kw_gpio.c
new file mode 100644
index 000..f49d92c
--- /dev/null
+++ b/drivers/gpio/kw_gpio.c
@@ -0,0 +1,151 @@
+/*
+ * arch/arm/plat-orion/gpio.c
+ *
+ * Marvell Orion SoC GPIO handling.
+ *
+ * This file is licensed under the terms of the GNU General Public
+ * License version 2.  This program is licensed as is without any
+ * warranty of any kind, whether express or implied.
+ */
+ 
+/*
+ * Based on (mostly copied from) plat-orion based Linux 2.6 kernel driver.
+ * Removed orion_gpiochip struct and kernel level irq handling.
+ *
+ * Dieter Kiermaier dk-arm-li...@gmx.de
+ */
+
+#include common.h
+#include asm/bitops.h
+#include asm/arch/kirkwood.h
+#include asm/arch/gpio.h
+
+static unsigned long gpio_valid_input[BITS_TO_LONGS(GPIO_MAX)];
+static unsigned long gpio_valid_output[BITS_TO_LONGS(GPIO_MAX)];
+
+void __set_direction(unsigned pin, int input)
+{
+   u32 u;
+
+   u = readl(GPIO_IO_CONF(pin));
+   if (input)
+   u |= 1  (pin  31);
+   else
+   u = ~(1  (pin  31));
+   writel(u, GPIO_IO_CONF(pin));
+   
+   u = readl(GPIO_IO_CONF(pin));
+}
+
+void __set_level(unsigned pin, int high)
+{
+   u32 u;
+
+   u = readl(GPIO_OUT(pin));
+   if (high)
+   u |= 1  (pin  31);
+   else
+   u = ~(1  (pin  31));
+   writel(u, GPIO_OUT(pin));
+}
+
+void __set_blinking(unsigned pin, int blink)
+{
+   u32 u;
+
+   u = readl(GPIO_BLINK_EN(pin));
+   if (blink)
+   u |= 1  (pin  31);
+   else
+   u = ~(1  (pin  31));
+   writel(u, GPIO_BLINK_EN(pin));
+}
+
+int kw_gpio_is_valid(unsigned pin, int mode)
+{
+   if (pin  GPIO_MAX) {
+   if ((mode  GPIO_INPUT_OK)  !test_bit(pin, gpio_valid_input))
+   goto err_out;
+
+   if ((mode  GPIO_OUTPUT_OK)  !test_bit(pin, 
gpio_valid_output))
+   goto err_out;
+   return 0;
+   }
+
+err_out:
+   printf(%s: invalid GPIO %d\n, __func__, pin);
+   return 1;
+}
+
+void kw_gpio_set_valid(unsigned pin, int mode)
+{
+   if (mode == 1)
+   mode = GPIO_INPUT_OK | GPIO_OUTPUT_OK;
+   if (mode  GPIO_INPUT_OK)
+   __set_bit(pin, gpio_valid_input);
+   else
+   __clear_bit(pin, gpio_valid_input);
+   if (mode  GPIO_OUTPUT_OK)
+   __set_bit(pin, gpio_valid_output);
+   else
+   __clear_bit(pin, gpio_valid_output);
+}
+/*
+ * GENERIC_GPIO primitives.
+ */
+int kw_gpio_direction_input(unsigned pin)
+{
+   if (!kw_gpio_is_valid(pin, GPIO_INPUT_OK))
+   return 1;
+
+   /* Configure GPIO direction. */
+   __set_direction(pin, 1);
+
+   return 0;
+}
+
+int kw_gpio_direction_output(unsigned pin, int value)
+{  
+   if (kw_gpio_is_valid(pin, GPIO_OUTPUT_OK) != 0)
+   {
+   printf(%s: invalid GPIO %d\n, __func__, pin);
+   return 1;
+   }
+
+   __set_blinking(pin, 0);
+
+   /* Configure GPIO output value. */
+   __set_level(pin, value);
+
+   /* Configure GPIO direction. */
+   __set_direction(pin, 0);
+
+   return 0;
+}
+
+int kw_gpio_get_value(unsigned pin)
+{  
+   int val;
+
+   if (readl(GPIO_IO_CONF(pin))  (1  (pin  31)))
+   val = readl(GPIO_DATA_IN(pin)) ^ readl(GPIO_IN_POL(pin));
+   else
+   val = readl(GPIO_OUT(pin));
+
+   return (val  (pin  31))  1;
+}
+
+void kw_gpio_set_value(unsigned pin, int value)
+{
+   /* Configure GPIO output value. */
+   __set_level(pin, value);
+}
+
+void kw_gpio_set_blink(unsigned pin, int blink)
+{
+   /* Set output value to zero. */
+   __set_level(pin, 0);
+
+   /* Set blinking. */
+   __set_blinking(pin, blink);
+}
diff --git