summaryrefslogtreecommitdiffstats
path: root/recipes/linux/linux-openmoko-2.6.32/0014-Clean-up-JBT-hooks-and-allow-resolution-switching.patch
diff options
context:
space:
mode:
Diffstat (limited to 'recipes/linux/linux-openmoko-2.6.32/0014-Clean-up-JBT-hooks-and-allow-resolution-switching.patch')
-rw-r--r--recipes/linux/linux-openmoko-2.6.32/0014-Clean-up-JBT-hooks-and-allow-resolution-switching.patch223
1 files changed, 0 insertions, 223 deletions
diff --git a/recipes/linux/linux-openmoko-2.6.32/0014-Clean-up-JBT-hooks-and-allow-resolution-switching.patch b/recipes/linux/linux-openmoko-2.6.32/0014-Clean-up-JBT-hooks-and-allow-resolution-switching.patch
deleted file mode 100644
index 287214b677..0000000000
--- a/recipes/linux/linux-openmoko-2.6.32/0014-Clean-up-JBT-hooks-and-allow-resolution-switching.patch
+++ /dev/null
@@ -1,223 +0,0 @@
-From 644aab63501ebff3e819fd25d23c63da6b6e1cf5 Mon Sep 17 00:00:00 2001
-From: Thomas White <taw@bitwiz.org.uk>
-Date: Mon, 8 Mar 2010 23:51:09 +0100
-Subject: [PATCH 14/15] Clean up JBT hooks, and allow resolution switching
-
-Signed-off-by: Thomas White <taw@bitwiz.org.uk>
----
- arch/arm/mach-s3c2442/mach-gta02.c | 2 +-
- drivers/mfd/glamo/glamo-display.c | 17 ++++++----
- drivers/video/backlight/jbt6k74.c | 57 +++++++++++++++++++----------------
- include/linux/jbt6k74.h | 14 +++++++++
- 4 files changed, 56 insertions(+), 34 deletions(-)
-
-diff --git a/arch/arm/mach-s3c2442/mach-gta02.c b/arch/arm/mach-s3c2442/mach-gta02.c
-index a969037..b580b1b 100644
---- a/arch/arm/mach-s3c2442/mach-gta02.c
-+++ b/arch/arm/mach-s3c2442/mach-gta02.c
-@@ -229,7 +229,7 @@ static struct fb_videomode gta02_glamo_modes[] = {
- .name = "240x320",
- .xres = 240,
- .yres = 320,
-- .pixclock = 40816,
-+ .pixclock = 100000,
- .left_margin = 8,
- .right_margin = 16,
- .upper_margin = 2,
-diff --git a/drivers/mfd/glamo/glamo-display.c b/drivers/mfd/glamo/glamo-display.c
-index 5f04697..e56cdb4 100644
---- a/drivers/mfd/glamo/glamo-display.c
-+++ b/drivers/mfd/glamo/glamo-display.c
-@@ -52,19 +52,18 @@
- *
- */
-
--#define DEBUG 1
--
- #include <drm/drmP.h>
- #include <drm/glamo_drm.h>
- #include <drm/drm_crtc_helper.h>
- #include <drm/drm_crtc.h>
-+#include <linux/glamofb.h>
-+#include <linux/jbt6k74.h>
-
- #include "glamo-core.h"
- #include "glamo-drm-private.h"
- #include "glamo-regs.h"
- #include "glamo-kms-fb.h"
- #include "glamo-display.h"
--#include <linux/glamofb.h>
-
-
- #define GLAMO_LCD_WIDTH_MASK 0x03FF
-@@ -356,6 +355,12 @@ static int glamo_crtc_mode_set(struct drm_crtc *crtc,
-
- glamo_lcd_cmd_mode(gdrm, 0);
-
-+ if ( mode->hdisplay == 240 ) {
-+ jbt6k74_setresolution(JBT_RESOLUTION_QVGA);
-+ } else {
-+ jbt6k74_setresolution(JBT_RESOLUTION_VGA);
-+ }
-+
- glamo_crtc_mode_set_base(crtc, 0, 0, old_fb);
-
- gcrtc->current_mode = *mode;
-@@ -366,8 +371,6 @@ static int glamo_crtc_mode_set(struct drm_crtc *crtc,
- }
-
-
--extern void jbt6k74_action(int val);
--
- /* This is not the right place to switch power on/off, because the helper
- * stuff ends up calling this before/after setting the mode. We can't
- * set modes with the display off (although backlight off would be OK) */
-@@ -385,14 +388,14 @@ void glamo_lcd_power(struct glamodrm_handle *gdrm, int mode)
- if ( mode ) {
- glamo_engine_enable(gdrm->glamo_core, GLAMO_ENGINE_LCD);
- gcrtc->pixel_clock_on = 1;
-- jbt6k74_action(1);
-+ jbt6k74_setpower(JBT_POWER_MODE_NORMAL);
- if ( gcrtc->current_mode_set ) {
- glamo_crtc_mode_set(crtc, &gcrtc->current_mode,
- &gcrtc->current_mode, 0, 0,
- gcrtc->current_fb);
- }
- } else {
-- jbt6k74_action(0);
-+ jbt6k74_setpower(JBT_POWER_MODE_OFF);
- glamo_engine_suspend(gdrm->glamo_core, GLAMO_ENGINE_LCD);
- gcrtc->pixel_clock_on = 0;
- }
-diff --git a/drivers/video/backlight/jbt6k74.c b/drivers/video/backlight/jbt6k74.c
-index 9554cb3..40c31f6 100644
---- a/drivers/video/backlight/jbt6k74.c
-+++ b/drivers/video/backlight/jbt6k74.c
-@@ -101,15 +101,6 @@ enum jbt_register {
- JBT_REG_HCLOCK_QVGA = 0xed,
- };
-
--enum jbt_resolution {
-- JBT_RESOLUTION_VGA,
-- JBT_RESOLUTION_QVGA,
--};
--
--enum jbt_power_mode {
-- JBT_POWER_MODE_OFF,
-- JBT_POWER_MODE_NORMAL,
--};
-
- static const char *jbt_power_mode_names[] = {
- [JBT_POWER_MODE_OFF] = "off",
-@@ -121,6 +112,7 @@ static const char *jbt_resolution_names[] = {
- [JBT_RESOLUTION_QVGA] = "qvga",
- };
-
-+
- struct jbt_info {
- struct mutex lock; /* protects this structure */
- enum jbt_resolution resolution;
-@@ -139,6 +131,8 @@ struct jbt_info {
- uint16_t reg_cache[0xEE];
- };
-
-+struct jbt_info *jbt_global;
-+
- #define JBT_COMMAND 0x000
- #define JBT_DATA 0x100
-
-@@ -401,8 +395,9 @@ static int jbt6k74_set_resolution(struct jbt_info *jbt,
-
- if (jbt->power_mode == JBT_POWER_MODE_NORMAL) {
-
-- /* first transition into sleep */
-+ /* "Reboot" the LCM */
- ret = jbt_normal_to_off(jbt);
-+ mdelay(1000);
- ret |= jbt_off_to_normal(jbt);
-
- if (ret) {
-@@ -609,22 +604,6 @@ static int jbt6k74_get_power(struct lcd_device *ld)
- }
- }
-
--/* This is utterly, totally horrible. I'm REALLY sorry... */
--struct jbt_info *jbt_global;
--void jbt6k74_action(int val)
--{
-- if ( !jbt_global ) {
-- printk(KERN_CRIT "JBT not initialised!!!\n");
-- return;
-- }
-- if ( val == 0 ) {
-- jbt6k74_enter_power_mode(jbt_global, JBT_POWER_MODE_OFF);
-- } else {
-- jbt6k74_enter_power_mode(jbt_global, JBT_POWER_MODE_NORMAL);
-- }
--}
--EXPORT_SYMBOL_GPL(jbt6k74_action);
--
- struct lcd_ops jbt6k74_lcd_ops = {
- .set_power = jbt6k74_set_power,
- .get_power = jbt6k74_get_power,
-@@ -758,6 +737,32 @@ static int __devexit jbt_remove(struct spi_device *spi)
- return 0;
- }
-
-+/* Begin horrible layering violations (in the interest of making stuff work) */
-+
-+int jbt6k74_setresolution(enum jbt_resolution new_resolution)
-+{
-+ if ( !jbt_global ) {
-+ printk(KERN_CRIT "JBT not initialised!!!\n");
-+ return -1;
-+ }
-+ jbt6k74_set_resolution(jbt_global, new_resolution);
-+ return 0;
-+}
-+EXPORT_SYMBOL_GPL(jbt6k74_setresolution);
-+
-+/* This is utterly, totally horrible. I'm REALLY sorry... */
-+void jbt6k74_setpower(enum jbt_power_mode new_power)
-+{
-+ if ( !jbt_global ) {
-+ printk(KERN_CRIT "JBT not initialised!!!\n");
-+ return;
-+ }
-+ jbt6k74_enter_power_mode(jbt_global, new_power);
-+}
-+EXPORT_SYMBOL_GPL(jbt6k74_setpower);
-+
-+/* End horrible layering violations */
-+
- #ifdef CONFIG_PM
- static int jbt_suspend(struct spi_device *spi, pm_message_t state)
- {
-diff --git a/include/linux/jbt6k74.h b/include/linux/jbt6k74.h
-index 4cf760c..f430e5a 100644
---- a/include/linux/jbt6k74.h
-+++ b/include/linux/jbt6k74.h
-@@ -3,6 +3,20 @@
-
- #include <linux/spi/spi.h>
-
-+enum jbt_resolution {
-+ JBT_RESOLUTION_VGA,
-+ JBT_RESOLUTION_QVGA,
-+};
-+
-+enum jbt_power_mode {
-+ JBT_POWER_MODE_OFF,
-+ JBT_POWER_MODE_NORMAL,
-+};
-+
-+extern void jbt6k74_setpower(enum jbt_power_mode new_power);
-+extern int jbt6k74_setresolution(enum jbt_resolution new_resolution);
-+
-+
- /*
- * struct jbt6k74_platform_data - Platform data for jbt6k74 driver
- * @probe_completed: Callback to be called when the driver has been
---
-1.7.0.2
-