Lines Matching +full:pullup +full:- +full:mask
5 * SPDX-License-Identifier: Apache-2.0
10 /* Include esp-idf headers first to avoid redefining BIT() macro */
22 #include <zephyr/dt-bindings/gpio/espressif-esp32-gpio.h>
46 #define CPU_ID() arch_curr_cpu()->id
91 const struct gpio_esp32_config *const cfg = dev->config; in gpio_esp32_config()
92 struct gpio_esp32_data *data = dev->data; in gpio_esp32_config()
93 uint32_t io_pin = (uint32_t) pin + ((cfg->gpio_port == 1 && pin < 32) ? 32 : 0); in gpio_esp32_config()
99 return -EINVAL; in gpio_esp32_config()
112 ret = -EINVAL; in gpio_esp32_config()
126 if (rtc_io_desc[rtcio_num].pullup) { in gpio_esp32_config()
129 ret = -ENOTSUP; in gpio_esp32_config()
141 if (rtc_io_desc[rtcio_num].pullup) { in gpio_esp32_config()
145 ret = -ENOTSUP; in gpio_esp32_config()
153 gpio_ll_od_enable(cfg->gpio_base, io_pin); in gpio_esp32_config()
156 ret = -ENOTSUP; in gpio_esp32_config()
160 gpio_ll_od_disable(cfg->gpio_base, io_pin); in gpio_esp32_config()
173 ret = -ENOTSUP; in gpio_esp32_config()
189 ret = -ENOTSUP; in gpio_esp32_config()
199 ret = -EINVAL; in gpio_esp32_config()
205 * to either low or high states. Alternative drive strength is weak-only, in gpio_esp32_config()
211 gpio_ll_set_drive_capability(cfg->gpio_base, in gpio_esp32_config()
223 gpio_ll_set_drive_capability(cfg->gpio_base, in gpio_esp32_config()
234 ret = -EINVAL; in gpio_esp32_config()
243 gpio_ll_set_level(cfg->gpio_base, io_pin, 1); in gpio_esp32_config()
245 gpio_ll_set_level(cfg->gpio_base, io_pin, 0); in gpio_esp32_config()
265 const struct gpio_esp32_config *const cfg = port->config; in gpio_esp32_port_get_raw()
267 if (cfg->gpio_port == 0) { in gpio_esp32_port_get_raw()
268 *value = cfg->gpio_dev->in; in gpio_esp32_port_get_raw()
271 *value = cfg->gpio_dev->in1.data; in gpio_esp32_port_get_raw()
279 uint32_t mask, uint32_t value) in gpio_esp32_port_set_masked_raw() argument
281 const struct gpio_esp32_config *const cfg = port->config; in gpio_esp32_port_set_masked_raw()
285 if (cfg->gpio_port == 0) { in gpio_esp32_port_set_masked_raw()
286 cfg->gpio_dev->out = (cfg->gpio_dev->out & ~mask) | (mask & value); in gpio_esp32_port_set_masked_raw()
289 cfg->gpio_dev->out1.data = (cfg->gpio_dev->out1.data & ~mask) | (mask & value); in gpio_esp32_port_set_masked_raw()
301 const struct gpio_esp32_config *const cfg = port->config; in gpio_esp32_port_set_bits_raw()
303 if (cfg->gpio_port == 0) { in gpio_esp32_port_set_bits_raw()
304 cfg->gpio_dev->out_w1ts = pins; in gpio_esp32_port_set_bits_raw()
307 cfg->gpio_dev->out1_w1ts.data = pins; in gpio_esp32_port_set_bits_raw()
317 const struct gpio_esp32_config *const cfg = port->config; in gpio_esp32_port_clear_bits_raw()
319 if (cfg->gpio_port == 0) { in gpio_esp32_port_clear_bits_raw()
320 cfg->gpio_dev->out_w1tc = pins; in gpio_esp32_port_clear_bits_raw()
323 cfg->gpio_dev->out1_w1tc.data = pins; in gpio_esp32_port_clear_bits_raw()
333 const struct gpio_esp32_config *const cfg = port->config; in gpio_esp32_port_toggle_bits()
336 if (cfg->gpio_port == 0) { in gpio_esp32_port_toggle_bits()
337 cfg->gpio_dev->out ^= pins; in gpio_esp32_port_toggle_bits()
340 cfg->gpio_dev->out1.data ^= pins; in gpio_esp32_port_toggle_bits()
363 return -EINVAL; in convert_int_type()
374 return -EINVAL; in convert_int_type()
379 return -EINVAL; in convert_int_type()
387 const struct gpio_esp32_config *const cfg = port->config; in gpio_esp32_pin_interrupt_configure()
388 uint32_t io_pin = (uint32_t) pin + ((cfg->gpio_port == 1 && pin < 32) ? 32 : 0); in gpio_esp32_pin_interrupt_configure()
397 if (cfg->gpio_port == 0) { in gpio_esp32_pin_interrupt_configure()
398 gpio_ll_clear_intr_status(cfg->gpio_base, BIT(pin)); in gpio_esp32_pin_interrupt_configure()
400 gpio_ll_clear_intr_status_high(cfg->gpio_base, BIT(pin)); in gpio_esp32_pin_interrupt_configure()
403 gpio_ll_set_intr_type(cfg->gpio_base, io_pin, intr_trig_mode); in gpio_esp32_pin_interrupt_configure()
404 gpio_ll_intr_enable_on_core(cfg->gpio_base, CPU_ID(), io_pin); in gpio_esp32_pin_interrupt_configure()
414 struct gpio_esp32_data *data = dev->data; in gpio_esp32_manage_callback()
416 return gpio_manage_callback(&data->cb, callback, set); in gpio_esp32_manage_callback()
421 const struct gpio_esp32_config *const cfg = dev->config; in gpio_esp32_get_pending_int()
425 if (cfg->gpio_port == 0) { in gpio_esp32_get_pending_int()
426 gpio_ll_get_intr_status(cfg->gpio_base, core_id, &irq_status); in gpio_esp32_get_pending_int()
428 gpio_ll_get_intr_status_high(cfg->gpio_base, core_id, &irq_status); in gpio_esp32_get_pending_int()
436 const struct gpio_esp32_config *const cfg = dev->config; in gpio_esp32_fire_callbacks()
437 struct gpio_esp32_data *data = dev->data; in gpio_esp32_fire_callbacks()
441 if (cfg->gpio_port == 0) { in gpio_esp32_fire_callbacks()
442 gpio_ll_get_intr_status(cfg->gpio_base, core_id, &irq_status); in gpio_esp32_fire_callbacks()
443 gpio_ll_clear_intr_status(cfg->gpio_base, irq_status); in gpio_esp32_fire_callbacks()
445 gpio_ll_get_intr_status_high(cfg->gpio_base, core_id, &irq_status); in gpio_esp32_fire_callbacks()
446 gpio_ll_clear_intr_status_high(cfg->gpio_base, irq_status); in gpio_esp32_fire_callbacks()
450 gpio_fire_callbacks(&data->cb, dev, irq_status); in gpio_esp32_fire_callbacks()
458 struct gpio_esp32_data *data = dev->data; in gpio_esp32_init()