led.c 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. /*
  2. * (C) Copyright 2006
  3. * Atmel Nordic AB <www.atmel.com>
  4. * Ulf Samuelsson <ulf@atmel.com>
  5. *
  6. * (C) Copyright 2010
  7. * Andreas Bießmann <andreas.devel@gmail.com>
  8. *
  9. * SPDX-License-Identifier: GPL-2.0+
  10. */
  11. #include <common.h>
  12. #include <asm/io.h>
  13. #include <asm/arch/hardware.h>
  14. #include <asm/arch/at91_pmc.h>
  15. #include <asm/arch/at91_pio.h>
  16. #include <status_led.h>
  17. /* bit mask in PIO port B */
  18. #define GREEN_LED (1<<0)
  19. #define YELLOW_LED (1<<1)
  20. #define RED_LED (1<<2)
  21. void green_led_on(void)
  22. {
  23. at91_pio_t *pio = (at91_pio_t *)ATMEL_BASE_PIO;
  24. writel(GREEN_LED, &pio->piob.codr);
  25. }
  26. void yellow_led_on(void)
  27. {
  28. at91_pio_t *pio = (at91_pio_t *)ATMEL_BASE_PIO;
  29. writel(YELLOW_LED, &pio->piob.codr);
  30. }
  31. void red_led_on(void)
  32. {
  33. at91_pio_t *pio = (at91_pio_t *)ATMEL_BASE_PIO;
  34. writel(RED_LED, &pio->piob.codr);
  35. }
  36. void green_led_off(void)
  37. {
  38. at91_pio_t *pio = (at91_pio_t *)ATMEL_BASE_PIO;
  39. writel(GREEN_LED, &pio->piob.sodr);
  40. }
  41. void yellow_led_off(void)
  42. {
  43. at91_pio_t *pio = (at91_pio_t *)ATMEL_BASE_PIO;
  44. writel(YELLOW_LED, &pio->piob.sodr);
  45. }
  46. void red_led_off(void)
  47. {
  48. at91_pio_t *pio = (at91_pio_t *)ATMEL_BASE_PIO;
  49. writel(RED_LED, &pio->piob.sodr);
  50. }
  51. void coloured_LED_init (void)
  52. {
  53. at91_pmc_t *pmc = (at91_pmc_t *)ATMEL_BASE_PMC;
  54. at91_pio_t *pio = (at91_pio_t *)ATMEL_BASE_PIO;
  55. /* Enable PIOB clock */
  56. writel(1 << ATMEL_ID_PIOB, &pmc->pcer);
  57. /* Disable peripherals on LEDs */
  58. writel(GREEN_LED | YELLOW_LED | RED_LED, &pio->piob.per);
  59. /* Enable pins as outputs */
  60. writel(GREEN_LED | YELLOW_LED | RED_LED, &pio->piob.oer);
  61. /* Turn all LEDs OFF */
  62. writel(GREEN_LED | YELLOW_LED | RED_LED, &pio->piob.sodr);
  63. }