Lines Matching full:pin
24 void __set_direction(unsigned pin, int input) in __set_direction() argument
28 u = readl(GPIO_IO_CONF(pin)); in __set_direction()
30 u |= 1 << (pin & 31); in __set_direction()
32 u &= ~(1 << (pin & 31)); in __set_direction()
33 writel(u, GPIO_IO_CONF(pin)); in __set_direction()
35 u = readl(GPIO_IO_CONF(pin)); in __set_direction()
38 static void __set_level(unsigned pin, int high) in __set_level() argument
42 u = readl(GPIO_OUT(pin)); in __set_level()
44 u |= 1 << (pin & 31); in __set_level()
46 u &= ~(1 << (pin & 31)); in __set_level()
47 writel(u, GPIO_OUT(pin)); in __set_level()
50 static void __set_blinking(unsigned pin, int blink) in __set_blinking() argument
54 u = readl(GPIO_BLINK_EN(pin)); in __set_blinking()
56 u |= 1 << (pin & 31); in __set_blinking()
58 u &= ~(1 << (pin & 31)); in __set_blinking()
59 writel(u, GPIO_BLINK_EN(pin)); in __set_blinking()
62 int kw_gpio_is_valid(unsigned pin, int mode) in kw_gpio_is_valid() argument
64 if (pin < GPIO_MAX) { in kw_gpio_is_valid()
65 if ((mode & GPIO_INPUT_OK) && !test_bit(pin, gpio_valid_input)) in kw_gpio_is_valid()
68 if ((mode & GPIO_OUTPUT_OK) && !test_bit(pin, gpio_valid_output)) in kw_gpio_is_valid()
74 printf("%s: invalid GPIO %d\n", __func__, pin); in kw_gpio_is_valid()
78 void kw_gpio_set_valid(unsigned pin, int mode) in kw_gpio_set_valid() argument
83 __set_bit(pin, gpio_valid_input); in kw_gpio_set_valid()
85 __clear_bit(pin, gpio_valid_input); in kw_gpio_set_valid()
87 __set_bit(pin, gpio_valid_output); in kw_gpio_set_valid()
89 __clear_bit(pin, gpio_valid_output); in kw_gpio_set_valid()
94 int kw_gpio_direction_input(unsigned pin) in kw_gpio_direction_input() argument
96 if (kw_gpio_is_valid(pin, GPIO_INPUT_OK) != 0) in kw_gpio_direction_input()
100 __set_direction(pin, 1); in kw_gpio_direction_input()
105 int kw_gpio_direction_output(unsigned pin, int value) in kw_gpio_direction_output() argument
107 if (kw_gpio_is_valid(pin, GPIO_OUTPUT_OK) != 0) in kw_gpio_direction_output()
109 printf("%s: invalid GPIO %d\n", __func__, pin); in kw_gpio_direction_output()
113 __set_blinking(pin, 0); in kw_gpio_direction_output()
116 __set_level(pin, value); in kw_gpio_direction_output()
119 __set_direction(pin, 0); in kw_gpio_direction_output()
124 int kw_gpio_get_value(unsigned pin) in kw_gpio_get_value() argument
128 if (readl(GPIO_IO_CONF(pin)) & (1 << (pin & 31))) in kw_gpio_get_value()
129 val = readl(GPIO_DATA_IN(pin)) ^ readl(GPIO_IN_POL(pin)); in kw_gpio_get_value()
131 val = readl(GPIO_OUT(pin)); in kw_gpio_get_value()
133 return (val >> (pin & 31)) & 1; in kw_gpio_get_value()
136 void kw_gpio_set_value(unsigned pin, int value) in kw_gpio_set_value() argument
139 __set_level(pin, value); in kw_gpio_set_value()
142 void kw_gpio_set_blink(unsigned pin, int blink) in kw_gpio_set_blink() argument
145 __set_level(pin, 0); in kw_gpio_set_blink()
148 __set_blinking(pin, blink); in kw_gpio_set_blink()