diff options
Diffstat (limited to 'arch/sh/include/asm/gpio.h')
| -rw-r--r-- | arch/sh/include/asm/gpio.h | 102 |
1 files changed, 17 insertions, 85 deletions
diff --git a/arch/sh/include/asm/gpio.h b/arch/sh/include/asm/gpio.h index 90673658eb1..7dfe15e2e99 100644 --- a/arch/sh/include/asm/gpio.h +++ b/arch/sh/include/asm/gpio.h @@ -19,104 +19,36 @@ #include <cpu/gpio.h> #endif -typedef unsigned short pinmux_enum_t; -typedef unsigned char pinmux_flag_t; - -#define PINMUX_TYPE_NONE 0 -#define PINMUX_TYPE_FUNCTION 1 -#define PINMUX_TYPE_GPIO 2 -#define PINMUX_TYPE_OUTPUT 3 -#define PINMUX_TYPE_INPUT 4 -#define PINMUX_TYPE_INPUT_PULLUP 5 -#define PINMUX_TYPE_INPUT_PULLDOWN 6 - -#define PINMUX_FLAG_TYPE (0x7) -#define PINMUX_FLAG_WANT_PULLUP (1 << 3) -#define PINMUX_FLAG_WANT_PULLDOWN (1 << 4) - -struct pinmux_gpio { - pinmux_enum_t enum_id; - pinmux_flag_t flags; -}; - -#define PINMUX_GPIO(gpio, data_or_mark) [gpio] = { data_or_mark } -#define PINMUX_DATA(data_or_mark, ids...) data_or_mark, ids, 0 - -struct pinmux_cfg_reg { - unsigned long reg, reg_width, field_width; - unsigned long *cnt; - pinmux_enum_t *enum_ids; -}; - -#define PINMUX_CFG_REG(name, r, r_width, f_width) \ - .reg = r, .reg_width = r_width, .field_width = f_width, \ - .cnt = (unsigned long [r_width / f_width]) {}, \ - .enum_ids = (pinmux_enum_t [(r_width / f_width) * (1 << f_width)]) \ - -struct pinmux_data_reg { - unsigned long reg, reg_width; - pinmux_enum_t *enum_ids; -}; - -#define PINMUX_DATA_REG(name, r, r_width) \ - .reg = r, .reg_width = r_width, \ - .enum_ids = (pinmux_enum_t [r_width]) \ - -struct pinmux_range { - pinmux_enum_t begin; - pinmux_enum_t end; - pinmux_enum_t force; -}; - -struct pinmux_info { - char *name; - pinmux_enum_t reserved_id; - struct pinmux_range data; - struct pinmux_range input; - struct pinmux_range input_pd; - struct pinmux_range input_pu; - struct pinmux_range output; - struct pinmux_range mark; - struct pinmux_range function; - - unsigned first_gpio, last_gpio; - - struct pinmux_gpio *gpios; - struct pinmux_cfg_reg *cfg_regs; - struct pinmux_data_reg *data_regs; +#define ARCH_NR_GPIOS 512 +#include <asm-generic/gpio.h> - pinmux_enum_t *gpio_data; - unsigned int gpio_data_size; +#ifdef CONFIG_GPIOLIB - unsigned long *gpio_in_use; -}; +static inline int gpio_get_value(unsigned gpio) +{ + return __gpio_get_value(gpio); +} -int register_pinmux(struct pinmux_info *pip); +static inline void gpio_set_value(unsigned gpio, int value) +{ + __gpio_set_value(gpio, value); +} -int __gpio_request(unsigned gpio); -static inline int gpio_request(unsigned gpio, const char *label) +static inline int gpio_cansleep(unsigned gpio) { - return __gpio_request(gpio); + return __gpio_cansleep(gpio); } -void gpio_free(unsigned gpio); -int gpio_direction_input(unsigned gpio); -int gpio_direction_output(unsigned gpio, int value); -int gpio_get_value(unsigned gpio); -void gpio_set_value(unsigned gpio, int value); -/* IRQ modes are unspported */ static inline int gpio_to_irq(unsigned gpio) { - WARN_ON(1); - return -EINVAL; + return __gpio_to_irq(gpio); } -static inline int irq_to_gpio(unsigned irq) +static inline int irq_to_gpio(unsigned int irq) { - WARN_ON(1); - return -EINVAL; + return -ENOSYS; } -#include <asm-generic/gpio.h> +#endif /* CONFIG_GPIOLIB */ #endif /* __ASM_SH_GPIO_H */ |
