hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
/* SPDX-License-Identifier: GPL-2.0 */
/*
 * Copyright (c) 2020 Rockchip Electronics Co. Ltd.
 *
 * Author: Guochun Huang <hero.huang@rock-chips.com>
 */
 
#ifndef RK628_DSI_H
#define RK628_DSI_H
#include "rk628.h"
 
#define DSI0_BASE           0x50000
#define DSI1_BASE           0x60000
 
#define DSI_VERSION            0x0000
#define DSI_PWR_UP            0x0004
#define RESET                0
#define POWER_UP            BIT(0)
#define DSI_CLKMGR_CFG            0x0008
#define TO_CLK_DIVISION(x)        UPDATE(x, 15,  8)
#define TX_ESC_CLK_DIVISION(x)        UPDATE(x,  7,  0)
#define DSI_DPI_VCID            0x000c
#define DPI_VID(x)            UPDATE(x,  1,  0)
#define DSI_DPI_COLOR_CODING        0x0010
#define LOOSELY18_EN            BIT(8)
#define DPI_COLOR_CODING(x)        UPDATE(x,  3,  0)
#define DSI_DPI_CFG_POL            0x0014
#define COLORM_ACTIVE_LOW        BIT(4)
#define SHUTD_ACTIVE_LOW        BIT(3)
#define HSYNC_ACTIVE_LOW        BIT(2)
#define VSYNC_ACTIVE_LOW        BIT(1)
#define DATAEN_ACTIVE_LOW        BIT(0)
#define DSI_DPI_LP_CMD_TIM        0x0018
#define OUTVACT_LPCMD_TIME(x)        UPDATE(x, 23, 16)
#define INVACT_LPCMD_TIME(x)        UPDATE(x,  7,  0)
#define DSI_PCKHDL_CFG            0x002c
#define CRC_RX_EN            BIT(4)
#define ECC_RX_EN            BIT(3)
#define BTA_EN                BIT(2)
#define EOTP_RX_EN            BIT(1)
#define EOTP_TX_EN            BIT(0)
#define DSI_GEN_VCID            0x0030
#define DSI_MODE_CFG            0x0034
#define CMD_VIDEO_MODE(x)        UPDATE(x,  0,  0)
#define DSI_VID_MODE_CFG        0x0038
#define VPG_EN                BIT(16)
#define LP_CMD_EN            BIT(15)
#define FRAME_BTA_ACK_EN        BIT(14)
#define LP_HFP_EN            BIT(13)
#define LP_HBP_EN            BIT(12)
#define LP_VACT_EN            BIT(11)
#define LP_VFP_EN            BIT(10)
#define LP_VBP_EN            BIT(9)
#define LP_VSA_EN            BIT(8)
#define VID_MODE_TYPE(x)        UPDATE(x,  1,  0)
#define DSI_VID_PKT_SIZE        0x003c
#define VID_PKT_SIZE(x)            UPDATE(x, 13,  0)
#define DSI_VID_NUM_CHUNKS        0x0040
#define DSI_VID_NULL_SIZE        0x0044
#define DSI_VID_HSA_TIME        0x0048
#define VID_HSA_TIME(x)            UPDATE(x, 11,  0)
#define DSI_VID_HBP_TIME        0x004c
#define VID_HBP_TIME(x)            UPDATE(x, 11,  0)
#define DSI_VID_HLINE_TIME        0x0050
#define VID_HLINE_TIME(x)        UPDATE(x, 14,  0)
#define DSI_VID_VSA_LINES        0x0054
#define VSA_LINES(x)            UPDATE(x,  9,  0)
#define DSI_VID_VBP_LINES        0x0058
#define VBP_LINES(x)            UPDATE(x,  9,  0)
#define DSI_VID_VFP_LINES        0x005c
#define VFP_LINES(x)            UPDATE(x,  9,  0)
#define DSI_VID_VACTIVE_LINES        0x0060
#define V_ACTIVE_LINES(x)        UPDATE(x, 13,  0)
#define DSI_EDPI_CMD_SIZE        0x0064
#define EDPI_ALLOWED_CMD_SIZE(x)    UPDATE(x, 15,  0)
#define DSI_CMD_MODE_CFG        0x0068
#define MAX_RD_PKT_SIZE            BIT(24)
#define DCS_LW_TX            BIT(19)
#define DCS_SR_0P_TX            BIT(18)
#define DCS_SW_1P_TX            BIT(17)
#define DCS_SW_0P_TX            BIT(16)
#define GEN_LW_TX            BIT(14)
#define GEN_SR_2P_TX            BIT(13)
#define GEN_SR_1P_TX            BIT(12)
#define GEN_SR_0P_TX            BIT(11)
#define GEN_SW_2P_TX            BIT(10)
#define GEN_SW_1P_TX            BIT(9)
#define GEN_SW_0P_TX            BIT(8)
#define ACK_RQST_EN            BIT(1)
#define TEAR_FX_EN            BIT(0)
#define DSI_GEN_HDR            0x006c
#define GEN_WC_MSBYTE(x)        UPDATE(x, 23, 16)
#define GEN_WC_LSBYTE(x)        UPDATE(x, 15,  8)
#define GEN_VC(x)            UPDATE(x,  7,  6)
#define GEN_DT(x)            UPDATE(x,  5,  0)
#define DSI_GEN_PLD_DATA        0x0070
#define DSI_CMD_PKT_STATUS        0x0074
#define GEN_RD_CMD_BUSY            BIT(6)
#define GEN_PLD_R_FULL            BIT(5)
#define GEN_PLD_R_EMPTY            BIT(4)
#define GEN_PLD_W_FULL            BIT(3)
#define GEN_PLD_W_EMPTY            BIT(2)
#define GEN_CMD_FULL            BIT(1)
#define GEN_CMD_EMPTY            BIT(0)
#define DSI_TO_CNT_CFG            0x0078
#define HSTX_TO_CNT(x)            UPDATE(x, 31, 16)
#define LPRX_TO_CNT(x)            UPDATE(x, 15,  0)
#define DSI_HS_RD_TO_CNT        0x007c
#define HS_RD_TO_CNT(x)            UPDATE(x, 15,  0)
#define DSI_LP_RD_TO_CNT        0x0080
#define LP_RD_TO_CNT(x)            UPDATE(x, 15,  0)
#define DSI_HS_WR_TO_CNT        0x0084
#define HS_WR_TO_CNT(x)            UPDATE(x, 15,  0)
#define DSI_LP_WR_TO_CNT        0x0088
#define LP_WR_TO_CNT(x)            UPDATE(x, 15,  0)
#define DSI_BTA_TO_CNT            0x008c
#define BTA_TO_CNT(x)            UPDATE(x, 15,  0)
#define DSI_SDF_3D            0x0090
#define DSI_LPCLK_CTRL            0x0094
#define AUTO_CLKLANE_CTRL        BIT(1)
#define PHY_TXREQUESTCLKHS        BIT(0)
#define DSI_PHY_TMR_LPCLK_CFG        0x0098
#define PHY_CLKHS2LP_TIME(x)        UPDATE(x, 25, 16)
#define PHY_CLKLP2HS_TIME(x)        UPDATE(x,  9,  0)
#define DSI_PHY_TMR_CFG            0x009c
#define PHY_HS2LP_TIME(x)        UPDATE(x, 31, 24)
#define PHY_LP2HS_TIME(x)        UPDATE(x, 23, 16)
#define MAX_RD_TIME(x)            UPDATE(x, 14,  0)
#define DSI_PHY_RSTZ            0x00a0
#define PHY_FORCEPLL            BIT(3)
#define PHY_ENABLECLK            BIT(2)
#define PHY_RSTZ            BIT(1)
#define PHY_SHUTDOWNZ            BIT(0)
#define DSI_PHY_IF_CFG            0x00a4
#define PHY_STOP_WAIT_TIME(x)        UPDATE(x, 15,  8)
#define N_LANES(x)            UPDATE(x,  1,  0)
#define DSI_PHY_STATUS            0x00b0
#define PHY_STOPSTATE3LANE        BIT(11)
#define PHY_STOPSTATE2LANE        BIT(9)
#define PHY_STOPSTATE1LANE        BIT(7)
#define PHY_STOPSTATE0LANE        BIT(4)
#define PHY_STOPSTATECLKLANE        BIT(2)
#define PHY_LOCK            BIT(0)
#define PHY_STOPSTATELANE        (PHY_STOPSTATE0LANE | \
                    PHY_STOPSTATECLKLANE)
#define DSI_INT_ST0            0x00bc
#define DSI_INT_ST1            0x00c0
#define DSI_INT_MSK0            0x00c4
#define DSI_INT_MSK1            0x00c8
#define DSI_INT_FORCE0            0x00d8
#define DSI_INT_FORCE1            0x00dc
#define DSI_MAX_REGISTER        DSI_INT_FORCE1
 
int rk628_dsi_parse(struct rk628 *rk628, struct device_node *dsi_np);
void rk628_mipi_dsi_pre_enable(struct rk628 *rk628);
void rk628_mipi_dsi_enable(struct rk628 *rk628);
void rk628_dsi_disable(struct rk628 *rk628);
#endif