3 * Copyright (c) 2012 Samsung Electronics Co., Ltd.
5 * Licensed under the Apache License, Version 2.0 (the License);
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
21 #include "device-internal.h"
23 #define PROPERTY_MASK 0x0F
24 #define PROPERTY_PROP(val) ((val) & PROPERTY_MASK)
25 #define PROPERTY_INDEX(val) ((val) >> 4)
27 static int display_get_prop(int __prop, int *val)
29 int prop = PROPERTY_PROP(__prop);
30 int index = PROPERTY_INDEX(__prop);
36 r = PLUGIN_GET(display_count, &disp_cnt);
38 _E("Get display count failed");
42 if (prop != PROP_DISPLAY_BRIGHTNESS_BY_LUX) {
43 if (index >= disp_cnt) {
44 _E("Invalid Argument: index(%d) > max(%d)", index, disp_cnt);
50 case PROP_DISPLAY_DISPLAY_COUNT:
53 case PROP_DISPLAY_MAX_BRIGHTNESS:
54 return PLUGIN_GET(backlight_max_brightness, index, val);
55 case PROP_DISPLAY_BRIGHTNESS:
56 return PLUGIN_GET(backlight_brightness, index, val, ps_disp_stat);
57 case PROP_DISPLAY_ACL_CONTROL:
58 return PLUGIN_GET(backlight_acl_control, index, val);
59 case PROP_DISPLAY_ONOFF:
60 return PLUGIN_GET(lcd_power, index, val);
61 case PROP_DISPLAY_BRIGHTNESS_BY_LUX:
62 return PLUGIN_GET(backlight_brightness_by_lux, lux, val);
63 case PROP_DISPLAY_IMAGE_ENHANCE_MODE:
64 return PLUGIN_GET(image_enhance_mode, val);
65 case PROP_DISPLAY_IMAGE_ENHANCE_SCENARIO:
66 return PLUGIN_GET(image_enhance_scenario, val);
67 case PROP_DISPLAY_IMAGE_ENHANCE_TONE:
68 return PLUGIN_GET(image_enhance_tone, val);
69 case PROP_DISPLAY_IMAGE_ENHANCE_OUTDOOR:
70 return PLUGIN_GET(image_enhance_outdoor, val);
71 case PROP_DISPLAY_IMAGE_ENHANCE_INFO:
72 return PLUGIN_SYS(image_enhance_info, val);
78 static int display_set_prop(int __prop, int val)
80 int prop = PROPERTY_PROP(__prop);
81 int index = PROPERTY_INDEX(__prop);
86 r = PLUGIN_GET(display_count, &disp_cnt);
88 _E("Get display count failed");
92 if (index >= disp_cnt) {
93 _E("Invalid Argument: index(%d) > max(%d)", index, disp_cnt);
98 case PROP_DISPLAY_BRIGHTNESS:
99 return PLUGIN_SET(backlight_brightness, index, val, ps_disp_stat);
100 case PROP_DISPLAY_ACL_CONTROL:
101 return PLUGIN_SET(backlight_acl_control, index, val);
102 case PROP_DISPLAY_ONOFF:
103 return PLUGIN_SET(lcd_power, index, val);
104 case PROP_DISPLAY_FRAME_RATE:
105 return PLUGIN_SET(display_frame_rate, val);
106 case PROP_DISPLAY_IMAGE_ENHANCE_MODE:
107 return PLUGIN_SET(image_enhance_mode, val);
108 case PROP_DISPLAY_IMAGE_ENHANCE_SCENARIO:
109 return PLUGIN_SET(image_enhance_scenario, val);
110 case PROP_DISPLAY_IMAGE_ENHANCE_TONE:
111 return PLUGIN_SET(image_enhance_tone, val);
112 case PROP_DISPLAY_IMAGE_ENHANCE_OUTDOOR:
113 return PLUGIN_SET(image_enhance_outdoor, val);
119 static const struct device display = {
121 .set_prop = display_set_prop,
122 .get_prop = display_get_prop,
123 .type = DEVICE_TYPE_DISPLAY,
126 static void __CONSTRUCTOR__ module_init(void)
128 add_device(&(display.type));
131 static void __DESTRUCTOR__ module_fini(void)
133 remove_device(&(display.type));