Lines Matching refs:gpio
59 # error no gpio arrays defined
112 static void gpio_error(unsigned gpio) in gpio_error() argument
114 printk(KERN_ERR "bfin-gpio: GPIO %d wasn't requested!\n", gpio); in gpio_error()
150 DECLARE_RESERVED_MAP(gpio, GPIO_BANK_NUM);
154 inline int check_gpio(unsigned gpio) in check_gpio() argument
156 if (gpio >= MAX_BLACKFIN_GPIOS) in check_gpio()
161 static void port_setup(unsigned gpio, unsigned short usage) in port_setup() argument
171 if (gpio < MAX_BLACKFIN_GPIOS || gpio >= MAX_RESOURCES) in port_setup()
174 gpio -= MAX_BLACKFIN_GPIOS; in port_setup()
177 *port_fer[gpio_bank(gpio)] |= gpio_bit(gpio); in port_setup()
179 *port_fer[gpio_bank(gpio)] &= ~gpio_bit(gpio); in port_setup()
184 if (check_gpio(gpio)) in port_setup()
189 *port_fer[gpio_bank(gpio)] &= ~gpio_bit(gpio); in port_setup()
191 *port_fer[gpio_bank(gpio)] |= gpio_bit(gpio); in port_setup()
354 void set_gpio_ ## name(unsigned gpio, unsigned short arg) \
359 gpio_array[gpio_bank(gpio)]->name |= gpio_bit(gpio); \
361 gpio_array[gpio_bank(gpio)]->name &= ~gpio_bit(gpio); \
375 void set_gpio_ ## name(unsigned gpio, unsigned short arg) \ in SET_GPIO()
381 gpio_array[gpio_bank(gpio)]->name ## _set = gpio_bit(gpio); \ in SET_GPIO()
383 gpio_array[gpio_bank(gpio)]->name ## _clear = gpio_bit(gpio); \ in SET_GPIO()
395 void set_gpio_toggle(unsigned gpio)
400 gpio_array[gpio_bank(gpio)]->toggle = gpio_bit(gpio);
412 void set_gpiop_ ## name(unsigned gpio, unsigned short arg) \
417 gpio_array[gpio_bank(gpio)]->name = arg; \
436 unsigned short get_gpio_ ## name(unsigned gpio) \
442 ret = 0x01 & (gpio_array[gpio_bank(gpio)]->name >> gpio_sub_n(gpio)); \
463 unsigned short get_gpiop_ ## name(unsigned gpio) \
469 ret = (gpio_array[gpio_bank(gpio)]->name); \
526 int bfin_gpio_pm_wakeup_ctrl(unsigned gpio, unsigned ctrl) in bfin_gpio_pm_wakeup_ctrl() argument
530 if (check_gpio(gpio) < 0) in bfin_gpio_pm_wakeup_ctrl()
535 reserve(wakeup, gpio); in bfin_gpio_pm_wakeup_ctrl()
537 unreserve(wakeup, gpio); in bfin_gpio_pm_wakeup_ctrl()
539 set_gpio_maskb(gpio, ctrl); in bfin_gpio_pm_wakeup_ctrl()
675 if (unlikely(!check_gpio(ident) && is_reserved(gpio, ident, 1))) { in peripheral_request()
801 int bfin_gpio_request(unsigned gpio, const char *label) in bfin_gpio_request() argument
805 if (check_gpio(gpio) < 0) in bfin_gpio_request()
816 if (cmp_label(gpio, label) == 0) { in bfin_gpio_request()
821 if (unlikely(is_reserved(gpio, gpio, 1))) { in bfin_gpio_request()
825 gpio, get_label(gpio)); in bfin_gpio_request()
829 if (unlikely(is_reserved(peri, gpio, 1))) { in bfin_gpio_request()
834 gpio, get_label(gpio)); in bfin_gpio_request()
838 if (unlikely(is_reserved(gpio_irq, gpio, 1))) { in bfin_gpio_request()
840 " (Documentation/blackfin/bfin-gpio-notes.txt)\n", gpio); in bfin_gpio_request()
842 set_gpio_polar(gpio, 0); in bfin_gpio_request()
845 reserve(gpio, gpio); in bfin_gpio_request()
846 set_label(gpio, label); in bfin_gpio_request()
850 port_setup(gpio, GPIO_USAGE); in bfin_gpio_request()
856 void bfin_gpio_free(unsigned gpio) in bfin_gpio_free() argument
860 if (check_gpio(gpio) < 0) in bfin_gpio_free()
867 if (unlikely(!is_reserved(gpio, gpio, 0))) { in bfin_gpio_free()
870 gpio_error(gpio); in bfin_gpio_free()
875 unreserve(gpio, gpio); in bfin_gpio_free()
877 set_label(gpio, "free"); in bfin_gpio_free()
886 int bfin_special_gpio_request(unsigned gpio, const char *label) in bfin_special_gpio_request() argument
898 if (cmp_label(gpio, label) == 0) { in bfin_special_gpio_request()
903 if (unlikely(is_reserved(special_gpio, gpio, 1))) { in bfin_special_gpio_request()
906 gpio, get_label(gpio)); in bfin_special_gpio_request()
910 if (unlikely(is_reserved(peri, gpio, 1))) { in bfin_special_gpio_request()
914 gpio, get_label(gpio)); in bfin_special_gpio_request()
919 reserve(special_gpio, gpio); in bfin_special_gpio_request()
920 reserve(peri, gpio); in bfin_special_gpio_request()
922 set_label(gpio, label); in bfin_special_gpio_request()
924 port_setup(gpio, GPIO_USAGE); in bfin_special_gpio_request()
930 void bfin_special_gpio_free(unsigned gpio) in bfin_special_gpio_free() argument
938 if (unlikely(!is_reserved(special_gpio, gpio, 0))) { in bfin_special_gpio_free()
939 gpio_error(gpio); in bfin_special_gpio_free()
944 unreserve(special_gpio, gpio); in bfin_special_gpio_free()
945 unreserve(peri, gpio); in bfin_special_gpio_free()
946 set_label(gpio, "free"); in bfin_special_gpio_free()
953 int bfin_gpio_irq_request(unsigned gpio, const char *label) in bfin_gpio_irq_request() argument
957 if (check_gpio(gpio) < 0) in bfin_gpio_irq_request()
962 if (unlikely(is_reserved(peri, gpio, 1))) { in bfin_gpio_irq_request()
967 gpio, get_label(gpio)); in bfin_gpio_irq_request()
971 if (unlikely(is_reserved(gpio, gpio, 1))) in bfin_gpio_irq_request()
974 gpio, get_label(gpio)); in bfin_gpio_irq_request()
976 reserve(gpio_irq, gpio); in bfin_gpio_irq_request()
977 set_label(gpio, label); in bfin_gpio_irq_request()
981 port_setup(gpio, GPIO_USAGE); in bfin_gpio_irq_request()
986 void bfin_gpio_irq_free(unsigned gpio) in bfin_gpio_irq_free() argument
990 if (check_gpio(gpio) < 0) in bfin_gpio_irq_free()
995 if (unlikely(!is_reserved(gpio_irq, gpio, 0))) { in bfin_gpio_irq_free()
998 gpio_error(gpio); in bfin_gpio_irq_free()
1003 unreserve(gpio_irq, gpio); in bfin_gpio_irq_free()
1005 set_label(gpio, "free"); in bfin_gpio_irq_free()
1010 static inline void __bfin_gpio_direction_input(unsigned gpio) in __bfin_gpio_direction_input() argument
1012 gpio_array[gpio_bank(gpio)]->dir &= ~gpio_bit(gpio); in __bfin_gpio_direction_input()
1013 gpio_array[gpio_bank(gpio)]->inen |= gpio_bit(gpio); in __bfin_gpio_direction_input()
1016 int bfin_gpio_direction_input(unsigned gpio) in bfin_gpio_direction_input() argument
1020 if (unlikely(!is_reserved(gpio, gpio, 0))) { in bfin_gpio_direction_input()
1021 gpio_error(gpio); in bfin_gpio_direction_input()
1026 __bfin_gpio_direction_input(gpio); in bfin_gpio_direction_input()
1034 void bfin_gpio_irq_prepare(unsigned gpio) in bfin_gpio_irq_prepare() argument
1036 port_setup(gpio, GPIO_USAGE); in bfin_gpio_irq_prepare()
1039 void bfin_gpio_set_value(unsigned gpio, int arg) in bfin_gpio_set_value() argument
1042 gpio_array[gpio_bank(gpio)]->data_set = gpio_bit(gpio); in bfin_gpio_set_value()
1044 gpio_array[gpio_bank(gpio)]->data_clear = gpio_bit(gpio); in bfin_gpio_set_value()
1048 int bfin_gpio_direction_output(unsigned gpio, int value) in bfin_gpio_direction_output() argument
1052 if (unlikely(!is_reserved(gpio, gpio, 0))) { in bfin_gpio_direction_output()
1053 gpio_error(gpio); in bfin_gpio_direction_output()
1059 gpio_array[gpio_bank(gpio)]->inen &= ~gpio_bit(gpio); in bfin_gpio_direction_output()
1060 gpio_set_value(gpio, value); in bfin_gpio_direction_output()
1061 gpio_array[gpio_bank(gpio)]->dir |= gpio_bit(gpio); in bfin_gpio_direction_output()
1070 int bfin_gpio_get_value(unsigned gpio) in bfin_gpio_get_value() argument
1074 if (unlikely(get_gpio_edge(gpio))) { in bfin_gpio_get_value()
1077 set_gpio_edge(gpio, 0); in bfin_gpio_get_value()
1078 ret = get_gpio_data(gpio); in bfin_gpio_get_value()
1079 set_gpio_edge(gpio, 1); in bfin_gpio_get_value()
1083 return get_gpio_data(gpio); in bfin_gpio_get_value()
1099 unsigned short gpio = P_IDENT(pin); in bfin_reset_boot_spi_cs() local
1100 port_setup(gpio, GPIO_USAGE); in bfin_reset_boot_spi_cs()
1101 gpio_array[gpio_bank(gpio)]->data_set = gpio_bit(gpio); in bfin_reset_boot_spi_cs()
1109 int c, irq, gpio; in gpio_proc_show() local
1113 gpio = is_reserved(gpio, c, 1); in gpio_proc_show()
1114 if (!check_gpio(c) && (gpio || irq)) in gpio_proc_show()
1116 get_label(c), (gpio && irq) ? " *" : "", in gpio_proc_show()
1150 static int bfin_gpiolib_direction_input(struct gpio_chip *chip, unsigned gpio) in bfin_gpiolib_direction_input() argument
1152 return bfin_gpio_direction_input(gpio); in bfin_gpiolib_direction_input()
1155 static int bfin_gpiolib_direction_output(struct gpio_chip *chip, unsigned gpio, int level) in bfin_gpiolib_direction_output() argument
1157 return bfin_gpio_direction_output(gpio, level); in bfin_gpiolib_direction_output()
1160 static int bfin_gpiolib_get_value(struct gpio_chip *chip, unsigned gpio) in bfin_gpiolib_get_value() argument
1162 return bfin_gpio_get_value(gpio); in bfin_gpiolib_get_value()
1165 static void bfin_gpiolib_set_value(struct gpio_chip *chip, unsigned gpio, int value) in bfin_gpiolib_set_value() argument
1167 return bfin_gpio_set_value(gpio, value); in bfin_gpiolib_set_value()
1170 static int bfin_gpiolib_gpio_request(struct gpio_chip *chip, unsigned gpio) in bfin_gpiolib_gpio_request() argument
1172 return bfin_gpio_request(gpio, chip->label); in bfin_gpiolib_gpio_request()
1175 static void bfin_gpiolib_gpio_free(struct gpio_chip *chip, unsigned gpio) in bfin_gpiolib_gpio_free() argument
1177 return bfin_gpio_free(gpio); in bfin_gpiolib_gpio_free()
1180 static int bfin_gpiolib_gpio_to_irq(struct gpio_chip *chip, unsigned gpio) in bfin_gpiolib_gpio_to_irq() argument
1182 return gpio + GPIO_IRQ_BASE; in bfin_gpiolib_gpio_to_irq()