Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 6 Aug 2019 19:36:01 +0200
From:      Hans Petter Selasky <hps@selasky.org>
To:        Mariappan N <nmarijoe@outlook.com>, "freebsd-usb@freebsd.org" <freebsd-usb@freebsd.org>
Subject:   Re: Problem attaching USB Garmin device
Message-ID:  <65a1fe1b-cf8d-c981-f915-a3252c50c2b5@selasky.org>
In-Reply-To: <MAXPR01MB2944F0DC73A68AB981ED687EC5DF0@MAXPR01MB2944.INDPRD01.PROD.OUTLOOK.COM>
References:  <MAXPR01MB2944036F77333AE51E8EE717C5C10@MAXPR01MB2944.INDPRD01.PROD.OUTLOOK.COM> <MAXPR01MB29449BB16DCD455AAB055C99C5C00@MAXPR01MB2944.INDPRD01.PROD.OUTLOOK.COM> <d0e0e473-969d-cee1-b591-5513b935a560@selasky.org> <a0b1c069-0716-3405-0ad2-a09c6cc62c07@selasky.org> <4aaaaadf-cf6b-8dc6-62a8-d4a577d19691@selasky.org> <MAXPR01MB2944063272F35B324622BDF9C5C00@MAXPR01MB2944.INDPRD01.PROD.OUTLOOK.COM> <c19c35e1-e1c0-4ea7-d076-8e9eb5a02e3d@selasky.org> <dc939281-1716-b839-2726-b69aea39ebf4@selasky.org> <MAXPR01MB2944169058EDDE7A7F55BB4AC5C20@MAXPR01MB2944.INDPRD01.PROD.OUTLOOK.COM> <MAXPR01MB2944810CD093ED926AC0FBE7C5DD0@MAXPR01MB2944.INDPRD01.PROD.OUTLOOK.COM> <2f317631-7e92-6fcc-7061-ae098ce99a68@selasky.org> <d1fb157c-9efc-b4a8-c177-c61803680ccb@selasky.org> <MAXPR01MB294464445E98B6CFDAEEDB6FC5DC0@MAXPR01MB2944.INDPRD01.PROD.OUTLOOK.COM> <59b187eb-6b64-f051-a2a5-2807668e6890@selasky.org> <MAXPR01MB2944F0DC73A68AB981ED687EC5DF0@MAXPR01MB2944.INDPRD01.PROD.OUTLOOK.COM>

next in thread | previous in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format.
--------------2DB94CC7049BE69A56D81F24
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi,

Can you try the attached patch.

I need both output from DMESG and Ellisys.

--HPS

--------------2DB94CC7049BE69A56D81F24
Content-Type: text/x-patch;
 name="xhci3.diff"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
 filename="xhci3.diff"

diff --git a/sys/dev/usb/controller/xhci.c b/sys/dev/usb/controller/xhci.c
index 0a1e5c95c41..c551cbdc285 100644
--- a/sys/dev/usb/controller/xhci.c
+++ b/sys/dev/usb/controller/xhci.c
@@ -1459,7 +1459,19 @@ xhci_set_address(struct usb_device *udev, struct mtx *mtx, uint16_t address)
 
 		if (err != 0) {
 			temp = le32toh(sc->sc_cmd_result[0]);
-			if (address == 0 && sc->sc_port_route != NULL &&
+			if (address != 0) {
+				printf("TRYING AGAIN SET ADDRESS FOR XHCI\n");
+				err = xhci_cmd_set_address(sc, buf_inp.physaddr,
+					1, index);
+				if (err == 0) {
+					/* wait 20ms */
+					usb_pause_mtx(&sc->sc_bus.bus_mtx, hz / 50);
+					err = xhci_cmd_set_address(sc, buf_inp.physaddr,
+					    0, index);
+					if (err == 0)
+						goto success;
+				}
+			} else if (address == 0 && sc->sc_port_route != NULL &&
 			    XHCI_TRB_2_ERROR_GET(temp) ==
 			    XHCI_TRB_ERROR_PARAMETER) {
 				/* LynxPoint XHCI - ports are not switchable */
@@ -1471,7 +1483,7 @@ xhci_set_address(struct usb_device *udev, struct mtx *mtx, uint16_t address)
 			if (address != 0)
 				break;
 		}
-
+success:
 		/* update device address to new value */
 
 		usbd_get_page(&hdev->device_pc, 0, &buf_dev);

--------------2DB94CC7049BE69A56D81F24--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?65a1fe1b-cf8d-c981-f915-a3252c50c2b5>