From 396c3acc0197e5a362199f7c2ebcf14659364e17 Mon Sep 17 00:00:00 2001 From: Vara Reddy Date: Wed, 14 Apr 2021 18:02:40 -0700 Subject: [PATCH] disp: msm: dp: update number of lanes used to usb driver This change fixes issue, where USB driver was not properly updated with the number of dp lanes being used for altmode usecase. Change-Id: Ic93d3e3b37aa8ad2d664e006ede3cf6c27d7133a Signed-off-by: Vara Reddy --- msm/dp/dp_altmode.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/msm/dp/dp_altmode.c b/msm/dp/dp_altmode.c index 98d3a1e98e..b6df1b5e76 100644 --- a/msm/dp/dp_altmode.c +++ b/msm/dp/dp_altmode.c @@ -28,6 +28,7 @@ struct dp_altmode_private { struct dp_altmode dp_altmode; struct altmode_client *amclient; bool connected; + u32 lanes; }; enum dp_altmode_pin_assignment { @@ -47,7 +48,6 @@ static int dp_altmode_set_usb_dp_mode(struct dp_altmode_private *altmode) struct device_node *usb_node; struct platform_device *usb_pdev; int timeout = 250; - u32 lanes = 4; if (!altmode || !altmode->dev) { DP_ERR("invalid args\n"); @@ -56,9 +56,6 @@ static int dp_altmode_set_usb_dp_mode(struct dp_altmode_private *altmode) np = altmode->dev->of_node; - if (altmode->connected && altmode->dp_altmode.base.force_multi_func) - lanes = 2; - usb_node = of_parse_phandle(np, "usb-controller", 0); if (!usb_node) { DP_ERR("unable to get usb node\n"); @@ -73,7 +70,7 @@ static int dp_altmode_set_usb_dp_mode(struct dp_altmode_private *altmode) } while (timeout) { - rc = dwc3_msm_set_dp_mode(&usb_pdev->dev, altmode->connected, lanes); + rc = dwc3_msm_set_dp_mode(&usb_pdev->dev, altmode->connected, altmode->lanes); if (rc != -EBUSY) break; @@ -167,6 +164,12 @@ static int dp_altmode_notify(void *priv, void *data, size_t len) altmode->connected = true; altmode->dp_altmode.base.alt_mode_cfg_done = true; altmode->forced_disconnect = false; + altmode->lanes = 4; + + if (altmode->dp_altmode.base.multi_func) + altmode->lanes = 2; + + DP_DEBUG("Connected=%d, lanes=%d\n",altmode->connected,altmode->lanes); switch (orientation) { case 0: