Re: issues with FS isochronous device behind HS hub

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



>> >
>> Interesting. I have heard that the ARC/TD/CHIPIDEA core has two
>> different types of TTs. One is just putting a real hub on board, the
>> other is to handle things as a HS device, but to downshift the speed
>> of the transfers. You can tell the difference by what transfer you are
>> using ITD or SITD for the FS transfer. If SITD then you must be using
>> a "hub" internally and it should fail just like an external HS hub
>> --if it is a kernel bug.
>>
>> Have you customized the ehci* driver for your ehci interface or is it
>> already part of the kernel?
>>
>
> We are using the existing kernel code. Our USB host controller is EHCI
> with built-in Transaction Translator.
>

This is fascinating. How would ehci know how to run a FS isoc device?
This comes back to my theory that the  ARC core does not have a TT, it
just downshifts the speed of the transfer for a direct connect FS
device.  Is there some standard ehci option for handling FS devices
that I am not aware of?

Could you please post lsusb -t
and a cat /proc/bus/usb/devices

You may need to mount usbfs with : "sudo mount -t usbfs u /proc/bus/usb/"



>> >>
>> >
>> > HS root -> HS hub -> FS device (hub or not does not matter) fails on
> not
>> all software scheduled transfers occur on the bus.
>> > Touching the sitd hw_buf[0] will make the tests pass, but I am not
> sure
>> whether it is the caching issue on PowerPC or it is
>> > the timing issue in our system.
>>
>> I will assume that when you say touching you mean you put an
>> instruction in your driver somewhere to load that register? If that is
>> the case you may need a memory barrier (mb()) or EIEIO instruction
>> somewhere to keep the caches straight.
>>
>
> Kernel code already has mb() in sitd_link(). I do not suspect cache is
> the issue, because without HS hub, tests run just fine.
>
>
>> Showing the driver source code (or pointing to it if already in the
>> kernel), and bringing in a powerpc maintainer mailing list might help
>> find your problem.
>
> All code are in the kernel. Thank you for your suggestions, I do not
> know what question to ask at this moment.
>
> Hardware trace shows that only part of the submitted sitd's are in there
> when hardware going through the periodic frame list (and they all go
> onto the bus), however, software saw all 100 submitted sitd's being
> completed, and part of the completed sitd's have their active bit set.
> This only happens when an HS hub is between the host controller and the
> FS iso device (and scan_periodic is called all the time). What makes it
> difficult is that printing in the code changed all the timing, and seems
> not telling the situation I am debugging for. I do suspect that
> scan_periodic() is updating counters too fast (without proof yet). Any
> suggestions on how to debug this are appreciated.
>

I need more info. What is the hardware trace? The fact that software
sees some things as being there and your "hardware trace" does not
suggests to me a cache coherency issue.

Regards, Steve
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux