Lines Matching +full:per +full:- +full:pin
5 * Copyright 2008-2013 Analog Devices Inc.
7 * Licensed under the GPL-2 or later
30 str_ident[ident].name[RESOURCE_LABEL_SIZE - 1] = 0; in set_label()
42 printf("adi_gpio2: please provide none-null label\n"); in cmp_label()
47 return -EINVAL; in cmp_label()
65 return -EINVAL; in check_gpio()
68 return -EINVAL; in check_gpio()
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()
87 inline void portmux_setup(unsigned short per) in portmux_setup() argument
90 u16 ident = P_IDENT(per); in portmux_setup()
91 u16 function = P_FUNCT2MUX(per); in portmux_setup()
93 pmux = gpio_array[gpio_bank(ident)]->port_mux; in portmux_setup()
98 gpio_array[gpio_bank(ident)]->port_mux = pmux; in portmux_setup()
101 inline u16 get_portmux(unsigned short per) in get_portmux() argument
104 u16 ident = P_IDENT(per); in get_portmux()
106 pmux = gpio_array[gpio_bank(ident)]->port_mux; in get_portmux()
114 (gpio_array[gpio_bank(gpio)]->dir_clear >> gpio_sub_n(gpio)); in get_gpio_dir()
123 * per Peripheral Identifier
129 int peripheral_request(unsigned short per, const char *label) in peripheral_request() argument
131 unsigned short ident = P_IDENT(per); in peripheral_request()
137 if (per & P_DONTCARE) in peripheral_request()
140 if (!(per & P_DEFINED)) in peripheral_request()
141 return -EINVAL; in peripheral_request()
145 /* If a pin can be muxed as either GPIO or peripheral, make in peripheral_request()
146 * sure it is not already a GPIO pin when we request it. in peripheral_request()
151 return -EBUSY; in peripheral_request()
156 * Pin functions like AMC address strobes my in peripheral_request()
160 if (!((per & P_MAYSHARE) && in peripheral_request()
161 get_portmux(per) == P_FUNCT2MUX(per))) { in peripheral_request()
163 * Allow that the identical pin function can in peripheral_request()
172 P_FUNCT2MUX(per), get_label(ident)); in peripheral_request()
173 return -EBUSY; in peripheral_request()
180 portmux_setup(per); in peripheral_request()
188 int peripheral_request_list(const unsigned short per[], const char *label) in peripheral_request_list() argument
193 for (cnt = 0; per[cnt] != 0; cnt++) { in peripheral_request_list()
194 ret = peripheral_request(per[cnt], label); in peripheral_request_list()
197 for (; cnt > 0; cnt--) in peripheral_request_list()
198 peripheral_free(per[cnt - 1]); in peripheral_request_list()
207 void peripheral_free(unsigned short per) in peripheral_free() argument
209 unsigned short ident = P_IDENT(per); in peripheral_free()
211 if (per & P_DONTCARE) in peripheral_free()
214 if (!(per & P_DEFINED)) in peripheral_free()
220 if (!(per & P_MAYSHARE)) in peripheral_free()
228 void peripheral_free_list(const unsigned short per[]) in peripheral_free_list() argument
231 for (cnt = 0; per[cnt] != 0; cnt++) in peripheral_free_list()
232 peripheral_free(per[cnt]); in peripheral_free_list()
249 return -EINVAL; in gpio_request()
254 * Do nothing and return - in gpio_request()
263 return -EBUSY; in gpio_request()
268 return -EBUSY; in gpio_request()
282 return -1; in gpio_free()
286 return -1; in gpio_free()
304 * Do nothing and return - in special_gpio_request()
313 return -EBUSY; in special_gpio_request()
319 return -EBUSY; in special_gpio_request()
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()
360 return -EINVAL; in gpio_direction_input()
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()
386 return -EINVAL; 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()
397 gpio_array[gpio_bank(gpio)]->dir_set = gpio_bit(gpio); in gpio_direction_output()
406 return 1 & (gpio_array[gpio_bank(gpio)]->data >> gpio_sub_n(gpio)); in gpio_get_value()