Hi all,
We encounter a USB Host problem in our DM365 EVM with a USB 2.0 Hub. As we plan to connect 2 USB webcams with a USB 2.0 hub, we tested the following three cases:
Case 1: DM365 EVM < --- > USB Webcam
Successfully capture video from the webcam.
Case 2: DM365 EVM < --- > USB 2.0 Hub < --- > USB Webcam
We still can capture video from the webcam for a while but with the following recursive messages:
musb_host_rx 1696: RX3 dma busy, csr 2020
musb_host_rx 1696: RX3 dma busy, csr 2020
musb_host_rx 1696: RX3 dma busy, csr 2020
musb_host_rx 1696: RX3 dma busy, csr 2020
musb_host_rx 1696: RX3 dma busy, csr 2020
musb_host_rx 1696: RX3 dma busy, csr 2020
.....
Eventually, it stop capturing any frame.
Case 3: DM365 EVM < --- > USB 2.0 Hub < --- > 2 USB Webcam
We tried to capture a video from a USB Webcam but no frame can be captured. And, the following recursive messages came ouit
musb_host_rx 1696: RX3 dma busy, csr 2020
musb_host_rx 1696: RX3 dma busy, csr 2020
musb_host_rx 1696: RX3 dma busy, csr 2020
musb_host_rx 1696: RX3 dma busy, csr 2020
musb_host_rx 1696: RX3 dma busy, csr 2020
musb_host_rx 1696: RX3 dma busy, csr 2020
.....
The conditions for testing the 3 cases are:
Linux Kernel: 2.6.18 (LSP 02_10_00_14) with HDSC patch
Configuration: davinci_dm365_defconfig
In order to enhance the usb host ISO RX response, we enabled USB FIFO double buffering in musb_core.c with the following change:
...
static ushort __initdata fifo_mode=5;
...
static struct fifo_cfg __initdata mode_5_cfg[] = {
{.hw_ep_num=1,.style=FIFO_RXTX,.maxpacket=512,.mode=BUF_DOUBLE,}
{.hw_ep_num=2,.style=FIFO_RXTX,.maxpacket=512,.mode=BUF_DOUBLE,}
{.hw_ep_num=3,.style=FIFO_RXTX,.maxpacket=512,.mode=BUF_DOUBLE,}
{.hw_ep_num=4,.style=FIFO_RXTX,.maxpacket=512,}
};
...
static int __init ep_config_from_table(struct musb *musb)
{
...
switch(fifo_mode) {
...
case 5:
cfg = mode_5_cfg;
n=ARRAY_SIZE(mode_5_cfg);
break;
}
....
Could anybody give me help and hints to resolve the issues in Cases 2 & 3?
Thank you so much in advance!
Best Regards,
Chitat