blob: c305a4c90f749e0625832ff5cd66f276703eb072 [file] [log] [blame]
Padmanabhan Komanduruc570f302018-04-30 09:32:31 +05301/* Copyright (c) 2013-2015, 2018, The Linux Foundation. All rights reserved.
Arpita Banerjee841fa062013-05-24 14:59:51 -07002 *
3 * Redistribution and use in source and binary forms, with or without
4 * modification, are permitted provided that the following conditions
5 * are met:
6 * * Redistributions of source code must retain the above copyright
7 * notice, this list of conditions and the following disclaimer.
8 * * Redistributions in binary form must reproduce the above copyright
9 * notice, this list of conditions and the following disclaimer in
10 * the documentation and/or other materials provided with the
11 * distribution.
12 * * Neither the name of The Linux Foundation nor the names of its
13 * contributors may be used to endorse or promote products derived
14 * from this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
19 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
20 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
22 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
23 * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
24 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
25 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
26 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27 * SUCH DAMAGE.
28 */
29
30#ifndef _PANEL_DISPLAY_H_
31#define _PANEL_DISPLAY_H_
32
33/*---------------------------------------------------------------------------*/
34/* MACRO definition */
35/*---------------------------------------------------------------------------*/
36
37#define BPP_16 16
38#define BPP_18 18
39#define BPP_24 24
40
41#define TIMING_SIZE 48
Padmanabhan Komanduruc570f302018-04-30 09:32:31 +053042#define TIMING_SIZE_12NM 32
Padmanabhan Komandurub088f922014-10-28 23:55:20 +053043#define REGULATOR_SIZE 28
Dhaval Patelee8675a2013-10-25 10:07:57 -070044
45#define DUAL_DSI_FLAG 0x1
46#define DUAL_PIPE_FLAG 0x2
47#define PIPE_SWAP_FLAG 0x4
48#define SPLIT_DISPLAY_FLAG 0x8
Vineet Bajaj4effb132014-07-24 16:55:41 +053049#define DST_SPLIT_FLAG 0x10
Padmanabhan Komanduruc0766c82015-04-27 16:39:15 -070050#define USE_DSI1_PLL_FLAG 0x20
Dhaval Patel551f7f62014-02-18 17:13:00 -080051
52#define MAX_PANEL_ID_LEN 64
Siddhartha Agrawalfe64dcb2014-10-07 12:41:01 -070053#include "panel.h"
Arpita Banerjee841fa062013-05-24 14:59:51 -070054/*---------------------------------------------------------------------------*/
55/* struct definition */
56/*---------------------------------------------------------------------------*/
Ujwal Patel41a665a2015-07-17 13:51:30 -070057struct panel_struct {
Casey Piper5197f932013-08-14 17:27:29 -070058 struct panel_config *paneldata;
59 struct panel_resolution *panelres;
60 struct color_info *color;
61 struct videopanel_info *videopanel;
62 struct commandpanel_info *commandpanel;
63 struct command_state *state;
64 struct lane_configuration *laneconfig;
65 struct panel_timing *paneltiminginfo;
66 struct panel_reset_sequence *panelresetseq;
67 struct backlight *backlightinfo;
Siddhartha Agrawalfe64dcb2014-10-07 12:41:01 -070068 struct fb_compression fbcinfo;
Ujwal Patel41a665a2015-07-17 13:51:30 -070069 struct topology_config *config;
Arpita Banerjee841fa062013-05-24 14:59:51 -070070};
71
Dhaval Patel551f7f62014-02-18 17:13:00 -080072struct panel_list {
73 char name[MAX_PANEL_ID_LEN];
74 uint32_t id;
75};
Arpita Banerjee841fa062013-05-24 14:59:51 -070076
77/*---------------------------------------------------------------------------*/
78/* API */
79/*---------------------------------------------------------------------------*/
80int dsi_panel_init(struct msm_panel_info *pinfo,
81 struct panel_struct *pstruct);
82
Dhaval Patelb22f1bc2013-10-25 13:56:26 -070083int dsi_panel_pre_on();
84int dsi_panel_post_on();
85int dsi_panel_pre_off();
86int dsi_panel_post_off();
Arpita Banerjee841fa062013-05-24 14:59:51 -070087int dsi_panel_rotation();
88int dsi_panel_config(void *);
89
90/* This should be implemented by oem */
91int oem_panel_rotation();
92int oem_panel_on();
93int oem_panel_off();
94
Dhaval Patel551f7f62014-02-18 17:13:00 -080095/* OEM support API */
96int32_t panel_name_to_id(struct panel_list supp_panels[],
97 uint32_t supp_panels_size, const char *panel_name);
Arpita Banerjee841fa062013-05-24 14:59:51 -070098#endif /*_PLATFORM_DISPLAY_H_ */