| .. | .. |
|---|
| 18 | 18 | |
|---|
| 19 | 19 | /* Test Code: 0x44 (HS RX Control of Lane 0) */ |
|---|
| 20 | 20 | #define HSFREQRANGE(x) UPDATE(x, 6, 1) |
|---|
| 21 | +#define HSTX(x) UPDATE(x, 6, 0) |
|---|
| 22 | +#define HSZERO(x) UPDATE(x, 5, 0) |
|---|
| 23 | +#define HSPOST(x) UPDATE(x, 4, 0) |
|---|
| 21 | 24 | |
|---|
| 22 | 25 | static inline void testif_testclk_assert(struct rk628 *rk628) |
|---|
| 23 | 26 | { |
|---|
| .. | .. |
|---|
| 189 | 192 | testif_write(rk628, 0x44, HSFREQRANGE(hsfreqrange)); |
|---|
| 190 | 193 | } |
|---|
| 191 | 194 | |
|---|
| 195 | +static void __maybe_unused mipi_dphy_init_hsmanual(struct rk628 *rk628, bool manual) |
|---|
| 196 | +{ |
|---|
| 197 | + if (manual) { |
|---|
| 198 | + //config mipi timing when mipi freq is 1250Mbps |
|---|
| 199 | + testif_write(rk628, 0x71, HSTX(0x4a) | BIT(7)); |
|---|
| 200 | + usleep_range(1500, 2000); |
|---|
| 201 | + testif_write(rk628, 0x72, HSZERO(0xf) | BIT(6)); |
|---|
| 202 | + usleep_range(1500, 2000); |
|---|
| 203 | + testif_write(rk628, 0x73, HSTX(0x5d) | BIT(7)); |
|---|
| 204 | + usleep_range(1500, 2000); |
|---|
| 205 | + testif_write(rk628, 0x61, HSTX(0x3a) | BIT(7)); |
|---|
| 206 | + usleep_range(1500, 2000); |
|---|
| 207 | + testif_write(rk628, 0x62, HSZERO(0x3a) | BIT(6)); |
|---|
| 208 | + usleep_range(1500, 2000); |
|---|
| 209 | + testif_write(rk628, 0x63, HSTX(0x5a) | BIT(7)); |
|---|
| 210 | + usleep_range(1500, 2000); |
|---|
| 211 | + testif_write(rk628, 0x65, HSPOST(0x1f) | BIT(5)); |
|---|
| 212 | + } else { |
|---|
| 213 | + testif_write(rk628, 0x71, 0); |
|---|
| 214 | + usleep_range(1500, 2000); |
|---|
| 215 | + testif_write(rk628, 0x72, 0); |
|---|
| 216 | + usleep_range(1500, 2000); |
|---|
| 217 | + testif_write(rk628, 0x73, 0); |
|---|
| 218 | + usleep_range(1500, 2000); |
|---|
| 219 | + testif_write(rk628, 0x61, 0); |
|---|
| 220 | + usleep_range(1500, 2000); |
|---|
| 221 | + testif_write(rk628, 0x62, 0); |
|---|
| 222 | + usleep_range(1500, 2000); |
|---|
| 223 | + testif_write(rk628, 0x63, 0); |
|---|
| 224 | + usleep_range(1500, 2000); |
|---|
| 225 | + testif_write(rk628, 0x65, 0); |
|---|
| 226 | + } |
|---|
| 227 | +} |
|---|
| 228 | + |
|---|
| 192 | 229 | static inline int mipi_dphy_reset(struct rk628 *rk628) |
|---|
| 193 | 230 | { |
|---|
| 194 | 231 | u32 val, mask; |
|---|