summaryrefslogtreecommitdiff
path: root/target/linux/s3c24xx/patches-2.6.26/1186-Subject-PATCH-glamo-Don-t-disable-hwcursor-for-b.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/s3c24xx/patches-2.6.26/1186-Subject-PATCH-glamo-Don-t-disable-hwcursor-for-b.patch')
-rwxr-xr-xtarget/linux/s3c24xx/patches-2.6.26/1186-Subject-PATCH-glamo-Don-t-disable-hwcursor-for-b.patch191
1 files changed, 0 insertions, 191 deletions
diff --git a/target/linux/s3c24xx/patches-2.6.26/1186-Subject-PATCH-glamo-Don-t-disable-hwcursor-for-b.patch b/target/linux/s3c24xx/patches-2.6.26/1186-Subject-PATCH-glamo-Don-t-disable-hwcursor-for-b.patch
deleted file mode 100755
index 3b78a6f..0000000
--- a/target/linux/s3c24xx/patches-2.6.26/1186-Subject-PATCH-glamo-Don-t-disable-hwcursor-for-b.patch
+++ /dev/null
@@ -1,191 +0,0 @@
-From a613c5fb94c06db20195b8be4593cf05895205cf Mon Sep 17 00:00:00 2001
-From: Andrzej Zaborowski <balrog@zabor.org>
-Date: Fri, 25 Jul 2008 23:06:16 +0100
-Subject: [PATCH] Subject: [PATCH] glamo: Don't disable hwcursor for blinking and use vsync-wait.
-
----
- drivers/mfd/glamo/glamo-fb.c | 109 +++++++++++++++++++++++++++++-------------
- 1 files changed, 76 insertions(+), 33 deletions(-)
-
-diff --git a/drivers/mfd/glamo/glamo-fb.c b/drivers/mfd/glamo/glamo-fb.c
-index 30cdb38..7e800f5 100644
---- a/drivers/mfd/glamo/glamo-fb.c
-+++ b/drivers/mfd/glamo/glamo-fb.c
-@@ -72,6 +72,7 @@ struct glamofb_handle {
- char __iomem *base;
- struct glamofb_platform_data *mach_info;
- char __iomem *cursor_addr;
-+ int cursor_on;
- u_int32_t pseudo_pal[16];
- spinlock_t lock_cmd;
- };
-@@ -499,18 +500,53 @@ static int glamofb_setcolreg(unsigned regno,
- }
-
- #ifdef CONFIG_MFD_GLAMO_HWACCEL
-+static inline void glamofb_vsync_wait(struct glamofb_handle *glamo,
-+ int line, int size, int range)
-+{
-+ int count[2];
-+
-+ do {
-+ count[0] = reg_read(glamo, GLAMO_REG_LCD_STATUS2) & 0x3ff;
-+ count[1] = reg_read(glamo, GLAMO_REG_LCD_STATUS2) & 0x3ff;
-+ } while (count[0] != count[1] ||
-+ (line < count[0] + range &&
-+ size > count[0] - range) ||
-+ count[0] < range * 2);
-+}
-+
-+/*
-+ * Enable/disable the hardware cursor mode altogether
-+ * (for blinking and such, use glamofb_cursor()).
-+ */
-+static void glamofb_cursor_onoff(struct glamofb_handle *glamo, int on)
-+{
-+ int y, size;
-+
-+ if (glamo->cursor_on) {
-+ y = reg_read(glamo, GLAMO_REG_LCD_CURSOR_Y_POS);
-+ size = reg_read(glamo, GLAMO_REG_LCD_CURSOR_Y_SIZE);
-+
-+ glamofb_vsync_wait(glamo, y, size, 30);
-+ }
-+
-+ reg_set_bit_mask(glamo, GLAMO_REG_LCD_MODE1,
-+ GLAMO_LCD_MODE1_CURSOR_EN,
-+ on ? GLAMO_LCD_MODE1_CURSOR_EN : 0);
-+ glamo->cursor_on = on;
-+
-+ /* Hide the cursor by default */
-+ reg_write(glamo, GLAMO_REG_LCD_CURSOR_X_SIZE, 0);
-+}
-+
- static int glamofb_cursor(struct fb_info *info, struct fb_cursor *cursor)
- {
- struct glamofb_handle *glamo = info->par;
- unsigned long flags;
-
-- if (cursor->image.depth > 2)
-- return -EINVAL;
--
- spin_lock_irqsave(&glamo->lock_cmd, flags);
-
-- reg_set_bit_mask(glamo, GLAMO_REG_LCD_MODE1,
-- GLAMO_LCD_MODE1_CURSOR_EN, 0);
-+ reg_write(glamo, GLAMO_REG_LCD_CURSOR_X_SIZE,
-+ cursor->enable ? cursor->image.width : 0);
-
- if (cursor->set & FB_CUR_SETPOS) {
- reg_write(glamo, GLAMO_REG_LCD_CURSOR_X_POS,
-@@ -520,12 +556,12 @@ static int glamofb_cursor(struct fb_info *info, struct fb_cursor *cursor)
- }
-
- if (cursor->set & FB_CUR_SETCMAP) {
-- uint16_t fg = cursor->image.fg_color;
-- uint16_t bg = cursor->image.bg_color;
-+ uint16_t fg = glamo->pseudo_pal[cursor->image.fg_color];
-+ uint16_t bg = glamo->pseudo_pal[cursor->image.bg_color];
-
- reg_write(glamo, GLAMO_REG_LCD_CURSOR_FG_COLOR, fg);
- reg_write(glamo, GLAMO_REG_LCD_CURSOR_BG_COLOR, bg);
-- reg_write(glamo, GLAMO_REG_LCD_CURSOR_DST_COLOR, bg);
-+ reg_write(glamo, GLAMO_REG_LCD_CURSOR_DST_COLOR, fg);
- }
-
- if (cursor->set & FB_CUR_SETHOT)
-@@ -534,23 +570,27 @@ static int glamofb_cursor(struct fb_info *info, struct fb_cursor *cursor)
-
- if ((cursor->set & FB_CUR_SETSIZE) ||
- (cursor->set & (FB_CUR_SETIMAGE | FB_CUR_SETSHAPE))) {
-- int x, y, pitch;
-- const unsigned char *pcol = cursor->image.data;
-- const unsigned char *pmsk = cursor->mask;
-- void __iomem *dst = glamo->cursor_addr;
-- unsigned char dcol = 0;
-- unsigned char dmsk = 0;
-- unsigned char byte = 0;
--
-- pitch = (cursor->image.width + 3) >> 2;
-- reg_write(glamo, GLAMO_REG_LCD_CURSOR_X_SIZE,
-- cursor->image.width);
-+ int x, y, pitch, op;
-+ const uint8_t *pcol = cursor->image.data;
-+ const uint8_t *pmsk = cursor->mask;
-+ uint8_t __iomem *dst = glamo->cursor_addr;
-+ uint8_t dcol = 0;
-+ uint8_t dmsk = 0;
-+ uint8_t byte = 0;
-+
-+ if (cursor->image.depth > 1) {
-+ spin_unlock_irqrestore(&glamo->lock_cmd, flags);
-+ return -EINVAL;
-+ }
-+
-+ pitch = ((cursor->image.width + 7) >> 2) & ~1;
- reg_write(glamo, GLAMO_REG_LCD_CURSOR_PITCH,
-- pitch);
-+ pitch);
- reg_write(glamo, GLAMO_REG_LCD_CURSOR_Y_SIZE,
-- cursor->image.height);
-+ cursor->image.height);
-
- for (y = 0; y < cursor->image.height; y++) {
-+ byte = 0;
- for (x = 0; x < cursor->image.width; x++) {
- if ((x % 8) == 0) {
- dcol = *pcol++;
-@@ -560,28 +600,28 @@ static int glamofb_cursor(struct fb_info *info, struct fb_cursor *cursor)
- dmsk >>= 1;
- }
-
-- if (dmsk & 1) {
-- unsigned int op;
-+ if (cursor->rop == ROP_COPY)
-+ op = (dmsk & 1) ?
-+ (dcol & 1) ? 1 : 3 : 0;
-+ else
-+ op = ((dmsk & 1) << 1) |
-+ ((dcol & 1) << 0);
-+ byte |= op << ((x & 3) << 1);
-
-- op = (dcol & 1) ? 1 : 3;
-- byte |= op << ((x % 4) * 2);
-- }
--
-- if ((x % 4) == 0) {
-+ if (x % 4 == 3) {
- writeb(byte, dst + x / 4);
- byte = 0;
- }
- }
-+ if (x % 4) {
-+ writeb(byte, dst + x / 4);
-+ byte = 0;
-+ }
-
- dst += pitch;
- }
- }
-
-- if (cursor->enable)
-- reg_set_bit_mask(glamo, GLAMO_REG_LCD_MODE1,
-- GLAMO_LCD_MODE1_CURSOR_EN,
-- GLAMO_LCD_MODE1_CURSOR_EN);
--
- spin_unlock_irqrestore(&glamo->lock_cmd, flags);
-
- return 0;
-@@ -809,6 +849,9 @@ static int __init glamofb_probe(struct platform_device *pdev)
- printk(KERN_ERR"spin_lock_init\n");
- spin_lock_init(&glamofb->lock_cmd);
- glamofb_init_regs(glamofb);
-+#ifdef CONFIG_MFD_GLAMO_HWACCEL
-+ glamofb_cursor_onoff(glamofb, 1);
-+#endif
-
- rc = register_framebuffer(fbinfo);
- if (rc < 0) {
---
-1.5.6.3
-