OpenCores
URL https://opencores.org/ocsvn/neorv32/neorv32/trunk

Subversion Repositories neorv32

[/] [neorv32/] [trunk/] [sw/] [lib/] [source/] [neorv32_gpio.c] - Diff between revs 61 and 64

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 61 Rev 64
Line 50... Line 50...
 *
 *
 * @return 0 if GPIO was not synthesized, 1 if GPIO is available.
 * @return 0 if GPIO was not synthesized, 1 if GPIO is available.
 **************************************************************************/
 **************************************************************************/
int neorv32_gpio_available(void) {
int neorv32_gpio_available(void) {
 
 
  if (SYSINFO_FEATURES & (1 << SYSINFO_FEATURES_IO_GPIO)) {
  if (NEORV32_SYSINFO.SOC & (1 << SYSINFO_SOC_IO_GPIO)) {
    return 1;
    return 1;
  }
  }
  else {
  else {
    return 0;
    return 0;
  }
  }
Line 69... Line 69...
void neorv32_gpio_pin_set(int pin) {
void neorv32_gpio_pin_set(int pin) {
 
 
  uint32_t mask = (uint32_t)(1 << (pin & 0x1f));
  uint32_t mask = (uint32_t)(1 << (pin & 0x1f));
 
 
  if (pin < 32) {
  if (pin < 32) {
    GPIO_OUTPUT_LO |= mask;
    NEORV32_GPIO.OUTPUT_LO |= mask;
  }
  }
  else {
  else {
    GPIO_OUTPUT_HI |= mask;
    NEORV32_GPIO.OUTPUT_HI |= mask;
  }
  }
}
}
 
 
 
 
/**********************************************************************//**
/**********************************************************************//**
Line 87... Line 87...
void neorv32_gpio_pin_clr(int pin) {
void neorv32_gpio_pin_clr(int pin) {
 
 
  uint32_t mask = (uint32_t)(1 << (pin & 0x1f));
  uint32_t mask = (uint32_t)(1 << (pin & 0x1f));
 
 
  if (pin < 32) {
  if (pin < 32) {
    GPIO_OUTPUT_LO &= ~mask;
    NEORV32_GPIO.OUTPUT_LO &= ~mask;
  }
  }
  else {
  else {
    GPIO_OUTPUT_HI &= ~mask;
    NEORV32_GPIO.OUTPUT_HI &= ~mask;
  }
  }
}
}
 
 
 
 
/**********************************************************************//**
/**********************************************************************//**
Line 105... Line 105...
void neorv32_gpio_pin_toggle(int pin) {
void neorv32_gpio_pin_toggle(int pin) {
 
 
  uint32_t mask = (uint32_t)(1 << (pin & 0x1f));
  uint32_t mask = (uint32_t)(1 << (pin & 0x1f));
 
 
  if (pin < 32) {
  if (pin < 32) {
    GPIO_OUTPUT_LO ^= mask;
    NEORV32_GPIO.OUTPUT_LO ^= mask;
  }
  }
  else {
  else {
    GPIO_OUTPUT_HI ^= mask;
    NEORV32_GPIO.OUTPUT_HI ^= mask;
  }
  }
}
}
 
 
 
 
/**********************************************************************//**
/**********************************************************************//**
Line 124... Line 124...
uint32_t neorv32_gpio_pin_get(int pin) {
uint32_t neorv32_gpio_pin_get(int pin) {
 
 
  uint32_t mask = (uint32_t)(1 << (pin & 0x1f));
  uint32_t mask = (uint32_t)(1 << (pin & 0x1f));
 
 
  if (pin < 32) {
  if (pin < 32) {
    return GPIO_INPUT_LO & mask;
    return NEORV32_GPIO.INPUT_LO & mask;
  }
  }
  else {
  else {
    return GPIO_INPUT_HI & mask;
    return NEORV32_GPIO.INPUT_HI & mask;
  }
  }
}
}
 
 
 
 
/**********************************************************************//**
/**********************************************************************//**
Line 139... Line 139...
 *
 *
 * @param[in] port_data New output port value (64-bit).
 * @param[in] port_data New output port value (64-bit).
 **************************************************************************/
 **************************************************************************/
void neorv32_gpio_port_set(uint64_t port_data) {
void neorv32_gpio_port_set(uint64_t port_data) {
 
 
  GPIO_OUTPUT = port_data;
  union {
 
    uint64_t uint64;
 
    uint32_t uint32[sizeof(uint64_t)/2];
 
  } data;
 
 
 
  data.uint64 = port_data;
 
  NEORV32_GPIO.OUTPUT_LO = data.uint32[0];
 
  NEORV32_GPIO.OUTPUT_HI = data.uint32[1];
}
}
 
 
 
 
/**********************************************************************//**
/**********************************************************************//**
 * Get complete GPIO input port.
 * Get complete GPIO input port.
 *
 *
 * @return Current input port state (64-bit).
 * @return Current input port state (64-bit).
 **************************************************************************/
 **************************************************************************/
uint64_t neorv32_gpio_port_get(void) {
uint64_t neorv32_gpio_port_get(void) {
 
 
  return GPIO_INPUT;
  union {
 
    uint64_t uint64;
 
    uint32_t uint32[sizeof(uint64_t)/2];
 
  } data;
 
 
 
  data.uint32[0] = NEORV32_GPIO.OUTPUT_LO;
 
  data.uint32[1] = NEORV32_GPIO.OUTPUT_HI;
 
 
 
  return data.uint64;
}
}
 
 
 
 
 No newline at end of file
 No newline at end of file

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.