|
@@ -18,7 +18,10 @@
|
|
|
#include <linux/gpio.h>
|
|
|
#include <linux/leds.h>
|
|
|
#include <linux/atmel-mci.h>
|
|
|
-#include <linux/atmel-pwm-bl.h>
|
|
|
+#include <linux/pwm.h>
|
|
|
+#include <linux/pwm_backlight.h>
|
|
|
+#include <linux/regulator/fixed.h>
|
|
|
+#include <linux/regulator/machine.h>
|
|
|
#include <linux/spi/spi.h>
|
|
|
#include <linux/spi/ads7846.h>
|
|
|
|
|
@@ -33,6 +36,8 @@
|
|
|
#include <mach/board.h>
|
|
|
#include <mach/portmux.h>
|
|
|
|
|
|
+#define PWM_BL_CH 2
|
|
|
+
|
|
|
/* Oscillator frequencies. These are board-specific */
|
|
|
unsigned long at32_board_osc_rates[3] = {
|
|
|
[0] = 32768, /* 32.768 kHz on RTC osc */
|
|
@@ -227,29 +232,36 @@ void __init favr32_setup_leds(void)
|
|
|
platform_device_register(&favr32_led_dev);
|
|
|
}
|
|
|
|
|
|
-static struct atmel_pwm_bl_platform_data atmel_pwm_bl_pdata = {
|
|
|
- .pwm_channel = 2,
|
|
|
- .pwm_frequency = 200000,
|
|
|
- .pwm_compare_max = 345,
|
|
|
- .pwm_duty_max = 345,
|
|
|
- .pwm_duty_min = 90,
|
|
|
- .pwm_active_low = 1,
|
|
|
- .gpio_on = GPIO_PIN_PA(28),
|
|
|
- .on_active_low = 0,
|
|
|
+static struct pwm_lookup pwm_lookup[] = {
|
|
|
+ PWM_LOOKUP("at91sam9rl-pwm", PWM_BL_CH, "pwm-backlight.0", NULL,
|
|
|
+ 5000, PWM_POLARITY_INVERSED),
|
|
|
};
|
|
|
|
|
|
-static struct platform_device atmel_pwm_bl_dev = {
|
|
|
- .name = "atmel-pwm-bl",
|
|
|
- .id = 0,
|
|
|
- .dev = {
|
|
|
- .platform_data = &atmel_pwm_bl_pdata,
|
|
|
+static struct regulator_consumer_supply fixed_power_consumers[] = {
|
|
|
+ REGULATOR_SUPPLY("power", "pwm-backlight.0"),
|
|
|
+};
|
|
|
+
|
|
|
+static struct platform_pwm_backlight_data pwm_bl_data = {
|
|
|
+ .enable_gpio = GPIO_PIN_PA(28),
|
|
|
+ .max_brightness = 255,
|
|
|
+ .dft_brightness = 255,
|
|
|
+ .lth_brightness = 50,
|
|
|
+};
|
|
|
+
|
|
|
+static struct platform_device pwm_bl_device = {
|
|
|
+ .name = "pwm-backlight",
|
|
|
+ .dev = {
|
|
|
+ .platform_data = &pwm_bl_data,
|
|
|
},
|
|
|
};
|
|
|
|
|
|
static void __init favr32_setup_atmel_pwm_bl(void)
|
|
|
{
|
|
|
- platform_device_register(&atmel_pwm_bl_dev);
|
|
|
- at32_select_gpio(atmel_pwm_bl_pdata.gpio_on, 0);
|
|
|
+ pwm_add_table(pwm_lookup, ARRAY_SIZE(pwm_lookup));
|
|
|
+ regulator_register_always_on(0, "fixed", fixed_power_consumers,
|
|
|
+ ARRAY_SIZE(fixed_power_consumers), 3300000);
|
|
|
+ platform_device_register(&pwm_bl_device);
|
|
|
+ at32_select_gpio(pwm_bl_data.enable_gpio, 0);
|
|
|
}
|
|
|
|
|
|
void __init setup_board(void)
|
|
@@ -339,7 +351,7 @@ static int __init favr32_init(void)
|
|
|
|
|
|
set_abdac_rate(at32_add_device_abdac(0, &abdac0_data));
|
|
|
|
|
|
- at32_add_device_pwm(1 << atmel_pwm_bl_pdata.pwm_channel);
|
|
|
+ at32_add_device_pwm(1 << PWM_BL_CH);
|
|
|
at32_add_device_spi(1, spi1_board_info, ARRAY_SIZE(spi1_board_info));
|
|
|
at32_add_device_mci(0, &mci0_data);
|
|
|
at32_add_device_usba(0, NULL);
|