diff mbox

[U-Boot,V2] usb: ci_udc: respect CONFIG_USB_GADGET_DUALSPEED

Message ID 1411951016-16330-1-git-send-email-eric.nelson@boundarydevices.com
State Superseded
Delegated to: Marek Vasut
Headers show

Commit Message

Eric Nelson Sept. 29, 2014, 12:36 a.m. UTC
Force full-speed (12 Mbit/s) operation if CONFIG_USB_GADGET_DUALSPEED
is not defined.

The controller is capable of high-speed (480 Mbit/s) operation,
but some designs may require the use of lower-speed operation.

Signed-off-by: Eric Nelson <eric.nelson@boundarydevices.com>
---
 drivers/usb/gadget/ci_udc.c | 6 ++++++
 1 file changed, 6 insertions(+)

Comments

Felipe Balbi Sept. 29, 2014, 1:21 a.m. UTC | #1
On Sun, Sep 28, 2014 at 05:36:56PM -0700, Eric Nelson wrote:
> @@ -777,6 +778,11 @@ static int ci_pullup(struct usb_gadget *gadget, int is_on)
>  		/* select DEVICE mode */
>  		writel(USBMODE_DEVICE, &udc->usbmode);
>  
> +#if !defined(CONFIG_USB_GADGET_DUALSPEED) && defined(CONFIG_MX6)

why only MX6 ?
Eric Nelson Sept. 29, 2014, 1:30 a.m. UTC | #2
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 09/28/2014 06:21 PM, Felipe Balbi wrote:
> On Sun, Sep 28, 2014 at 05:36:56PM -0700, Eric Nelson wrote:
>> @@ -777,6 +778,11 @@ static int ci_pullup(struct usb_gadget
>> *gadget, int is_on) /* select DEVICE mode */ 
>> writel(USBMODE_DEVICE, &udc->usbmode);
>> 
>> +#if !defined(CONFIG_USB_GADGET_DUALSPEED) &&
>> defined(CONFIG_MX6)
> 
> why only MX6 ?
> 

This shouldn't be the case. I'll fix in V3.

I also just noticed an extraneous variable declaration.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1

iQEcBAEBAgAGBQJUKLZJAAoJEFUqXmm9AiVrK9gH/0XPpea8XDasyCtElV3WolzP
C4RaqGrL6iRL2haiuY4zhIHv3KMxg+1L2P6rGrbYFn7+15mNhSMwqkSleRcDL8bw
47j5snivpd0BEnznC+dIzc/vghJ+gpkZdwmnRsfAvfGN+PWV1jNJUSR+jFkzTS6F
19rp2TIoIR9XgFx9chHmluI1iWp39yXTFhgqXLoLLMYMR0qXKTp8TV7asXvWLBsw
+Rrlqf58j3rEmhBA8zNDIbDJe/aQDKbxHcZrK386n2izBK3fZqf4Ew2Pln8vSToU
jHLnEwUp0PoeolUg1EK3oAlitNnwE7GLxxEoxsA/v7KaLzyUoR/c4wpG5/pIu2A=
=Hdj5
-----END PGP SIGNATURE-----
diff mbox

Patch

diff --git a/drivers/usb/gadget/ci_udc.c b/drivers/usb/gadget/ci_udc.c
index 2572b34..dbbeff7 100644
--- a/drivers/usb/gadget/ci_udc.c
+++ b/drivers/usb/gadget/ci_udc.c
@@ -766,6 +766,7 @@  void udc_disconnect(void)
 
 static int ci_pullup(struct usb_gadget *gadget, int is_on)
 {
+	u32 regval;
 	struct ci_udc *udc = (struct ci_udc *)controller.ctrl->hcor;
 	if (is_on) {
 		/* RESET */
@@ -777,6 +778,11 @@  static int ci_pullup(struct usb_gadget *gadget, int is_on)
 		/* select DEVICE mode */
 		writel(USBMODE_DEVICE, &udc->usbmode);
 
+#if !defined(CONFIG_USB_GADGET_DUALSPEED) && defined(CONFIG_MX6)
+		/* Port force Full-Speed Connect */
+		setbits_le32(&udc->portsc, PFSC);
+#endif
+
 		writel(0xffffffff, &udc->epflush);
 
 		/* Turn on the USB connection by enabling the pullup resistor */