led.c 1.5 KB

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