hc
2023-12-11 6778948f9de86c3cfaf36725a7c87dcff9ba247f
kernel/drivers/gpu/drm/bridge/maxim-max96755f.c
....@@ -41,6 +41,7 @@
4141 bool dv_swp_ab;
4242 bool dpi_deskew_en;
4343 bool split_mode;
44
+ bool bridge_dual_link;
4445 u32 dsi_lane_map[4];
4546
4647 struct {
....@@ -283,7 +284,7 @@
283284
284285 static void max96755f_bridge_reset_oneshot(struct max96755f_bridge *ser)
285286 {
286
- regmap_update_bits(ser->regmap, 0x10, RESET_ONESHOT,
287
+ regmap_update_bits(ser->regmap, 0x0010, RESET_ONESHOT,
287288 FIELD_PREP(RESET_ONESHOT, 1));
288289
289290 mdelay(100);
....@@ -324,6 +325,12 @@
324325 FIELD_PREP(START_PORTAY, 1));
325326 regmap_update_bits(ser->regmap, 0x02, VID_TX_EN_X,
326327 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
+ }
327334 }
328335
329336 max96755f_bridge_reset_oneshot(ser);
....@@ -358,7 +365,7 @@
358365 FIELD_PREP(VID_TX_EN_X, 0) |
359366 FIELD_PREP(VID_TX_EN_Y, 0));
360367
361
- if (ser->split_mode)
368
+ if (ser->split_mode || ser->bridge_dual_link)
362369 regmap_update_bits(ser->regmap, 0x0010,
363370 AUTO_LINK | LINK_CFG,
364371 FIELD_PREP(AUTO_LINK, 1) |
....@@ -487,6 +494,7 @@
487494 static int max96755f_bridge_probe(struct platform_device *pdev)
488495 {
489496 struct device *dev = &pdev->dev;
497
+ struct device_node *np = dev->of_node;
490498 struct max96755f_bridge *ser;
491499 int ret;
492500
....@@ -529,6 +537,8 @@
529537 if (ret)
530538 return dev_err_probe(dev, ret, "failed to request lock IRQ\n");
531539
540
+ ser->bridge_dual_link = of_property_read_bool(np, "bridge_dual_link");
541
+
532542 ser->bridge.funcs = &max96755f_bridge_funcs;
533543 ser->bridge.of_node = dev->of_node;
534544 ser->bridge.ops = DRM_BRIDGE_OP_DETECT;