1026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemov/* 2026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemov * Copyright © 2010 Intel Corporation 3026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemov * 4026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemov * Permission is hereby granted, free of charge, to any person obtaining a 5026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemov * copy of this software and associated documentation files (the "Software"), 6026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemov * to deal in the Software without restriction, including without limitation 7026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemov * the rights to use, copy, modify, merge, publish, distribute, sublicense, 8026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemov * and/or sell copies of the Software, and to permit persons to whom the 9026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemov * Software is furnished to do so, subject to the following conditions: 10026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemov * 11026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemov * The above copyright notice and this permission notice (including the next 12026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemov * paragraph) shall be included in all copies or substantial portions of the 13026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemov * Software. 14026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemov * 15026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemov * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemov * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemov * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 18026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemov * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemov * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 20026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemov * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 21026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemov * DEALINGS IN THE SOFTWARE. 22026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemov * 23026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemov * Authors: 24026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemov * jim liu <jim.liu@intel.com> 25026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemov * Jackie Li<yaodong.li@intel.com> 26026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemov */ 27026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemov 28026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemov#ifndef __MDFLD_DSI_DPI_H__ 29026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemov#define __MDFLD_DSI_DPI_H__ 30026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemov 31026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemov#include "mdfld_dsi_output.h" 32026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemov#include "mdfld_output.h" 33026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemov 34026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemovstruct mdfld_dsi_dpi_timing { 35026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemov u16 hsync_count; 36026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemov u16 hbp_count; 37026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemov u16 hfp_count; 38026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemov u16 hactive_count; 39026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemov u16 vsync_count; 40026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemov u16 vbp_count; 41026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemov u16 vfp_count; 42026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemov}; 43026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemov 44026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemovstruct mdfld_dsi_dpi_output { 45026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemov struct mdfld_dsi_encoder base; 46026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemov struct drm_device *dev; 47026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemov 48026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemov int panel_on; 49026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemov int first_boot; 50026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemov 51026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemov const struct panel_funcs *p_funcs; 52026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemov}; 53026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemov 54026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemov#define MDFLD_DSI_DPI_OUTPUT(dsi_encoder)\ 55026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemov container_of(dsi_encoder, struct mdfld_dsi_dpi_output, base) 56026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemov 57026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemov/* Export functions */ 58026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemovextern int mdfld_dsi_dpi_timing_calculation(struct drm_display_mode *mode, 59026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemov struct mdfld_dsi_dpi_timing *dpi_timing, 60026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemov int num_lane, int bpp); 61026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemovextern struct mdfld_dsi_encoder *mdfld_dsi_dpi_init(struct drm_device *dev, 62026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemov struct mdfld_dsi_connector *dsi_connector, 63026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemov const struct panel_funcs *p_funcs); 64026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemov 65026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemov/* MDFLD DPI helper functions */ 66026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemovextern void mdfld_dsi_dpi_dpms(struct drm_encoder *encoder, int mode); 67026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemovextern bool mdfld_dsi_dpi_mode_fixup(struct drm_encoder *encoder, 68026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemov struct drm_display_mode *mode, 69026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemov struct drm_display_mode *adjusted_mode); 70026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemovextern void mdfld_dsi_dpi_prepare(struct drm_encoder *encoder); 71026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemovextern void mdfld_dsi_dpi_commit(struct drm_encoder *encoder); 72026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemovextern void mdfld_dsi_dpi_mode_set(struct drm_encoder *encoder, 73026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemov struct drm_display_mode *mode, 74026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemov struct drm_display_mode *adjusted_mode); 75026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemovextern void mdfld_dsi_dpi_turn_on(struct mdfld_dsi_dpi_output *output, 76026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemov int pipe); 77026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemovextern void mdfld_dsi_dpi_controller_init(struct mdfld_dsi_config *dsi_config, 78026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemov int pipe); 79026abc333205c1fff80138b8c2cac3d0347685f4Kirill A. Shutemov#endif /*__MDFLD_DSI_DPI_H__*/ 80