Lines Matching +full:pin +full:- +full:mask
5 * SPDX-License-Identifier: Apache-2.0
43 #define DEV_CFG(dev) ((const struct gpio_iproc_config *const)(dev)->config)
44 #define DEV_DATA(dev) ((struct gpio_iproc_data *const)(dev)->data)
46 static int gpio_iproc_configure(const struct device *dev, gpio_pin_t pin, gpio_flags_t flags) in gpio_iproc_configure() argument
49 mem_addr_t base = cfg->base; in gpio_iproc_configure()
51 /* Setup the pin direcion. */ in gpio_iproc_configure()
53 /* configure pin for output */ in gpio_iproc_configure()
54 sys_set_bit(base + IPROC_GPIO_OUT_EN_OFFSET, pin); in gpio_iproc_configure()
56 /* configure pin for input */ in gpio_iproc_configure()
57 sys_clear_bit(base + IPROC_GPIO_OUT_EN_OFFSET, pin); in gpio_iproc_configure()
66 mem_addr_t base = cfg->base; in gpio_iproc_port_get_raw()
73 static int gpio_iproc_port_set_masked_raw(const struct device *dev, uint32_t mask, uint32_t value) in gpio_iproc_port_set_masked_raw() argument
76 mem_addr_t base = cfg->base; in gpio_iproc_port_set_masked_raw()
79 value = (value & (~mask)) | (value & mask); in gpio_iproc_port_set_masked_raw()
85 static int gpio_iproc_port_set_bits_raw(const struct device *dev, uint32_t mask) in gpio_iproc_port_set_bits_raw() argument
88 mem_addr_t base = cfg->base; in gpio_iproc_port_set_bits_raw()
90 sys_write32(mask, base + IPROC_GPIO_DATA_OUT_OFFSET); in gpio_iproc_port_set_bits_raw()
95 static int gpio_iproc_port_clear_bits_raw(const struct device *dev, uint32_t mask) in gpio_iproc_port_clear_bits_raw() argument
99 mem_addr_t base = cfg->base; in gpio_iproc_port_clear_bits_raw()
103 value = (value & ~mask); in gpio_iproc_port_clear_bits_raw()
109 static int gpio_iproc_port_toggle_bits(const struct device *dev, uint32_t mask) in gpio_iproc_port_toggle_bits() argument
113 mem_addr_t base = cfg->base; in gpio_iproc_port_toggle_bits()
117 value = (value ^ mask); in gpio_iproc_port_toggle_bits()
123 static int gpio_iproc_pin_interrupt_configure(const struct device *dev, gpio_pin_t pin, in gpio_iproc_pin_interrupt_configure() argument
127 mem_addr_t base = cfg->base; in gpio_iproc_pin_interrupt_configure()
132 sys_clear_bit(base + IPROC_GPIO_INT_TYPE_OFFSET, pin); in gpio_iproc_pin_interrupt_configure()
134 sys_set_bit(base + IPROC_GPIO_INT_TYPE_OFFSET, pin); in gpio_iproc_pin_interrupt_configure()
139 sys_set_bit(base + IPROC_GPIO_INT_DE_OFFSET, pin); in gpio_iproc_pin_interrupt_configure()
142 sys_clear_bit(base + IPROC_GPIO_INT_DE_OFFSET, pin); in gpio_iproc_pin_interrupt_configure()
143 sys_set_bit(base + IPROC_GPIO_INT_EDGE_OFFSET, pin); in gpio_iproc_pin_interrupt_configure()
146 sys_clear_bit(base + IPROC_GPIO_INT_DE_OFFSET, pin); in gpio_iproc_pin_interrupt_configure()
147 sys_clear_bit(base + IPROC_GPIO_INT_EDGE_OFFSET, pin); in gpio_iproc_pin_interrupt_configure()
151 sys_clear_bit(base + IPROC_GPIO_INT_MSTAT_OFFSET, pin); in gpio_iproc_pin_interrupt_configure()
153 sys_set_bit(base + IPROC_GPIO_INT_MSK_OFFSET, pin); in gpio_iproc_pin_interrupt_configure()
161 mem_addr_t base = cfg->base; in gpio_iproc_isr()
162 struct gpio_iproc_data *context = dev->data; in gpio_iproc_isr()
171 gpio_fire_callbacks(&context->cb, dev, int_stat); in gpio_iproc_isr()
177 struct gpio_iproc_data *context = port->data; in gpio_iproc_manage_callback()
179 return gpio_manage_callback(&context->cb, callback, set); in gpio_iproc_manage_callback()
197 cfg->irq_config_func(dev); in gpio_iproc_init()