1 #ifndef __RKCAMSYS_SOC_RK3399_H__
2 #define __RKCAMSYS_SOC_RK3399_H__
4 #include "camsys_internal.h"
7 #define MRV_MIPI_BASE 0x1C00
8 #define MRV_MIPI_CTRL 0x00
11 *#define CSIHOST_PHY_TEST_CTRL0_OFFSET 0x0030
12 #define DPHY_TX1RX1_TESTCLR (1<<0)
13 #define DPHY_TX1RX1_TESTCLK (1<<1)
15 #define CSIHOST_PHY_TEST_CTRL1_OFFSET 0x0034
16 #define DPHY_TX1RX1_TESTDIN_OFFSET_BITS (0)
17 #define DPHY_TX1RX1_TESTDOUT_OFFSET_BITS (8)
18 #define DPHY_TX1RX1_TESTEN (16)
21 #define GRF_SOC_STATUS21 (0x2D4)
23 #define CSIHOST_PHY_TEST_CTRL0 (0x30)
24 #define CSIHOST_PHY_TEST_CTRL1 (0x34)
25 #define CSIHOST_N_LANES (0x04)
26 #define CSIHOST_PHY_SHUTDOWNZ (0x08)
27 #define CSIHOST_CSI2_RESETN (0x10)
28 #define CSIHOST_DPHY_RSTZ (0x0c)
29 #define CSIHOST_PHY_STATE (0x14)
30 #define CSIHOST_DATA_IDS1 (0x18)
31 #define CSIHOST_DATA_IDS2 (0x1C)
32 #define CSIHOST_ERR1 (0x20)
33 #define CSIHOST_ERR2 (0x24)
37 *dphy_rx_forcerxmode 11:8
38 *isp_mipi_csi_host_sel:1
40 *bit 0 grf_con_disable_isp
41 *bit 1 isp_mipi_csi_host_sel 1'b0: mipi csi host
43 #define GRF_SOC_CON6_OFFSET (0x0418)
45 #define MIPI_PHY_DISABLE_ISP_MASK (0x1 << 16)
46 #define MIPI_PHY_DISABLE_ISP (0x0 << 0)
48 #define ISP_MIPI_CSI_HOST_SEL_OFFSET_MASK (0x1 << 17)
49 #define ISP_MIPI_CSI_HOST_SEL_OFFSET_BIT (0x1)
51 #define DPHY_RX_CLK_INV_SEL_MASK (0x1 << 22)
52 #define DPHY_RX_CLK_INV_SEL (0x1 << 6)
54 #define DPHY_RX_FORCERXMODE_OFFSET_MASK (0xF << 24)
55 #define DPHY_RX_FORCERXMODE_OFFSET_BITS (8)
58 /*dphy_tx0_forcerxmode*/
59 #define GRF_SOC_CON7_OFFSET (0x041c)
61 #define FORCETXSTOPMODE_OFFSET_BITS (7)
62 #define FORCETXSTOPMODE_MASK (0xF << 23)
64 #define DPHY_TX0_FORCERXMODE (6)
65 #define DPHY_TX0_FORCERXMODE_MASK (0x01 << 22)
67 #define LANE0_TURNDISABLE_BITS (5)
68 #define LANE0_TURNDISABLE_MASK (0x01 << 21)
70 #define GRF_SOC_STATUS13 (0x04b4)
72 #define GRF_SOC_CON9_OFFSET (0x6224)
73 #define DPHY_RX0_TURNREQUEST_MASK (0xF << 16)
74 #define DPHY_RX0_TURNREQUEST_BIT (0)
76 #define GRF_SOC_CON21_OFFSET (0x6254)
77 #define DPHY_RX0_FORCERXMODE_MASK (0xF << 20)
78 #define DPHY_RX0_FORCERXMODE_BIT (4)
79 #define DPHY_RX0_FORCETXSTOPMODE_MASK (0xF << 24)
80 #define DPHY_RX0_FORCETXSTOPMODE_BIT (8)
81 #define DPHY_RX0_TURNDISABLE_MASK (0xF << 28)
82 #define DPHY_RX0_TURNDISABLE_BIT (12)
83 #define DPHY_RX0_ENABLE_MASK (0xF << 16)
84 #define DPHY_RX0_ENABLE_BIT (0)
86 #define GRF_SOC_CON23_OFFSET (0x625c)
87 #define DPHY_TX1RX1_TURNDISABLE_MASK (0xF << 28)
88 #define DPHY_TX1RX1_TURNDISABLE_BIT (12)
89 #define DPHY_TX1RX1_FORCERXMODE_MASK (0xF << 20)
90 #define DPHY_TX1RX1_FORCERXMODE_BIT (4)
91 #define DPHY_TX1RX1_FORCETXSTOPMODE_MASK (0xF << 24)
92 #define DPHY_TX1RX1_FORCETXSTOPMODE_BIT (8)
93 #define DPHY_TX1RX1_ENABLE_MASK (0xF << 16)
94 #define DPHY_TX1RX1_ENABLE_BIT (0)
96 #define GRF_SOC_CON24_OFFSET (0x6260)
97 #define DPHY_TX1RX1_MASTERSLAVEZ_MASK (0x1 << 23)
98 #define DPHY_TX1RX1_MASTERSLAVEZ_BIT (7)
99 #define DPHY_TX1RX1_BASEDIR_MASK (0x1 << 21)
100 #define DPHY_TX1RX1_BASEDIR_BIT (5)
101 #define DPHY_RX1_MASK (0x1 << 20)
102 #define DPHY_RX1_SEL_BIT (4)
104 #define DPHY_TX1RX1_TURNREQUEST_MASK (0xF << 16)
105 #define DPHY_TX1RX1_TURNREQUEST_BIT (0)
107 #define GRF_SOC_CON25_OFFSET (0x6264)
108 #define DPHY_RX0_TESTCLK_MASK (0x1 << 25)
109 #define DPHY_RX0_TESTCLK_BIT (9)
110 #define DPHY_RX0_TESTCLR_MASK (0x1 << 26)
111 #define DPHY_RX0_TESTCLR_BIT (10)
112 #define DPHY_RX0_TESTDIN_MASK (0xFF << 16)
113 #define DPHY_RX0_TESTDIN_BIT (0)
114 #define DPHY_RX0_TESTEN_MASK (0x1 << 24)
115 #define DPHY_RX0_TESTEN_BIT (8)
117 /*dphy_rx_rxclkactivehs*/
118 /*dphy_rx_direction*/
119 /*dphy_rx_ulpsactivenot_0...3*/
121 /*LOW POWER MODE SET*/
123 #define MIPI_CSI_DPHY_CTRL_LANE_ENABLE_OFFSET (0x00)
124 #define MIPI_CSI_DPHY_CTRL_LANE_ENABLE_OFFSET_BIT (2)
126 #define MIPI_CSI_DPHY_CTRL_PWRCTL_OFFSET (0x04)
127 #define MIPI_CSI_DPHY_CTRL_DIG_RST_OFFSET (0x80)
128 #define MIPI_CSI_DPHY_CTRL_SIG_INV_OFFSET (0x84)
130 /*Configure the count time of the THS-SETTLE by protocol.*/
131 #define MIPI_CSI_DPHY_LANEX_THS_SETTLE_OFFSET (0x00)
132 /*MSB enable for pin_rxdatahs_
136 #define MIPI_CSI_DPHY_LANEX_MSB_EN_OFFSET (0x38)
138 #define CSIHOST_N_LANES_OFFSET 0x04
139 #define CSIHOST_N_LANES_OFFSET_BIT (0)
141 #define DSIHOST_PHY_SHUTDOWNZ (0x00a0)
142 #define DSIHOST_DPHY_RSTZ (0x00a0)
143 #define DSIHOST_PHY_TEST_CTRL0 (0x00b4)
144 #define DSIHOST_PHY_TEST_CTRL1 (0x00b8)
146 #define write_grf_reg(addr, val) \
147 __raw_writel(val, (void *)(addr + para->camsys_dev->rk_grf_base))
148 #define read_grf_reg(addr) \
149 __raw_readl((void *)(addr + para->camsys_dev->rk_grf_base))
150 #define mask_grf_reg(addr, msk, val) \
151 write_grf_reg(addr, (val) | ((~(msk)) & read_grf_reg(addr)))
153 #define write_cru_reg(addr, val) \
154 __raw_writel(val, (void *)(addr + para->camsys_dev->rk_cru_base))
156 /*#define cru_writel(v, o) do {writel(v, RK_CRU_VIRT + (o)); dsb();} \
160 #define write_csihost_reg(addr, val) \
161 __raw_writel(val, (void *)(addr + phy_virt))
162 #define read_csihost_reg(addr) \
163 __raw_readl((void *)(addr + phy_virt))
165 #define write_csiphy_reg(addr, val) \
166 __raw_writel(val, (void *)(addr + csiphy_virt))
167 #define read_csiphy_reg(addr) \
168 __raw_readl((void *)(addr + csiphy_virt))
170 #define write_dsihost_reg(addr, val) \
171 __raw_writel(val, (void *)(addr + dsiphy_virt))
172 #define read_dsihost_reg(addr) \
173 __raw_readl((void *)(addr + dsiphy_virt))