1 /* 2 * Copyright (c) 2024 Renesas Electronics Corporation 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 7 #ifndef ZEPHYR_DRIVERS_GPIO_RENESAS_RZ_H_ 8 #define ZEPHYR_DRIVERS_GPIO_RENESAS_RZ_H_ 9 10 #include <zephyr/dt-bindings/gpio/renesas-rz-gpio.h> 11 #include "r_ioport.h" 12 13 #define GPIO_RZ_IOPORT_P_REG_BASE_GET (&R_GPIO->P_20) 14 #define GPIO_RZ_IOPORT_PM_REG_BASE_GET (&R_GPIO->PM_20) 15 16 #define GPIO_RZ_REG_OFFSET(port, pin) (port + (pin / 4)) 17 18 #define GPIO_RZ_P_VALUE_GET(value, pin) ((value >> pin) & 1U) 19 #define GPIO_RZ_PM_VALUE_GET(value, pin) ((value >> (pin * 2)) & 3U) 20 21 #define GPIO_RZ_MAX_PORT_NUM 19 22 #define GPIO_RZ_MAX_TINT_NUM 32 23 24 #define GPIO_RZ_TINT_IRQ_OFFSET 429 25 #define GPIO_RZ_TINT_IRQ_GET(tint_num) (tint_num + GPIO_RZ_TINT_IRQ_OFFSET) 26 27 #define GPIO_RZ_TINT_EDGE_RISING 0x0 28 #define GPIO_RZ_TINT_EDGE_FALLING 0x1 29 #define GPIO_RZ_TINT_LEVEL_HIGH 0x2 30 #define GPIO_RZ_TINT_LEVEL_LOW 0x3 31 32 #define GPIO_RZ_TSSR_VAL(port, pin) (0x80 | (gpio_rz_int[port] + pin)) 33 #define GPIO_RZ_TSSR_OFFSET(irq) ((irq % 4) * 8) 34 #define GPIO_RZ_TITSR_OFFSET(irq) ((irq % 16) * 2) 35 36 #define GPIO_RZ_PIN_CONFIGURE_GET_FILTER(flag) (((flags >> RZG3S_GPIO_FILTER_SHIFT) & 0x1F) << 19U) 37 #define GPIO_RZ_PIN_CONFIGURE_GET_DRIVE_ABILITY(flag) \ 38 (((flag >> RZG3S_GPIO_IOLH_SHIFT) & 0x3) << 10U) 39 40 #define GPIO_RZ_PIN_CONFIGURE_INT_ENABLE IOPORT_CFG_TINT_ENABLE 41 #define GPIO_RZ_PIN_CONFIGURE_INT_DISABLE (~(IOPORT_CFG_TINT_ENABLE)) 42 #define GPIO_RZ_PIN_CONFIGURE_INPUT_OUTPUT_RESET (~(0x3 << 2)) 43 44 static const uint8_t gpio_rz_int[GPIO_RZ_MAX_PORT_NUM] = {0, 4, 9, 13, 17, 23, 28, 33, 38, 43, 45 47, 52, 56, 58, 63, 66, 70, 72, 76}; 46 #endif /* ZEPHYR_DRIVERS_GPIO_RENESAS_RZ_H_ */ 47