e7f43ad83d7287f4d2819394e4a17fad0e8a83b6
[openembedded.git] /
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.
5
6 V4L2 Framework has a ioctl for getting/setting color keying.
7 So added the function manager pointers for doing same.
8
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.
12
13 Some of color-keying function pointers in the overlay_manager
14 structure re-named to be more specific.
15
16 Signed-off-by: Hardik Shah <hardik.shah@ti.com>
17 ---
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(-)
21
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,
34 +               u32 *trans_key);
35 +       void (*set_trans_key_type_and_value)(struct omap_overlay_manager *mgr,
36                 enum omap_dss_color_key_type type,
37                 u32 trans_key);
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,
44  {
45         enum omap_dss_color_key_type key_type;
46  
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));
50  
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,
53         }
54         if (key_type == ARRAY_SIZE(color_key_type_str))
55                 return -EINVAL;
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);
60  
61         return size;
62  }
63 @@ -154,7 +154,7 @@ static ssize_t manager_color_key_value_show(struct omap_overlay_manager *mgr,
64  {
65         u32 key_value;
66  
67 -       dispc_get_trans_key(mgr->id, NULL, &key_value);
68 +        mgr->get_trans_key_type_and_value(mgr, NULL, &key_value);
69  
70         return snprintf(buf, PAGE_SIZE, "%d\n", key_value);
71  }
72 @@ -167,8 +167,8 @@ static ssize_t manager_color_key_value_store(struct omap_overlay_manager *mgr,
73  
74         if (sscanf(buf, "%d", &key_value) != 1)
75                 return -EINVAL;
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);
80  
81         return size;
82  }
83 @@ -177,7 +177,7 @@ static ssize_t manager_color_key_enabled_show(struct omap_overlay_manager *mgr,
84                                               char *buf)
85  {
86         return snprintf(buf, PAGE_SIZE, "%d\n",
87 -                       dispc_trans_key_enabled(mgr->id));
88 +       mgr->get_trans_key_status(mgr));
89  }
90  
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)
94                 return -EINVAL;
95  
96 -       dispc_enable_trans_key(mgr->id, enable);
97 +       mgr->enable_trans_key(mgr, enable);
98  
99         return size;
100  }
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);
103  }
104  
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,
109                 u32 trans_key)
110  {
111         dispc_set_trans_key(mgr->id, type, trans_key);
112  }
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,
116 +               u32 *trans_key)
117 +{
118 +       dispc_get_trans_key(mgr->id, type, trans_key);
119 +}
120  
121  static void omap_dss_mgr_enable_trans_key(struct omap_overlay_manager *mgr,
122                 bool enable)
123 @@ -482,6 +490,10 @@ static u32 omap_dss_mgr_get_default_color(struct omap_overlay_manager *mgr)
124  {
125         return dispc_get_default_color(mgr->id);
126  }
127 +static bool omap_dss_mgr_get_trans_key_status(struct omap_overlay_manager *mgr)
128 +{
129 +       return dispc_trans_key_enabled(mgr->id);
130 +}
131  
132  static void omap_dss_add_overlay_manager(struct omap_overlay_manager *manager)
133  {
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 =
148 -- 
149 1.6.2.4
150