|
@@ -32,6 +32,8 @@
|
|
|
#include <linux/gpio_keys.h>
|
|
|
#include <linux/input.h>
|
|
|
#include <linux/leds.h>
|
|
|
+#include <linux/pwm.h>
|
|
|
+#include <linux/leds_pwm.h>
|
|
|
|
|
|
#include <video/atmel_lcdc.h>
|
|
|
|
|
@@ -369,21 +371,47 @@ static struct gpio_led ek_leds[] = {
|
|
|
.name = "ds3",
|
|
|
.gpio = AT91_PIN_PB7,
|
|
|
.default_trigger = "heartbeat",
|
|
|
+ },
|
|
|
+#if !IS_ENABLED(CONFIG_LEDS_PWM)
|
|
|
+ {
|
|
|
+ .name = "ds1",
|
|
|
+ .gpio = AT91_PIN_PB8,
|
|
|
+ .active_low = 1,
|
|
|
+ .default_trigger = "none",
|
|
|
}
|
|
|
+#endif
|
|
|
};
|
|
|
|
|
|
/*
|
|
|
* PWM Leds
|
|
|
*/
|
|
|
-static struct gpio_led ek_pwm_led[] = {
|
|
|
- /* For now only DS1 is PWM-driven (by pwm1) */
|
|
|
+static struct pwm_lookup pwm_lookup[] = {
|
|
|
+ PWM_LOOKUP("at91sam9rl-pwm", 1, "leds_pwm", "ds1",
|
|
|
+ 5000, PWM_POLARITY_INVERSED),
|
|
|
+};
|
|
|
+
|
|
|
+#if IS_ENABLED(CONFIG_LEDS_PWM)
|
|
|
+static struct led_pwm pwm_leds[] = {
|
|
|
{
|
|
|
- .name = "ds1",
|
|
|
- .gpio = 1, /* is PWM channel number */
|
|
|
- .active_low = 1,
|
|
|
- .default_trigger = "none",
|
|
|
- }
|
|
|
+ .name = "ds1",
|
|
|
+ .max_brightness = 255,
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
+static struct led_pwm_platform_data pwm_data = {
|
|
|
+ .num_leds = ARRAY_SIZE(pwm_leds),
|
|
|
+ .leds = pwm_leds,
|
|
|
+};
|
|
|
+
|
|
|
+static struct platform_device leds_pwm = {
|
|
|
+ .name = "leds_pwm",
|
|
|
+ .id = -1,
|
|
|
+ .dev = {
|
|
|
+ .platform_data = &pwm_data,
|
|
|
+ },
|
|
|
};
|
|
|
+#endif
|
|
|
+
|
|
|
|
|
|
/*
|
|
|
* CAN
|
|
@@ -403,6 +431,12 @@ static struct at91_can_data ek_can_data = {
|
|
|
.transceiver_switch = sam9263ek_transceiver_switch,
|
|
|
};
|
|
|
|
|
|
+static struct platform_device *devices[] __initdata = {
|
|
|
+#if IS_ENABLED(CONFIG_LEDS_PWM)
|
|
|
+ &leds_pwm,
|
|
|
+#endif
|
|
|
+};
|
|
|
+
|
|
|
static void __init ek_board_init(void)
|
|
|
{
|
|
|
/* Serial */
|
|
@@ -437,9 +471,14 @@ static void __init ek_board_init(void)
|
|
|
at91_add_device_ac97(&ek_ac97_data);
|
|
|
/* LEDs */
|
|
|
at91_gpio_leds(ek_leds, ARRAY_SIZE(ek_leds));
|
|
|
- at91_pwm_leds(ek_pwm_led, ARRAY_SIZE(ek_pwm_led));
|
|
|
+ pwm_add_table(pwm_lookup, ARRAY_SIZE(pwm_lookup));
|
|
|
+#if IS_ENABLED(CONFIG_LEDS_PWM)
|
|
|
+ at91_add_device_pwm(1 << AT91_PWM1);
|
|
|
+#endif
|
|
|
/* CAN */
|
|
|
at91_add_device_can(&ek_can_data);
|
|
|
+ /* Other platform devices */
|
|
|
+ platform_add_devices(devices, ARRAY_SIZE(devices));
|
|
|
}
|
|
|
|
|
|
MACHINE_START(AT91SAM9263EK, "Atmel AT91SAM9263-EK")
|