/** * \copyright * Copyright (c) 2018, Infineon Technologies AG * All rights reserved. * * This software is provided with terms and conditions as specified in OPTIGA(TM) Trust X Evaluation Kit License Agreement. * \endcopyright * * \author Infineon AG * * \file * * \brief This file implements the platform abstraction layer APIs for gpio. * * \addtogroup grPAL * @{ */ /********************************************************************************************************************** * HEADER FILES *********************************************************************************************************************/ #include "pal_gpio.h" #include "nrf_gpio.h" #include "pal_ifx_i2c_config.h" /********************************************************************************************************************** * MACROS *********************************************************************************************************************/ /********************************************************************************************************************** * LOCAL DATA *********************************************************************************************************************/ /********************************************************************************************************************** * LOCAL ROUTINES *********************************************************************************************************************/ /********************************************************************************************************************** * API IMPLEMENTATION *********************************************************************************************************************/ void pal_gpio_init() { // Init power pins nrf_gpio_cfg_output(19); nrf_gpio_cfg_output(20); // Set power pins to enable power nrf_gpio_pin_clear(19); // Enable power for the *on-board* Trust X device nrf_gpio_pin_set(20); // Disable power for *external* Trust X device inside the 2GO slot // Init reset pin nrf_gpio_cfg_output((uint32_t)(optiga_reset_0.p_gpio_hw)); } /** * Sets the GPIO pin to high state * * API Details: * The API sets the pin high, only if the pin is assigned to a valid gpio context.
* Otherwise the API returns without any failure status.
* *\param[in] p_gpio_context Pointer to pal layer gpio context * * */ void pal_gpio_set_high(const pal_gpio_t* p_gpio_context) { if (p_gpio_context != NULL && p_gpio_context->p_gpio_hw != NULL) { nrf_gpio_pin_set((uint32_t)(p_gpio_context->p_gpio_hw)); } } /** * Sets the gpio pin to low state * * API Details: * The API set the pin low, only if the pin is assigned to a valid gpio context.
* Otherwise the API returns without any failure status.
* *\param[in] p_gpio_context Pointer to pal layer gpio context * */ void pal_gpio_set_low(const pal_gpio_t* p_gpio_context) { if (p_gpio_context != NULL && p_gpio_context->p_gpio_hw != NULL) { nrf_gpio_pin_clear((uint32_t)(p_gpio_context->p_gpio_hw)); } } /** * @} */