1 /*
2  * Copyright (c) 2006-2021, RT-Thread Development Team
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  *
6  * Change Logs:
7  * Date           Author       Notes
8  * 2011-01-13     weety      first version
9  */
10 
11 #include <rtthread.h>
12 #include <at91sam9g45.h>
13 #include "led.h"
14 
15 // BYHX A-Plus Board
16 #define LED0    (1UL << 30)
17 #define LED1    (1UL << 31)
18 #define LED2    (1UL << 29)
19 #define LED3    (1UL << 28)
20 #define LED_ALL     (LED0 | LED1 | LED2 | LED3)
21 
led_init(void)22 void led_init(void)
23 {
24     AT91C_BASE_PIOC->PIO_PER   = LED_ALL;
25     AT91C_BASE_PIOC->PIO_OER   = LED_ALL;
26     AT91C_BASE_PIOC->PIO_PPUER = LED_ALL;
27     AT91C_BASE_PIOC->PIO_SODR  = LED_ALL;
28 }
29 
30 const static rt_uint32_t m_leds[] = { LED0, LED1, LED2, LED3 };
31 
led_on(int num)32 void led_on(int num)
33 {
34     if (num < 4) AT91C_BASE_PIOC->PIO_CODR = m_leds[num];
35 }
36 
led_off(int num)37 void led_off(int num)
38 {
39     if (num < 4) AT91C_BASE_PIOC->PIO_SODR = m_leds[num];
40 }
41