/*FUNCTION***************************************************************** * * Function Name : lwgpio_init * Returned Value : TRUE if succesfull, FALSE otherwise * Comments : * Decodes ID to HW specific struct and then performs pin initialization * *END*********************************************************************/ bool lwgpio_init ( /* Pointer to LWGPIO internal structure to be filled in */ LWGPIO_STRUCT_PTR handle, /* Pin ID, bitmask integer value */ LWGPIO_PIN_ID id, /* Direction to be set within initialization */ LWGPIO_DIR dir, /* Value to be set within initialization */ LWGPIO_VALUE value ) { /* Body */ uint32_t port_idx, pin_idx; port_idx = LWGPIO_PORT_FROM_ID(id); pin_idx = LWGPIO_PIN_FROM_ID(id); handle->flags = id; handle->pcr_reg = (uint32_t *) pcr_reg_arr[port_idx] + pin_idx; handle->gpio_ptr = gpio_ptr_arr[port_idx]; handle->pinmask = 1 << pin_idx; /* Set value prior to set to output */ if (value != LWGPIO_VALUE_NOCHANGE) { /* Note: there is no check for values not defined as LWGPIO_VALUE enum */ lwgpio_set_value(handle, value); } if (dir != LWGPIO_DIR_NOCHANGE) { /* Note: there is no check for values not defined as LWGPIO_DIR enum */ lwgpio_set_direction(handle, dir); } return TRUE; }
/*FUNCTION**************************************************************** * * Function Name : _bsp_get_gpio_base_address * Returned Value : pointer to base of GPIO registers * Comments : * This function returns base address of GPIO related register space. * *END*********************************************************************/ uint_32 lwgpio_int_get_vector ( /* Pin handle to get vector of */ LWGPIO_STRUCT_PTR handle ) { #if PSP_MQX_CPU_IS_VYBRID_A5 // return GIC ID return 155 + LWGPIO_PORT_FROM_ID(handle->flags); #elif PSP_MQX_CPU_IS_VYBRID_M4 // return CM4 VECTOR return 123 + LWGPIO_PORT_FROM_ID(handle->flags); #else #error "Unsupported core" #endif }
/*FUNCTION**************************************************************** * * Function Name : _bsp_get_gpio_base_address * Returned Value : pointer to base of GPIO registers * Comments : * This function returns base address of GPIO related register space. * *END*********************************************************************/ uint32_t lwgpio_int_get_vector ( /* Pin handle to get vector of */ LWGPIO_STRUCT_PTR handle ) { return INT_PORTA + LWGPIO_PORT_FROM_ID(handle->flags); }