summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans de Goede <hdegoede@redhat.com>2015-01-22 21:02:42 +0100
committerHans de Goede <hdegoede@redhat.com>2015-01-23 15:15:02 +0100
commita7403ae84d15096330d6b08b11b1a4b03da38abf (patch)
tree202151d1845601f2e482164f712cbeec98368ec0
parentc17fb11c56629e3e293db81600d0bf7926f221ee (diff)
downloadu-boot-a7403ae84d15096330d6b08b11b1a4b03da38abf.tar.gz
u-boot-a7403ae84d15096330d6b08b11b1a4b03da38abf.tar.bz2
u-boot-a7403ae84d15096330d6b08b11b1a4b03da38abf.zip
sunxi: video: Make pwm polarity configurable
It turns out that there are some panels where the pwm input is not active low, so make it configurable. Signed-off-by: Hans de Goede <hdegoede@redhat.com> Acked-by: Ian Campbell <ijc@hellion.org.uk>
-rw-r--r--board/sunxi/Kconfig7
-rw-r--r--drivers/video/sunxi_display.c17
2 files changed, 18 insertions, 6 deletions
diff --git a/board/sunxi/Kconfig b/board/sunxi/Kconfig
index 0e3c2076dc..738b55e74a 100644
--- a/board/sunxi/Kconfig
+++ b/board/sunxi/Kconfig
@@ -319,6 +319,13 @@ config VIDEO_LCD_BL_PWM
Set the backlight pwm pin for the LCD panel. This takes a string in the
format understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of port H.
+config VIDEO_LCD_BL_PWM_ACTIVE_LOW
+ bool "LCD panel backlight pwm is inverted"
+ depends on VIDEO
+ default y
+ ---help---
+ Set this if the backlight pwm output is active low.
+
# Note only one of these may be selected at a time! But hidden choices are
# not supported by Kconfig
diff --git a/drivers/video/sunxi_display.c b/drivers/video/sunxi_display.c
index 5077111daf..af728b51c7 100644
--- a/drivers/video/sunxi_display.c
+++ b/drivers/video/sunxi_display.c
@@ -23,6 +23,14 @@
#include "hitachi_tx18d42vm_lcd.h"
#include "ssd2828.h"
+#ifdef CONFIG_VIDEO_LCD_BL_PWM_ACTIVE_LOW
+#define PWM_ON 0
+#define PWM_OFF 1
+#else
+#define PWM_ON 1
+#define PWM_OFF 0
+#endif
+
DECLARE_GLOBAL_DATA_PTR;
enum sunxi_monitor {
@@ -598,8 +606,7 @@ static void sunxi_lcdc_panel_enable(void)
pin = sunxi_name_to_gpio(CONFIG_VIDEO_LCD_BL_PWM);
if (pin != -1) {
gpio_request(pin, "lcd_backlight_pwm");
- /* backlight pwm is inverted, set to 1 to disable backlight */
- gpio_direction_output(pin, 1);
+ gpio_direction_output(pin, PWM_OFF);
}
/* Give the backlight some time to turn off and power up the panel. */
@@ -626,10 +633,8 @@ static void sunxi_lcdc_backlight_enable(void)
gpio_direction_output(pin, 1);
pin = sunxi_name_to_gpio(CONFIG_VIDEO_LCD_BL_PWM);
- if (pin != -1) {
- /* backlight pwm is inverted, set to 0 to enable backlight */
- gpio_direction_output(pin, 0);
- }
+ if (pin != -1)
+ gpio_direction_output(pin, PWM_ON);
}
static int sunxi_lcdc_get_clk_delay(const struct ctfb_res_modes *mode)