camsys driver: v0.0x21.2: compatible with kernel4.4
[firefly-linux-kernel-4.4.55.git] / drivers / media / video / rk_camsys / camsys_soc_rk3399.h
1 #ifndef __RKCAMSYS_SOC_RK3399_H__
2 #define __RKCAMSYS_SOC_RK3399_H__
3
4 #include "camsys_internal.h"
5
6 /*MARVIN REGISTER*/
7 #define MRV_MIPI_BASE                           0x1C00
8 #define MRV_MIPI_CTRL                           0x00
9
10 /*
11 *#define CSIHOST_PHY_TEST_CTRL0_OFFSET 0x0030
12 #define DPHY_TX1RX1_TESTCLR    (1<<0)
13 #define DPHY_TX1RX1_TESTCLK    (1<<1)
14
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)
19 */
20
21 #define GRF_SOC_STATUS21                  (0x2D4)
22
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)
34
35 /*
36 *GRF_SOC_CON6
37 *dphy_rx_forcerxmode 11:8
38 *isp_mipi_csi_host_sel:1
39 *disable_isp:0
40 *bit 0 grf_con_disable_isp
41 *bit 1 isp_mipi_csi_host_sel  1'b0: mipi csi host
42 */
43 #define GRF_SOC_CON6_OFFSET    (0x0418)
44 /*bit 0*/
45 #define MIPI_PHY_DISABLE_ISP_MASK       (0x1 << 16)
46 #define MIPI_PHY_DISABLE_ISP            (0x0 << 0)
47 /*bit 1*/
48 #define ISP_MIPI_CSI_HOST_SEL_OFFSET_MASK       (0x1 << 17)
49 #define ISP_MIPI_CSI_HOST_SEL_OFFSET_BIT       (0x1)
50 /*bit 6*/
51 #define DPHY_RX_CLK_INV_SEL_MASK  (0x1 << 22)
52 #define DPHY_RX_CLK_INV_SEL   (0x1 << 6)
53 /*bit 11:8*/
54 #define DPHY_RX_FORCERXMODE_OFFSET_MASK     (0xF << 24)
55 #define DPHY_RX_FORCERXMODE_OFFSET_BITS   (8)
56
57 /*GRF_SOC_CON7*/
58 /*dphy_tx0_forcerxmode*/
59 #define GRF_SOC_CON7_OFFSET  (0x041c)
60 /*bit 10:7*/
61 #define FORCETXSTOPMODE_OFFSET_BITS   (7)
62 #define FORCETXSTOPMODE_MASK   (0xF << 23)
63
64 #define DPHY_TX0_FORCERXMODE   (6)
65 #define DPHY_TX0_FORCERXMODE_MASK   (0x01 << 22)
66 /*bit 5*/
67 #define LANE0_TURNDISABLE_BITS  (5)
68 #define LANE0_TURNDISABLE_MASK  (0x01 << 21)
69
70 #define GRF_SOC_STATUS13  (0x04b4)
71
72 #define GRF_SOC_CON9_OFFSET        (0x6224)
73 #define DPHY_RX0_TURNREQUEST_MASK        (0xF << 16)
74 #define DPHY_RX0_TURNREQUEST_BIT         (0)
75
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)
85
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)
95
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)
103
104 #define DPHY_TX1RX1_TURNREQUEST_MASK    (0xF << 16)
105 #define DPHY_TX1RX1_TURNREQUEST_BIT     (0)
106
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)
116
117 /*dphy_rx_rxclkactivehs*/
118 /*dphy_rx_direction*/
119 /*dphy_rx_ulpsactivenot_0...3*/
120
121 /*LOW POWER MODE SET*/
122 /*base*/
123 #define MIPI_CSI_DPHY_CTRL_LANE_ENABLE_OFFSET  (0x00)
124 #define MIPI_CSI_DPHY_CTRL_LANE_ENABLE_OFFSET_BIT  (2)
125
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)
129
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_
133 *1: enable
134 *0: disable
135 */
136 #define MIPI_CSI_DPHY_LANEX_MSB_EN_OFFSET  (0x38)
137
138 #define CSIHOST_N_LANES_OFFSET 0x04
139 #define CSIHOST_N_LANES_OFFSET_BIT (0)
140
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)
145
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)))
152
153 #define write_cru_reg(addr, val)           \
154         __raw_writel(val, (void *)(addr + para->camsys_dev->rk_cru_base))
155
156 /*#define cru_writel(v, o)      do {writel(v, RK_CRU_VIRT + (o)); dsb();} \
157 *                               while (0)
158 */
159
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))
164 /*csi phy*/
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))
169
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))
174
175 #endif