add new switch configuration api
[openwrt/staging/wigyori.git] / target / linux / rb532 / files / include / asm-mips / rc32434 / gpio.h
index 1638cfeacc57f8fd268e2d40deb1d86051c576fd..859b9c9219b6e8c6b2398fee914d4b40520957e5 100644 (file)
@@ -1,39 +1,21 @@
-#ifndef __IDT_GPIO_H__
-#define __IDT_GPIO_H__
-
-/*******************************************************************************
- *
+/*
  * Copyright 2002 Integrated Device Technology, Inc.
- *             All rights reserved.
+ *     All rights reserved.
  *
  * GPIO register definition.
  *
- * File   : $Id: gpio.h,v 1.2 2002/06/06 18:34:04 astichte Exp $
- *
  * Author : ryan.holmQVist@idt.com
  * Date   : 20011005
- * Update :
- *         $Log: gpio.h,v $
- *         Revision 1.2  2002/06/06 18:34:04  astichte
- *         Added XXX_PhysicalAddress and XXX_VirtualAddress
- *     
- *         Revision 1.1  2002/05/29 17:33:22  sysarch
- *         jba File moved from vcode/include/idt/acacia
- *     
- *
- ******************************************************************************/
+ * Copyright (C) 2001, 2002 Ryan Holm <ryan.holmQVist@idt.com>
+ * Copyright (C) 2008 Florian Fainelli <florian@openwrt.org>
+ */
 
-enum
-{
-       GPIO0_PhysicalAddress   = 0x18050000,
-       GPIO_PhysicalAddress    = GPIO0_PhysicalAddress,        // Default
+#ifndef _RC32434_GPIO_H_
+#define _RC32434_GPIO_H_
 
-       GPIO0_VirtualAddress    = 0xb8050000,
-       GPIO_VirtualAddress     = GPIO0_VirtualAddress,         // Default
-} ;
+#include <linux/types.h>
 
-typedef struct
-{
+struct rb500_gpio_reg {
        u32   gpiofunc;   /* GPIO Function Register
                           * gpiofunc[x]==0 bit = gpio
                           * func[x]==1  bit = altfunc
@@ -53,129 +35,88 @@ typedef struct
                           * cleared in ISR (STICKY bits)
                           */
        u32   gpionmien;  /* GPIO Non-maskable Interrupt Enable Register */
-} volatile * GPIO_t ;
+};
+
+/* UART GPIO signals */
+#define RC32434_UART0_SOUT     (1 << 0)
+#define RC32434_UART0_SIN      (1 << 1)
+#define RC32434_UART0_RTS      (1 << 2)
+#define RC32434_UART0_CTS      (1 << 3)
+
+/* M & P bus GPIO signals */
+#define RC32434_MP_BIT_22      (1 << 4)
+#define RC32434_MP_BIT_23      (1 << 5)
+#define RC32434_MP_BIT_24      (1 << 6)
+#define RC32434_MP_BIT_25      (1 << 7)
 
