This series assumes this v5.5 patch has been applied first: https://patchwork.linuxtv.org/patch/60641/ This series improves the code and fixes many issues that would only appear during stress testing. Part of it was trial-and-error based on observing how the USB device acted in corner cases. But after this series was applied this driver now passes the 'cec-compliance --test-adapter' tests. The stress testing was done by connecting two Pulse-Eight devices together and running this in one shell: cec-ctl --playback cec-ctl -d1 --tv -p0 while true; do date; cec-ctl -s -p f.f.f.f; sleep 2; cec-ctl -s -p 1.0.0.0; sleep 2; done This in another: while true ; do cec-ctl -s -t0 --image-view-on -v; done And this in a third: while true; do date; cec-ctl -s -d1 --tv; sleep .3; done This tests continuously unconfiguring and reconfiguring the logical addresses for both Pulse-Eights, and continuously sending the Image View On message. Regards, Hans Hans Verkuil (10): pulse8-cec: improve debugging pulse8-cec: reorganize function order pulse8-cec: locking improvements pulse8-cec: add 2nd debug level pulse8-cec: set tx_done_status for transmit_done status pulse8-cec: move the transmit to a workqueue pulse8-cec: queue received messages in an array pulse8-cec: use adap_free callback pulse8-cec: schedule next ping after current ping finished pulse8-cec: log when a CEC message is received drivers/media/usb/pulse8-cec/pulse8-cec.c | 769 +++++++++++++--------- 1 file changed, 457 insertions(+), 312 deletions(-) -- 2.23.0