led.c 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  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@biessmann.org>
  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/clk.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_pio_t *pio = (at91_pio_t *)ATMEL_BASE_PIO;
  54. at91_periph_clk_enable(ATMEL_ID_PIOB);
  55. /* Disable peripherals on LEDs */
  56. writel(GREEN_LED | YELLOW_LED | RED_LED, &pio->piob.per);
  57. /* Enable pins as outputs */
  58. writel(GREEN_LED | YELLOW_LED | RED_LED, &pio->piob.oer);
  59. /* Turn all LEDs OFF */
  60. writel(GREEN_LED | YELLOW_LED | RED_LED, &pio->piob.sodr);
  61. }