summaryrefslogtreecommitdiff
path: root/drivers/video/wmt/govrh.h
blob: a7dc0625cdafbdf441600ea8b968551c2cd78a56 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
/*++
 * linux/drivers/video/wmt/govrh.h
 * WonderMedia video post processor (VPP) driver
 *
 * Copyright c 2014  WonderMedia  Technologies, Inc.
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 * WonderMedia Technologies, Inc.
 * 4F, 533, Chung-Cheng Road, Hsin-Tien, Taipei 231, R.O.C
--*/

#include "vpp.h"

#ifdef WMT_FTBLK_GOVRH

#ifndef GOVRH_H
#define GOVRH_H

struct govrh_mod_t {
	VPP_MOD_BASE;

	unsigned int *reg_bk2;
	unsigned int pm_enable;
	unsigned int pm_tg;
	unsigned int vo_clock;
	unsigned int underrun_cnt;
	unsigned int csc_mode_force;
};

#ifdef WMT_FTBLK_GOVRH_CURSOR
#define GOVRH_CURSOR_HIDE_TIME	15
struct govrh_cursor_mod_t {
	VPP_MOD_BASE;

	unsigned int posx;
	unsigned int posy;
	unsigned int hotspot_x;
	unsigned int hotspot_y;
	int chg_flag;
	vdo_color_fmt colfmt;
	unsigned int cursor_addr1;
	unsigned int cursor_addr2;
	int enable;
	int hide_cnt;
};
#endif

