1 #ifndef __RKCAMSYS_GPIO_H__
2 #define __RKCAMSYS_GPIO_H__
4 #include <linux/gpio.h>
5 #if defined(CONFIG_ARCH_ROCKCHIP)
6 #define RK30_PIN0_PA0 (0)
11 static inline unsigned int camsys_gpio_group_pin(unsigned char *io_name)
13 unsigned char *pin_char;
16 if (strstr(io_name, "PA")) {
17 pin_char = strstr(io_name, "PA");
19 pin = *pin_char - 0x30;
20 } else if (strstr(io_name, "PB")) {
21 pin_char = strstr(io_name, "PB");
23 pin = *pin_char - 0x30;
25 } else if (strstr(io_name, "PC")) {
26 pin_char = strstr(io_name, "PC");
28 pin = *pin_char - 0x30;
30 } else if (strstr(io_name, "PD")) {
31 pin_char = strstr(io_name, "PD");
33 pin = *pin_char - 0x30;
40 static inline unsigned int camsys_gpio_group(unsigned char *io_name)
44 if (strstr(io_name,"PIN0")) {
46 } else if (strstr(io_name,"PIN1")) {
48 } else if (strstr(io_name,"PIN2")) {
50 } else if (strstr(io_name,"PIN3")) {
52 } else if (strstr(io_name,"PIN4")) {
54 } else if (strstr(io_name,"PIN5")) {
56 } else if (strstr(io_name,"PIN6")) {
58 } else if (strstr(io_name,"PIN7")) {
60 } else if (strstr(io_name,"PIN8")) {
67 static inline unsigned int camsys_gpio_get(unsigned char *io_name)
71 unsigned int group_pin;
73 #if (defined(CONFIG_ARCH_RK3066B) || defined(CONFIG_ARCH_RK3188) || defined(CONFIG_ARCH_RK319X) ||defined(CONFIG_ARCH_ROCKCHIP))
74 if (strstr(io_name, "RK30_")) {
76 group = camsys_gpio_group(io_name);
77 group_pin = camsys_gpio_group_pin(io_name);
79 if (group >= GPIO_BANKS) {
82 gpio += group*NUM_GROUP + group_pin;