Browse Source

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 <[email protected]>
Vara Reddy 4 years ago
parent
commit
396c3acc01
1 changed files with 8 additions and 5 deletions
  1. 8 5
      msm/dp/dp_altmode.c

+ 8 - 5
msm/dp/dp_altmode.c

@@ -28,6 +28,7 @@ struct dp_altmode_private {
 	struct dp_altmode dp_altmode;
 	struct dp_altmode dp_altmode;
 	struct altmode_client *amclient;
 	struct altmode_client *amclient;
 	bool connected;
 	bool connected;
+	u32 lanes;
 };
 };
 
 
 enum dp_altmode_pin_assignment {
 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 device_node *usb_node;
 	struct platform_device *usb_pdev;
 	struct platform_device *usb_pdev;
 	int timeout = 250;
 	int timeout = 250;
-	u32 lanes = 4;
 
 
 	if (!altmode || !altmode->dev) {
 	if (!altmode || !altmode->dev) {
 		DP_ERR("invalid args\n");
 		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;
 	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);
 	usb_node = of_parse_phandle(np, "usb-controller", 0);
 	if (!usb_node) {
 	if (!usb_node) {
 		DP_ERR("unable to get usb node\n");
 		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) {
 	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)
 		if (rc != -EBUSY)
 			break;
 			break;
 
 
@@ -167,6 +164,12 @@ static int dp_altmode_notify(void *priv, void *data, size_t len)
 		altmode->connected = true;
 		altmode->connected = true;
 		altmode->dp_altmode.base.alt_mode_cfg_done = true;
 		altmode->dp_altmode.base.alt_mode_cfg_done = true;
 		altmode->forced_disconnect = false;
 		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) {
 		switch (orientation) {
 		case 0:
 		case 0: