1 From 2c9edd6af31a812a9487dd8bc12322e105a29f44 Mon Sep 17 00:00:00 2001
2 From: Hardik Shah <hardik.shah@ti.com>
3 Date: Fri, 17 Apr 2009 09:42:36 +0530
4 Subject: [PATCH 37/69] DSS2: Added support for querying color keying.
6 V4L2 Framework has a ioctl for getting/setting color keying.
7 So added the function manager pointers for doing same.
9 Modifed the color keying sysfs entries to use manager
10 function pointer. Earlier they were calling direcly
11 dispc function to set/enable color keying.
13 Some of color-keying function pointers in the overlay_manager
14 structure re-named to be more specific.
16 Signed-off-by: Hardik Shah <hardik.shah@ti.com>
18 arch/arm/plat-omap/include/mach/display.h | 6 ++++-
19 drivers/video/omap2/dss/manager.c | 36 +++++++++++++++++++++--------
20 2 files changed, 31 insertions(+), 11 deletions(-)
22 diff --git a/arch/arm/plat-omap/include/mach/display.h b/arch/arm/plat-omap/include/mach/display.h
23 index e1f615a..d0b4c83 100644
24 --- a/arch/arm/plat-omap/include/mach/display.h
25 +++ b/arch/arm/plat-omap/include/mach/display.h
26 @@ -416,7 +416,11 @@ struct omap_overlay_manager {
27 void (*set_default_color)(struct omap_overlay_manager *mgr, u32 color);
28 u32 (*get_default_color)(struct omap_overlay_manager *mgr);
29 bool (*get_alpha_blending_status)(struct omap_overlay_manager *mgr);
30 - void (*set_trans_key)(struct omap_overlay_manager *mgr,
31 + bool (*get_trans_key_status)(struct omap_overlay_manager *mgr);
32 + void (*get_trans_key_type_and_value)(struct omap_overlay_manager *mgr,
33 + enum omap_dss_color_key_type *type,
35 + void (*set_trans_key_type_and_value)(struct omap_overlay_manager *mgr,
36 enum omap_dss_color_key_type type,
38 void (*enable_trans_key)(struct omap_overlay_manager *mgr,
39 diff --git a/drivers/video/omap2/dss/manager.c b/drivers/video/omap2/dss/manager.c
40 index 90acd28..e0501c4 100644
41 --- a/drivers/video/omap2/dss/manager.c
42 +++ b/drivers/video/omap2/dss/manager.c
43 @@ -124,7 +124,7 @@ static ssize_t manager_color_key_type_show(struct omap_overlay_manager *mgr,
45 enum omap_dss_color_key_type key_type;
47 - dispc_get_trans_key(mgr->id, &key_type, NULL);
48 + mgr->get_trans_key_type_and_value(mgr, &key_type, NULL);
49 BUG_ON(key_type >= ARRAY_SIZE(color_key_type_str));
51 return snprintf(buf, PAGE_SIZE, "%s\n", color_key_type_str[key_type]);
52 @@ -143,8 +143,8 @@ static ssize_t manager_color_key_type_store(struct omap_overlay_manager *mgr,
54 if (key_type == ARRAY_SIZE(color_key_type_str))
56 - dispc_get_trans_key(mgr->id, NULL, &key_value);
57 - dispc_set_trans_key(mgr->id, key_type, key_value);
58 + mgr->get_trans_key_type_and_value(mgr, NULL, &key_value);
59 + mgr->set_trans_key_type_and_value(mgr, key_type, key_value);
63 @@ -154,7 +154,7 @@ static ssize_t manager_color_key_value_show(struct omap_overlay_manager *mgr,
67 - dispc_get_trans_key(mgr->id, NULL, &key_value);
68 + mgr->get_trans_key_type_and_value(mgr, NULL, &key_value);
70 return snprintf(buf, PAGE_SIZE, "%d\n", key_value);
72 @@ -167,8 +167,8 @@ static ssize_t manager_color_key_value_store(struct omap_overlay_manager *mgr,
74 if (sscanf(buf, "%d", &key_value) != 1)
76 - dispc_get_trans_key(mgr->id, &key_type, NULL);
77 - dispc_set_trans_key(mgr->id, key_type, key_value);
78 + mgr->get_trans_key_type_and_value(mgr, &key_type, NULL);
79 + mgr->set_trans_key_type_and_value(mgr, key_type, key_value);
83 @@ -177,7 +177,7 @@ static ssize_t manager_color_key_enabled_show(struct omap_overlay_manager *mgr,
86 return snprintf(buf, PAGE_SIZE, "%d\n",
87 - dispc_trans_key_enabled(mgr->id));
88 + mgr->get_trans_key_status(mgr));
91 static ssize_t manager_color_key_enabled_store(struct omap_overlay_manager *mgr,
92 @@ -188,7 +188,7 @@ static ssize_t manager_color_key_enabled_store(struct omap_overlay_manager *mgr,
93 if (sscanf(buf, "%d", &enable) != 1)
96 - dispc_enable_trans_key(mgr->id, enable);
97 + mgr->enable_trans_key(mgr, enable);
101 @@ -456,12 +456,20 @@ static void omap_dss_mgr_set_def_color(struct omap_overlay_manager *mgr,
102 dispc_set_default_color(mgr->id, color);
105 -static void omap_dss_mgr_set_trans_key(struct omap_overlay_manager *mgr,
106 +static void omap_dss_mgr_set_trans_key_type_and_value(
107 + struct omap_overlay_manager *mgr,
108 enum omap_dss_color_key_type type,
111 dispc_set_trans_key(mgr->id, type, trans_key);
113 +static void omap_dss_mgr_get_trans_key_type_and_value(
114 + struct omap_overlay_manager *mgr,
115 + enum omap_dss_color_key_type *type,
118 + dispc_get_trans_key(mgr->id, type, trans_key);
121 static void omap_dss_mgr_enable_trans_key(struct omap_overlay_manager *mgr,
123 @@ -482,6 +490,10 @@ static u32 omap_dss_mgr_get_default_color(struct omap_overlay_manager *mgr)
125 return dispc_get_default_color(mgr->id);
127 +static bool omap_dss_mgr_get_trans_key_status(struct omap_overlay_manager *mgr)
129 + return dispc_trans_key_enabled(mgr->id);
132 static void omap_dss_add_overlay_manager(struct omap_overlay_manager *manager)
134 @@ -522,8 +534,12 @@ int dss_init_overlay_managers(struct platform_device *pdev)
135 mgr->unset_display = &omap_dss_unset_display,
136 mgr->apply = &omap_dss_mgr_apply,
137 mgr->set_default_color = &omap_dss_mgr_set_def_color,
138 - mgr->set_trans_key = &omap_dss_mgr_set_trans_key,
139 + mgr->set_trans_key_type_and_value =
140 + &omap_dss_mgr_set_trans_key_type_and_value,
141 + mgr->get_trans_key_type_and_value =
142 + &omap_dss_mgr_get_trans_key_type_and_value,
143 mgr->enable_trans_key = &omap_dss_mgr_enable_trans_key,
144 + mgr->get_trans_key_status = &omap_dss_mgr_get_trans_key_status,
145 mgr->enable_alpha_blending =
146 &omap_dss_mgr_enable_alpha_blending;
147 mgr->get_alpha_blending_status =