blob: a8c7967a957181c015024b544ba8b05f31b78dea [file] [log] [blame]
Googler695f9d92023-09-11 15:38:29 +08001/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
2/*
3 * drivers/display/osd/osd_hw_def.h
4 *
5 * Copyright (C) 2020 Amlogic, Inc. All rights reserved.
6 *
7 */
8
9#ifndef _OSD_HW_DEF_H_
10#define _OSD_HW_DEF_H_
11
12#include "osd_hw.h"
13
14static void osd1_update_color_mode(void);
15static void osd1_update_enable(void);
16static void osd1_update_color_key(void);
17static void osd1_update_color_key_enable(void);
18static void osd1_update_gbl_alpha(void);
19static void osd1_update_order(void);
20static void osd1_update_disp_geometry(void);
21static void osd1_update_coef(void);
22static void osd1_update_disp_freescale_enable(void);
23static void osd1_update_disp_osd_reverse(void);
24static void osd1_update_disp_osd_rotate(void);
25static void osd1_update_disp_scale_enable(void);
26static void osd1_update_disp_3d_mode(void);
27
28static void osd2_update_color_mode(void);
29static void osd2_update_enable(void);
30static void osd2_update_color_key(void);
31static void osd2_update_color_key_enable(void);
32static void osd2_update_gbl_alpha(void);
33static void osd2_update_order(void);
34static void osd2_update_disp_geometry(void);
35static void osd2_update_coef(void);
36static void osd2_update_disp_freescale_enable(void);
37static void osd2_update_disp_osd_reverse(void);
38static void osd2_update_disp_osd_rotate(void);
39static void osd2_update_disp_scale_enable(void);
40static void osd2_update_disp_3d_mode(void);
41
42static void viu2_osd1_update_color_mode(void);
43static void viu2_osd1_update_enable(void);
44static void viu2_osd1_update_color_key(void);
45static void viu2_osd1_update_color_key_enable(void);
46static void viu2_osd1_update_gbl_alpha(void);
47static void viu2_osd1_update_order(void);
48static void viu2_osd1_update_disp_geometry(void);
49static void viu2_osd1_update_coef(void);
50static void viu2_osd1_update_disp_freescale_enable(void);
51static void viu2_osd1_update_disp_osd_reverse(void);
52static void viu2_osd1_update_disp_osd_rotate(void);
53static void viu2_osd1_update_disp_scale_enable(void);
54static void viu2_osd1_update_disp_3d_mode(void);
55
56extern struct hw_para_s osd_hw;
57static update_func_t hw_func_array[HW_OSD_COUNT][HW_REG_INDEX_MAX] = {
58 {
59 osd1_update_color_mode,
60 osd1_update_enable,
61 osd1_update_color_key,
62 osd1_update_color_key_enable,
63 osd1_update_gbl_alpha,
64 osd1_update_order,
65 osd1_update_coef,
66 osd1_update_disp_geometry,
67 osd1_update_disp_scale_enable,
68 osd1_update_disp_freescale_enable,
69 osd1_update_disp_osd_reverse,
70 osd1_update_disp_osd_rotate,
71 },
72 {
73 osd2_update_color_mode,
74 osd2_update_enable,
75 osd2_update_color_key,
76 osd2_update_color_key_enable,
77 osd2_update_gbl_alpha,
78 osd2_update_order,
79 osd2_update_coef,
80 osd2_update_disp_geometry,
81 osd2_update_disp_scale_enable,
82 osd2_update_disp_freescale_enable,
83 osd2_update_disp_osd_reverse,
84 osd2_update_disp_osd_rotate,
85 },
86 {
87 viu2_osd1_update_color_mode,
88 viu2_osd1_update_enable,
89 viu2_osd1_update_color_key,
90 viu2_osd1_update_color_key_enable,
91 viu2_osd1_update_gbl_alpha,
92 viu2_osd1_update_order,
93 viu2_osd1_update_coef,
94 viu2_osd1_update_disp_geometry,
95 viu2_osd1_update_disp_scale_enable,
96 viu2_osd1_update_disp_freescale_enable,
97 viu2_osd1_update_disp_osd_reverse,
98 viu2_osd1_update_disp_osd_rotate,
99 },
100};
101
102#define add_to_update_list(osd_idx, cmd_idx) \
103 do { \
104 osd_hw.updated[osd_idx] |= (1<<cmd_idx); \
105 } while (0)
106
107#define remove_from_update_list(osd_idx, cmd_idx) \
108 (osd_hw.updated[osd_idx] &= ~(1<<cmd_idx))
109
110#endif