-typedef enum
+/* CPU GPIO signals */
+#define RC32434_CPU_GPIO       (1 << 8)
+
+/* Reserved GPIO signals */
+#define RC32434_AF_SPARE_6     (1 << 9)
+#define RC32434_AF_SPARE_4     (1 << 10)
+#define RC32434_AF_SPARE_3     (1 << 11)
+#define RC32434_AF_SPARE_2     (1 << 12)
+
+/* PCI messaging unit */
+#define RC32434_PCI_MSU_GPIO   (1 << 13)
+
+extern int rb500_gpio_get_value(unsigned gpio);
+extern void rb500_gpio_set_value(unsigned gpio, int value);
+extern int rb500_gpio_direction_input(unsigned gpio);
+extern int rb500_gpio_direction_output(unsigned gpio, int value);
+extern void rb500_gpio_set_int_level(unsigned gpio, int value);
+extern int rb500_gpio_get_int_level(unsigned gpio);
+extern void rb500_gpio_set_int_status(unsigned gpio, int value);
+extern int rb500_gpio_get_int_status(unsigned gpio);
+extern void rb500_gpio_set_func(unsigned gpio, int value);
+extern int rb500_gpio_get_func(unsigned gpio);
+
+
+/* Wrappers for the arch-neutral GPIO API */
+
+static inline int gpio_request(unsigned gpio, const char *label)
 {
-       GPIO_gpio_v             = 0,            // gpiofunc use pin as GPIO.
-       GPIO_alt_v              = 1,            // gpiofunc use pin as alt.
-       GPIO_input_v            = 0,            // gpiocfg use pin as input.
-       GPIO_output_v           = 1,            // gpiocfg use pin as output.
-       GPIO_pin0_b             = 0,
-       GPIO_pin0_m             = 0x00000001,
-       GPIO_pin1_b             = 1,
-       GPIO_pin1_m             = 0x00000002,
-       GPIO_pin2_b             = 2,
-       GPIO_pin2_m             = 0x00000004,
-       GPIO_pin3_b             = 3,
-       GPIO_pin3_m             = 0x00000008,
-       GPIO_pin4_b             = 4,
-       GPIO_pin4_m             = 0x00000010,
-       GPIO_pin5_b             = 5,
-       GPIO_pin5_m             = 0x00000020,
-       GPIO_pin6_b             = 6,
-       GPIO_pin6_m             = 0x00000040,
-       GPIO_pin7_b             = 7,
-       GPIO_pin7_m             = 0x00000080,
-       GPIO_pin8_b             = 8,
-       GPIO_pin8_m             = 0x00000100,
-       GPIO_pin9_b             = 9,
-       GPIO_pin9_m             = 0x00000200,
-       GPIO_pin10_b            = 10,
-       GPIO_pin10_m            = 0x00000400,
-       GPIO_pin11_b            = 11,
-       GPIO_pin11_m            = 0x00000800,
-       GPIO_pin12_b            = 12,
-       GPIO_pin12_m            = 0x00001000,
-       GPIO_pin13_b            = 13,
-       GPIO_pin13_m            = 0x00002000,
-       GPIO_pin14_b            = 14,
-       GPIO_pin14_m            = 0x00004000,
-       GPIO_pin15_b            = 15,
-       GPIO_pin15_m            = 0x00008000,
-       GPIO_pin16_b            = 16,
-       GPIO_pin16_m            = 0x00010000,
-       GPIO_pin17_b            = 17,
-       GPIO_pin17_m            = 0x00020000,
-       GPIO_pin18_b            = 18,
-       GPIO_pin18_m            = 0x00040000,
-       GPIO_pin19_b            = 19,
-       GPIO_pin19_m            = 0x00080000,
-       GPIO_pin20_b            = 20,
-       GPIO_pin20_m            = 0x00100000,
-       GPIO_pin21_b            = 21,
-       GPIO_pin21_m            = 0x00200000,
-       GPIO_pin22_b            = 22,
-       GPIO_pin22_m            = 0x00400000,
-       GPIO_pin23_b            = 23,
-       GPIO_pin23_m            = 0x00800000,
-       GPIO_pin24_b            = 24,
-       GPIO_pin24_m            = 0x01000000,
-       GPIO_pin25_b            = 25,
-       GPIO_pin25_m            = 0x02000000,
-       GPIO_pin26_b            = 26,
-       GPIO_pin26_m            = 0x04000000,
-       GPIO_pin27_b            = 27,
-       GPIO_pin27_m            = 0x08000000,
-       GPIO_pin28_b            = 28,
-       GPIO_pin28_m            = 0x10000000,
-       GPIO_pin29_b            = 29,
-       GPIO_pin29_m            = 0x20000000,
-       GPIO_pin30_b            = 30,
-       GPIO_pin30_m            = 0x40000000,
-       GPIO_pin31_b            = 31,
-       GPIO_pin31_m            = 0x80000000,
-
-// Alternate function pins.  Corrsponding gpiofunc bit set to GPIO_alt_v.
-
-       GPIO_u0sout_b           = GPIO_pin0_b,          // UART 0 serial out.
-       GPIO_u0sout_m           = GPIO_pin0_m,
-               GPIO_u0sout_cfg_v       = GPIO_output_v,
-       GPIO_u0sinp_b   = GPIO_pin1_b,                  // UART 0 serial in.
-       GPIO_u0sinp_m   = GPIO_pin1_m,
-               GPIO_u0sinp_cfg_v       = GPIO_input_v,
-       GPIO_u0rtsn_b   = GPIO_pin2_b,                  // UART 0 req. to send.
-       GPIO_u0rtsn_m   = GPIO_pin2_m,
-               GPIO_u0rtsn_cfg_v       = GPIO_output_v,
-       GPIO_u0ctsn_b   = GPIO_pin3_b,                  // UART 0 clear to send.
-       GPIO_u0ctsn_m   = GPIO_pin3_m,
-               GPIO_u0ctsn_cfg_v       = GPIO_input_v,
-       GPIO_maddr22_b          = GPIO_pin4_b,  // M&P bus bit 22.
-       GPIO_maddr22_m          = GPIO_pin4_m,
-               GPIO_maddr22_cfg_v      = GPIO_output_v,
-
-       GPIO_maddr23_b          = GPIO_pin5_b,  // M&P bus bit 23.
-       GPIO_maddr23_m          = GPIO_pin5_m,
-               GPIO_maddr23_cfg_v      = GPIO_output_v,
-
-       GPIO_maddr24_b          = GPIO_pin6_b,  // M&P bus bit 24.
-       GPIO_maddr24_m          = GPIO_pin6_m,
-               GPIO_maddr24_cfg_v      = GPIO_output_v,
-
-       GPIO_maddr25_b          = GPIO_pin7_b,  // M&P bus bit 25.
-       GPIO_maddr25_m          = GPIO_pin7_m,
-               GPIO_maddr25_cfg_v      = GPIO_output_v,
-
-       GPIO_cpu_b              = GPIO_pin8_b,  // M&P bus bit 25.
-       GPIO_cpu_m              = GPIO_pin8_m,
-               GPIO_cpu_cfg_v  = GPIO_output_v,
-       GPIO_afspare6_b         = GPIO_pin9_b,  // reserved.
-       GPIO_afspare6_m         = GPIO_pin9_m,
-               GPIO_afspare6_cfg_v     = GPIO_input_v,
-       GPIO_afspare4_b         = GPIO_pin10_b,         // reserved.
-       GPIO_afspare4_m         = GPIO_pin10_m,
-               GPIO_afspare4_cfg_v     = GPIO_input_v,
-       GPIO_afspare3_b         = GPIO_pin11_b,         // reserved.
-       GPIO_afspare3_m         = GPIO_pin11_m,
-               GPIO_afspare3_cfg_v     = GPIO_input_v,
-       GPIO_afspare2_b         = GPIO_pin12_b,         // reserved.
-       GPIO_afspare2_m         = GPIO_pin12_m,
-               GPIO_afspare2_cfg_v     = GPIO_input_v,
-       GPIO_pcimuintn_b        = GPIO_pin13_b,         // PCI messaging int.
-       GPIO_pcimuintn_m        = GPIO_pin13_m,
-               GPIO_pcimuintn_cfg_v    = GPIO_output_v,
-
-} GPIO_DEFS_t;
-
-#endif // __IDT_GPIO_H__
+       /* Not yet implemented */
+       return 0;
+}
+
+static inline void gpio_free(unsigned gpio)
+{
+       /* Not yet implemented */
+}
+
+static inline int gpio_direction_input(unsigned gpio)
+{
+       return rb500_gpio_direction_input(gpio);
+}
+
+static inline int gpio_direction_output(unsigned gpio, int value)
+{
+       return rb500_gpio_direction_output(gpio, value);
+}
+
+static inline int gpio_get_value(unsigned gpio)
+{
+       return rb500_gpio_get_value(gpio);
+}
+
+static inline void gpio_set_value(unsigned gpio, int value)
+{
+       rb500_gpio_set_value(gpio, value);
+}
+
+static inline int gpio_to_irq(unsigned gpio)
+{
+       return gpio;
+}
+
+static inline int irq_to_gpio(unsigned irq)
+{
+       return irq;
+}
+
+/* For cansleep */
+#include <asm-generic/gpio.h>
 
+#endif /* _RC32434_GPIO_H_ */