Hi Thomas, Do you have USB Analyzer (hardware) ? If so, Is it possible to take a trace and compare it with x86 trace to see for any obvious differences ? I am actually confused why set interface fails in the log. The device is very simple one with no firmware and is totally controlled by hardware itself. So far we had never seen any issue, though never tried with any other ARM based devices. Not sure if anybody had tried already. Hope that helps, Thanks Sri -----Original Message----- From: Thomas Petazzoni [mailto:thomas.petazzoni@xxxxxxxxxxxxxxxxxx] Sent: Friday, September 23, 2011 5:04 AM To: Devin Heitmueller Cc: Thomas Petazzoni; linux-media@xxxxxxxxxxxxxxx; Sri Deevi; Maxime Ripard Subject: Re: cx231xx: DMA problem on ARM Hello Devin, Le Thu, 22 Sep 2011 17:29:29 +0200, Thomas Petazzoni <thomas.petazzoni@xxxxxxxxxxxxxxxxxx> a écrit : > I guess you're talking about 44ecf1df9493e6684cd1bb34abb107a0ffe1078a, > which ensures a 10ms msleep call. We don't have this patch, but as with > CONFIG_HZ=100, msleep() calls are anyway rounded up to 10ms, so I'm not > sure this patch will have a huge impact. But we will try. > > Then, there is also de99d5328c6d54694471da28711a05adec708c3b, but it > doesn't seem to be related to our problem. But we will also try with > that one. So, we have now tried with Linux 3.0 and the following additional patches: * 992299e84a4891275ea5924e30b66ce39a701e5e (Fix regression introduced which broke the Hauppauge USBLive 2) * 44ecf1df9493e6684cd1bb34abb107a0ffe1078a (cx231xx: Fix power ramping issue) * de99d5328c6d54694471da28711a05adec708c3b (cx231xx: Provide signal lock status in G_INPUT) * the DMA fix And still the result is the same: we get a first frame, and then nothing more, and we have a large number of error messages in the kernel logs. [ 18.833587] cx231xx v4l2 driver loaded. [ 18.833831] cx231xx #0: New device Hauppauge Hauppauge Device @ 480 Mbps (2040:c200) with 5 interfaces [ 18.833862] cx231xx #0: registering interface 1 [ 18.854492] cx231xx #0: can't change interface 3 alt no. to 3: Max. Pkt size = 0 [ 19.185943] cx231xx #0: can't change interface 4 alt no. to 1: Max. Pkt size = 0 [ 19.405700] cx231xx #0: Identified as Hauppauge USB Live 2 (card=9) [ 19.692993] cx231xx #0: cx231xx_dif_set_standard: setStandard to ffffffff [ 20.238159] cx25840 4-0044: cx23102 A/V decoder found @ 0x88 (cx231xx #0) [ 20.333740] cx25840 4-0044: Firmware download size changed to 16 bytes max length [ 21.783569] smsc95xx 1-2.1:1.0: eth0: link up, 100Mbps, full-duplex, lpa 0xC5E1 [ 22.921936] cx25840 4-0044: loaded v4l-cx231xx-avcore-01.fw firmware (16382 bytes) [ 22.960815] cx231xx #0: cx231xx #0: v4l2 driver version 0.0.1 [ 22.989715] cx231xx #0: cx231xx_dif_set_standard: setStandard to ffffffff [ 23.042663] cx231xx #0: video_mux : 0 [ 23.042694] cx231xx #0: do_mode_ctrl_overrides : 0xb000 [ 23.043548] cx231xx #0: do_mode_ctrl_overrides NTSC [ 23.056213] cx231xx #0: cx231xx #0/0: registered device video0 [v4l2] [ 23.061035] cx231xx #0: cx231xx #0/0: registered device vbi0 [ 23.061065] cx231xx #0: V4L2 device registered as video0 and vbi0 [ 23.061096] cx231xx #0: EndPoint Addr 0x84, Alternate settings: 5 [ 23.061096] cx231xx #0: Alternate setting 0, max size= 512 [ 23.061126] cx231xx #0: Alternate setting 1, max size= 184 [ 23.061126] cx231xx #0: Alternate setting 2, max size= 728 [ 23.061157] cx231xx #0: Alternate setting 3, max size= 2892 [ 23.061157] cx231xx #0: Alternate setting 4, max size= 1800 [ 23.061187] cx231xx #0: EndPoint Addr 0x85, Alternate settings: 2 [ 23.061187] cx231xx #0: Alternate setting 0, max size= 512 [ 23.061218] cx231xx #0: Alternate setting 1, max size= 512 [ 23.061218] cx231xx #0: EndPoint Addr 0x86, Alternate settings: 2 [ 23.061248] cx231xx #0: Alternate setting 0, max size= 512 [ 23.061248] cx231xx #0: Alternate setting 1, max size= 576 [ 23.067108] usbcore: registered new interface driver cx231xx [ 23.360412] cx231xx #0: setPowerMode::mode = 48, No Change req. [ 23.365905] cx231xx #0: cx231xx_stop_stream():: ep_mask = 8 [ 23.367156] cx231xx #0: cx231xx_stop_stream():: ep_mask = 8 [ 23.872253] cx231xx #0: cx231xx-audio.c: probing for cx231xx non standard usbaudio [ 23.875762] cx231xx #0: EndPoint Addr 0x83, Alternate settings: 3 [ 23.875793] cx231xx #0: Alternate setting 0, max size= 512 [ 23.875793] cx231xx #0: Alternate setting 1, max size= 28 [ 23.875823] cx231xx #0: Alternate setting 2, max size= 52 [ 23.875823] cx231xx: Cx231xx Audio Extension initialized [ 24.794891] lp: driver loaded but no devices found [ 24.880157] ppdev: user-space parallel port driver [ 30.872589] eth0: no IPv6 routers present [ 183.789154] omap_device: omap-mcbsp.2: new worst case activate latency 0: 30517 [ 183.829803] omap_device: omap-mcbsp.2: new worst case deactivate latency 0: 30517 [ 184.355712] omap_device: omap-mcbsp.2: new worst case deactivate latency 0: 61035 [ 186.400878] cx231xx #0: cx231xx_start_stream():: ep_mask = 4 [ 186.401855] cx231xx #0: cx231xx_stop_stream():: ep_mask = 4 [ 186.404571] cx231xx #0: cx231xx_start_stream():: ep_mask = 4 [ 186.405578] cx231xx #0: cx231xx_stop_stream():: ep_mask = 4 [ 186.408050] cx231xx #0: cx231xx_start_stream():: ep_mask = 4 [ 186.409332] cx231xx #0: cx231xx_stop_stream():: ep_mask = 4 [ 186.412109] cx231xx #0: cx231xx_start_stream():: ep_mask = 4 [ 186.414306] cx231xx #0: cx231xx_stop_stream():: ep_mask = 4 [ 186.416961] cx231xx #0: cx231xx_start_stream():: ep_mask = 4 [ 186.418060] cx231xx #0: cx231xx_stop_stream():: ep_mask = 4 [ 186.427520] cx231xx #0: cx231xx_start_stream():: ep_mask = 4 [ 186.498504] cx231xx #0: cx231xx_init_audio_isoc: Starting ISO AUDIO transfers [ 194.358123] cx231xx #0: cx231xx_stop_stream():: ep_mask = 4 [ 393.839813] cx231xx #0: setPowerMode::mode = 48, No Change req. [ 393.842834] cx231xx #0: cx231xx_stop_stream():: ep_mask = 8 [ 393.844024] cx231xx #0: setPowerMode::mode = 48, No Change req. [ 394.126953] cx231xx #0: cx231xx_stop_stream():: ep_mask = 8 [ 394.133605] cx231xx #0: cx231xx_initialize_stream_xfer: set video registers [ 394.134094] cx231xx #0: cx231xx_start_stream():: ep_mask = 8 [ 559.661468] cx231xx #0: UsbInterface::sendCommand, failed with status --71 [ 559.665985] cx231xx #0: UsbInterface::sendCommand, failed with status --71 [ 559.721374] cx231xx #0: cx231xx_stop_stream():: ep_mask = 8 [ 559.731079] cx231xx #0: can't change interface 3 alt no. to 0 (err=-71) [ 942.321258] cx231xx #0: setPowerMode::mode = 48, No Change req. [ 942.325469] cx231xx #0: cannot change alt number to 3 (error=-71) [ 942.414031] cx231xx #0: UsbInterface::sendCommand, failed with status --71 [ 942.418243] cx231xx #0: UsbInterface::sendCommand, failed with status --71 [ 942.426574] cx231xx #0: UsbInterface::sendCommand, failed with status --71 [ 942.436218] cx231xx #0: UsbInterface::sendCommand, failed with status --71 [ 942.440032] cx231xx #0: cx231xx_stop_stream():: ep_mask = 8 [ 942.486846] cx231xx #0: can't change interface 3 alt no. to 0 (err=-71) [ 954.314727] cx231xx #0: setPowerMode::mode = 48, No Change req. [ 954.319030] cx231xx #0: cannot change alt number to 3 (error=-71) [ 954.333618] cx231xx #0: UsbInterface::sendCommand, failed with status --71 [ 954.337860] cx231xx #0: UsbInterface::sendCommand, failed with status --71 [ 954.342315] cx231xx #0: UsbInterface::sendCommand, failed with status --71 [ 954.348052] cx231xx #0: UsbInterface::sendCommand, failed with status --71 [ 955.153045] cx231xx #0: cx231xx_stop_stream():: ep_mask = 8 [ 955.162963] cx231xx #0: cx231xx_initialize_stream_xfer: set video registers [ 955.172302] cx231xx #0: UsbInterface::sendCommand, failed with status --71 [ 955.176788] cx231xx #0: UsbInterface::sendCommand, failed with status --71 [ 977.247924] cx231xx #0: UsbInterface::sendCommand, failed with status --71 [ 977.252502] cx231xx #0: UsbInterface::sendCommand, failed with status --71 [ 977.329895] cx231xx #0: cx231xx_stop_stream():: ep_mask = 8 [ 977.339508] cx231xx #0: can't change interface 3 alt no. to 0 (err=-71) We will try to increase PWR_SLEEP_INTERVAL even further (up to 50 msec), but if you have other ideas to try, we would definitely be interested. For the record, the same driver works just fine on x86, those problems are seen on an OMAP3 based ARM platform. Thanks! Thomas -- Thomas Petazzoni, Free Electrons Kernel, drivers, real-time and embedded Linux development, consulting, training and support. http://free-electrons.com Conexant E-mail Firewall (Conexant.Com) made the following annotations --------------------------------------------------------------------- ********************** Legal Disclaimer **************************** "This email may contain confidential and privileged material for the sole use of the intended recipient. Any unauthorized review, use or distribution by others is strictly prohibited. If you have received the message in error, please advise the sender by reply email and delete the message. Thank you." ********************************************************************** --------------------------------------------------------------------- ��.n��������+%������w��{.n�����{��g����^n�r������&��z�ޗ�zf���h���~����������_��+v���)ߣ