1559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen/*
2559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen * linux/drivers/video/omap2/dss/dss.h
3559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen *
4559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen * Copyright (C) 2009 Nokia Corporation
5559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen * Author: Tomi Valkeinen <tomi.valkeinen@nokia.com>
6559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen *
7559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen * Some code and ideas taken from drivers/video/omap/ driver
8559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen * by Imre Deak.
9559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen *
10559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen * This program is free software; you can redistribute it and/or modify it
11559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen * under the terms of the GNU General Public License version 2 as published by
12559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen * the Free Software Foundation.
13559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen *
14559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen * This program is distributed in the hope that it will be useful, but WITHOUT
15559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
16559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
17559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen * more details.
18559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen *
19559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen * You should have received a copy of the GNU General Public License along with
20559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen * this program.  If not, see <http://www.gnu.org/licenses/>.
21559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen */
22559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen
23559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen#ifndef __OMAP2_DSS_H
24559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen#define __OMAP2_DSS_H
25559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen
26559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen#ifdef CONFIG_OMAP2_DSS_DEBUG_SUPPORT
27559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen#define DEBUG
28559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen#endif
29559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen
30559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen#ifdef DEBUG
3190ab5ee94171b3e28de6bb42ee30b527014e0be7Rusty Russellextern bool dss_debug;
32559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen#ifdef DSS_SUBSYS_NAME
33559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen#define DSSDBG(format, ...) \
34559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen	if (dss_debug) \
35559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen		printk(KERN_DEBUG "omapdss " DSS_SUBSYS_NAME ": " format, \
36559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen		## __VA_ARGS__)
37559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen#else
38559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen#define DSSDBG(format, ...) \
39559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen	if (dss_debug) \
40559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen		printk(KERN_DEBUG "omapdss: " format, ## __VA_ARGS__)
41559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen#endif
42559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen
43559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen#ifdef DSS_SUBSYS_NAME
44559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen#define DSSDBGF(format, ...) \
45559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen	if (dss_debug) \
46559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen		printk(KERN_DEBUG "omapdss " DSS_SUBSYS_NAME \
47559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen				": %s(" format ")\n", \
48559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen				__func__, \
49559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen				## __VA_ARGS__)
50559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen#else
51559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen#define DSSDBGF(format, ...) \
52559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen	if (dss_debug) \
53559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen		printk(KERN_DEBUG "omapdss: " \
54559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen				": %s(" format ")\n", \
55559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen				__func__, \
56559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen				## __VA_ARGS__)
57559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen#endif
58559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen
59559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen#else /* DEBUG */
60559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen#define DSSDBG(format, ...)
61559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen#define DSSDBGF(format, ...)
62559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen#endif
63559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen
64559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen
65559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen#ifdef DSS_SUBSYS_NAME
66559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen#define DSSERR(format, ...) \
67559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen	printk(KERN_ERR "omapdss " DSS_SUBSYS_NAME " error: " format, \
68559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen	## __VA_ARGS__)
69559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen#else
70559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen#define DSSERR(format, ...) \
71559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen	printk(KERN_ERR "omapdss error: " format, ## __VA_ARGS__)
72559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen#endif
73559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen
74559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen#ifdef DSS_SUBSYS_NAME
75559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen#define DSSINFO(format, ...) \
76559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen	printk(KERN_INFO "omapdss " DSS_SUBSYS_NAME ": " format, \
77559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen	## __VA_ARGS__)
78559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen#else
79559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen#define DSSINFO(format, ...) \
80559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen	printk(KERN_INFO "omapdss: " format, ## __VA_ARGS__)
81559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen#endif
82559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen
83559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen#ifdef DSS_SUBSYS_NAME
84559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen#define DSSWARN(format, ...) \
85559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen	printk(KERN_WARNING "omapdss " DSS_SUBSYS_NAME ": " format, \
86559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen	## __VA_ARGS__)
87559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen#else
88559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen#define DSSWARN(format, ...) \
89559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen	printk(KERN_WARNING "omapdss: " format, ## __VA_ARGS__)
90559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen#endif
91559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen
92559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen/* OMAP TRM gives bitfields as start:end, where start is the higher bit
93559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen   number. For example 7:0 */
94559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen#define FLD_MASK(start, end)	(((1 << ((start) - (end) + 1)) - 1) << (end))
95559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen#define FLD_VAL(val, start, end) (((val) << (end)) & FLD_MASK(start, end))
96559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen#define FLD_GET(val, start, end) (((val) & FLD_MASK(start, end)) >> (end))
97559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen#define FLD_MOD(orig, val, start, end) \
98559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen	(((orig) & ~FLD_MASK(start, end)) | FLD_VAL(val, start, end))
99559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen
100569969d6015f846926267cc40ed5fec936717f68Archit Tanejaenum dss_io_pad_mode {
101569969d6015f846926267cc40ed5fec936717f68Archit Taneja	DSS_IO_PAD_MODE_RESET,
102569969d6015f846926267cc40ed5fec936717f68Archit Taneja	DSS_IO_PAD_MODE_RFBI,
103569969d6015f846926267cc40ed5fec936717f68Archit Taneja	DSS_IO_PAD_MODE_BYPASS,
104559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen};
105559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen
1067ed024aa280cb38c8aa5c188d2d2c98f5daede10Mythri P Kenum dss_hdmi_venc_clk_source_select {
1077ed024aa280cb38c8aa5c188d2d2c98f5daede10Mythri P K	DSS_VENC_TV_CLK = 0,
1087ed024aa280cb38c8aa5c188d2d2c98f5daede10Mythri P K	DSS_HDMI_M_PCLK = 1,
1097ed024aa280cb38c8aa5c188d2d2c98f5daede10Mythri P K};
1107ed024aa280cb38c8aa5c188d2d2c98f5daede10Mythri P K
1116ff8aa3182db248db4d91e574254316025c0243cArchit Tanejaenum dss_dsi_content_type {
1126ff8aa3182db248db4d91e574254316025c0243cArchit Taneja	DSS_DSI_CONTENT_DCS,
1136ff8aa3182db248db4d91e574254316025c0243cArchit Taneja	DSS_DSI_CONTENT_GENERIC,
1146ff8aa3182db248db4d91e574254316025c0243cArchit Taneja};
1156ff8aa3182db248db4d91e574254316025c0243cArchit Taneja
116559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinenstruct dss_clock_info {
117559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen	/* rates that we get with dividers below */
118559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen	unsigned long fck;
119559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen
120559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen	/* dividers */
121559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen	u16 fck_div;
122559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen};
123559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen
124559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinenstruct dispc_clock_info {
125559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen	/* rates that we get with dividers below */
126559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen	unsigned long lck;
127559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen	unsigned long pck;
128559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen
129559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen	/* dividers */
130559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen	u16 lck_div;
131559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen	u16 pck_div;
132559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen};
133559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen
134559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinenstruct dsi_clock_info {
135559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen	/* rates that we get with dividers below */
136559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen	unsigned long fint;
137559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen	unsigned long clkin4ddr;
138559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen	unsigned long clkin;
139ea75159ee6f00bd809f57a58e5505dc362382cc8Archit Taneja	unsigned long dsi_pll_hsdiv_dispc_clk;	/* OMAP3: DSI1_PLL_CLK
140ea75159ee6f00bd809f57a58e5505dc362382cc8Archit Taneja						 * OMAP4: PLLx_CLK1 */
141ea75159ee6f00bd809f57a58e5505dc362382cc8Archit Taneja	unsigned long dsi_pll_hsdiv_dsi_clk;	/* OMAP3: DSI2_PLL_CLK
142ea75159ee6f00bd809f57a58e5505dc362382cc8Archit Taneja						 * OMAP4: PLLx_CLK2 */
143559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen	unsigned long lp_clk;
144559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen
145559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen	/* dividers */
146559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen	u16 regn;
147559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen	u16 regm;
148ea75159ee6f00bd809f57a58e5505dc362382cc8Archit Taneja	u16 regm_dispc;	/* OMAP3: REGM3
149ea75159ee6f00bd809f57a58e5505dc362382cc8Archit Taneja			 * OMAP4: REGM4 */
150ea75159ee6f00bd809f57a58e5505dc362382cc8Archit Taneja	u16 regm_dsi;	/* OMAP3: REGM4
151ea75159ee6f00bd809f57a58e5505dc362382cc8Archit Taneja			 * OMAP4: REGM5 */
152559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen	u16 lp_clk_div;
153559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen
154559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen	u8 highfreq;
1551bb478350670fadf708d3cbd6137c32dfbe3fd5fArchit Taneja	bool use_sys_clk;
156559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen};
157559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen
158559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinenstruct seq_file;
159559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinenstruct platform_device;
160559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen
161559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen/* core */
162559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinenstruct bus_type *dss_get_bus(void);
1638a2cfea8ccb6292dc43c37968fe08475ae7c2576Tomi Valkeinenstruct regulator *dss_get_vdds_dsi(void);
1648a2cfea8ccb6292dc43c37968fe08475ae7c2576Tomi Valkeinenstruct regulator *dss_get_vdds_sdi(void);
165559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen
16658f2554807a7dc627f1583d1d4363b85758cf685Tomi Valkeinen/* apply */
16758f2554807a7dc627f1583d1d4363b85758cf685Tomi Valkeinenvoid dss_apply_init(void);
16858f2554807a7dc627f1583d1d4363b85758cf685Tomi Valkeinenint dss_mgr_wait_for_go(struct omap_overlay_manager *mgr);
16958f2554807a7dc627f1583d1d4363b85758cf685Tomi Valkeinenint dss_mgr_wait_for_go_ovl(struct omap_overlay *ovl);
17058f2554807a7dc627f1583d1d4363b85758cf685Tomi Valkeinenvoid dss_mgr_start_update(struct omap_overlay_manager *mgr);
17158f2554807a7dc627f1583d1d4363b85758cf685Tomi Valkeinenint omap_dss_mgr_apply(struct omap_overlay_manager *mgr);
172eb70d739adf2266e744a784a1272f1c92a257b81Tomi Valkeinen
1732a4ee7ee685f3bf996461ed0d148857ce85a00e2Tomi Valkeinenint dss_mgr_enable(struct omap_overlay_manager *mgr);
1747797c6da64852b06b585b7eca8d3f657bfc9fa47Tomi Valkeinenvoid dss_mgr_disable(struct omap_overlay_manager *mgr);
175eb70d739adf2266e744a784a1272f1c92a257b81Tomi Valkeinenint dss_mgr_set_info(struct omap_overlay_manager *mgr,
176eb70d739adf2266e744a784a1272f1c92a257b81Tomi Valkeinen		struct omap_overlay_manager_info *info);
177eb70d739adf2266e744a784a1272f1c92a257b81Tomi Valkeinenvoid dss_mgr_get_info(struct omap_overlay_manager *mgr,
178eb70d739adf2266e744a784a1272f1c92a257b81Tomi Valkeinen		struct omap_overlay_manager_info *info);
179eb70d739adf2266e744a784a1272f1c92a257b81Tomi Valkeinenint dss_mgr_set_device(struct omap_overlay_manager *mgr,
180eb70d739adf2266e744a784a1272f1c92a257b81Tomi Valkeinen		struct omap_dss_device *dssdev);
181eb70d739adf2266e744a784a1272f1c92a257b81Tomi Valkeinenint dss_mgr_unset_device(struct omap_overlay_manager *mgr);
18258f2554807a7dc627f1583d1d4363b85758cf685Tomi Valkeinen
183aaa874a985158383c4b394c687c716ef26288741Tomi Valkeinenbool dss_ovl_is_enabled(struct omap_overlay *ovl);
184aaa874a985158383c4b394c687c716ef26288741Tomi Valkeinenint dss_ovl_enable(struct omap_overlay *ovl);
185aaa874a985158383c4b394c687c716ef26288741Tomi Valkeinenint dss_ovl_disable(struct omap_overlay *ovl);
186f77b30700e5c0a6b5220b3a964bf6c40d5e71416Tomi Valkeinenint dss_ovl_set_info(struct omap_overlay *ovl,
187f77b30700e5c0a6b5220b3a964bf6c40d5e71416Tomi Valkeinen		struct omap_overlay_info *info);
188f77b30700e5c0a6b5220b3a964bf6c40d5e71416Tomi Valkeinenvoid dss_ovl_get_info(struct omap_overlay *ovl,
189f77b30700e5c0a6b5220b3a964bf6c40d5e71416Tomi Valkeinen		struct omap_overlay_info *info);
190f77b30700e5c0a6b5220b3a964bf6c40d5e71416Tomi Valkeinenint dss_ovl_set_manager(struct omap_overlay *ovl,
191f77b30700e5c0a6b5220b3a964bf6c40d5e71416Tomi Valkeinen		struct omap_overlay_manager *mgr);
192f77b30700e5c0a6b5220b3a964bf6c40d5e71416Tomi Valkeinenint dss_ovl_unset_manager(struct omap_overlay *ovl);
193f77b30700e5c0a6b5220b3a964bf6c40d5e71416Tomi Valkeinen
194559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen/* display */
195559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinenint dss_suspend_all_devices(void);
196559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinenint dss_resume_all_devices(void);
197559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinenvoid dss_disable_all_devices(void);
198559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen
199559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinenvoid dss_init_device(struct platform_device *pdev,
200559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen		struct omap_dss_device *dssdev);
201559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinenvoid dss_uninit_device(struct platform_device *pdev,
202559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen		struct omap_dss_device *dssdev);
203559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinenbool dss_use_replication(struct omap_dss_device *dssdev,
204559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen		enum omap_color_mode mode);
205559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinenvoid default_get_overlay_fifo_thresholds(enum omap_plane plane,
2065ed8cf5b8e053832a3d0552e0a9681a3ff0325eeTomi Valkeinen		u32 fifo_size, u32 burst_size,
207559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen		u32 *fifo_low, u32 *fifo_high);
208559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen
209559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen/* manager */
210559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinenint dss_init_overlay_managers(struct platform_device *pdev);
211559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinenvoid dss_uninit_overlay_managers(struct platform_device *pdev);
21254540d41aaad0ed3245d3e99db014ab03a219c5aTomi Valkeinenint dss_mgr_simple_check(struct omap_overlay_manager *mgr,
21354540d41aaad0ed3245d3e99db014ab03a219c5aTomi Valkeinen		const struct omap_overlay_manager_info *info);
2146ac48d1e3ac788ad1d54895acd83be26cefb4fe9Tomi Valkeinenint dss_mgr_check(struct omap_overlay_manager *mgr,
2156ac48d1e3ac788ad1d54895acd83be26cefb4fe9Tomi Valkeinen		struct omap_dss_device *dssdev,
2166ac48d1e3ac788ad1d54895acd83be26cefb4fe9Tomi Valkeinen		struct omap_overlay_manager_info *info,
2176ac48d1e3ac788ad1d54895acd83be26cefb4fe9Tomi Valkeinen		struct omap_overlay_info **overlay_infos);
218559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen
219559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen/* overlay */
220559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinenvoid dss_init_overlays(struct platform_device *pdev);
221559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinenvoid dss_uninit_overlays(struct platform_device *pdev);
222559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinenvoid dss_overlay_setup_dispc_manager(struct omap_overlay_manager *mgr);
223559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinenvoid dss_recheck_connections(struct omap_dss_device *dssdev, bool force);
22454540d41aaad0ed3245d3e99db014ab03a219c5aTomi Valkeinenint dss_ovl_simple_check(struct omap_overlay *ovl,
22554540d41aaad0ed3245d3e99db014ab03a219c5aTomi Valkeinen		const struct omap_overlay_info *info);
2266ac48d1e3ac788ad1d54895acd83be26cefb4fe9Tomi Valkeinenint dss_ovl_check(struct omap_overlay *ovl,
2276ac48d1e3ac788ad1d54895acd83be26cefb4fe9Tomi Valkeinen		struct omap_overlay_info *info, struct omap_dss_device *dssdev);
228559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen
229559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen/* DSS */
23096c401bcb83a182a4f332f2f64ee6530ba35511aSenthilvadivu Guruswamyint dss_init_platform_driver(void);
23196c401bcb83a182a4f332f2f64ee6530ba35511aSenthilvadivu Guruswamyvoid dss_uninit_platform_driver(void);
232559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen
2334fbafaf371be780ed2cd73a520dfeafa1ea73e24Tomi Valkeinenint dss_runtime_get(void);
2344fbafaf371be780ed2cd73a520dfeafa1ea73e24Tomi Valkeinenvoid dss_runtime_put(void);
2354fbafaf371be780ed2cd73a520dfeafa1ea73e24Tomi Valkeinen
2367ed024aa280cb38c8aa5c188d2d2c98f5daede10Mythri P Kvoid dss_select_hdmi_venc_clk_source(enum dss_hdmi_venc_clk_source_select);
2374a61e267c84e98caeddcab25432a871bf1a599ddTomi Valkeinenenum dss_hdmi_venc_clk_source_select dss_get_hdmi_venc_clk_source(void);
23889a35e5170fc579e4fc3a1f3444c5dc1aa36904dArchit Tanejaconst char *dss_get_generic_clk_source_name(enum omap_dss_clk_source clk_src);
2398b9cb3a8f39d0864c925c5cd5c2c54cfd85ad551Senthilvadivu Guruswamyvoid dss_dump_clocks(struct seq_file *s);
240559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen
241559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinenvoid dss_dump_regs(struct seq_file *s);
2428b9cb3a8f39d0864c925c5cd5c2c54cfd85ad551Senthilvadivu Guruswamy#if defined(CONFIG_DEBUG_FS) && defined(CONFIG_OMAP2_DSS_DEBUG_SUPPORT)
2438b9cb3a8f39d0864c925c5cd5c2c54cfd85ad551Senthilvadivu Guruswamyvoid dss_debug_dump_clocks(struct seq_file *s);
2448b9cb3a8f39d0864c925c5cd5c2c54cfd85ad551Senthilvadivu Guruswamy#endif
245559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen
246559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinenvoid dss_sdi_init(u8 datapairs);
247559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinenint dss_sdi_enable(void);
248559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinenvoid dss_sdi_disable(void);
249559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen
25089a35e5170fc579e4fc3a1f3444c5dc1aa36904dArchit Tanejavoid dss_select_dispc_clk_source(enum omap_dss_clk_source clk_src);
2515a8b572d832772722c3b3b7578e7fb968560fcf3Archit Tanejavoid dss_select_dsi_clk_source(int dsi_module,
2525a8b572d832772722c3b3b7578e7fb968560fcf3Archit Taneja		enum omap_dss_clk_source clk_src);
253ea75159ee6f00bd809f57a58e5505dc362382cc8Archit Tanejavoid dss_select_lcd_clk_source(enum omap_channel channel,
25489a35e5170fc579e4fc3a1f3444c5dc1aa36904dArchit Taneja		enum omap_dss_clk_source clk_src);
25589a35e5170fc579e4fc3a1f3444c5dc1aa36904dArchit Tanejaenum omap_dss_clk_source dss_get_dispc_clk_source(void);
2565a8b572d832772722c3b3b7578e7fb968560fcf3Archit Tanejaenum omap_dss_clk_source dss_get_dsi_clk_source(int dsi_module);
25789a35e5170fc579e4fc3a1f3444c5dc1aa36904dArchit Tanejaenum omap_dss_clk_source dss_get_lcd_clk_source(enum omap_channel channel);
2582f18c4d89861fc1abdfa2531ba76017acb78edc5Tomi Valkeinen
259559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinenvoid dss_set_venc_output(enum omap_dss_venc_type type);
260559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinenvoid dss_set_dac_pwrdn_bgz(bool enable);
261559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen
262559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinenunsigned long dss_get_dpll4_rate(void);
263559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinenint dss_calc_clock_rates(struct dss_clock_info *cinfo);
264559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinenint dss_set_clock_div(struct dss_clock_info *cinfo);
265559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinenint dss_get_clock_div(struct dss_clock_info *cinfo);
266559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinenint dss_calc_clock_div(bool is_tft, unsigned long req_pck,
267559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen		struct dss_clock_info *dss_cinfo,
268559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen		struct dispc_clock_info *dispc_cinfo);
269559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen
270559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen/* SDI */
271368a148ea3833b540945fa53a63227c8ce76aa8fJani Nikula#ifdef CONFIG_OMAP2_DSS_SDI
27242c9dee82129d965bc8ca02170150817317c0135Tomi Valkeinenint sdi_init(void);
273559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinenvoid sdi_exit(void);
274559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinenint sdi_init_display(struct omap_dss_device *display);
275368a148ea3833b540945fa53a63227c8ce76aa8fJani Nikula#else
27642c9dee82129d965bc8ca02170150817317c0135Tomi Valkeinenstatic inline int sdi_init(void)
277368a148ea3833b540945fa53a63227c8ce76aa8fJani Nikula{
278368a148ea3833b540945fa53a63227c8ce76aa8fJani Nikula	return 0;
279368a148ea3833b540945fa53a63227c8ce76aa8fJani Nikula}
280368a148ea3833b540945fa53a63227c8ce76aa8fJani Nikulastatic inline void sdi_exit(void)
281368a148ea3833b540945fa53a63227c8ce76aa8fJani Nikula{
282368a148ea3833b540945fa53a63227c8ce76aa8fJani Nikula}
283368a148ea3833b540945fa53a63227c8ce76aa8fJani Nikula#endif
284559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen
285559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen/* DSI */
286368a148ea3833b540945fa53a63227c8ce76aa8fJani Nikula#ifdef CONFIG_OMAP2_DSS_DSI
2875a8b572d832772722c3b3b7578e7fb968560fcf3Archit Taneja
2885a8b572d832772722c3b3b7578e7fb968560fcf3Archit Tanejastruct dentry;
2895a8b572d832772722c3b3b7578e7fb968560fcf3Archit Tanejastruct file_operations;
2905a8b572d832772722c3b3b7578e7fb968560fcf3Archit Taneja
291c8aac01b7bd1109795586db11ea7f12ab1e2d163Senthilvadivu Guruswamyint dsi_init_platform_driver(void);
292c8aac01b7bd1109795586db11ea7f12ab1e2d163Senthilvadivu Guruswamyvoid dsi_uninit_platform_driver(void);
293559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen
2944fbafaf371be780ed2cd73a520dfeafa1ea73e24Tomi Valkeinenint dsi_runtime_get(struct platform_device *dsidev);
2954fbafaf371be780ed2cd73a520dfeafa1ea73e24Tomi Valkeinenvoid dsi_runtime_put(struct platform_device *dsidev);
2964fbafaf371be780ed2cd73a520dfeafa1ea73e24Tomi Valkeinen
297559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinenvoid dsi_dump_clocks(struct seq_file *s);
2985a8b572d832772722c3b3b7578e7fb968560fcf3Archit Tanejavoid dsi_create_debugfs_files_irq(struct dentry *debugfs_dir,
2995a8b572d832772722c3b3b7578e7fb968560fcf3Archit Taneja		const struct file_operations *debug_fops);
3005a8b572d832772722c3b3b7578e7fb968560fcf3Archit Tanejavoid dsi_create_debugfs_files_reg(struct dentry *debugfs_dir,
3015a8b572d832772722c3b3b7578e7fb968560fcf3Archit Taneja		const struct file_operations *debug_fops);
302559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen
303559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinenint dsi_init_display(struct omap_dss_device *display);
304559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinenvoid dsi_irq_handler(void);
305a3b3cc2b883aac18a3388a405db809a99d66e3cfArchit Tanejau8 dsi_get_pixel_size(enum omap_dss_dsi_pixel_format fmt);
306a3b3cc2b883aac18a3388a405db809a99d66e3cfArchit Taneja
307a72b64b99918ee801a3a6abf5391e356752bcad0Archit Tanejaunsigned long dsi_get_pll_hsdiv_dispc_rate(struct platform_device *dsidev);
308a72b64b99918ee801a3a6abf5391e356752bcad0Archit Tanejaint dsi_pll_set_clock_div(struct platform_device *dsidev,
309a72b64b99918ee801a3a6abf5391e356752bcad0Archit Taneja		struct dsi_clock_info *cinfo);
310a72b64b99918ee801a3a6abf5391e356752bcad0Archit Tanejaint dsi_pll_calc_clock_div_pck(struct platform_device *dsidev, bool is_tft,
311a72b64b99918ee801a3a6abf5391e356752bcad0Archit Taneja		unsigned long req_pck, struct dsi_clock_info *cinfo,
312559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen		struct dispc_clock_info *dispc_cinfo);
313a72b64b99918ee801a3a6abf5391e356752bcad0Archit Tanejaint dsi_pll_init(struct platform_device *dsidev, bool enable_hsclk,
314a72b64b99918ee801a3a6abf5391e356752bcad0Archit Taneja		bool enable_hsdiv);
315a72b64b99918ee801a3a6abf5391e356752bcad0Archit Tanejavoid dsi_pll_uninit(struct platform_device *dsidev, bool disconnect_lanes);
316559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinenvoid dsi_get_overlay_fifo_thresholds(enum omap_plane plane,
3175ed8cf5b8e053832a3d0552e0a9681a3ff0325eeTomi Valkeinen		u32 fifo_size, u32 burst_size,
318559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen		u32 *fifo_low, u32 *fifo_high);
319a72b64b99918ee801a3a6abf5391e356752bcad0Archit Tanejavoid dsi_wait_pll_hsdiv_dispc_active(struct platform_device *dsidev);
320a72b64b99918ee801a3a6abf5391e356752bcad0Archit Tanejavoid dsi_wait_pll_hsdiv_dsi_active(struct platform_device *dsidev);
321a72b64b99918ee801a3a6abf5391e356752bcad0Archit Tanejastruct platform_device *dsi_get_dsidev_from_id(int module);
322368a148ea3833b540945fa53a63227c8ce76aa8fJani Nikula#else
323c8aac01b7bd1109795586db11ea7f12ab1e2d163Senthilvadivu Guruswamystatic inline int dsi_init_platform_driver(void)
324368a148ea3833b540945fa53a63227c8ce76aa8fJani Nikula{
325368a148ea3833b540945fa53a63227c8ce76aa8fJani Nikula	return 0;
326368a148ea3833b540945fa53a63227c8ce76aa8fJani Nikula}
327c8aac01b7bd1109795586db11ea7f12ab1e2d163Senthilvadivu Guruswamystatic inline void dsi_uninit_platform_driver(void)
328368a148ea3833b540945fa53a63227c8ce76aa8fJani Nikula{
329368a148ea3833b540945fa53a63227c8ce76aa8fJani Nikula}
3304fbafaf371be780ed2cd73a520dfeafa1ea73e24Tomi Valkeinenstatic inline int dsi_runtime_get(struct platform_device *dsidev)
3314fbafaf371be780ed2cd73a520dfeafa1ea73e24Tomi Valkeinen{
3324fbafaf371be780ed2cd73a520dfeafa1ea73e24Tomi Valkeinen	return 0;
3334fbafaf371be780ed2cd73a520dfeafa1ea73e24Tomi Valkeinen}
3344fbafaf371be780ed2cd73a520dfeafa1ea73e24Tomi Valkeinenstatic inline void dsi_runtime_put(struct platform_device *dsidev)
3354fbafaf371be780ed2cd73a520dfeafa1ea73e24Tomi Valkeinen{
3364fbafaf371be780ed2cd73a520dfeafa1ea73e24Tomi Valkeinen}
337a3b3cc2b883aac18a3388a405db809a99d66e3cfArchit Tanejastatic inline u8 dsi_get_pixel_size(enum omap_dss_dsi_pixel_format fmt)
338a3b3cc2b883aac18a3388a405db809a99d66e3cfArchit Taneja{
339a3b3cc2b883aac18a3388a405db809a99d66e3cfArchit Taneja	WARN("%s: DSI not compiled in, returning pixel_size as 0\n", __func__);
340a3b3cc2b883aac18a3388a405db809a99d66e3cfArchit Taneja	return 0;
341a3b3cc2b883aac18a3388a405db809a99d66e3cfArchit Taneja}
342a72b64b99918ee801a3a6abf5391e356752bcad0Archit Tanejastatic inline unsigned long dsi_get_pll_hsdiv_dispc_rate(struct platform_device *dsidev)
34366534e8e936a0b926863df90054dc59826d70528Archit Taneja{
34466534e8e936a0b926863df90054dc59826d70528Archit Taneja	WARN("%s: DSI not compiled in, returning rate as 0\n", __func__);
34566534e8e936a0b926863df90054dc59826d70528Archit Taneja	return 0;
34666534e8e936a0b926863df90054dc59826d70528Archit Taneja}
347943e4457ca732553b7cca2df8881124ae96071deTomi Valkeinenstatic inline int dsi_pll_set_clock_div(struct platform_device *dsidev,
348943e4457ca732553b7cca2df8881124ae96071deTomi Valkeinen		struct dsi_clock_info *cinfo)
349943e4457ca732553b7cca2df8881124ae96071deTomi Valkeinen{
350943e4457ca732553b7cca2df8881124ae96071deTomi Valkeinen	WARN("%s: DSI not compiled in\n", __func__);
351943e4457ca732553b7cca2df8881124ae96071deTomi Valkeinen	return -ENODEV;
352943e4457ca732553b7cca2df8881124ae96071deTomi Valkeinen}
353943e4457ca732553b7cca2df8881124ae96071deTomi Valkeinenstatic inline int dsi_pll_calc_clock_div_pck(struct platform_device *dsidev,
354943e4457ca732553b7cca2df8881124ae96071deTomi Valkeinen		bool is_tft, unsigned long req_pck,
355943e4457ca732553b7cca2df8881124ae96071deTomi Valkeinen		struct dsi_clock_info *dsi_cinfo,
356943e4457ca732553b7cca2df8881124ae96071deTomi Valkeinen		struct dispc_clock_info *dispc_cinfo)
357943e4457ca732553b7cca2df8881124ae96071deTomi Valkeinen{
358943e4457ca732553b7cca2df8881124ae96071deTomi Valkeinen	WARN("%s: DSI not compiled in\n", __func__);
359943e4457ca732553b7cca2df8881124ae96071deTomi Valkeinen	return -ENODEV;
360943e4457ca732553b7cca2df8881124ae96071deTomi Valkeinen}
361943e4457ca732553b7cca2df8881124ae96071deTomi Valkeinenstatic inline int dsi_pll_init(struct platform_device *dsidev,
362943e4457ca732553b7cca2df8881124ae96071deTomi Valkeinen		bool enable_hsclk, bool enable_hsdiv)
363943e4457ca732553b7cca2df8881124ae96071deTomi Valkeinen{
364943e4457ca732553b7cca2df8881124ae96071deTomi Valkeinen	WARN("%s: DSI not compiled in\n", __func__);
365943e4457ca732553b7cca2df8881124ae96071deTomi Valkeinen	return -ENODEV;
366943e4457ca732553b7cca2df8881124ae96071deTomi Valkeinen}
367943e4457ca732553b7cca2df8881124ae96071deTomi Valkeinenstatic inline void dsi_pll_uninit(struct platform_device *dsidev,
368943e4457ca732553b7cca2df8881124ae96071deTomi Valkeinen		bool disconnect_lanes)
369943e4457ca732553b7cca2df8881124ae96071deTomi Valkeinen{
370943e4457ca732553b7cca2df8881124ae96071deTomi Valkeinen}
371a72b64b99918ee801a3a6abf5391e356752bcad0Archit Tanejastatic inline void dsi_wait_pll_hsdiv_dispc_active(struct platform_device *dsidev)
372e406f9079b993f4d5d7b5a3452b11df81ff2aef0Tomi Valkeinen{
373e406f9079b993f4d5d7b5a3452b11df81ff2aef0Tomi Valkeinen}
374a72b64b99918ee801a3a6abf5391e356752bcad0Archit Tanejastatic inline void dsi_wait_pll_hsdiv_dsi_active(struct platform_device *dsidev)
375e406f9079b993f4d5d7b5a3452b11df81ff2aef0Tomi Valkeinen{
376e406f9079b993f4d5d7b5a3452b11df81ff2aef0Tomi Valkeinen}
377a72b64b99918ee801a3a6abf5391e356752bcad0Archit Tanejastatic inline struct platform_device *dsi_get_dsidev_from_id(int module)
378a72b64b99918ee801a3a6abf5391e356752bcad0Archit Taneja{
379a72b64b99918ee801a3a6abf5391e356752bcad0Archit Taneja	WARN("%s: DSI not compiled in, returning platform device as NULL\n",
380a72b64b99918ee801a3a6abf5391e356752bcad0Archit Taneja			__func__);
381a72b64b99918ee801a3a6abf5391e356752bcad0Archit Taneja	return NULL;
382a72b64b99918ee801a3a6abf5391e356752bcad0Archit Taneja}
383368a148ea3833b540945fa53a63227c8ce76aa8fJani Nikula#endif
384559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen
385559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen/* DPI */
386368a148ea3833b540945fa53a63227c8ce76aa8fJani Nikula#ifdef CONFIG_OMAP2_DSS_DPI
387277b2881c3c0d97e214487fbd677b0590fb4acf3Tomi Valkeinenint dpi_init(void);
388559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinenvoid dpi_exit(void);
389559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinenint dpi_init_display(struct omap_dss_device *dssdev);
390368a148ea3833b540945fa53a63227c8ce76aa8fJani Nikula#else
391277b2881c3c0d97e214487fbd677b0590fb4acf3Tomi Valkeinenstatic inline int dpi_init(void)
392368a148ea3833b540945fa53a63227c8ce76aa8fJani Nikula{
393368a148ea3833b540945fa53a63227c8ce76aa8fJani Nikula	return 0;
394368a148ea3833b540945fa53a63227c8ce76aa8fJani Nikula}
395368a148ea3833b540945fa53a63227c8ce76aa8fJani Nikulastatic inline void dpi_exit(void)
396368a148ea3833b540945fa53a63227c8ce76aa8fJani Nikula{
397368a148ea3833b540945fa53a63227c8ce76aa8fJani Nikula}
398368a148ea3833b540945fa53a63227c8ce76aa8fJani Nikula#endif
399559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen
400559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen/* DISPC */
401060b6d9cbab03f1379dbe00393ab26d6eb371ce2Senthilvadivu Guruswamyint dispc_init_platform_driver(void);
402060b6d9cbab03f1379dbe00393ab26d6eb371ce2Senthilvadivu Guruswamyvoid dispc_uninit_platform_driver(void);
403559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinenvoid dispc_dump_clocks(struct seq_file *s);
404dfc0fd8d8850ef11951ba6c251e06096d1b5a0bdTomi Valkeinenvoid dispc_dump_irqs(struct seq_file *s);
405559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinenvoid dispc_dump_regs(struct seq_file *s);
406559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinenvoid dispc_irq_handler(void);
407559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinenvoid dispc_fake_vsync_irq(void);
408559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen
4094fbafaf371be780ed2cd73a520dfeafa1ea73e24Tomi Valkeinenint dispc_runtime_get(void);
4104fbafaf371be780ed2cd73a520dfeafa1ea73e24Tomi Valkeinenvoid dispc_runtime_put(void);
411559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen
412559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinenvoid dispc_enable_sidle(void);
413559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinenvoid dispc_disable_sidle(void);
414559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen
415559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinenvoid dispc_lcd_enable_signal_polarity(bool act_high);
416559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinenvoid dispc_lcd_enable_signal(bool enable);
417559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinenvoid dispc_pck_free_enable(bool enable);
418559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinenvoid dispc_set_digit_size(u16 width, u16 height);
419cd295aebf1c6fe8a051fc7adf5f0db63f4bee9b9Tomi Valkeinenvoid dispc_enable_fifomerge(bool enable);
420cd295aebf1c6fe8a051fc7adf5f0db63f4bee9b9Tomi Valkeinenvoid dispc_enable_gamma_table(bool enable);
421cd295aebf1c6fe8a051fc7adf5f0db63f4bee9b9Tomi Valkeinenvoid dispc_set_loadmode(enum omap_dss_load_mode mode);
422cd295aebf1c6fe8a051fc7adf5f0db63f4bee9b9Tomi Valkeinen
423cd295aebf1c6fe8a051fc7adf5f0db63f4bee9b9Tomi Valkeinenbool dispc_lcd_timings_ok(struct omap_video_timings *timings);
424cd295aebf1c6fe8a051fc7adf5f0db63f4bee9b9Tomi Valkeinenunsigned long dispc_fclk_rate(void);
425cd295aebf1c6fe8a051fc7adf5f0db63f4bee9b9Tomi Valkeinenvoid dispc_find_clk_divs(bool is_tft, unsigned long req_pck, unsigned long fck,
426cd295aebf1c6fe8a051fc7adf5f0db63f4bee9b9Tomi Valkeinen		struct dispc_clock_info *cinfo);
427cd295aebf1c6fe8a051fc7adf5f0db63f4bee9b9Tomi Valkeinenint dispc_calc_clock_rates(unsigned long dispc_fclk_rate,
428cd295aebf1c6fe8a051fc7adf5f0db63f4bee9b9Tomi Valkeinen		struct dispc_clock_info *cinfo);
429cd295aebf1c6fe8a051fc7adf5f0db63f4bee9b9Tomi Valkeinen
430cd295aebf1c6fe8a051fc7adf5f0db63f4bee9b9Tomi Valkeinen
4316f04e1bfc36c5865dc5679f85e25b6613be86298Tomi Valkeinenvoid dispc_ovl_set_fifo_threshold(enum omap_plane plane, u32 low, u32 high);
432f0e5caab9771173a6c7a47add4b2e5174c7f11bbTomi Valkeinenu32 dispc_ovl_get_fifo_size(enum omap_plane plane);
433f0e5caab9771173a6c7a47add4b2e5174c7f11bbTomi Valkeinenu32 dispc_ovl_get_burst_size(enum omap_plane plane);
434a4273b7cca6fe7ee3807229ba256adb6cfaba0c3Archit Tanejaint dispc_ovl_setup(enum omap_plane plane, struct omap_overlay_info *oi,
4352cc5d1af5ad0a130fa5812f99bca18e0cdadbd36Tomi Valkeinen		bool ilace, bool replication);
436cd295aebf1c6fe8a051fc7adf5f0db63f4bee9b9Tomi Valkeinenint dispc_ovl_enable(enum omap_plane plane, bool enable);
437f427984e896fde6ae03056cf1f8ac5d4a99275d4Tomi Valkeinenvoid dispc_ovl_set_channel_out(enum omap_plane plane,
438f427984e896fde6ae03056cf1f8ac5d4a99275d4Tomi Valkeinen		enum omap_channel channel);
439cd295aebf1c6fe8a051fc7adf5f0db63f4bee9b9Tomi Valkeinen
440cd295aebf1c6fe8a051fc7adf5f0db63f4bee9b9Tomi Valkeinenvoid dispc_mgr_enable_fifohandcheck(enum omap_channel channel, bool enable);
441cd295aebf1c6fe8a051fc7adf5f0db63f4bee9b9Tomi Valkeinenvoid dispc_mgr_set_lcd_size(enum omap_channel channel, u16 width, u16 height);
4423dcec4d6ba65a4e14987f48e8d98c4290ceb2c29Tomi Valkeinenu32 dispc_mgr_get_vsync_irq(enum omap_channel channel);
4437d1365c998a462d8ea3627e87526227556b63351Tomi Valkeinenu32 dispc_mgr_get_framedone_irq(enum omap_channel channel);
44426d9dd0dbe09e8a6d1f8c8ed90cd29b049bfa6eeTomi Valkeinenbool dispc_mgr_go_busy(enum omap_channel channel);
44526d9dd0dbe09e8a6d1f8c8ed90cd29b049bfa6eeTomi Valkeinenvoid dispc_mgr_go(enum omap_channel channel);
4468754595796a45e88411b68005bc98310c8c6ae76Tomi Valkeinenbool dispc_mgr_is_enabled(enum omap_channel channel);
44726d9dd0dbe09e8a6d1f8c8ed90cd29b049bfa6eeTomi Valkeinenvoid dispc_mgr_enable(enum omap_channel channel, bool enable);
44826d9dd0dbe09e8a6d1f8c8ed90cd29b049bfa6eeTomi Valkeinenbool dispc_mgr_is_channel_enabled(enum omap_channel channel);
449569969d6015f846926267cc40ed5fec936717f68Archit Tanejavoid dispc_mgr_set_io_pad_mode(enum dss_io_pad_mode mode);
450569969d6015f846926267cc40ed5fec936717f68Archit Tanejavoid dispc_mgr_enable_stallmode(enum omap_channel channel, bool enable);
45126d9dd0dbe09e8a6d1f8c8ed90cd29b049bfa6eeTomi Valkeinenvoid dispc_mgr_set_tft_data_lines(enum omap_channel channel, u8 data_lines);
45226d9dd0dbe09e8a6d1f8c8ed90cd29b049bfa6eeTomi Valkeinenvoid dispc_mgr_set_lcd_display_type(enum omap_channel channel,
45364ba4f748a005a44c03c98e082d8ee157f4ee66fSumit Semwal		enum omap_lcd_display_type type);
45426d9dd0dbe09e8a6d1f8c8ed90cd29b049bfa6eeTomi Valkeinenvoid dispc_mgr_set_lcd_timings(enum omap_channel channel,
45564ba4f748a005a44c03c98e082d8ee157f4ee66fSumit Semwal		struct omap_video_timings *timings);
45626d9dd0dbe09e8a6d1f8c8ed90cd29b049bfa6eeTomi Valkeinenvoid dispc_mgr_set_pol_freq(enum omap_channel channel,
457ff1b2cde3f551c9b56887b41e0ebbf2907566a7dSumit Semwal		enum omap_panel_config config, u8 acbi, u8 acb);
458cd295aebf1c6fe8a051fc7adf5f0db63f4bee9b9Tomi Valkeinenunsigned long dispc_mgr_lclk_rate(enum omap_channel channel);
459cd295aebf1c6fe8a051fc7adf5f0db63f4bee9b9Tomi Valkeinenunsigned long dispc_mgr_pclk_rate(enum omap_channel channel);
46026d9dd0dbe09e8a6d1f8c8ed90cd29b049bfa6eeTomi Valkeinenint dispc_mgr_set_clock_div(enum omap_channel channel,
461ff1b2cde3f551c9b56887b41e0ebbf2907566a7dSumit Semwal		struct dispc_clock_info *cinfo);
46226d9dd0dbe09e8a6d1f8c8ed90cd29b049bfa6eeTomi Valkeinenint dispc_mgr_get_clock_div(enum omap_channel channel,
463ff1b2cde3f551c9b56887b41e0ebbf2907566a7dSumit Semwal		struct dispc_clock_info *cinfo);
464c64dca40c5cf1cc61355411dcfb90949e57afdf0Tomi Valkeinenvoid dispc_mgr_setup(enum omap_channel channel,
465c64dca40c5cf1cc61355411dcfb90949e57afdf0Tomi Valkeinen		struct omap_overlay_manager_info *info);
466559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen
467559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen/* VENC */
468368a148ea3833b540945fa53a63227c8ce76aa8fJani Nikula#ifdef CONFIG_OMAP2_DSS_VENC
46930ea50c9f5166a375b4dc0109d18a5d21bab5711Senthilvadivu Guruswamyint venc_init_platform_driver(void);
47030ea50c9f5166a375b4dc0109d18a5d21bab5711Senthilvadivu Guruswamyvoid venc_uninit_platform_driver(void);
471559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinenvoid venc_dump_regs(struct seq_file *s);
472559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinenint venc_init_display(struct omap_dss_device *display);
473c3dc6a7afb47735b82a4c0061e814454a649dbfcArchit Tanejaunsigned long venc_get_pixel_clock(void);
474368a148ea3833b540945fa53a63227c8ce76aa8fJani Nikula#else
47530ea50c9f5166a375b4dc0109d18a5d21bab5711Senthilvadivu Guruswamystatic inline int venc_init_platform_driver(void)
476368a148ea3833b540945fa53a63227c8ce76aa8fJani Nikula{
477368a148ea3833b540945fa53a63227c8ce76aa8fJani Nikula	return 0;
478368a148ea3833b540945fa53a63227c8ce76aa8fJani Nikula}
47930ea50c9f5166a375b4dc0109d18a5d21bab5711Senthilvadivu Guruswamystatic inline void venc_uninit_platform_driver(void)
480368a148ea3833b540945fa53a63227c8ce76aa8fJani Nikula{
481368a148ea3833b540945fa53a63227c8ce76aa8fJani Nikula}
482c3dc6a7afb47735b82a4c0061e814454a649dbfcArchit Tanejastatic inline unsigned long venc_get_pixel_clock(void)
483c3dc6a7afb47735b82a4c0061e814454a649dbfcArchit Taneja{
484c3dc6a7afb47735b82a4c0061e814454a649dbfcArchit Taneja	WARN("%s: VENC not compiled in, returning pclk as 0\n", __func__);
485c3dc6a7afb47735b82a4c0061e814454a649dbfcArchit Taneja	return 0;
486c3dc6a7afb47735b82a4c0061e814454a649dbfcArchit Taneja}
487368a148ea3833b540945fa53a63227c8ce76aa8fJani Nikula#endif
488559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen
489c3198a5e83121d6e3d01816f15164f158f4301d8Mythri P K/* HDMI */
490c3198a5e83121d6e3d01816f15164f158f4301d8Mythri P K#ifdef CONFIG_OMAP4_DSS_HDMI
491c3198a5e83121d6e3d01816f15164f158f4301d8Mythri P Kint hdmi_init_platform_driver(void);
492c3198a5e83121d6e3d01816f15164f158f4301d8Mythri P Kvoid hdmi_uninit_platform_driver(void);
493c3198a5e83121d6e3d01816f15164f158f4301d8Mythri P Kint hdmi_init_display(struct omap_dss_device *dssdev);
494c3dc6a7afb47735b82a4c0061e814454a649dbfcArchit Tanejaunsigned long hdmi_get_pixel_clock(void);
495162874d5f5fa8aac7ff406825f152abb22d3c6c2Mythri P Kvoid hdmi_dump_regs(struct seq_file *s);
496c3198a5e83121d6e3d01816f15164f158f4301d8Mythri P K#else
497c3198a5e83121d6e3d01816f15164f158f4301d8Mythri P Kstatic inline int hdmi_init_display(struct omap_dss_device *dssdev)
498c3198a5e83121d6e3d01816f15164f158f4301d8Mythri P K{
499c3198a5e83121d6e3d01816f15164f158f4301d8Mythri P K	return 0;
500c3198a5e83121d6e3d01816f15164f158f4301d8Mythri P K}
501c3198a5e83121d6e3d01816f15164f158f4301d8Mythri P Kstatic inline int hdmi_init_platform_driver(void)
502c3198a5e83121d6e3d01816f15164f158f4301d8Mythri P K{
503c3198a5e83121d6e3d01816f15164f158f4301d8Mythri P K	return 0;
504c3198a5e83121d6e3d01816f15164f158f4301d8Mythri P K}
505c3198a5e83121d6e3d01816f15164f158f4301d8Mythri P Kstatic inline void hdmi_uninit_platform_driver(void)
506c3198a5e83121d6e3d01816f15164f158f4301d8Mythri P K{
507c3198a5e83121d6e3d01816f15164f158f4301d8Mythri P K}
508c3dc6a7afb47735b82a4c0061e814454a649dbfcArchit Tanejastatic inline unsigned long hdmi_get_pixel_clock(void)
509c3dc6a7afb47735b82a4c0061e814454a649dbfcArchit Taneja{
510c3dc6a7afb47735b82a4c0061e814454a649dbfcArchit Taneja	WARN("%s: HDMI not compiled in, returning pclk as 0\n", __func__);
511c3dc6a7afb47735b82a4c0061e814454a649dbfcArchit Taneja	return 0;
512c3dc6a7afb47735b82a4c0061e814454a649dbfcArchit Taneja}
513c3198a5e83121d6e3d01816f15164f158f4301d8Mythri P K#endif
514c3198a5e83121d6e3d01816f15164f158f4301d8Mythri P Kint omapdss_hdmi_display_enable(struct omap_dss_device *dssdev);
515c3198a5e83121d6e3d01816f15164f158f4301d8Mythri P Kvoid omapdss_hdmi_display_disable(struct omap_dss_device *dssdev);
516c3198a5e83121d6e3d01816f15164f158f4301d8Mythri P Kvoid omapdss_hdmi_display_set_timing(struct omap_dss_device *dssdev);
517c3198a5e83121d6e3d01816f15164f158f4301d8Mythri P Kint omapdss_hdmi_display_check_timing(struct omap_dss_device *dssdev,
518c3198a5e83121d6e3d01816f15164f158f4301d8Mythri P K					struct omap_video_timings *timings);
519470245652d98274568ac81a875c8312e73a433efTomi Valkeinenint omapdss_hdmi_read_edid(u8 *buf, int len);
520759593ffa7e05ebea9b21135cad179982331f5d8Tomi Valkeinenbool omapdss_hdmi_detect(void);
52170be83235ea2815f6c2a5fd45753de406be6c6aaMythri P Kint hdmi_panel_init(void);
52270be83235ea2815f6c2a5fd45753de406be6c6aaMythri P Kvoid hdmi_panel_exit(void);
523c3198a5e83121d6e3d01816f15164f158f4301d8Mythri P K
524559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen/* RFBI */
525368a148ea3833b540945fa53a63227c8ce76aa8fJani Nikula#ifdef CONFIG_OMAP2_DSS_RFBI
5263448d500f7002a5ee374ec92d954b1667cbf72a4Senthilvadivu Guruswamyint rfbi_init_platform_driver(void);
5273448d500f7002a5ee374ec92d954b1667cbf72a4Senthilvadivu Guruswamyvoid rfbi_uninit_platform_driver(void);
528559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinenvoid rfbi_dump_regs(struct seq_file *s);
529559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinenint rfbi_init_display(struct omap_dss_device *display);
530368a148ea3833b540945fa53a63227c8ce76aa8fJani Nikula#else
5313448d500f7002a5ee374ec92d954b1667cbf72a4Senthilvadivu Guruswamystatic inline int rfbi_init_platform_driver(void)
532368a148ea3833b540945fa53a63227c8ce76aa8fJani Nikula{
533368a148ea3833b540945fa53a63227c8ce76aa8fJani Nikula	return 0;
534368a148ea3833b540945fa53a63227c8ce76aa8fJani Nikula}
5353448d500f7002a5ee374ec92d954b1667cbf72a4Senthilvadivu Guruswamystatic inline void rfbi_uninit_platform_driver(void)
536368a148ea3833b540945fa53a63227c8ce76aa8fJani Nikula{
537368a148ea3833b540945fa53a63227c8ce76aa8fJani Nikula}
538368a148ea3833b540945fa53a63227c8ce76aa8fJani Nikula#endif
539559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen
540dfc0fd8d8850ef11951ba6c251e06096d1b5a0bdTomi Valkeinen
541dfc0fd8d8850ef11951ba6c251e06096d1b5a0bdTomi Valkeinen#ifdef CONFIG_OMAP2_DSS_COLLECT_IRQ_STATS
542dfc0fd8d8850ef11951ba6c251e06096d1b5a0bdTomi Valkeinenstatic inline void dss_collect_irq_stats(u32 irqstatus, unsigned *irq_arr)
543dfc0fd8d8850ef11951ba6c251e06096d1b5a0bdTomi Valkeinen{
544dfc0fd8d8850ef11951ba6c251e06096d1b5a0bdTomi Valkeinen	int b;
545dfc0fd8d8850ef11951ba6c251e06096d1b5a0bdTomi Valkeinen	for (b = 0; b < 32; ++b) {
546dfc0fd8d8850ef11951ba6c251e06096d1b5a0bdTomi Valkeinen		if (irqstatus & (1 << b))
547dfc0fd8d8850ef11951ba6c251e06096d1b5a0bdTomi Valkeinen			irq_arr[b]++;
548dfc0fd8d8850ef11951ba6c251e06096d1b5a0bdTomi Valkeinen	}
549dfc0fd8d8850ef11951ba6c251e06096d1b5a0bdTomi Valkeinen}
550dfc0fd8d8850ef11951ba6c251e06096d1b5a0bdTomi Valkeinen#endif
551dfc0fd8d8850ef11951ba6c251e06096d1b5a0bdTomi Valkeinen
552559d67018950ced65c73358cd69c4bdd2b0c5dd6Tomi Valkeinen#endif
553