| .. | .. |
|---|
| 41 | 41 | bool dv_swp_ab; |
|---|
| 42 | 42 | bool dpi_deskew_en; |
|---|
| 43 | 43 | bool split_mode; |
|---|
| 44 | + bool bridge_dual_link; |
|---|
| 44 | 45 | u32 dsi_lane_map[4]; |
|---|
| 45 | 46 | |
|---|
| 46 | 47 | struct { |
|---|
| .. | .. |
|---|
| 283 | 284 | |
|---|
| 284 | 285 | static void max96755f_bridge_reset_oneshot(struct max96755f_bridge *ser) |
|---|
| 285 | 286 | { |
|---|
| 286 | | - regmap_update_bits(ser->regmap, 0x10, RESET_ONESHOT, |
|---|
| 287 | + regmap_update_bits(ser->regmap, 0x0010, RESET_ONESHOT, |
|---|
| 287 | 288 | FIELD_PREP(RESET_ONESHOT, 1)); |
|---|
| 288 | 289 | |
|---|
| 289 | 290 | mdelay(100); |
|---|
| .. | .. |
|---|
| 324 | 325 | FIELD_PREP(START_PORTAY, 1)); |
|---|
| 325 | 326 | regmap_update_bits(ser->regmap, 0x02, VID_TX_EN_X, |
|---|
| 326 | 327 | FIELD_PREP(VID_TX_EN_X, 1)); |
|---|
| 328 | + if (ser->bridge_dual_link) { |
|---|
| 329 | + regmap_update_bits(ser->regmap, 0x0010, |
|---|
| 330 | + AUTO_LINK | LINK_CFG, |
|---|
| 331 | + FIELD_PREP(AUTO_LINK, 0) | |
|---|
| 332 | + FIELD_PREP(LINK_CFG, DUAL_LINK)); |
|---|
| 333 | + } |
|---|
| 327 | 334 | } |
|---|
| 328 | 335 | |
|---|
| 329 | 336 | max96755f_bridge_reset_oneshot(ser); |
|---|
| .. | .. |
|---|
| 358 | 365 | FIELD_PREP(VID_TX_EN_X, 0) | |
|---|
| 359 | 366 | FIELD_PREP(VID_TX_EN_Y, 0)); |
|---|
| 360 | 367 | |
|---|
| 361 | | - if (ser->split_mode) |
|---|
| 368 | + if (ser->split_mode || ser->bridge_dual_link) |
|---|
| 362 | 369 | regmap_update_bits(ser->regmap, 0x0010, |
|---|
| 363 | 370 | AUTO_LINK | LINK_CFG, |
|---|
| 364 | 371 | FIELD_PREP(AUTO_LINK, 1) | |
|---|
| .. | .. |
|---|
| 487 | 494 | static int max96755f_bridge_probe(struct platform_device *pdev) |
|---|
| 488 | 495 | { |
|---|
| 489 | 496 | struct device *dev = &pdev->dev; |
|---|
| 497 | + struct device_node *np = dev->of_node; |
|---|
| 490 | 498 | struct max96755f_bridge *ser; |
|---|
| 491 | 499 | int ret; |
|---|
| 492 | 500 | |
|---|
| .. | .. |
|---|
| 529 | 537 | if (ret) |
|---|
| 530 | 538 | return dev_err_probe(dev, ret, "failed to request lock IRQ\n"); |
|---|
| 531 | 539 | |
|---|
| 540 | + ser->bridge_dual_link = of_property_read_bool(np, "bridge_dual_link"); |
|---|
| 541 | + |
|---|
| 532 | 542 | ser->bridge.funcs = &max96755f_bridge_funcs; |
|---|
| 533 | 543 | ser->bridge.of_node = dev->of_node; |
|---|
| 534 | 544 | ser->bridge.ops = DRM_BRIDGE_OP_DETECT; |
|---|