epled.c 881 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. /*
  2. * (C) Copyright 2004, Psyent Corporation <www.psyent.com>
  3. * Scott McNutt <smcnutt@psyent.com>
  4. *
  5. * SPDX-License-Identifier: GPL-2.0+
  6. */
  7. #include <common.h>
  8. #include <asm/io.h>
  9. #include <nios2-io.h>
  10. #include <status_led.h>
  11. /* The LED port is configured as output only, so we
  12. * must track the state manually.
  13. */
  14. static led_id_t val = 0;
  15. void __led_init (led_id_t mask, int state)
  16. {
  17. nios_pio_t *pio = (nios_pio_t *)CONFIG_SYS_LEDPIO_ADDR;
  18. if (state == STATUS_LED_ON)
  19. val &= ~mask;
  20. else
  21. val |= mask;
  22. writel (val, &pio->data);
  23. }
  24. void __led_set (led_id_t mask, int state)
  25. {
  26. nios_pio_t *pio = (nios_pio_t *)CONFIG_SYS_LEDPIO_ADDR;
  27. if (state == STATUS_LED_ON)
  28. val &= ~mask;
  29. else
  30. val |= mask;
  31. writel (val, &pio->data);
  32. }
  33. void __led_toggle (led_id_t mask)
  34. {
  35. nios_pio_t *pio = (nios_pio_t *)CONFIG_SYS_LEDPIO_ADDR;
  36. val ^= mask;
  37. writel (val, &pio->data);
  38. }