1 /*
2  * mipi_dsi_define.h
3  *
4  * hi35xx mipi_tx driver implement.
5  *
6  * Copyright (c) 2020-2021 Huawei Device Co., Ltd.
7  *
8  * This software is licensed under the terms of the GNU General Public
9  * License version 2, as published by the Free Software Foundation, and
10  * may be copied, distributed, and modified under those terms.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  */
18 
19 #ifndef MIPI_DSI_DEFINE_H
20 #define MIPI_DSI_DEFINE_H
21 
22 #define CMD_MAX_NUM    4
23 #define LANE_MAX_NUM   4
24 #define MIPI_TX_DISABLE_LANE_ID (-1)
25 #define MIPI_TX_SET_DATA_SIZE 800
26 #define MIPI_TX_GET_DATA_SIZE 160
27 
28 typedef enum {
29     OUTPUT_MODE_CSI            = 0x0, /* csi mode */
30     OUTPUT_MODE_DSI_VIDEO      = 0x1, /* dsi video mode */
31     OUTPUT_MODE_DSI_CMD        = 0x2, /* dsi command mode */
32 
33     OUTPUT_MODE_BUTT
34 } OutPutModeTag;
35 
36 typedef enum {
37     BURST_MODE                      = 0x0,
38     NON_BURST_MODE_SYNC_PULSES      = 0x1,
39     NON_BURST_MODE_SYNC_EVENTS      = 0x2,
40 
41     VIDEO_DATA_MODE_BUTT
42 } VideoModeTag;
43 
44 typedef enum {
45     OUT_FORMAT_RGB_16_BIT          = 0x0,
46     OUT_FORMAT_RGB_18_BIT          = 0x1,
47     OUT_FORMAT_RGB_24_BIT          = 0x2,
48     OUT_FORMAT_YUV420_8_BIT_NORMAL = 0x3,
49     OUT_FORMAT_YUV420_8_BIT_LEGACY = 0x4,
50     OUT_FORMAT_YUV422_8_BIT        = 0x5,
51 
52     OUT_FORMAT_BUTT
53 } OutputFormatTag;
54 
55 typedef struct {
56     unsigned short  vidPktSize;
57     unsigned short  vidHsaPixels;
58     unsigned short  vidHbpPixels;
59     unsigned short  vidHlinePixels;
60     unsigned short  vidVsaLines;
61     unsigned short  vidVbpLines;
62     unsigned short  vidVfpLines;
63     unsigned short  vidActiveLines;
64     unsigned short  edpiCmdSize;
65 } SyncInfoTag;
66 
67 typedef struct {
68     unsigned int    devno;                /* device number */
69     short           laneId[LANE_MAX_NUM]; /* lane_id: -1 - disable */
70     OutPutModeTag   outputMode;           /* output mode: CSI/DSI_VIDEO/DSI_CMD */
71     VideoModeTag    videoMode;
72     OutputFormatTag outputFormat;
73     SyncInfoTag     syncInfo;
74     unsigned int    phyDataRate;          /* mbps */
75     unsigned int    pixelClk;             /* KHz */
76 } ComboDevCfgTag;
77 
78 typedef struct {
79     unsigned int    devno;                /* device number */
80     unsigned short  dataType;
81     unsigned short  cmdSize;
82     unsigned char   *cmd;
83 } CmdInfoTag;
84 
85 typedef struct {
86     unsigned int    devno;                 /* device number */
87     unsigned short  dataType;              /* DSI data type */
88     unsigned short  dataParam;             /* data param,low 8 bit:1st param.high 8 bit:2nt param, set 0 if not use */
89     unsigned short  getDataSize;           /* read data size */
90     unsigned char   *getData;              /* read data memory address, should  malloc by user */
91 } GetCmdInfoTag;
92 
93 #endif /* MIPI_DSI_DEFINE_H */
94