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

Subversion Repositories neorv32

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

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

Rev 64 Rev 65
Line 78... Line 78...
  NEORV32_SLINK.CTRL &= ~(uint32_t)(1 << SLINK_CTRL_EN);
  NEORV32_SLINK.CTRL &= ~(uint32_t)(1 << SLINK_CTRL_EN);
}
}
 
 
 
 
/**********************************************************************//**
/**********************************************************************//**
 
 * Configure SLINK RX interrupt.
 
 *
 
 * @param[in] link_id Link id (0..7).
 
 * @param[in] irq_en Link's IRQ enable (#NEORV32_SLINK_IRQ_EN_enum)
 
 * @param[in] irq_type Link's IRQ type (#NEORV32_SLINK_IRQ_RX_TYPE_enum)
 
 **************************************************************************/
 
void neorv32_slink_rx_irq_config(int link_id, int irq_en, int irq_type) {
 
 
 
  link_id = link_id & 7;
 
 
 
  uint32_t slink_irq_conf = NEORV32_SLINK.IRQ;
 
 
 
  // enable IRQ
 
  if (irq_en) {
 
    slink_irq_conf |=  (1 << (SLINK_IRQ_RX_EN_LSB + link_id));
 
  }
 
  else {
 
    slink_irq_conf &= ~(1 << (SLINK_IRQ_RX_EN_LSB + link_id));
 
  }
 
 
 
  // configure type
 
  if (irq_type) {
 
    slink_irq_conf |=  (1 << (SLINK_IRQ_RX_MODE_LSB + link_id));
 
  }
 
  else {
 
    slink_irq_conf &= ~(1 << (SLINK_IRQ_RX_MODE_LSB + link_id));
 
  }
 
 
 
  NEORV32_SLINK.IRQ = slink_irq_conf;
 
}
 
 
 
 
 
/**********************************************************************//**
 
 * Configure SLINK TX interrupt.
 
 *
 
 * @param[in] link_id Link id (0..7).
 
 * @param[in] irq_en Link's IRQ enable (#NEORV32_SLINK_IRQ_EN_enum)
 
 * @param[in] irq_type Link's IRQ type (#NEORV32_SLINK_IRQ_TX_TYPE_enum)
 
 **************************************************************************/
 
void neorv32_slink_tx_irq_config(int link_id, int irq_en, int irq_type) {
 
 
 
  link_id = link_id & 7;
 
 
 
  uint32_t slink_irq_conf = NEORV32_SLINK.IRQ;
 
 
 
  // enable IRQ
 
  if (irq_en) {
 
    slink_irq_conf |=  (1 << (SLINK_IRQ_TX_EN_LSB + link_id));
 
  }
 
  else {
 
    slink_irq_conf &= ~(1 << (SLINK_IRQ_TX_EN_LSB + link_id));
 
  }
 
 
 
  // configure type
 
  if (irq_type) {
 
    slink_irq_conf |=  (1 << (SLINK_IRQ_TX_MODE_LSB + link_id));
 
  }
 
  else {
 
    slink_irq_conf &= ~(1 << (SLINK_IRQ_TX_MODE_LSB + link_id));
 
  }
 
 
 
  NEORV32_SLINK.IRQ = slink_irq_conf;
 
}
 
 
 
 
 
/**********************************************************************//**
 * Get number of implemented RX links
 * Get number of implemented RX links
 *
 *
 * @return Number of implemented RX link (0..8).
 * @return Number of implemented RX link (0..8).
 **************************************************************************/
 **************************************************************************/
int neorv32_slink_get_rx_num(void) {
int neorv32_slink_get_rx_num(void) {

powered by: WebSVN 2.1.0

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