Lines Matching +full:addr +full:- +full:range

4  * SPDX-License-Identifier: Apache-2.0
42 const struct gpio_altera_config *cfg = dev->config; in gpio_pin_direction()
43 const int direction = cfg->direction; in gpio_pin_direction()
44 uintptr_t reg_base = cfg->reg_base; in gpio_pin_direction()
45 uint32_t addr; in gpio_pin_direction() local
49 return -EINVAL; in gpio_pin_direction()
54 return -EINVAL; in gpio_pin_direction()
57 addr = reg_base + ALTERA_AVALON_PIO_DIRECTION_OFFSET; in gpio_pin_direction()
59 pin_direction = sys_read32(addr); in gpio_pin_direction()
71 const struct gpio_altera_config *cfg = dev->config; in gpio_altera_configure()
72 struct gpio_altera_data * const data = dev->data; in gpio_altera_configure()
73 const int port_pin_mask = cfg->common.port_pin_mask; in gpio_altera_configure()
74 const int direction = cfg->direction; in gpio_altera_configure()
75 uintptr_t reg_base = cfg->reg_base; in gpio_altera_configure()
77 uint32_t addr; in gpio_altera_configure() local
79 /* Check if pin number is within range */ in gpio_altera_configure()
81 return -EINVAL; in gpio_altera_configure()
86 return -EINVAL; in gpio_altera_configure()
89 addr = reg_base + ALTERA_AVALON_PIO_DIRECTION_OFFSET; in gpio_altera_configure()
91 key = k_spin_lock(&data->lock); in gpio_altera_configure()
94 sys_clear_bits(addr, BIT(pin)); in gpio_altera_configure()
96 sys_set_bits(addr, BIT(pin)); in gpio_altera_configure()
98 return -EINVAL; in gpio_altera_configure()
101 k_spin_unlock(&data->lock, key); in gpio_altera_configure()
108 const struct gpio_altera_config *cfg = dev->config; in gpio_altera_port_get_raw()
109 uintptr_t reg_base = cfg->reg_base; in gpio_altera_port_get_raw()
110 uint32_t addr; in gpio_altera_port_get_raw() local
112 addr = reg_base + ALTERA_AVALON_PIO_DATA_OFFSET; in gpio_altera_port_get_raw()
115 return -EINVAL; in gpio_altera_port_get_raw()
118 *value = sys_read32((addr)); in gpio_altera_port_get_raw()
125 const struct gpio_altera_config *cfg = dev->config; in gpio_altera_port_set_bits_raw()
126 struct gpio_altera_data * const data = dev->data; in gpio_altera_port_set_bits_raw()
127 const uint8_t outset = cfg->outset; in gpio_altera_port_set_bits_raw()
128 const int port_pin_mask = cfg->common.port_pin_mask; in gpio_altera_port_set_bits_raw()
129 uintptr_t reg_base = cfg->reg_base; in gpio_altera_port_set_bits_raw()
130 uint32_t addr; in gpio_altera_port_set_bits_raw() local
134 return -EINVAL; in gpio_altera_port_set_bits_raw()
138 return -EINVAL; in gpio_altera_port_set_bits_raw()
141 key = k_spin_lock(&data->lock); in gpio_altera_port_set_bits_raw()
144 addr = reg_base + ALTERA_AVALON_PIO_SET_BITS; in gpio_altera_port_set_bits_raw()
145 sys_write32(mask, addr); in gpio_altera_port_set_bits_raw()
147 addr = reg_base + ALTERA_AVALON_PIO_DATA_OFFSET; in gpio_altera_port_set_bits_raw()
148 sys_set_bits(addr, mask); in gpio_altera_port_set_bits_raw()
151 k_spin_unlock(&data->lock, key); in gpio_altera_port_set_bits_raw()
158 const struct gpio_altera_config *cfg = dev->config; in gpio_altera_port_clear_bits_raw()
159 struct gpio_altera_data * const data = dev->data; in gpio_altera_port_clear_bits_raw()
160 const uint8_t outclear = cfg->outclear; in gpio_altera_port_clear_bits_raw()
161 const int port_pin_mask = cfg->common.port_pin_mask; in gpio_altera_port_clear_bits_raw()
162 uintptr_t reg_base = cfg->reg_base; in gpio_altera_port_clear_bits_raw()
163 uint32_t addr; in gpio_altera_port_clear_bits_raw() local
166 /* Check if mask range within 32 */ in gpio_altera_port_clear_bits_raw()
168 return -EINVAL; in gpio_altera_port_clear_bits_raw()
172 return -EINVAL; in gpio_altera_port_clear_bits_raw()
175 key = k_spin_lock(&data->lock); in gpio_altera_port_clear_bits_raw()
178 addr = reg_base + ALTERA_AVALON_PIO_CLEAR_BITS; in gpio_altera_port_clear_bits_raw()
179 sys_write32(mask, addr); in gpio_altera_port_clear_bits_raw()
181 addr = reg_base + ALTERA_AVALON_PIO_DATA_OFFSET; in gpio_altera_port_clear_bits_raw()
182 sys_clear_bits(addr, mask); in gpio_altera_port_clear_bits_raw()
185 k_spin_unlock(&data->lock, key); in gpio_altera_port_clear_bits_raw()
192 const struct gpio_altera_config *cfg = dev->config; in gpio_init()
195 cfg->cfg_func(); in gpio_init()
207 const struct gpio_altera_config *cfg = dev->config; in gpio_altera_pin_interrupt_configure()
208 struct gpio_altera_data * const data = dev->data; in gpio_altera_pin_interrupt_configure()
209 uintptr_t reg_base = cfg->reg_base; in gpio_altera_pin_interrupt_configure()
210 const int port_pin_mask = cfg->common.port_pin_mask; in gpio_altera_pin_interrupt_configure()
211 uint32_t addr; in gpio_altera_pin_interrupt_configure() local
214 /* Check if pin number is within range */ in gpio_altera_pin_interrupt_configure()
216 return -EINVAL; in gpio_altera_pin_interrupt_configure()
220 return -EINVAL; in gpio_altera_pin_interrupt_configure()
223 addr = reg_base + ALTERA_AVALON_PIO_IRQ_OFFSET; in gpio_altera_pin_interrupt_configure()
225 key = k_spin_lock(&data->lock); in gpio_altera_pin_interrupt_configure()
230 sys_clear_bits(addr, BIT(pin)); in gpio_altera_pin_interrupt_configure()
231 irq_disable(cfg->irq_num); in gpio_altera_pin_interrupt_configure()
236 sys_set_bits(addr, BIT(pin)); in gpio_altera_pin_interrupt_configure()
237 irq_enable(cfg->irq_num); in gpio_altera_pin_interrupt_configure()
240 return -EINVAL; in gpio_altera_pin_interrupt_configure()
243 k_spin_unlock(&data->lock, key); in gpio_altera_pin_interrupt_configure()
253 struct gpio_altera_data * const data = dev->data; in gpio_altera_manage_callback()
255 return gpio_manage_callback(&data->cb, callback, set); in gpio_altera_manage_callback()
260 const struct gpio_altera_config *cfg = dev->config; in gpio_altera_irq_handler()
261 struct gpio_altera_data *data = dev->data; in gpio_altera_irq_handler()
262 uintptr_t reg_base = cfg->reg_base; in gpio_altera_irq_handler()
264 uint32_t addr; in gpio_altera_irq_handler() local
267 addr = reg_base + ALTERA_AVALON_PIO_IRQ_OFFSET; in gpio_altera_irq_handler()
269 key = k_spin_lock(&data->lock); in gpio_altera_irq_handler()
271 port_value = sys_read32(addr); in gpio_altera_irq_handler()
273 sys_clear_bits(addr, port_value); in gpio_altera_irq_handler()
275 k_spin_unlock(&data->lock, key); in gpio_altera_irq_handler()
278 gpio_fire_callbacks(&data->cb, dev, port_value); in gpio_altera_irq_handler()