Lines Matching +full:- +full:gpio +full:- +full:bank

1 // SPDX-License-Identifier: GPL-2.0+
16 #define GPIO_BANK(gpio) ((gpio) >> 5) argument
17 #define GPIO_BITMASK(gpio) \ argument
18 (1UL << ((gpio) & (GPIO_PER_BANK - 1)))
20 #define GPIO_OUT_STATUS(bank) (0x00000000 + ((bank) << 2)) argument
21 #define GPIO_IN_STATUS(bank) (0x00000020 + ((bank) << 2)) argument
22 #define GPIO_OUT_SET(bank) (0x00000040 + ((bank) << 2)) argument
23 #define GPIO_OUT_CLEAR(bank) (0x00000060 + ((bank) << 2)) argument
24 #define GPIO_INT_STATUS(bank) (0x00000080 + ((bank) << 2)) argument
25 #define GPIO_INT_MASK(bank) (0x000000a0 + ((bank) << 2)) argument
26 #define GPIO_INT_MSKCLR(bank) (0x000000c0 + ((bank) << 2)) argument
27 #define GPIO_CONTROL(bank) (0x00000100 + ((bank) << 2)) argument
28 #define GPIO_PWD_STATUS(bank) (0x00000500 + ((bank) << 2)) argument
45 int gpio_request(unsigned gpio, const char *label) in gpio_request() argument
50 off = GPIO_PWD_STATUS(GPIO_BANK(gpio)); in gpio_request()
51 value = readl(GPIO_BASE + off) & ~GPIO_BITMASK(gpio); in gpio_request()
57 int gpio_free(unsigned gpio) in gpio_free() argument
62 off = GPIO_PWD_STATUS(GPIO_BANK(gpio)); in gpio_free()
63 value = readl(GPIO_BASE + off) | GPIO_BITMASK(gpio); in gpio_free()
69 int gpio_direction_input(unsigned gpio) in gpio_direction_input() argument
73 val = readl(GPIO_BASE + GPIO_CONTROL(gpio)); in gpio_direction_input()
76 writel(val, GPIO_BASE + GPIO_CONTROL(gpio)); in gpio_direction_input()
81 int gpio_direction_output(unsigned gpio, int value) in gpio_direction_output() argument
83 int bank_id = GPIO_BANK(gpio); in gpio_direction_output()
84 int bitmask = GPIO_BITMASK(gpio); in gpio_direction_output()
87 val = readl(GPIO_BASE + GPIO_CONTROL(gpio)); in gpio_direction_output()
90 writel(val, GPIO_BASE + GPIO_CONTROL(gpio)); in gpio_direction_output()
100 int gpio_get_value(unsigned gpio) in gpio_get_value() argument
102 int bank_id = GPIO_BANK(gpio); in gpio_get_value()
103 int bitmask = GPIO_BITMASK(gpio); in gpio_get_value()
106 /* determine the GPIO pin direction */ in gpio_get_value()
107 val = readl(GPIO_BASE + GPIO_CONTROL(gpio)); in gpio_get_value()
110 /* read the GPIO bank status */ in gpio_get_value()
119 void gpio_set_value(unsigned gpio, int value) in gpio_set_value() argument
121 int bank_id = GPIO_BANK(gpio); in gpio_set_value()
122 int bitmask = GPIO_BITMASK(gpio); in gpio_set_value()
125 /* determine the GPIO pin direction */ in gpio_set_value()
126 val = readl(GPIO_BASE + GPIO_CONTROL(gpio)); in gpio_set_value()
131 printf("%s: Cannot set an input pin %d\n", __func__, gpio); in gpio_set_value()