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