Lines Matching refs:gpio
20 static void gpio_error(unsigned gpio) in gpio_error() argument
22 printf("adi_gpio2: GPIO %d wasn't requested!\n", gpio); in gpio_error()
56 static DECLARE_RESERVED_MAP(gpio, GPIO_BANK_NUM);
59 inline int check_gpio(unsigned gpio) in check_gpio() argument
62 if (gpio == GPIO_PB15 || gpio == GPIO_PC14 || gpio == GPIO_PC15 || in check_gpio()
63 gpio == GPIO_PH14 || gpio == GPIO_PH15 || in check_gpio()
64 gpio == GPIO_PJ14 || gpio == GPIO_PJ15) in check_gpio()
67 if (gpio >= MAX_GPIOS) in check_gpio()
72 static void port_setup(unsigned gpio, unsigned short usage) in port_setup() argument
76 gpio_array[gpio_bank(gpio)]->port_fer &= ~gpio_bit(gpio); in port_setup()
78 gpio_array[gpio_bank(gpio)]->port_fer |= gpio_bit(gpio); in port_setup()
81 gpio_array[gpio_bank(gpio)]->port_fer_clear = gpio_bit(gpio); in port_setup()
83 gpio_array[gpio_bank(gpio)]->port_fer_set = gpio_bit(gpio); in port_setup()
111 unsigned short get_gpio_dir(unsigned gpio) in get_gpio_dir() argument
114 (gpio_array[gpio_bank(gpio)]->dir_clear >> gpio_sub_n(gpio)); in get_gpio_dir()
148 if (unlikely(!check_gpio(ident) && is_reserved(gpio, ident, 1))) { in peripheral_request()
246 int gpio_request(unsigned gpio, const char *label) in gpio_request() argument
248 if (check_gpio(gpio) < 0) in gpio_request()
257 if (cmp_label(gpio, label) == 0) in gpio_request()
260 if (unlikely(is_reserved(gpio, gpio, 1))) { in gpio_request()
262 gpio, get_label(gpio)); in gpio_request()
265 if (unlikely(is_reserved(peri, gpio, 1))) { in gpio_request()
267 "by %s!\n", gpio, get_label(gpio)); in gpio_request()
271 reserve(gpio, gpio); in gpio_request()
272 set_label(gpio, label); in gpio_request()
274 port_setup(gpio, GPIO_USAGE); in gpio_request()
279 int gpio_free(unsigned gpio) in gpio_free() argument
281 if (check_gpio(gpio) < 0) in gpio_free()
284 if (unlikely(!is_reserved(gpio, gpio, 0))) { in gpio_free()
285 gpio_error(gpio); in gpio_free()
289 unreserve(gpio, gpio); in gpio_free()
291 set_label(gpio, "free"); in gpio_free()
299 int special_gpio_request(unsigned gpio, const char *label) in special_gpio_request() argument
307 if (cmp_label(gpio, label) == 0) in special_gpio_request()
310 if (unlikely(is_reserved(special_gpio, gpio, 1))) { in special_gpio_request()
312 gpio, get_label(gpio)); in special_gpio_request()
315 if (unlikely(is_reserved(peri, gpio, 1))) { in special_gpio_request()
317 "by %s!\n", gpio, get_label(gpio)); in special_gpio_request()
322 reserve(special_gpio, gpio); in special_gpio_request()
323 reserve(peri, gpio); in special_gpio_request()
325 set_label(gpio, label); in special_gpio_request()
326 port_setup(gpio, GPIO_USAGE); in special_gpio_request()
331 void special_gpio_free(unsigned gpio) in special_gpio_free() argument
333 if (unlikely(!is_reserved(special_gpio, gpio, 0))) { in special_gpio_free()
334 gpio_error(gpio); in special_gpio_free()
338 unreserve(special_gpio, gpio); in special_gpio_free()
339 unreserve(peri, gpio); in special_gpio_free()
340 set_label(gpio, "free"); in special_gpio_free()
344 static inline void __gpio_direction_input(unsigned gpio) in __gpio_direction_input() argument
346 gpio_array[gpio_bank(gpio)]->dir_clear = gpio_bit(gpio); in __gpio_direction_input()
348 gpio_array[gpio_bank(gpio)]->inen |= gpio_bit(gpio); in __gpio_direction_input()
350 gpio_array[gpio_bank(gpio)]->inen_set = gpio_bit(gpio); in __gpio_direction_input()
354 int gpio_direction_input(unsigned gpio) in gpio_direction_input() argument
358 if (!is_reserved(gpio, gpio, 0)) { in gpio_direction_input()
359 gpio_error(gpio); in gpio_direction_input()
364 __gpio_direction_input(gpio); in gpio_direction_input()
370 int gpio_set_value(unsigned gpio, int arg) in gpio_set_value() argument
373 gpio_array[gpio_bank(gpio)]->data_set = gpio_bit(gpio); in gpio_set_value()
375 gpio_array[gpio_bank(gpio)]->data_clear = gpio_bit(gpio); in gpio_set_value()
380 int gpio_direction_output(unsigned gpio, int value) in gpio_direction_output() argument
384 if (!is_reserved(gpio, gpio, 0)) { in gpio_direction_output()
385 gpio_error(gpio); in gpio_direction_output()
392 gpio_array[gpio_bank(gpio)]->inen &= ~gpio_bit(gpio); in gpio_direction_output()
394 gpio_array[gpio_bank(gpio)]->inen_clear = gpio_bit(gpio); in gpio_direction_output()
396 gpio_set_value(gpio, value); in gpio_direction_output()
397 gpio_array[gpio_bank(gpio)]->dir_set = gpio_bit(gpio); in gpio_direction_output()
404 int gpio_get_value(unsigned gpio) in gpio_get_value() argument
406 return 1 & (gpio_array[gpio_bank(gpio)]->data >> gpio_sub_n(gpio)); in gpio_get_value()
411 int c, gpio; in gpio_labels() local
414 gpio = is_reserved(gpio, c, 1); in gpio_labels()
415 if (!check_gpio(c) && gpio) in gpio_labels()