question about usb interrupt pacing, using a usb camera as input. DM8168 Linux with eZsdk 5.0.3.
Setting the USBSS_IRQ_DMA_THRESHOLD_RX0_1 register the rate of the cppi41dma_Interrupt ISR is actually reduced, but the rate of pd_cmp_flag interrupt remains the same. From the driver the source code, it’s like if there is a sw workaround related to this interrupt, and we need to serve it at the highest rate anyway. Am I correct?
more details below:
when streaming audio + video data from an external USB webcam, the A8 core has to face a very high IRQ rate, since by default each USB transfer results in an interrupt request.
On the Netra USB2 port the Inventra MHDRC declares support for Cppi4.1DMA interrupt pacing (see paragraph 24.7.1.1 Subsystem Interrupts of sprugx8.pdf), however, programming the related thresholds was pointless to us, here’s what we tried:
1) we started setting the USBSS IRQ_DMA_THRESHOLD_XXY_Z to equal tentative values, let’s say 0x03, so for instance, USBSS_IRQ_DMA_THRESHOLD_RX0_1 was set to 0x03030303
2) we checked that the IRQDMAENABLE_0 register was correctly programmed, and that was already done by ti81xx driver (value was 0xFFFEFFFE)
3) when profiling the cppi41dma_Interrupt ISR (drivers/usb/musb/ti81xx.c) we correctly saw ONE IRQ of type rx_pkt_cmp_0 every FOUR IRQ’s of type pd_cmp_flag
4) we then tried to disable the pd_cmp_flag interrupt, which appeared not relevant for processing the dma queues, but that does not work! it looks like the pd_cmp interrupt has to be acknowledged and serviced exactly as the rx/tx_pkt_cmp ones
did we miss something? or is this pacing feature broken in some way?
Thanks, best regards
Massimo