summaryrefslogtreecommitdiff
path: root/drivers/video/wmt/govrh.h
blob: b20c31ab53e32f2cc671e00dd6cb6d701c72c39e (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
/*++
 * linux/drivers/video/wmt/govrh.h
 * WonderMedia video post processor (VPP) driver
 *
 * Copyright c 2013  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

typedef struct {
	VPP_MOD_BASE;

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

#ifdef WMT_FTBLK_GOVRH_CURSOR
#define GOVRH_CURSOR_HIDE_TIME	15
typedef struct {
	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;
} govrh_cursor_mod_t;
#endif

#ifdef __cplusplus
extern "C" {
#endif

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

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

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

#ifdef WMT_FTBLK_GOVRH_CURSOR
EXTERN void govrh_CUR_set_enable(govrh_cursor_mod_t *base,
	vpp_flag_t enable);
EXTERN void govrh_CUR_set_framebuffer(govrh_cursor_mod_t *base,
	vdo_framebuf_t *fb);
EXTERN void govrh_CUR_set_coordinate(govrh_cursor_mod_t *base,
	unsigned int x1, unsigned int y1, unsigned int x2, unsigned int y2);
EXTERN void govrh_CUR_set_position(govrh_cursor_mod_t *base,
	unsigned int x, unsigned int y);
EXTERN void govrh_CUR_set_color_key_mode(govrh_cursor_mod_t *base,
	int alpha, int enable, int mode);
EXTERN void govrh_CUR_set_color_key(govrh_cursor_mod_t *base,
	int enable, int alpha, unsigned int colkey);
EXTERN void govrh_CUR_set_colfmt(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 */