diff options
Diffstat (limited to 'arch/sh/include/asm/gpio.h')
-rw-r--r-- | arch/sh/include/asm/gpio.h | 70 |
1 files changed, 42 insertions, 28 deletions
diff --git a/arch/sh/include/asm/gpio.h b/arch/sh/include/asm/gpio.h index 90673658eb14..61f93da2c62e 100644 --- a/arch/sh/include/asm/gpio.h +++ b/arch/sh/include/asm/gpio.h | |||
@@ -19,8 +19,42 @@ | |||
19 | #include <cpu/gpio.h> | 19 | #include <cpu/gpio.h> |
20 | #endif | 20 | #endif |
21 | 21 | ||
22 | #define ARCH_NR_GPIOS 512 | ||
23 | #include <asm-generic/gpio.h> | ||
24 | |||
25 | #ifdef CONFIG_GPIOLIB | ||
26 | |||
27 | static inline int gpio_get_value(unsigned gpio) | ||
28 | { | ||
29 | return __gpio_get_value(gpio); | ||
30 | } | ||
31 | |||
32 | static inline void gpio_set_value(unsigned gpio, int value) | ||
33 | { | ||
34 | __gpio_set_value(gpio, value); | ||
35 | } | ||
36 | |||
37 | static inline int gpio_cansleep(unsigned gpio) | ||
38 | { | ||
39 | return __gpio_cansleep(gpio); | ||
40 | } | ||
41 | |||
42 | static inline int gpio_to_irq(unsigned gpio) | ||
43 | { | ||
44 | WARN_ON(1); | ||
45 | return -ENOSYS; | ||
46 | } | ||
47 | |||
48 | static inline int irq_to_gpio(unsigned int irq) | ||
49 | { | ||
50 | WARN_ON(1); | ||
51 | return -EINVAL; | ||
52 | } | ||
53 | |||
54 | #endif /* CONFIG_GPIOLIB */ | ||
55 | |||
22 | typedef unsigned short pinmux_enum_t; | 56 | typedef unsigned short pinmux_enum_t; |
23 | typedef unsigned char pinmux_flag_t; | 57 | typedef unsigned short pinmux_flag_t; |
24 | 58 | ||
25 | #define PINMUX_TYPE_NONE 0 | 59 | #define PINMUX_TYPE_NONE 0 |
26 | #define PINMUX_TYPE_FUNCTION 1 | 60 | #define PINMUX_TYPE_FUNCTION 1 |
@@ -34,6 +68,11 @@ typedef unsigned char pinmux_flag_t; | |||
34 | #define PINMUX_FLAG_WANT_PULLUP (1 << 3) | 68 | #define PINMUX_FLAG_WANT_PULLUP (1 << 3) |
35 | #define PINMUX_FLAG_WANT_PULLDOWN (1 << 4) | 69 | #define PINMUX_FLAG_WANT_PULLDOWN (1 << 4) |
36 | 70 | ||
71 | #define PINMUX_FLAG_DBIT_SHIFT 5 | ||
72 | #define PINMUX_FLAG_DBIT (0x1f << PINMUX_FLAG_DBIT_SHIFT) | ||
73 | #define PINMUX_FLAG_DREG_SHIFT 10 | ||
74 | #define PINMUX_FLAG_DREG (0x3f << PINMUX_FLAG_DREG_SHIFT) | ||
75 | |||
37 | struct pinmux_gpio { | 76 | struct pinmux_gpio { |
38 | pinmux_enum_t enum_id; | 77 | pinmux_enum_t enum_id; |
39 | pinmux_flag_t flags; | 78 | pinmux_flag_t flags; |
@@ -54,7 +93,7 @@ struct pinmux_cfg_reg { | |||
54 | .enum_ids = (pinmux_enum_t [(r_width / f_width) * (1 << f_width)]) \ | 93 | .enum_ids = (pinmux_enum_t [(r_width / f_width) * (1 << f_width)]) \ |
55 | 94 | ||
56 | struct pinmux_data_reg { | 95 | struct pinmux_data_reg { |
57 | unsigned long reg, reg_width; | 96 | unsigned long reg, reg_width, reg_shadow; |
58 | pinmux_enum_t *enum_ids; | 97 | pinmux_enum_t *enum_ids; |
59 | }; | 98 | }; |
60 | 99 | ||
@@ -89,34 +128,9 @@ struct pinmux_info { | |||
89 | unsigned int gpio_data_size; | 128 | unsigned int gpio_data_size; |
90 | 129 | ||
91 | unsigned long *gpio_in_use; | 130 | unsigned long *gpio_in_use; |
131 | struct gpio_chip chip; | ||
92 | }; | 132 | }; |
93 | 133 | ||
94 | int register_pinmux(struct pinmux_info *pip); | 134 | int register_pinmux(struct pinmux_info *pip); |
95 | 135 | ||
96 | int __gpio_request(unsigned gpio); | ||
97 | static inline int gpio_request(unsigned gpio, const char *label) | ||
98 | { | ||
99 | return __gpio_request(gpio); | ||
100 | } | ||
101 | void gpio_free(unsigned gpio); | ||
102 | int gpio_direction_input(unsigned gpio); | ||
103 | int gpio_direction_output(unsigned gpio, int value); | ||
104 | int gpio_get_value(unsigned gpio); | ||
105 | void gpio_set_value(unsigned gpio, int value); | ||
106 | |||
107 | /* IRQ modes are unspported */ | ||
108 | static inline int gpio_to_irq(unsigned gpio) | ||
109 | { | ||
110 | WARN_ON(1); | ||
111 | return -EINVAL; | ||
112 | } | ||
113 | |||
114 | static inline int irq_to_gpio(unsigned irq) | ||
115 | { | ||
116 | WARN_ON(1); | ||
117 | return -EINVAL; | ||
118 | } | ||
119 | |||
120 | #include <asm-generic/gpio.h> | ||
121 | |||
122 | #endif /* __ASM_SH_GPIO_H */ | 136 | #endif /* __ASM_SH_GPIO_H */ |