Browse Source

[media] cec: set unclaimed addresses to CEC_LOG_ADDR_INVALID

Up to 4 logical addresses can be claimed. Make sure that any
unclaimed logical addresses are set to CEC_LOG_ADDR_INVALID as
per the documentation.

Take special care in the unregistered case: when falling back to
unregistered num_log_addrs may be > 1, so mark those as invalid.

Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
Hans Verkuil 9 years ago
parent
commit
0c1d61b0e4
1 changed files with 4 additions and 0 deletions
  1. 4 0
      drivers/staging/media/cec/cec-adap.c

+ 4 - 0
drivers/staging/media/cec/cec-adap.c

@@ -1056,6 +1056,8 @@ configured:
 		/* Fall back to unregistered */
 		/* Fall back to unregistered */
 		las->log_addr[0] = CEC_LOG_ADDR_UNREGISTERED;
 		las->log_addr[0] = CEC_LOG_ADDR_UNREGISTERED;
 		las->log_addr_mask = 1 << las->log_addr[0];
 		las->log_addr_mask = 1 << las->log_addr[0];
+		for (i = 1; i < las->num_log_addrs; i++)
+			las->log_addr[i] = CEC_LOG_ADDR_INVALID;
 	}
 	}
 	adap->is_configured = true;
 	adap->is_configured = true;
 	adap->is_configuring = false;
 	adap->is_configuring = false;
@@ -1074,6 +1076,8 @@ configured:
 			cec_report_features(adap, i);
 			cec_report_features(adap, i);
 		cec_report_phys_addr(adap, i);
 		cec_report_phys_addr(adap, i);
 	}
 	}
+	for (i = las->num_log_addrs; i < CEC_MAX_LOG_ADDRS; i++)
+		las->log_addr[i] = CEC_LOG_ADDR_INVALID;
 	mutex_lock(&adap->lock);
 	mutex_lock(&adap->lock);
 	adap->kthread_config = NULL;
 	adap->kthread_config = NULL;
 	mutex_unlock(&adap->lock);
 	mutex_unlock(&adap->lock);