|
@@ -92,7 +92,10 @@ static irqreturn_t s5p_cec_irq_handler(int irq, void *priv)
|
|
|
dev_dbg(cec->dev, "irq received\n");
|
|
|
|
|
|
if (status & CEC_STATUS_TX_DONE) {
|
|
|
- if (status & CEC_STATUS_TX_ERROR) {
|
|
|
+ if (status & CEC_STATUS_TX_NACK) {
|
|
|
+ dev_dbg(cec->dev, "CEC_STATUS_TX_NACK set\n");
|
|
|
+ cec->tx = STATE_NACK;
|
|
|
+ } else if (status & CEC_STATUS_TX_ERROR) {
|
|
|
dev_dbg(cec->dev, "CEC_STATUS_TX_ERROR set\n");
|
|
|
cec->tx = STATE_ERROR;
|
|
|
} else {
|
|
@@ -135,6 +138,12 @@ static irqreturn_t s5p_cec_irq_handler_thread(int irq, void *priv)
|
|
|
cec_transmit_done(cec->adap, CEC_TX_STATUS_OK, 0, 0, 0, 0);
|
|
|
cec->tx = STATE_IDLE;
|
|
|
break;
|
|
|
+ case STATE_NACK:
|
|
|
+ cec_transmit_done(cec->adap,
|
|
|
+ CEC_TX_STATUS_MAX_RETRIES | CEC_TX_STATUS_NACK,
|
|
|
+ 0, 1, 0, 0);
|
|
|
+ cec->tx = STATE_IDLE;
|
|
|
+ break;
|
|
|
case STATE_ERROR:
|
|
|
cec_transmit_done(cec->adap,
|
|
|
CEC_TX_STATUS_MAX_RETRIES | CEC_TX_STATUS_ERROR,
|