]> Git Repo - linux.git/blob - drivers/gpu/drm/meson/meson_dw_mipi_dsi.h
Linux 6.14-rc3
[linux.git] / drivers / gpu / drm / meson / meson_dw_mipi_dsi.h
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 /*
3  * Copyright (C) 2020 BayLibre, SAS
4  * Author: Neil Armstrong <[email protected]>
5  * Copyright (C) 2018 Amlogic, Inc. All rights reserved.
6  */
7
8 #ifndef __MESON_DW_MIPI_DSI_H
9 #define __MESON_DW_MIPI_DSI_H
10
11 /* Top-level registers */
12 /* [31: 4]    Reserved.     Default 0.
13  *     [3] RW timing_rst_n: Default 1.
14  *              1=Assert SW reset of timing feature.   0=Release reset.
15  *     [2] RW dpi_rst_n: Default 1.
16  *              1=Assert SW reset on mipi_dsi_host_dpi block.   0=Release reset.
17  *     [1] RW intr_rst_n: Default 1.
18  *              1=Assert SW reset on mipi_dsi_host_intr block.  0=Release reset.
19  *     [0] RW dwc_rst_n:  Default 1.
20  *              1=Assert SW reset on IP core.   0=Release reset.
21  */
22 #define MIPI_DSI_TOP_SW_RESET                      0x3c0
23
24 #define MIPI_DSI_TOP_SW_RESET_DWC       BIT(0)
25 #define MIPI_DSI_TOP_SW_RESET_INTR      BIT(1)
26 #define MIPI_DSI_TOP_SW_RESET_DPI       BIT(2)
27 #define MIPI_DSI_TOP_SW_RESET_TIMING    BIT(3)
28
29 /* [31: 5] Reserved.   Default 0.
30  *     [4] RW manual_edpihalt: Default 0.
31  *              1=Manual suspend VencL; 0=do not suspend VencL.
32  *     [3] RW auto_edpihalt_en: Default 0.
33  *              1=Enable IP's edpihalt signal to suspend VencL;
34  *              0=IP's edpihalt signal does not affect VencL.
35  *     [2] RW clock_freerun: Apply to auto-clock gate only. Default 0.
36  *              0=Default, use auto-clock gating to save power;
37  *              1=use free-run clock, disable auto-clock gating, for debug mode.
38  *     [1] RW enable_pixclk: A manual clock gate option, due to DWC IP does not
39  *              have auto-clock gating. 1=Enable pixclk.      Default 0.
40  *     [0] RW enable_sysclk: A manual clock gate option, due to DWC IP does not
41  *              have auto-clock gating. 1=Enable sysclk.      Default 0.
42  */
43 #define MIPI_DSI_TOP_CLK_CNTL                      0x3c4
44
45 #define MIPI_DSI_TOP_CLK_SYSCLK_EN      BIT(0)
46 #define MIPI_DSI_TOP_CLK_PIXCLK_EN      BIT(1)
47
48 /* [31:24]    Reserved. Default 0.
49  * [23:20] RW dpi_color_mode: Define DPI pixel format. Default 0.
50  *              0=16-bit RGB565 config 1;
51  *              1=16-bit RGB565 config 2;
52  *              2=16-bit RGB565 config 3;
53  *              3=18-bit RGB666 config 1;
54  *              4=18-bit RGB666 config 2;
55  *              5=24-bit RGB888;
56  *              6=20-bit YCbCr 4:2:2;
57  *              7=24-bit YCbCr 4:2:2;
58  *              8=16-bit YCbCr 4:2:2;
59  *              9=30-bit RGB;
60  *              10=36-bit RGB;
61  *              11=12-bit YCbCr 4:2:0.
62  *    [19] Reserved. Default 0.
63  * [18:16] RW in_color_mode:  Define VENC data width. Default 0.
64  *              0=30-bit pixel;
65  *              1=24-bit pixel;
66  *              2=18-bit pixel, RGB666;
67  *              3=16-bit pixel, RGB565.
68  * [15:14] RW chroma_subsample: Define method of chroma subsampling. Default 0.
69  *              Applicable to YUV422 or YUV420 only.
70  *              0=Use even pixel's chroma;
71  *              1=Use odd pixel's chroma;
72  *              2=Use averaged value between even and odd pair.
73  * [13:12] RW comp2_sel:  Select which component to be Cr or B: Default 2.
74  *              0=comp0; 1=comp1; 2=comp2.
75  * [11:10] RW comp1_sel:  Select which component to be Cb or G: Default 1.
76  *              0=comp0; 1=comp1; 2=comp2.
77  *  [9: 8] RW comp0_sel:  Select which component to be Y  or R: Default 0.
78  *              0=comp0; 1=comp1; 2=comp2.
79  *     [7]    Reserved. Default 0.
80  *     [6] RW de_pol:  Default 0.
81  *              If DE input is active low, set to 1 to invert to active high.
82  *     [5] RW hsync_pol: Default 0.
83  *              If HS input is active low, set to 1 to invert to active high.
84  *     [4] RW vsync_pol: Default 0.
85  *              If VS input is active low, set to 1 to invert to active high.
86  *     [3] RW dpicolorm: Signal to IP.   Default 0.
87  *     [2] RW dpishutdn: Signal to IP.   Default 0.
88  *     [1]    Reserved.  Default 0.
89  *     [0]    Reserved.  Default 0.
90  */
91 #define MIPI_DSI_TOP_CNTL                          0x3c8
92
93 /* VENC data width */
94 #define VENC_IN_COLOR_30B   0x0
95 #define VENC_IN_COLOR_24B   0x1
96 #define VENC_IN_COLOR_18B   0x2
97 #define VENC_IN_COLOR_16B   0x3
98
99 /* DPI pixel format */
100 #define DPI_COLOR_16BIT_CFG_1           0
101 #define DPI_COLOR_16BIT_CFG_2           1
102 #define DPI_COLOR_16BIT_CFG_3           2
103 #define DPI_COLOR_18BIT_CFG_1           3
104 #define DPI_COLOR_18BIT_CFG_2           4
105 #define DPI_COLOR_24BIT                 5
106 #define DPI_COLOR_20BIT_YCBCR_422       6
107 #define DPI_COLOR_24BIT_YCBCR_422       7
108 #define DPI_COLOR_16BIT_YCBCR_422       8
109 #define DPI_COLOR_30BIT                 9
110 #define DPI_COLOR_36BIT                 10
111 #define DPI_COLOR_12BIT_YCBCR_420       11
112
113 #define MIPI_DSI_TOP_DPI_COLOR_MODE     GENMASK(23, 20)
114 #define MIPI_DSI_TOP_IN_COLOR_MODE      GENMASK(18, 16)
115 #define MIPI_DSI_TOP_CHROMA_SUBSAMPLE   GENMASK(15, 14)
116 #define MIPI_DSI_TOP_COMP2_SEL          GENMASK(13, 12)
117 #define MIPI_DSI_TOP_COMP1_SEL          GENMASK(11, 10)
118 #define MIPI_DSI_TOP_COMP0_SEL          GENMASK(9, 8)
119 #define MIPI_DSI_TOP_DE_INVERT          BIT(6)
120 #define MIPI_DSI_TOP_HSYNC_INVERT       BIT(5)
121 #define MIPI_DSI_TOP_VSYNC_INVERT       BIT(4)
122 #define MIPI_DSI_TOP_DPICOLORM          BIT(3)
123 #define MIPI_DSI_TOP_DPISHUTDN          BIT(2)
124
125 #define MIPI_DSI_TOP_SUSPEND_CNTL                  0x3cc
126 #define MIPI_DSI_TOP_SUSPEND_LINE                  0x3d0
127 #define MIPI_DSI_TOP_SUSPEND_PIX                   0x3d4
128 #define MIPI_DSI_TOP_MEAS_CNTL                     0x3d8
129 /* [0] R  stat_edpihalt:  edpihalt signal from IP.    Default 0. */
130 #define MIPI_DSI_TOP_STAT                          0x3dc
131 #define MIPI_DSI_TOP_MEAS_STAT_TE0                 0x3e0
132 #define MIPI_DSI_TOP_MEAS_STAT_TE1                 0x3e4
133 #define MIPI_DSI_TOP_MEAS_STAT_VS0                 0x3e8
134 #define MIPI_DSI_TOP_MEAS_STAT_VS1                 0x3ec
135 /* [31:16] RW intr_stat/clr. Default 0.
136  *              For each bit, read as this interrupt level status,
137  *              write 1 to clear.
138  * [31:22] Reserved
139  * [   21] stat/clr of eof interrupt
140  * [   21] vde_fall interrupt
141  * [   19] stat/clr of de_rise interrupt
142  * [   18] stat/clr of vs_fall interrupt
143  * [   17] stat/clr of vs_rise interrupt
144  * [   16] stat/clr of dwc_edpite interrupt
145  * [15: 0] RW intr_enable. Default 0.
146  *              For each bit, 1=enable this interrupt, 0=disable.
147  *      [15: 6] Reserved
148  *      [    5] eof interrupt
149  *      [    4] de_fall interrupt
150  *      [    3] de_rise interrupt
151  *      [    2] vs_fall interrupt
152  *      [    1] vs_rise interrupt
153  *      [    0] dwc_edpite interrupt
154  */
155 #define MIPI_DSI_TOP_INTR_CNTL_STAT                0x3f0
156 // 31: 2    Reserved.   Default 0.
157 //  1: 0 RW mem_pd.     Default 3.
158 #define MIPI_DSI_TOP_MEM_PD                        0x3f4
159
160 #endif /* __MESON_DW_MIPI_DSI_H */
This page took 0.04146 seconds and 4 git commands to generate.