1 /* 2 * Copyright (c) 2023 Nordic Semiconductor ASA 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 7 #ifndef _NRF_HW_MODEL_GPIO_H 8 #define _NRF_HW_MODEL_GPIO_H 9 10 #include "NRF_GPIO_backend.h" 11 #include <stdbool.h> 12 13 #ifdef __cplusplus 14 extern "C"{ 15 #endif 16 17 #define NRF_GPIOS 2 18 #define NRF_GPIO_MAX_PINS_PER_PORT 32 19 #define NRF_GPIO_PORTS_PINS {32, 10} /* Number of IOs per port */ 20 21 /* 22 * Callback another peripheral or tests can register if it wants to be called when an input 23 * is toggled. 24 * 25 * The callback will get as inputs: 26 * * port: the GPIO port which toggled, 27 * * n: the pin in the port 28 * * value: the new value (true: high, false: low) 29 */ 30 typedef void (*nrf_gpio_input_callback_t)(unsigned int port, unsigned int n, bool value); 31 32 33 unsigned int nrf_gpio_get_number_pins_in_port(int port); 34 35 void nrf_gpio_test_register_in_callback(nrf_gpio_input_callback_t fptr); 36 void nrf_gpio_test_change_pin_level(unsigned int port, unsigned int n, bool value); 37 bool nrf_gpio_get_pin_level(unsigned int port, unsigned int n); 38 39 void nrf_gpio_peri_pin_control(unsigned int port, unsigned int n, 40 int override_output, int override_input, int override_dir, 41 nrf_gpio_input_callback_t fptr, int new_level); 42 void nrf_gpio_peri_change_output(unsigned int port, unsigned int n, bool value); 43 44 bool nrf_gpio_get_detect_level(unsigned int port); 45 46 void nrf_gpio_regw_sideeffects_OUT(unsigned int port); 47 void nrf_gpio_regw_sideeffects_OUTSET(unsigned int port); 48 void nrf_gpio_regw_sideeffects_OUTCLR(unsigned int port); 49 void nrf_gpio_regw_sideeffects_DIR(unsigned int port); 50 void nrf_gpio_regw_sideeffects_DIRSET(unsigned int port); 51 void nrf_gpio_regw_sideeffects_DIRCLR(unsigned int port); 52 void nrf_gpio_regw_sideeffects_LATCH(unsigned int port); 53 void nrf_gpio_regw_sideeffects_DETECTMODE(unsigned int port); 54 void nrf_gpio_regw_sideeffects_PIN_CNF(unsigned int port,unsigned int n); 55 56 void nrf_gpio_eval_input(unsigned int port, unsigned int n, bool value); 57 58 #ifdef __cplusplus 59 } 60 #endif 61 62 #endif /* _NRF_HW_MODEL_GPIO_H */ 63