Lines Matching +full:pin +full:- +full:mask

4  * SPDX-License-Identifier: Apache-2.0
39 #define GPIO_RW_MASK_ADDR(base, offset, mask) \ argument
40 (GPIO_REG_ADDR(base, offset) | (mask << 2))
56 const struct gpio_stellaris_config * const cfg = dev->config; in gpio_stellaris_isr()
57 struct gpio_stellaris_runtime *context = dev->data; in gpio_stellaris_isr()
58 uint32_t base = cfg->base; in gpio_stellaris_isr()
61 gpio_fire_callbacks(&context->cb, dev, int_stat); in gpio_stellaris_isr()
67 gpio_pin_t pin, gpio_flags_t flags) in gpio_stellaris_configure() argument
69 const struct gpio_stellaris_config *cfg = dev->config; in gpio_stellaris_configure()
70 uint32_t base = cfg->base; in gpio_stellaris_configure()
71 uint32_t port_map = cfg->port_map; in gpio_stellaris_configure()
74 return -ENOTSUP; in gpio_stellaris_configure()
78 return -ENOTSUP; in gpio_stellaris_configure()
81 /* Check for pin availability */ in gpio_stellaris_configure()
82 if (!sys_test_bit((uint32_t)&port_map, pin)) { in gpio_stellaris_configure()
83 return -EINVAL; in gpio_stellaris_configure()
89 mask_addr = GPIO_RW_MASK_ADDR(base, GPIO_DATA_OFFSET, BIT(pin)); in gpio_stellaris_configure()
91 sys_write32(BIT(pin), mask_addr); in gpio_stellaris_configure()
95 sys_set_bit(GPIO_REG_ADDR(base, GPIO_DIR_OFFSET), pin); in gpio_stellaris_configure()
96 /* Pin digital enable */ in gpio_stellaris_configure()
97 sys_set_bit(GPIO_REG_ADDR(base, GPIO_DEN_OFFSET), pin); in gpio_stellaris_configure()
99 sys_clear_bit(GPIO_REG_ADDR(base, GPIO_DIR_OFFSET), pin); in gpio_stellaris_configure()
100 /* Pin digital enable */ in gpio_stellaris_configure()
101 sys_set_bit(GPIO_REG_ADDR(base, GPIO_DEN_OFFSET), pin); in gpio_stellaris_configure()
103 /* Pin digital disable */ in gpio_stellaris_configure()
104 sys_clear_bit(GPIO_REG_ADDR(base, GPIO_DEN_OFFSET), pin); in gpio_stellaris_configure()
112 gpio_pin_t pin, in gpio_stellaris_get_config() argument
115 const struct gpio_stellaris_config *cfg = dev->config; in gpio_stellaris_get_config()
116 uint32_t base = cfg->base; in gpio_stellaris_get_config()
120 if (sys_test_bit(GPIO_REG_ADDR(base, GPIO_DEN_OFFSET), pin) == 0) { in gpio_stellaris_get_config()
122 } else if (sys_test_bit(GPIO_REG_ADDR(base, GPIO_DIR_OFFSET), pin)) { in gpio_stellaris_get_config()
123 mask_addr = GPIO_RW_MASK_ADDR(base, GPIO_DATA_OFFSET, BIT(pin)); in gpio_stellaris_get_config()
125 if (sys_test_bit(mask_addr, pin)) { in gpio_stellaris_get_config()
141 const struct gpio_stellaris_config *cfg = dev->config; in gpio_stellaris_port_get_raw()
142 uint32_t base = cfg->base; in gpio_stellaris_port_get_raw()
150 uint32_t mask, in gpio_stellaris_port_set_masked_raw() argument
153 const struct gpio_stellaris_config *cfg = dev->config; in gpio_stellaris_port_set_masked_raw()
154 uint32_t base = cfg->base; in gpio_stellaris_port_set_masked_raw()
156 sys_write32(value, GPIO_RW_MASK_ADDR(base, GPIO_DATA_OFFSET, mask)); in gpio_stellaris_port_set_masked_raw()
162 uint32_t mask) in gpio_stellaris_port_set_bits_raw() argument
164 const struct gpio_stellaris_config *cfg = dev->config; in gpio_stellaris_port_set_bits_raw()
165 uint32_t base = cfg->base; in gpio_stellaris_port_set_bits_raw()
167 sys_write32(mask, GPIO_RW_MASK_ADDR(base, GPIO_DATA_OFFSET, mask)); in gpio_stellaris_port_set_bits_raw()
173 uint32_t mask) in gpio_stellaris_port_clear_bits_raw() argument
175 const struct gpio_stellaris_config *cfg = dev->config; in gpio_stellaris_port_clear_bits_raw()
176 uint32_t base = cfg->base; in gpio_stellaris_port_clear_bits_raw()
178 sys_write32(0, GPIO_RW_MASK_ADDR(base, GPIO_DATA_OFFSET, mask)); in gpio_stellaris_port_clear_bits_raw()
184 uint32_t mask) in gpio_stellaris_port_toggle_bits() argument
186 const struct gpio_stellaris_config *cfg = dev->config; in gpio_stellaris_port_toggle_bits()
187 uint32_t base = cfg->base; in gpio_stellaris_port_toggle_bits()
191 value ^= mask; in gpio_stellaris_port_toggle_bits()
198 gpio_pin_t pin, in gpio_stellaris_pin_interrupt_configure() argument
202 const struct gpio_stellaris_config *cfg = dev->config; in gpio_stellaris_pin_interrupt_configure()
203 uint32_t base = cfg->base; in gpio_stellaris_pin_interrupt_configure()
207 /* Set the mask to disable the interrupt */ in gpio_stellaris_pin_interrupt_configure()
208 sys_set_bit(GPIO_REG_ADDR(base, GPIO_IM_OFFSET), pin); in gpio_stellaris_pin_interrupt_configure()
211 sys_clear_bit(GPIO_REG_ADDR(base, GPIO_IS_OFFSET), pin); in gpio_stellaris_pin_interrupt_configure()
213 sys_set_bit(GPIO_REG_ADDR(base, GPIO_IS_OFFSET), pin); in gpio_stellaris_pin_interrupt_configure()
217 sys_set_bit(GPIO_REG_ADDR(base, GPIO_IBE_OFFSET), pin); in gpio_stellaris_pin_interrupt_configure()
219 sys_set_bit(GPIO_REG_ADDR(base, GPIO_IEV_OFFSET), pin); in gpio_stellaris_pin_interrupt_configure()
222 GPIO_IEV_OFFSET), pin); in gpio_stellaris_pin_interrupt_configure()
224 /* Clear the Mask to enable the interrupt */ in gpio_stellaris_pin_interrupt_configure()
225 sys_clear_bit(GPIO_REG_ADDR(base, GPIO_IM_OFFSET), pin); in gpio_stellaris_pin_interrupt_configure()
233 const struct gpio_stellaris_config *cfg = dev->config; in gpio_stellaris_init()
235 cfg->config_func(dev); in gpio_stellaris_init()
243 struct gpio_stellaris_runtime *context = dev->data; in gpio_stellaris_manage_callback()
245 gpio_manage_callback(&context->cb, callback, set); in gpio_stellaris_manage_callback()