#ifdef __cplusplus
extern "C" {
#endif

#ifdef GOVRH_C
#define EXTERN
#else
#define EXTERN extern
#endif

EXTERN struct govrh_mod_t *p_govrh;
#ifdef WMT_FTBLK_GOVRH_CURSOR
EXTERN struct govrh_cursor_mod_t *p_cursor;
#endif
#ifdef WMT_FTBLK_GOVRH2
EXTERN struct govrh_mod_t *p_govrh2;
#endif

EXTERN void govrh_set_tg_enable(struct govrh_mod_t *base,
					vpp_flag_t enable);
EXTERN int govrh_get_tg_mode(struct govrh_mod_t *base);
EXTERN int govrh_get_hscale_up(struct govrh_mod_t *base);
EXTERN void govrh_set_direct_path(struct govrh_mod_t *base, int enable);
EXTERN int govrh_get_dvo_enable(struct govrh_mod_t *base);
EXTERN void govrh_set_dvo_enable(struct govrh_mod_t *base,
	vpp_flag_t enable);
EXTERN void govrh_set_dvo_sync_polar(struct govrh_mod_t *base,
	vpp_flag_t hsync, vpp_flag_t vsync);
EXTERN void govrh_set_dvo_outdatw(struct govrh_mod_t *base,
	vpp_datawidht_t width);
EXTERN void govrh_set_dvo_clock_delay(struct govrh_mod_t *base,
	int inverse, int delay);
EXTERN void govrh_set_colorbar(struct govrh_mod_t *base,
	vpp_flag_t enable, int mode, int inv);
EXTERN void govrh_set_contrast(struct govrh_mod_t *base,
	unsigned int value);
EXTERN unsigned int govrh_get_contrast(struct govrh_mod_t *base);
EXTERN void govrh_set_brightness(struct govrh_mod_t *base,
	unsigned int value);
EXTERN unsigned int govrh_get_brightness(struct govrh_mod_t *base);
EXTERN void govrh_set_saturation(struct govrh_mod_t *base, unsigned int value);
EXTERN unsigned int govrh_get_saturation(struct govrh_mod_t *base);
EXTERN void govrh_set_MIF_enable(struct govrh_mod_t *base, vpp_flag_t enable);
EXTERN int govrh_get_MIF_enable(struct govrh_mod_t *base);
EXTERN void govrh_set_color_format(struct govrh_mod_t *base,
	vdo_color_fmt format);
EXTERN vdo_color_fmt govrh_get_color_format(struct govrh_mod_t *base);
EXTERN void govrh_set_source_format(struct govrh_mod_t *base,
	vpp_display_format_t format);
EXTERN void govrh_set_output_format(struct govrh_mod_t *base,
	vpp_display_format_t field);
EXTERN void govrh_set_fb_addr(struct govrh_mod_t *base,
	unsigned int y_addr, unsigned int c_addr);
EXTERN void govrh_get_fb_addr(struct govrh_mod_t *base,
	unsigned int *y_addr, unsigned int *c_addr);
EXTERN void govrh_set_fb_width(struct govrh_mod_t *base,
	unsigned int width);
EXTERN void govrh_set_fb_info(struct govrh_mod_t *base,
	unsigned int width, unsigned int act_width,
	unsigned int x_offset, unsigned int y_offset);
EXTERN void govrh_get_fb_info(struct govrh_mod_t *base,
	unsigned int *width, unsigned int *act_width,
	unsigned int *x_offset, unsigned int *y_offset);
EXTERN void govrh_set_fifo_index(struct govrh_mod_t *base,
	unsigned int index);
EXTERN void govrh_set_reg_level(struct govrh_mod_t *base,
	vpp_reglevel_t level);
EXTERN void govrh_set_reg_update(struct govrh_mod_t *base,
	vpp_flag_t enable);
EXTERN void govrh_set_csc_mode(struct govrh_mod_t *base,
	vpp_csc_t mode);
EXTERN void govrh_set_framebuffer(struct govrh_mod_t *base,
	vdo_framebuf_t *inbuf);
EXTERN void govrh_get_framebuffer(struct govrh_mod_t *base,
	vdo_framebuf_t *fb);
EXTERN vdo_color_fmt govrh_get_dvo_color_format(
	struct govrh_mod_t *base);
EXTERN void govrh_set_dvo_color_format(struct govrh_mod_t *base,
	vdo_color_fmt fmt);
EXTERN enum vpp_int_err_t govrh_get_int_status(struct govrh_mod_t *base);
EXTERN void govrh_clean_int_status(struct govrh_mod_t *base,
	enum vpp_int_err_t int_sts);
EXTERN unsigned int govrh_set_clock(struct govrh_mod_t *base,
	unsigned int pixel_clock);
EXTERN void govrh_set_videomode(struct govrh_mod_t *base,
	struct fb_videomode *vmode);
EXTERN void govrh_get_tg(struct govrh_mod_t *base, vpp_clock_t *tmr);
EXTERN void govrh_get_videomode(struct govrh_mod_t *base,
	struct fb_videomode *vmode);
EXTERN void govrh_HDMI_set_blank_value(struct govrh_mod_t *base,
	unsigned int val);
EXTERN void govrh_HDMI_set_3D_mode(struct govrh_mod_t *base,
	int mode);
EXTERN int govrh_is_top_field(struct govrh_mod_t *base);
EXTERN void govrh_IGS_set_mode(struct govrh_mod_t *base,
	int no, int mode_18bit, int msb);
EXTERN void govrh_IGS_set_RGB_swap(struct govrh_mod_t *base,
	int mode);
EXTERN int govrh_mod_init(void);

#ifdef WMT_FTBLK_GOVRH_CURSOR
EXTERN void govrh_CUR_set_enable(struct govrh_cursor_mod_t *base,
	vpp_flag_t enable);
EXTERN void govrh_CUR_set_framebuffer(struct govrh_cursor_mod_t *base,
	vdo_framebuf_t *fb);
EXTERN void govrh_CUR_set_coordinate(struct govrh_cursor_mod_t *base,
	unsigned int x1, unsigned int y1, unsigned int x2, unsigned int y2);
EXTERN void govrh_CUR_set_position(struct govrh_cursor_mod_t *base,
	unsigned int x, unsigned int y);
EXTERN void govrh_CUR_set_color_key_mode(struct govrh_cursor_mod_t *base,
	int alpha, int enable, int mode);
EXTERN void govrh_CUR_set_color_key(struct govrh_cursor_mod_t *base,
	int enable, int alpha, unsigned int colkey);
EXTERN void govrh_CUR_set_colfmt(struct govrh_cursor_mod_t *base,
	vdo_color_fmt colfmt);
EXTERN void govrh_CUR_irqproc(int arg);
#endif

#undef EXTERN

#ifdef __cplusplus
}
#endif
#endif /* GOVRH_H */
#endif /* WMT_FTBLK_GOVRH */