The switch in cec_transmit_attempt_done() should ignore the
CEC_TX_STATUS_MAX_RETRIES status bit.

Calling this function with e.g. CEC_TX_STATUS_NACK | CEC_TX_STATUS_MAX_RETRIES
is perfectly legal and should not trigger the WARN(1).

Signed-off-by: Hans Verkuil <hans.verk...@cisco.com>
---
After testing the DisplayPort CEC-Tunneling-over-AUX support with an adapter
that didn't hook up the CEC pin correctly I found a bug in this CEC core 
function
that is corrected with this patch.
---
 drivers/media/cec/cec-adap.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/media/cec/cec-adap.c b/drivers/media/cec/cec-adap.c
index bf45977b2823..d596b601ff42 100644
--- a/drivers/media/cec/cec-adap.c
+++ b/drivers/media/cec/cec-adap.c
@@ -559,7 +559,7 @@ EXPORT_SYMBOL_GPL(cec_transmit_done);

 void cec_transmit_attempt_done(struct cec_adapter *adap, u8 status)
 {
-       switch (status) {
+       switch (status & ~CEC_TX_STATUS_MAX_RETRIES) {
        case CEC_TX_STATUS_OK:
                cec_transmit_done(adap, status, 0, 0, 0, 0);
                return;
-- 
2.11.0


Reply via email to