summaryrefslogtreecommitdiff
path: root/drivers/video/wmt/lcd.h
blob: 46925e9f2c5d9736e807ae5cea0f0832d9bb5b75 (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
/*++
 * linux/drivers/video/wmt/lcd.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
--*/

#ifndef LCD_H
/* To assert that only one occurrence is included */
#define LCD_H
/*-------------------- MODULE DEPENDENCY -------------------------------------*/
#include "vpp.h"

/*	following is the C++ header	*/
#ifdef	__cplusplus
extern	"C" {
#endif

/*-------------------- EXPORTED PRIVATE CONSTANTS ----------------------------*/
/* #define  LCD_XXXX  1    *//*Example*/

/*-------------------- EXPORTED PRIVATE TYPES---------------------------------*/
/* typedef  void  lcd_xxx_t;  *//*Example*/
enum lcd_panel_t {
	LCD_WMT_OEM,
	LCD_CHILIN_LW0700AT9003,
	LCD_INNOLUX_AT070TN83,
	LCD_AUO_A080SN01,
	LCD_EKING_EK08009,
	LCD_HANNSTAR_HSD101PFW2,
	LCD_LVDS_1024x600,
	LCD_GL5001W,
	LCD_B079XAN01,
	LCD_TPO_TJ015NC02AA,
	LCD_PANEL_MAX
};
enum {
	LCD_POWER_OFF = 0,
	LCD_POWER_ON,
};

#define LCD_CAP_CLK_HI		BIT(0)
#define LCD_CAP_HSYNC_HI	BIT(1)
#define LCD_CAP_VSYNC_HI	BIT(2)
#define LCD_CAP_DE_LO		BIT(3)
struct lcd_parm_t {
	int bits_per_pixel;
	unsigned int capability;
	struct fb_videomode vmode;
	int width; /* width of picture in mm */
	int height; /* height of picture in mm */

	void (*initial)(void);
	void (*uninitial)(void);
};

/*-------------------- EXPORTED PRIVATE VARIABLES ---------------------------*/
#ifdef LCD_C /* allocate memory for variables only in vout.c */
#define EXTERN
#else
#define EXTERN   extern
#endif /* ifdef LCD_C */

/* EXTERN int      lcd_xxx; *//*Example*/

EXTERN struct lcd_parm_t *p_lcd;
#undef EXTERN

/*--------------------- EXPORTED PRIVATE MACROS ------------------------------*/
/* #define LCD_XXX_YYY   xxxx *//*Example*/
/*--------------------- EXPORTED PRIVATE FUNCTIONS  --------------------------*/
/* extern void  lcd_xxx(void); *//*Example*/

int lcd_panel_register(int no, void (*get_parm)(int mode));
struct lcd_parm_t *lcd_get_parm(enum lcd_panel_t id, unsigned int arg);
void lcd_set_parm(int id, int bpp);
struct lcd_parm_t *lcd_get_oem_parm(int resx, int resy);
void lcd_set_lvds_id(int id);
int lcd_get_lvds_id(void);
void lcd_set_type(int type);
int lcd_get_type(void);
void lcd_set_enable(int enable);
void lcd_enable_signal(int enable);

/* LCD back light */
#ifdef	__cplusplus
}
#endif
#endif /* ifndef LCD_H */