2 * Copyright (c) 2021 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 #include <hal/hal-common.h>
19 #include "hal-display-interface.h"
22 static hal_backend_display_funcs *hal_display_funcs = NULL;
24 -1 : failed to initialize
26 1 : succeeded to initialize
28 static int hal_initialized = 0;
30 int hal_device_display_get_backend(void)
34 if (hal_display_funcs)
37 ret = hal_common_get_backend(HAL_MODULE_DEVICE_DISPLAY, (void **)&hal_display_funcs);
39 _E("Failed to get display backend");
48 int hal_device_display_put_backend(void)
50 if (!hal_display_funcs)
53 hal_common_put_backend(HAL_MODULE_DEVICE_DISPLAY, (void *)hal_display_funcs);
54 hal_display_funcs = NULL;
60 int hal_device_display_get_max_brightness(int *brightness)
64 if (!hal_display_funcs && !hal_initialized) {
65 if ((ret = hal_device_display_get_backend()) < 0)
69 if (!hal_display_funcs ||
70 !hal_display_funcs->get_max_brightness)
73 return hal_display_funcs->get_max_brightness(brightness);
76 int hal_device_display_get_brightness(int *brightness)
80 if (!hal_display_funcs && !hal_initialized) {
81 if ((ret = hal_device_display_get_backend()) < 0)
85 if (!hal_display_funcs ||
86 !hal_display_funcs->get_brightness)
89 return hal_display_funcs->get_brightness(brightness);
92 int hal_device_display_set_brightness(int brightness)
96 if (!hal_display_funcs && !hal_initialized) {
97 if ((ret = hal_device_display_get_backend()) < 0)
101 if (!hal_display_funcs ||
102 !hal_display_funcs->set_brightness)
105 return hal_display_funcs->set_brightness(brightness);
108 int hal_device_display_set_multi_brightness(int brightness, int step, int delay)
112 if (!hal_display_funcs && !hal_initialized) {
113 if ((ret = hal_device_display_get_backend()) < 0)
117 if (!hal_display_funcs ||
118 !hal_display_funcs->set_multi_brightness)
121 return hal_display_funcs->set_multi_brightness(brightness, step, delay);
124 int hal_device_display_get_auto_brightness(float lmax, float lmin, float light, int *brightness)
128 if (!hal_display_funcs && !hal_initialized) {
129 if ((ret = hal_device_display_get_backend()) < 0)
133 if (!hal_display_funcs ||
134 !hal_display_funcs->get_auto_brightness)
137 return hal_display_funcs->get_auto_brightness(lmax, lmin, light, brightness);
140 int hal_device_display_get_state(enum display_state *state)
144 if (!hal_display_funcs && !hal_initialized) {
145 if ((ret = hal_device_display_get_backend()) < 0)
149 if (!hal_display_funcs ||
150 !hal_display_funcs->get_state)
153 return hal_display_funcs->get_state(state);
156 int hal_device_display_set_state(enum display_state state)
160 if (!hal_display_funcs && !hal_initialized) {
161 if ((ret = hal_device_display_get_backend()) < 0)
165 if (!hal_display_funcs ||
166 !hal_display_funcs->set_state)
169 return hal_display_funcs->set_state(state);
172 int hal_device_display_get_image_effect(enum display_image_effect *effect)
176 if (!hal_display_funcs && !hal_initialized) {
177 if ((ret = hal_device_display_get_backend()) < 0)
181 if (!hal_display_funcs ||
182 !hal_display_funcs->get_image_effect)
185 return hal_display_funcs->get_image_effect(effect);
188 int hal_device_display_set_image_effect(enum display_image_effect effect)
192 if (!hal_display_funcs && !hal_initialized) {
193 if ((ret = hal_device_display_get_backend()) < 0)
197 if (!hal_display_funcs ||
198 !hal_display_funcs->set_image_effect)
201 return hal_display_funcs->set_image_effect(effect);
204 int hal_device_display_get_panel_mode(enum display_panel_mode *mode)
208 if (!hal_display_funcs && !hal_initialized) {
209 if ((ret = hal_device_display_get_backend()) < 0)
213 if (!hal_display_funcs ||
214 !hal_display_funcs->get_panel_mode)
217 return hal_display_funcs->get_panel_mode(mode);
220 int hal_device_display_set_panel_mode(enum display_panel_mode mode)
224 if (!hal_display_funcs && !hal_initialized) {
225 if ((ret = hal_device_display_get_backend()) < 0)
229 if (!hal_display_funcs ||
230 !hal_display_funcs->set_panel_mode)
233 return hal_display_funcs->set_panel_mode(mode);
236 int hal_device_display_get_aod_mode(enum display_aod_mode *mode)
240 if (!hal_display_funcs && !hal_initialized) {
241 if ((ret = hal_device_display_get_backend()) < 0)
245 if (!hal_display_funcs ||
246 !hal_display_funcs->get_aod_mode)
249 return hal_display_funcs->get_aod_mode(mode);
252 int hal_device_display_get_aod_brightness(int *max, int *normal, int *min, int *charging)
256 if (!hal_display_funcs && !hal_initialized) {
257 if ((ret = hal_device_display_get_backend()) < 0)
261 if (!hal_display_funcs ||
262 !hal_display_funcs->get_aod_brightness)
265 return hal_display_funcs->get_aod_brightness(max, normal, min, charging);
268 int hal_device_display_get_max_frame_rate(int *rate)
272 if (!hal_display_funcs && !hal_initialized) {
273 if ((ret = hal_device_display_get_backend()) < 0)
277 if (!hal_display_funcs ||
278 !hal_display_funcs->get_max_frame_rate)
281 return hal_display_funcs->get_max_frame_rate(rate);
284 int hal_device_display_get_min_frame_rate(int *rate)
288 if (!hal_display_funcs && !hal_initialized) {
289 if ((ret = hal_device_display_get_backend()) < 0)
293 if (!hal_display_funcs ||
294 !hal_display_funcs->get_min_frame_rate)
297 return hal_display_funcs->get_min_frame_rate(rate);
300 int hal_device_display_get_frame_rate(int *rate)
304 if (!hal_display_funcs && !hal_initialized) {
305 if ((ret = hal_device_display_get_backend()) < 0)
309 if (!hal_display_funcs ||
310 !hal_display_funcs->get_frame_rate)
313 return hal_display_funcs->get_frame_rate(rate);
316 int hal_device_display_set_frame_rate(int rate)
320 if (!hal_display_funcs && !hal_initialized) {
321 if ((ret = hal_device_display_get_backend()) < 0)
325 if (!hal_display_funcs ||
326 !hal_display_funcs->set_frame_rate)
329 return hal_display_funcs->set_frame_rate(rate);
332 int hal_device_display_set_white_balance(enum hal_display_white_balance white_balance_type, int value)
336 if (!hal_display_funcs && !hal_initialized) {
337 if ((ret = hal_device_display_get_backend()) < 0)
341 if (!hal_display_funcs ||
342 !hal_display_funcs->set_white_balance)
345 return hal_display_funcs->set_white_balance(white_balance_type, value);
348 int hal_device_display_get_white_balance(enum hal_display_white_balance white_balance_type, int* value)
352 if (!hal_display_funcs && !hal_initialized) {
353 if ((ret = hal_device_display_get_backend()) < 0)
357 if (!hal_display_funcs ||
358 !hal_display_funcs->get_white_balance)
361 return hal_display_funcs->get_white_balance(white_balance_type, value);