[Letux-kernel] [PATCH 0/3] MIPS: CI20: USB EHCI/OHCI
H. Nikolaus Schaller
hns at goldelico.com
Sat Sep 26 10:10:17 CEST 2020
> Am 26.09.2020 um 08:21 schrieb H. Nikolaus Schaller <hns at goldelico.com>:
>> Am 25.09.2020 um 22:55 schrieb H. Nikolaus Schaller <hns at goldelico.com>:
>>> Am 25.09.2020 um 22:53 schrieb H. Nikolaus Schaller <hns at goldelico.com>:
>>> I still get the problem with "usb usb2-port1: Cannot enable. Maybe the USB cable is bad?".
>>> Some analysis shows that this code returns -EBUSY:
>>> which means the port is not enabled (portstatus == 0x101).
>>> Since this is coming from some USB communication message
>>> I think it is not related to our drivers.
>>> Could it be that the EHCI/OHCI do not have the clock running? This could
>>> IMHO result in no response or the module not being enabled.
>> Or is it not allowed to share the phy between ehci and ohci?
>> This is something which may be tested easily by disabling either one.
> Ok, if I have EHCI only, the message is gone. But EHCI alone doesn't show a connected device.
> If I have OHCI only, the message is back.
I have found something by comparing jz4740.dtsi. This also has
assigned-clocks = <&cgu JZ4740_CLK_UHC>;
assigned-clock-rates = <48000000>;
Unfortunately adding this (with JZ4780_CLK_UHC) makes no difference:
root at letux:~# dmesg|fgrep 'usb usb1-port1'
[ 11.115855] usb usb1-port1: Cannot enable. Maybe the USB cable is bad?
[ 12.666946] usb usb1-port1: Cannot enable. Maybe the USB cable is bad?
[ 12.719847] usb usb1-port1: attempt power cycle
[ 14.883641] usb usb1-port1: Cannot enable. Maybe the USB cable is bad?
[ 17.270381] usb usb1-port1: Cannot enable. Maybe the USB cable is bad?
[ 17.334813] usb usb1-port1: unable to enumerate USB device
root at letux:~# lsusb
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
root at letux:~#
So to summarise what we know:
* error message comes from OHCI driver after several attempts (incl. power cycle)
* specifically from get_port_status() [which sends some URB]
* portstatus = 0x101 and therefore USB_PORT_STAT_ENABLE (0x0002) is false
* does not depend on EHCI "okay" or "disabled"
* assigned-clocks does not help
* phy-names doesn't seem to have an influence
* 1.1 root hub is initialized
* power is on (I have my LCD panel/touch screen connected and would expect to see the touch device)
Ideas and suggestions are welcome :)
>>> H. Nikolaus Schaller (3):
>>> MIPS: DTS: JZ4780: add EHCI/OHCI
>>> MIPS: DTS: CI20: add EHCI/OHCI vbus
>>> MIPS: CI20: defconfig: configure for EHCI/OHCI
>>> arch/mips/boot/dts/ingenic/ci20.dts | 25 ++++++++++++++++++++
>>> arch/mips/boot/dts/ingenic/jz4780.dtsi | 32 ++++++++++++++++++++++++++
>>> arch/mips/configs/ci20_defconfig | 4 ++++
>>> 3 files changed, 61 insertions(+)
>> Letux-kernel mailing list
>> Letux-kernel at openphoenux.org
> Letux-kernel mailing list
> Letux-kernel at openphoenux.org
More information about the Letux-kernel