Re: [U-Boot] [PATCH v1] bfin: Move gpio support for bf54x and bf60x into the generic driver folder.

2013-05-02 Thread Mike Frysinger
On Thursday 02 May 2013 01:55:25 Sonic Zhang wrote:
 The gpio spec for bf54x and bf60x differ a lot from the old gpio driver for
 bf5xx. A lot of machine macros are used to accomodate both code in one
 gpio driver. This patch split the old gpio driver and move new gpio2
 support to the generic gpio driver folder.
 
 - To enable gpio2 driver, macro CONFIG_ADI_GPIO2 should be defined in the
 board's config header file.
 - The gpio2 driver supports bf54x, bf60x and future ADI processors, while
 the older gpio driver supports bf50x, bf51x, bf52x, bf53x and bf561.
 - All blackfin specific gpio function names are replaced by the generic
 gpio APIs.

the code in u-boot was written so as to make direct import from the kernel 
trivial.  that way there is only one code base to maintain -- the kernel.  
last i looked, you hadn't split the drivers in the kernel, which means things 
are now diverging.
-mike


signature.asc
Description: This is a digitally signed message part.
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH v1] bfin: Move gpio support for bf54x and bf60x into the generic driver folder.

2013-05-02 Thread Sonic Zhang
Hi Mike,

On Fri, May 3, 2013 at 12:23 AM, Mike Frysinger vap...@gentoo.org wrote:
 On Thursday 02 May 2013 01:55:25 Sonic Zhang wrote:
 The gpio spec for bf54x and bf60x differ a lot from the old gpio driver for
 bf5xx. A lot of machine macros are used to accomodate both code in one
 gpio driver. This patch split the old gpio driver and move new gpio2
 support to the generic gpio driver folder.

 - To enable gpio2 driver, macro CONFIG_ADI_GPIO2 should be defined in the
 board's config header file.
 - The gpio2 driver supports bf54x, bf60x and future ADI processors, while
 the older gpio driver supports bf50x, bf51x, bf52x, bf53x and bf561.
 - All blackfin specific gpio function names are replaced by the generic
 gpio APIs.

 the code in u-boot was written so as to make direct import from the kernel
 trivial.  that way there is only one code base to maintain -- the kernel.
 last i looked, you hadn't split the drivers in the kernel, which means things
 are now diverging.

Don't worry. I will do it in Linux kernel soon after this is merged into u-boot.

Regards,

Sonic
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH v1] bfin: Move gpio support for bf54x and bf60x into the generic driver folder.

2013-05-01 Thread Sonic Zhang
From: Sonic Zhang sonic.zh...@analog.com

The gpio spec for bf54x and bf60x differ a lot from the old gpio driver for 
bf5xx.
A lot of machine macros are used to accomodate both code in one gpio driver.
This patch split the old gpio driver and move new gpio2 support to the generic
gpio driver folder.

- To enable gpio2 driver, macro CONFIG_ADI_GPIO2 should be defined in the 
board's
config header file.
- The gpio2 driver supports bf54x, bf60x and future ADI processors, while the
older gpio driver supports bf50x, bf51x, bf52x, bf53x and bf561.
- All blackfin specific gpio function names are replaced by the generic gpio 
APIs.

Signed-off-by: Sonic Zhang sonic.zh...@analog.com
---
 arch/blackfin/cpu/Makefile  |2 +-
 arch/blackfin/cpu/gpio.c|  145 ++--
 arch/blackfin/include/asm/gpio.h|   62 +
 arch/blackfin/include/asm/portmux.h |5 -
 drivers/gpio/Makefile   |1 +
 drivers/gpio/adi_gpio2.c|  440 +++
 include/configs/bf548-ezkit.h   |2 +
 include/configs/bf609-ezkit.h   |2 +
 include/configs/bfin_adi_common.h   |4 +-
 9 files changed, 479 insertions(+), 184 deletions(-)
 create mode 100644 drivers/gpio/adi_gpio2.c

diff --git a/arch/blackfin/cpu/Makefile b/arch/blackfin/cpu/Makefile
index 929fc8b..1421cb2 100644
--- a/arch/blackfin/cpu/Makefile
+++ b/arch/blackfin/cpu/Makefile
@@ -18,7 +18,7 @@ CEXTRA   := initcode.o
 SEXTRA   := start.o
 SOBJS:= interrupt.o cache.o
 COBJS-y  += cpu.o
-COBJS-y  += gpio.o
+COBJS-$(CONFIG_ADI_GPIO1) += gpio.o
 COBJS-y  += interrupts.o
 COBJS-$(CONFIG_JTAG_CONSOLE) += jtag-console.o
 COBJS-y  += os_log.o
diff --git a/arch/blackfin/cpu/gpio.c b/arch/blackfin/cpu/gpio.c
index f684be5..f74a0b7 100644
--- a/arch/blackfin/cpu/gpio.c
+++ b/arch/blackfin/cpu/gpio.c
@@ -1,5 +1,6 @@
 /*
- * GPIO Abstraction Layer
+ * ADI GPIO1 Abstraction Layer
+ * Support BF50x, BF51x, BF52x, BF53x and BF561 only.
  *
  * Copyright 2006-2010 Analog Devices Inc.
  *
@@ -55,25 +56,6 @@ static struct gpio_port_t * const gpio_array[] = {
(struct gpio_port_t *) FIO0_FLAG_D,
(struct gpio_port_t *) FIO1_FLAG_D,
(struct gpio_port_t *) FIO2_FLAG_D,
-#elif defined(CONFIG_BF54x)
-   (struct gpio_port_t *)PORTA_FER,
-   (struct gpio_port_t *)PORTB_FER,
-   (struct gpio_port_t *)PORTC_FER,
-   (struct gpio_port_t *)PORTD_FER,
-   (struct gpio_port_t *)PORTE_FER,
-   (struct gpio_port_t *)PORTF_FER,
-   (struct gpio_port_t *)PORTG_FER,
-   (struct gpio_port_t *)PORTH_FER,
-   (struct gpio_port_t *)PORTI_FER,
-   (struct gpio_port_t *)PORTJ_FER,
-#elif defined(CONFIG_BF60x)
-   (struct gpio_port_t *)PORTA_FER,
-   (struct gpio_port_t *)PORTB_FER,
-   (struct gpio_port_t *)PORTC_FER,
-   (struct gpio_port_t *)PORTD_FER,
-   (struct gpio_port_t *)PORTE_FER,
-   (struct gpio_port_t *)PORTF_FER,
-   (struct gpio_port_t *)PORTG_FER,
 #else
 # error no gpio arrays defined
 #endif
@@ -174,12 +156,6 @@ DECLARE_RESERVED_MAP(peri, gpio_bank(MAX_RESOURCES));
 
 inline int check_gpio(unsigned gpio)
 {
-#if defined(CONFIG_BF54x)
-   if (gpio == GPIO_PB15 || gpio == GPIO_PC14 || gpio == GPIO_PC15
-   || gpio == GPIO_PH14 || gpio == GPIO_PH15
-   || gpio == GPIO_PJ14 || gpio == GPIO_PJ15)
-   return -EINVAL;
-#endif
if (gpio = MAX_BLACKFIN_GPIOS)
return -EINVAL;
return 0;
@@ -218,18 +194,6 @@ static void port_setup(unsigned gpio, unsigned short usage)
else
*port_fer[gpio_bank(gpio)] |= gpio_bit(gpio);
SSYNC();
-#elif defined(CONFIG_BF54x)
-   if (usage == GPIO_USAGE)
-   gpio_array[gpio_bank(gpio)]-port_fer = ~gpio_bit(gpio);
-   else
-   gpio_array[gpio_bank(gpio)]-port_fer |= gpio_bit(gpio);
-   SSYNC();
-#elif defined(CONFIG_BF60x)
-   if (usage == GPIO_USAGE)
-   gpio_array[gpio_bank(gpio)]-port_fer_clear = gpio_bit(gpio);
-   else
-   gpio_array[gpio_bank(gpio)]-port_fer_set = gpio_bit(gpio);
-   SSYNC();
 #endif
 }
 
@@ -304,30 +268,6 @@ static void portmux_setup(unsigned short per)
}
}
 }
-#elif defined(CONFIG_BF54x) || defined(CONFIG_BF60x)
-inline void portmux_setup(unsigned short per)
-{
-   u32 pmux;
-   u16 ident = P_IDENT(per);
-   u16 function = P_FUNCT2MUX(per);
-
-   pmux = gpio_array[gpio_bank(ident)]-port_mux;
-
-   pmux = ~(0x3  (2 * gpio_sub_n(ident)));
-   pmux |= (function  0x3)  (2 * gpio_sub_n(ident));
-
-   gpio_array[gpio_bank(ident)]-port_mux = pmux;
-}
-
-inline u16 get_portmux(unsigned short per)
-{
-   u32 pmux;
-   u16 ident = P_IDENT(per);
-
-   pmux = gpio_array[gpio_bank(ident)]-port_mux;
-
-   return (pmux  (2 * gpio_sub_n(ident))  0x3);
-}
 #elif defined(CONFIG_BF52x) || defined(CONFIG_BF51x)
 inline void portmux_setup(unsigned short per)
 {
@@