.. | .. |
---|
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; |
---|