aboutsummaryrefslogtreecommitdiffstats
path: root/patches.at91/0132-video-atmelfb-refactor-LUT.patch
blob: 068ad1ebebb5b973b1bf67ede088477d3c74b884 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
From 67667d141480aa33acf52e27648fccb696282d03 Mon Sep 17 00:00:00 2001
From: Wolfram Sang <w.sang@pengutronix.de>
Date: Fri, 20 May 2011 14:51:45 +0200
Subject: video: atmelfb: refactor LUT
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Wolfram Sang <w.sang@pengutronix.de>
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
---
 drivers/video/atmel_lcdfb.c      | 1 +
 drivers/video/atmel_lcdfb_core.c | 6 ++++--
 include/video/atmel_lcdc.h       | 8 ++------
 3 files changed, 7 insertions(+), 8 deletions(-)

diff --git a/drivers/video/atmel_lcdfb.c b/drivers/video/atmel_lcdfb.c
index cd6d22e..f8993cd 100644
--- a/drivers/video/atmel_lcdfb.c
+++ b/drivers/video/atmel_lcdfb.c
@@ -380,6 +380,7 @@ static struct atmel_lcdfb_devdata dev_data = {
 	.bl_ops = &atmel_lcdc_bl_ops,
 	.init_contrast = atmel_lcdfb_init_contrast,
 	.fbinfo_flags = ATMEL_LCDFB_FBINFO_DEFAULT,
+	.lut_base = ATMEL_LCDC_LUT,
 };
 
 static int __init atmel_lcdfb_probe(struct platform_device *pdev)
diff --git a/drivers/video/atmel_lcdfb_core.c b/drivers/video/atmel_lcdfb_core.c
index 4146e9b..0edafb6 100644
--- a/drivers/video/atmel_lcdfb_core.c
+++ b/drivers/video/atmel_lcdfb_core.c
@@ -422,7 +422,8 @@ static int atmel_lcdfb_setcolreg(unsigned int regno, unsigned int red,
 			 *   ~(red[10] ^ green[10] ^ blue[10]) & 1
 			 */
 
-			lcdc_writel(sinfo, ATMEL_LCDC_LUT(regno), val);
+			lcdc_writel(sinfo, sinfo->dev_data->lut_base + regno * 4,
+					val);
 			ret = 0;
 		}
 		break;
@@ -430,7 +431,8 @@ static int atmel_lcdfb_setcolreg(unsigned int regno, unsigned int red,
 	case FB_VISUAL_MONO01:
 		if (regno < 2) {
 			val = (regno == 0) ? 0x00 : 0x1F;
-			lcdc_writel(sinfo, ATMEL_LCDC_LUT(regno), val);
+			lcdc_writel(sinfo, sinfo->dev_data->lut_base + regno * 4,
+					val);
 			ret = 0;
 		}
 		break;
diff --git a/include/video/atmel_lcdc.h b/include/video/atmel_lcdc.h
index 866ab47..6c470c4 100644
--- a/include/video/atmel_lcdc.h
+++ b/include/video/atmel_lcdc.h
@@ -53,6 +53,7 @@ struct atmel_lcdfb_devdata {
 	void (*init_contrast)(struct atmel_lcdfb_info *sinfo);
 	const struct backlight_ops *bl_ops;
 	int fbinfo_flags;
+	u32 lut_base;
 };
 
  /* LCD Controller info data structure, stored in device platform_data */
@@ -241,11 +242,6 @@ struct atmel_lcdfb_info {
 #define	ATMEL_LCDC_OWRI		(1 << 5)
 #define	ATMEL_LCDC_MERI		(1 << 6)
 
-#if !defined(CONFIG_ARCH_AT91SAM9X5)
-#define ATMEL_LCDC_LUT(n)	(0x0c00 + ((n)*4))
-#else
-/* Base layer CLUT */
-#define ATMEL_LCDC_LUT(n)	(0x0400 + ((n)*4))
-#endif
+#define ATMEL_LCDC_LUT		0x0c00
 
 #endif /* __ATMEL_LCDC_H__ */
-- 
1.8.0.197.g5a90748