aboutsummaryrefslogtreecommitdiff
path: root/linux/3.1.6/0011-n35-Powermanagement-for-some-LCD-stuff-on-Acer-n35.patch
diff options
context:
space:
mode:
Diffstat (limited to 'linux/3.1.6/0011-n35-Powermanagement-for-some-LCD-stuff-on-Acer-n35.patch')
-rw-r--r--linux/3.1.6/0011-n35-Powermanagement-for-some-LCD-stuff-on-Acer-n35.patch92
1 files changed, 92 insertions, 0 deletions
diff --git a/linux/3.1.6/0011-n35-Powermanagement-for-some-LCD-stuff-on-Acer-n35.patch b/linux/3.1.6/0011-n35-Powermanagement-for-some-LCD-stuff-on-Acer-n35.patch
new file mode 100644
index 0000000..68e7ed4
--- /dev/null
+++ b/linux/3.1.6/0011-n35-Powermanagement-for-some-LCD-stuff-on-Acer-n35.patch
@@ -0,0 +1,92 @@
+From 3dad22d3a6e269ea7387c756592fd831fbd7810e Mon Sep 17 00:00:00 2001
+From: Jiri Pinkava <jiri.pinkava@vscht.cz>
+Date: Mon, 24 May 2010 11:03:52 +0200
+Subject: [PATCH 11/14] n35: Powermanagement for some LCD stuff on Acer n35
+
+Signed-off-by: Jiri Pinkava <jiri.pinkava@vscht.cz>
+---
+ arch/arm/mach-s3c2410/mach-n30.c | 47 ++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 47 insertions(+), 0 deletions(-)
+
+diff --git a/arch/arm/mach-s3c2410/mach-n30.c b/arch/arm/mach-s3c2410/mach-n30.c
+index 9c0e5b8..3c784e4 100644
+--- a/arch/arm/mach-s3c2410/mach-n30.c
++++ b/arch/arm/mach-s3c2410/mach-n30.c
+@@ -56,6 +56,8 @@
+ #include <plat/ts.h>
+ #include <plat/udc.h>
+
++#include <video/platform_lcd.h>
++
+ #ifdef CONFIG_MTD_PARTITIONS
+ #include <linux/mtd/mtd.h>
+ #include <linux/mtd/nand.h>
+@@ -563,6 +565,45 @@ static struct platform_device n35_backlight = {
+ .id = -1,
+ };
+
++static void n35_lcd_set_power(struct plat_lcd_data *pd, unsigned int power)
++{
++ if (power) {
++ gpio_set_value(S3C2410_GPB(8), 1);
++ s3c_gpio_setpull(S3C2410_GPB(8), S3C_GPIO_PULL_UP);
++
++ s3c_gpio_cfgpin(S3C2410_GPB(9), S3C2410_GPIO_OUTPUT);
++ gpio_set_value(S3C2410_GPB(9), 1);
++ s3c_gpio_setpull(S3C2410_GPB(9), S3C_GPIO_PULL_UP);
++
++ s3c_gpio_cfgpin(S3C2410_GPB(10), S3C2410_GPIO_OUTPUT);
++ gpio_set_value(S3C2410_GPB(10), 1);
++ s3c_gpio_setpull(S3C2410_GPB(10), S3C_GPIO_PULL_UP);
++ } else {
++ gpio_set_value(S3C2410_GPB(8), 0);
++ s3c_gpio_setpull(S3C2410_GPB(8), S3C_GPIO_PULL_DOWN);
++
++ s3c_gpio_cfgpin(S3C2410_GPB(9), S3C2410_GPIO_INPUT);
++ s3c_gpio_setpull(S3C2410_GPB(9), S3C_GPIO_PULL_DOWN);
++
++ s3c_gpio_cfgpin(S3C2410_GPB(10), S3C2410_GPIO_INPUT);
++ s3c_gpio_setpull(S3C2410_GPB(10), S3C_GPIO_PULL_DOWN);
++ }
++}
++
++
++static struct plat_lcd_data n35_lcd_power_data = {
++ .set_power = n35_lcd_set_power,
++};
++
++static struct platform_device n35_lcd_powerdev = {
++ .name = "platform-lcd",
++ .id = -1,
++ .dev = {
++ .parent = &s3c_device_lcd.dev,
++ .platform_data = &n35_lcd_power_data,
++ },
++};
++
+ static void n30_sdi_set_power(unsigned char power_mode, unsigned short vdd)
+ {
+ switch (power_mode) {
+@@ -617,6 +658,7 @@ static struct platform_device *n35_devices[] __initdata = {
+ &s3c_device_ts,
+ &s3c_device_timer[0],
+ &n35_backlight,
++ &n35_lcd_powerdev,
+ &n30_battery,
+ &n35_button_device,
+ &n35_blue_led,
+@@ -806,6 +848,11 @@ static void __init n30_init(void)
+ if (machine_is_n35()) {
+ s3c_nand_set_platdata(&n35_nand_info);
+
++ WARN_ON(gpio_request(S3C2410_GPB(8), "LCD driver"));
++ WARN_ON(gpio_request(S3C2410_GPB(9), "LCD HSYNC"));
++ WARN_ON(gpio_request(S3C2410_GPB(10), "LCD VSYNC"));
++ s3c_gpio_cfgpin(S3C2410_GPB(8), S3C2410_GPIO_OUTPUT);
++
+ /* Clear any locks and write protects on the flash. */
+ WARN_ON(gpio_request(S3C2410_GPC(5), "NAND write protection"));
+ gpio_set_value(S3C2410_GPC(5), 1);
+--
+1.7.3.1
+