From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alexey Brodkin Date: Thu, 17 Dec 2015 15:24:28 +0000 Subject: [U-Boot] [PATCH] axs103: add support of generic OHCI USB 1.1 controller In-Reply-To: <201512171608.34689.marex@denx.de> References: <1450281915-16471-1-git-send-email-abrodkin@synopsys.com> <201512170501.16299.marex@denx.de> <1450359146.3218.3.camel@synopsys.com> <201512171608.34689.marex@denx.de> Message-ID: <1450365868.3218.12.camel@synopsys.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hi Marek, On Thu, 2015-12-17 at 16:08 +0100, Marek Vasut wrote: > On Thursday, December 17, 2015 at 02:32:26 PM, Alexey Brodkin wrote: > > Hi Marek, > > > > On Thu, 2015-12-17 at 05:01 +0100, Marek Vasut wrote: > > > On Wednesday, December 16, 2015 at 08:54:11 PM, Alexey Brodkin wrote: > > > > Hi Marek, > > > > > > Hi! > > > > > > > On Wed, 2015-12-16 at 17:52 +0100, Marek Vasut wrote: > > > > > On Wednesday, December 16, 2015 at 05:05:15 PM, Alexey Brodkin wrote: > > > > > > This commit adds support of USB 1.1 storage media on AXS103 board. > > > > > > For some yet unknown reason USB 2.0 doesn't work on AXS103 board > > > > > > issuing messages like this: > > > > > > ------------------------>8------------------- > > > > > > AXS# usb start > > > > > > starting USB... > > > > > > USB0: USB EHCI 1.00 > > > > > > scanning bus 0 for devices... EHCI timed out on TD - > > > > > > token=0x80008c80 unable to get device descriptor (error=-1) > > > > > > 1 USB Device(s) found > > > > > > ------------------------>8------------------- > > > > > > > > > > Try defining CONFIG_EHCI_IS_TDI , that _might_ help. > > > > > > > > Thanks for that tip but it made no difference to me. > > > > I need to look deeper into that problem. > > > > > > I remember seeing that stuff multiple times before, but it might be a > > > different issue. It was usually triggered by some sort of corruption > > > during the transfer. On ARM, that was often caused by cache issues. > > > > Believe me I know how much of a grief caches bring so the first thing I do > > when seeing unexpected behavior I disable caches :) > > > > > > Just a bit of a context here. > > > > > > > > I'm playing with ARC SP board which consists of 2 parts: > > > > [1] Baseboard with all peripherals and their connectors > > > > [2] Daughterboard with CPU and DDR > > > > > > > > Baseboard is connected to CPU-board via AXI tunnel. > > > > > > > > And when CPU-board is the one with ASIC based on ARC770 > > > > that runs at 700 MHz I see USB 2.0 working perfectly fine. > > > > > > > > But if I use CPU-board that sports FPGA with ARC HS38 CPU > > > > running at 75 MHz I see the first asynchronous tarnsaction > > > > on US 2.0 never happens. > > > > > > Connect signaltap or chipscope ? :) > > > > Well I don't have either of those tools sitting on my desk but > > if absolutely required I'll do that :) > > > > > > In particular in ehci_submit_async() after we enable async. schedule > > > > setting CMD_ASE command STS_ASS gets set but then token's status > > > > stays active forever i.e. following is always true: > > > > --------------------->8--------------------- > > > > QT_TOKEN_GET_STATUS(token) & QT_TOKEN_STATUS_ACTIVE > > > > --------------------->8--------------------- > > > > > > > > Note USB host controller, phy and usb dongle are exactly the same. > > > > And USB 1.1 (OHCI) works perfectly fine at the same time. > > > > > > Try adding #define DEBUG at the first line of common/usb.c , so we can > > > get some more debugging info. Also adding the same into common/usb_hub.c > > > helps. > > > > Did that and here's my log: > > > > --------------------->8--------------------- > > starting USB... > > USB0: ehci_register: dev='ehci at 0xe0040000', ctrl=9fd94100, hccr=e0040000, > > hcor=e0040010, init=0 Register 1111 NbrPorts 1 > > USB EHCI 1.00 > > scanning bus 0 for devices... ehci_submit_control_msg: > > dev='ehci at 0xe0040000', udev=9fd7c000, udev->dev='ehci at 0xe004000 req=6 > > (0x6), type=128 (0x80), value=256, index=0 > > USB_DT_DEVICE request > > ehci_submit_control_msg: dev='ehci at 0xe0040000', udev=9fd7c000, > > udev->dev='ehci at 0xe0040000', portnr=0 req=5 (0x5), type=0 (0x0), value=1, > > index=0 > > USB_REQ_SET_ADDRESS > > Len is 0 > > ehci_submit_control_msg: dev='ehci at 0xe0040000', udev=9fd7c000, > > udev->dev='ehci at 0xe0040000', portnr=0 req=6 (0x6), type=128 (0x80), > > value=256, index=0 > > USB_DT_DEVICE request > > ehci_submit_control_msg: dev='ehci at 0xe0040000', udev=9fd7c000, > > udev->dev='ehci at 0xe0040000', portnr=0 req=6 (0x6), type=128 (0x80), > > value=512, index=0 > > USB_DT_CONFIG config > > ehci_submit_control_msg: dev='ehci at 0xe0040000', udev=9fd7c000, > > udev->dev='ehci at 0xe0040000', portnr=0 req=6 (0x6), type=128 (0x80), > > value=512, index=0 > > USB_DT_CONFIG config > > ehci_submit_control_msg: dev='ehci at 0xe0040000', udev=9fd7c000, > > udev->dev='ehci at 0xe0040000', portnr=0 req=9 (0x9), type=0 (0x0), value=1, > > index=0 > > USB_REQ_SET_CONFIGURATION > > Len is 0 > > ehci_submit_control_msg: dev='ehci at 0xe0040000', udev=9fd7c000, > > udev->dev='ehci at 0xe0040000', portnr=0 req=6 (0x6), type=128 (0x80), > > value=768, index=0 > > USB_DT_STRING config > > ehci_submit_control_msg: dev='ehci at 0xe0040000', udev=9fd7c000, > > udev->dev='ehci at 0xe0040000', portnr=0 req=6 (0x6), type=128 (0x80), > > value=769, index=1 > > USB_DT_STRING config > > ehci_submit_control_msg: dev='ehci at 0xe0040000', udev=9fd7c000, > > udev->dev='ehci at 0xe0040000', portnr=0 req=6 (0x6), type=128 (0x80), > > value=770, index=1 > > USB_DT_STRING config > > ehci_submit_control_msg: dev='ehci at 0xe0040000', udev=9fd94380, > > udev->dev='usb_hub', portnr=0 req=6 (0x6), type=160 (0xa0), value=10496, > > index=0 > > USB_DT_HUB config > > ehci_submit_control_msg: dev='ehci at 0xe0040000', udev=9fd94380, > > udev->dev='usb_hub', portnr=0 req=6 (0x6), type=160 (0xa0), value=10496, > > index=0 > > USB_DT_HUB config > > ehci_submit_control_msg: dev='ehci at 0xe0040000', udev=9fd94380, > > udev->dev='usb_hub', portnr=0 req=0 (0x0), type=160 (0xa0), value=0, > > index=0 > > ehci_submit_control_msg: dev='ehci at 0xe0040000', udev=9fd94380, > > udev->dev='usb_hub', portnr=0 req=3 (0x3), type=35 (0x23), value=8, > > index=1 > > Len is 0 > > ehci_submit_control_msg: dev='ehci at 0xe0040000', udev=9fd94380, > > udev->dev='usb_hub', portnr=0 req=0 (0x0), type=163 (0xa3), value=0, > > index=1 > > ehci_submit_control_msg: dev='ehci at 0xe0040000', udev=9fd94380, > > udev->dev='usb_hub', portnr=0 req=0 (0x0), type=163 (0xa3), value=0, > > index=1 > > ehci_submit_control_msg: dev='ehci at 0xe0040000', udev=9fd94380, > > udev->dev='usb_hub', portnr=0 req=1 (0x1), type=35 (0x23), value=16, > > index=1 > > Len is 0 > > ehci_submit_control_msg: dev='ehci at 0xe0040000', udev=9fd94380, > > udev->dev='usb_hub', portnr=0 req=3 (0x3), type=35 (0x23), value=4, > > index=1 > > Len is 0 > > ehci_submit_control_msg: dev='ehci at 0xe0040000', udev=9fd94380, > > udev->dev='usb_hub', portnr=0 req=0 (0x0), type=163 (0xa3), value=0, > > index=1 > > ehci_submit_control_msg: dev='ehci at 0xe0040000', udev=9fd94380, > > udev->dev='usb_hub', portnr=0 req=1 (0x1), type=35 (0x23), value=20, > > index=1 > > Len is 0 > > ehci_submit_control_msg: dev='ehci at 0xe0040000', udev=9fd7b100, > > udev->dev='usb_hub', portnr=1 dev=9fd7b100, pipe=80000083, > > buffer=9fd7ae00, length=64, req=9fd7ad00 req=6 (0x6), type=128 (0x80), > > value=256 (0x100), index=0 Problem happens here. As I wrote earlier active flag of the token gets never reset. All that happens later is just a consequence. > > EHCI timed out on TD - token=0x80008c80 > > dev=0, usbsts=0x1, p[1]=0x1005, p[2]=0x0 > > unable to get device descriptor (error=-1) > > ehci_submit_control_msg: dev='ehci at 0xe0040000', udev=9fd94380, > > udev->dev='usb_hub', portnr=0 req=1 (0x1), type=35 (0x23), value=1, > > index=1 > > Len is 0 > > 1 USB Device(s) found > > AXS# > > --------------------->8--------------------- > > > > Makes any sense? > > Am I reading it correctly that the root hub (the one built into the controller) > is misbehaving here ? Well I'm not an expert in USB so would need to get some explanation from you here. -Alexey