Example #1
0
void irq_enable(int irq) {
	uintptr_t regaddr;
	uint32_t regval;
	uint32_t bit;

	if (stm32_irqinfo(irq, &regaddr, &bit, NVIC_ENA_OFFSET) == 0)
	{
	  /* Modify the appropriate bit in the register to enable the interrupt.
	   * For normal interrupts, we need to set the bit in the associated
	   * Interrupt Set Enable register.  For other exceptions, we need to
	   * set the bit in the System Handler Control and State Register.
	   */

	  if (irq >= STM32_IRQ_FIRST)
		{
		  putreg32(bit, regaddr);
		}
	  else
		{
		  regval  = getreg32(regaddr);
		  regval |= bit;
		  putreg32(regval, regaddr);
		}
	}
}
Example #2
0
void up_disable_irq(int irq)
{
  uintptr_t regaddr;
  uint32_t regval;
  uint32_t bit;

  if (stm32_irqinfo(irq, &regaddr, &bit, NVIC_CLRENA_OFFSET) == 0)
    {
      /* Modify the appropriate bit in the register to disable the interrupt.
       * For normal interrupts, we need to set the bit in the associated
       * Interrupt Clear Enable register.  For other exceptions, we need to
       * clear the bit in the System Handler Control and State Register.
       */

      if (irq >= STM32_IRQ_FIRST)
        {
          putreg32(bit, regaddr);
        }
      else
        {
          regval  = getreg32(regaddr);
          regval &= ~bit;
          putreg32(regval, regaddr);
        }
    }

  // stm32_dumpnvic("disable", irq);
}
Example #3
0
void up_enable_irq(int irq)
{
  uint32_t regaddr;
  uint32_t regval;
  uint32_t bit;

  if (stm32_irqinfo(irq, &regaddr, &bit) == 0)
    {
      /* Set the appropriate bit in the register to enable the interrupt */

      regval  = getreg32(regaddr);
      regval |= bit;
      putreg32(regval, regaddr);
    }
  stm32_dumpnvic("enable", irq);
}
Example #4
0
void up_enable_irq(int irq)
{
  uintptr_t regaddr;
  uint32_t regval;
  uint32_t bit;

  if (stm32_irqinfo(irq, &regaddr, &bit, NVIC_ENA_OFFSET) == 0)
    {
      /* Modify the appropriate bit in the register to enable the interrupt.
       * For normal interrupts, we need to set the bit in the associated
       * Interrupt Set Enable register.  For other exceptions, we need to
       * set the bit in the System Handler Control and State Register.
       */

      if (irq >= STM32_IRQ_FIRST)
        {
          putreg32(bit, regaddr);
        }
      else
        {
          regval  = getreg32(regaddr);
          regval |= bit;
          putreg32(regval, regaddr);
        }
    }
#ifdef CONFIG_STM32H7_GPIO_IRQ
  else
    {
      /* Maybe it is a (derived) GPIO IRQ */

      stm32_gpioirqenable(irq);
    }
#endif

#if 0 /* Might be useful in early bring-up */
  stm32_dumpnvic("enable", irq);
#endif
}