On 8 February 2018 at 14:53, Minas Harutyunyan <Minas.Harutyunyan at synopsys.com> wrote: > On 2/8/2018 5:07 PM, Mirza Krak wrote: >> On 8 February 2018 at 12:02, Minas Harutyunyan >> <Minas.Harutyunyan at synopsys.com> wrote: >>> Hi Mirza, >>> >>> On 2/7/2018 1:49 PM, Mirza Krak wrote: >> >> < snip > >> >>> >>> Could you please provide additional info: >>> 1. Does your core support descriptor DMA mode? (bits 31 and 30 of GHWCFG4). >>> 2. Version of core (GSNPSID)? >> >> It does seem to support descriptor DMA mode, and content of both >> GHWCFG4 and GSNPSID are posted below. >> >> root at esp5-d1:~# dmesg | grep -E "GHWCFG4|GSNPSID" >> [ 1.109298] dwc2 ff540000.usb: GSNPSID @0xF0940040 : 0x4F54310A >> [ 1.109344] dwc2 ff540000.usb: GHWCFG4 @0xF0940050 : 0xC8004030 >> [ 1.489016] dwc2 ff580000.usb: GSNPSID @0xF09C0040 : 0x4F54310A >> [ 1.489063] dwc2 ff580000.usb: GHWCFG4 @0xF09C0050 : 0xDBF04030 >> >> Full register dump at boot (no devices connected) can be found at [1]. >> >>> 3. Do you connect any HS HUB between dwc core port and keyboard? Is it >>> available connection scenarios when Split traffic generated? >> >> There is actually an HS HUB (FE1_QFP48) between dwc core and keyboard, >> I was not aware of it but it is mounted on the board. >> >> >> [1]. https://urldefense.proofpoint.com/v2/url?u=https-3A__gist.github.com_mirzak_a6245dddd4670f3b908a9783f9db8b0d&d=DwIFaQ&c=DPL6_X_6JkXFx7AXWqB0tg&r=6z9Al9FrHR_ZqbbtSAsD16pvOL2S3XHxQnSzq8kusyI&m=FuRmhDEOJlbUvuyApaxG_YmB514C3IOGSzs6Mq_fzC0&s=ELF0UP4IluOiL35JlnFjiltWZx-BcTIsTaPjaWb0RFk&e= >> > Actually your core supported DDMA mode, moreover core allow SW to > dynamically switch between BDMA and DDMA after core reset. > If dwc2 core work in DDMA mode then core can track (u)frames internally > and unmasking SOF's not required, but Host in DDMA doesn't support Split > transfers. This is why, in your case (FS/LS keyboard connected to HS > HUB), core switched to BDMA and unmasking SOF interrupt to track (u)frames. Thank you for your valuable respons. It is indeed as you mentioned the combination of HS and FS/LS devices that trigger the high CPU load. Running HS only devices does not produce any noticeable load. But I am confused by one thing, I have two different boards with the same SoC and same version of the DWC2 IP. Both boards have an internal USB hub for the external connectors, though it seems that they have different types of HUB' s. And I only have problems with one of them. The second board does not have a problem mixing HS and FS/LS devices. Is it possible that the USB HUB has some kind of "offloading" for the Split transfers? Tinkerboard USB hub (works well when mixing HS and FS/LS devices) ---------------------------- $ lsusb -t /: Bus 03.Port 1: Dev 1, Class=root_hub, Driver=ehci-platform/1p, 480M |__ Port 1: Dev 2, If 0, Class=Audio, Driver=, 480M |__ Port 1: Dev 2, If 1, Class=Audio, Driver=, 480M |__ Port 1: Dev 2, If 2, Class=Audio, Driver=, 480M |__ Port 1: Dev 2, If 3, Class=Audio, Driver=, 480M |__ Port 1: Dev 2, If 4, Class=Audio, Driver=, 480M |__ Port 1: Dev 2, If 5, Class=Audio, Driver=, 480M |__ Port 1: Dev 2, If 255, Class=Human Interface Device, Driver=usbhid, 480M /: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=dwc2/1p, 480M /: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=dwc2/1p, 480M |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M |__ Port 3: Dev 4, If 0, Class=Audio, Driver=, 12M |__ Port 3: Dev 4, If 1, Class=Audio, Driver=, 12M |__ Port 4: Dev 3, If 0, Class=Human Interface Device, Driver=usbhid, 12M $ lsusb -d 05e3:0610 -v Bus 001 Device 002: ID 05e3:0610 Genesys Logic, Inc. 4-port hub Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 9 Hub bDeviceSubClass 0 bDeviceProtocol 2 TT per port bMaxPacketSize0 64 idVendor 0x05e3 Genesys Logic, Inc. idProduct 0x0610 4-port hub bcdDevice 32.98 iManufacturer 0 iProduct 1 USB2.0 Hub iSerial 0 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 41 bNumInterfaces 1 bConfigurationValue 1 iConfiguration 0 bmAttributes 0xe0 Self Powered Remote Wakeup MaxPower 100mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 9 Hub bInterfaceSubClass 0 bInterfaceProtocol 1 Single TT iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0001 1x 1 bytes bInterval 12 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 1 bNumEndpoints 1 bInterfaceClass 9 Hub bInterfaceSubClass 0 bInterfaceProtocol 2 TT per port iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0001 1x 1 bytes bInterval 12 Hub Descriptor: bLength 9 bDescriptorType 41 nNbrPorts 4 wHubCharacteristic 0x00e0 Ganged power switching Ganged overcurrent protection TT think time 32 FS bits Port indicators bPwrOn2PwrGood 50 * 2 milli seconds bHubContrCurrent 100 milli Ampere DeviceRemovable 0x00 PortPwrCtrlMask 0xff Hub Port Status: Port 1: 0000.0100 power Port 2: 0000.0100 power Port 3: 0000.0103 power enable connect Port 4: 0000.0103 power enable connect Device Qualifier (for other device speed): bLength 10 bDescriptorType 6 bcdUSB 2.00 bDeviceClass 9 Hub bDeviceSubClass 0 bDeviceProtocol 0 Full speed (or root) hub bMaxPacketSize0 64 bNumConfigurations 1 can't get debug descriptor: Resource temporarily unavailable Device Status: 0x0001 Self Powered FireFly USB HUB (does not work well when mixing HS and FS/LS devices) ----------------------- $ lsusb -t /: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=dwc2/1p, 480M /: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=dwc2/1p, 480M |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M |__ Port 1: Dev 3, If 0, Class=Vendor Specific Class, Driver=, 480M |__ Port 3: Dev 4, If 0, Class=Audio, Driver=snd-usb-audio, 12M |__ Port 3: Dev 4, If 1, Class=Audio, Driver=snd-usb-audio, 12M $ lsusb -d 1a40:0101 -v Bus 001 Device 002: ID 1a40:0101 Terminus Technology Inc. Hub Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 9 Hub bDeviceSubClass 0 bDeviceProtocol 2 TT per port bMaxPacketSize0 64 idVendor 0x1a40 Terminus Technology Inc. idProduct 0x0101 Hub bcdDevice 1.00 iManufacturer 0 iProduct 1 USB 2.0 Hub [MTT] iSerial 0 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 41 bNumInterfaces 1 bConfigurationValue 1 iConfiguration 0 bmAttributes 0xe0 Self Powered Remote Wakeup MaxPower 100mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 9 Hub bInterfaceSubClass 0 bInterfaceProtocol 1 Single TT iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0001 1x 1 bytes bInterval 12 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 1 bNumEndpoints 1 bInterfaceClass 9 Hub bInterfaceSubClass 0 bInterfaceProtocol 2 TT per port iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0001 1x 1 bytes bInterval 12 Hub Descriptor: bLength 9 bDescriptorType 41 nNbrPorts 4 wHubCharacteristic 0x0080 Ganged power switching Ganged overcurrent protection TT think time 8 FS bits Port indicators bPwrOn2PwrGood 50 * 2 milli seconds bHubContrCurrent 100 milli Ampere DeviceRemovable 0x00 PortPwrCtrlMask 0xff Hub Port Status: Port 1: 0000.0503 highspeed power enable connect Port 2: 0000.0100 power Port 3: 0000.0103 power enable connect Port 4: 0000.0100 power Device Qualifier (for other device speed): bLength 10 bDescriptorType 6 bcdUSB 2.00 bDeviceClass 9 Hub bDeviceSubClass 0 bDeviceProtocol 0 Full speed (or root) hub bMaxPacketSize0 64 bNumConfigurations 1 can't get debug descriptor: Resource temporarily unavailable Device Status: 0x0001 Self Powered -- Med V?nliga H?lsningar / Best Regards Mirza Krak