|
@@ -1256,8 +1256,17 @@ configured:
|
|
adap->is_configured = true;
|
|
adap->is_configured = true;
|
|
adap->is_configuring = false;
|
|
adap->is_configuring = false;
|
|
cec_post_state_event(adap);
|
|
cec_post_state_event(adap);
|
|
- mutex_unlock(&adap->lock);
|
|
|
|
|
|
|
|
|
|
+ /*
|
|
|
|
+ * Now post the Report Features and Report Physical Address broadcast
|
|
|
|
+ * messages. Note that these are non-blocking transmits, meaning that
|
|
|
|
+ * they are just queued up and once adap->lock is unlocked the main
|
|
|
|
+ * thread will kick in and start transmitting these.
|
|
|
|
+ *
|
|
|
|
+ * If after this function is done (but before one or more of these
|
|
|
|
+ * messages are actually transmitted) the CEC adapter is unconfigured,
|
|
|
|
+ * then any remaining messages will be dropped by the main thread.
|
|
|
|
+ */
|
|
for (i = 0; i < las->num_log_addrs; i++) {
|
|
for (i = 0; i < las->num_log_addrs; i++) {
|
|
struct cec_msg msg = {};
|
|
struct cec_msg msg = {};
|
|
|
|
|
|
@@ -1271,7 +1280,7 @@ configured:
|
|
if (las->log_addr[i] != CEC_LOG_ADDR_UNREGISTERED &&
|
|
if (las->log_addr[i] != CEC_LOG_ADDR_UNREGISTERED &&
|
|
adap->log_addrs.cec_version >= CEC_OP_CEC_VERSION_2_0) {
|
|
adap->log_addrs.cec_version >= CEC_OP_CEC_VERSION_2_0) {
|
|
cec_fill_msg_report_features(adap, &msg, i);
|
|
cec_fill_msg_report_features(adap, &msg, i);
|
|
- cec_transmit_msg(adap, &msg, false);
|
|
|
|
|
|
+ cec_transmit_msg_fh(adap, &msg, NULL, false);
|
|
}
|
|
}
|
|
|
|
|
|
/* Report Physical Address */
|
|
/* Report Physical Address */
|
|
@@ -1280,12 +1289,11 @@ configured:
|
|
dprintk(2, "config: la %d pa %x.%x.%x.%x\n",
|
|
dprintk(2, "config: la %d pa %x.%x.%x.%x\n",
|
|
las->log_addr[i],
|
|
las->log_addr[i],
|
|
cec_phys_addr_exp(adap->phys_addr));
|
|
cec_phys_addr_exp(adap->phys_addr));
|
|
- cec_transmit_msg(adap, &msg, false);
|
|
|
|
|
|
+ cec_transmit_msg_fh(adap, &msg, NULL, false);
|
|
}
|
|
}
|
|
- mutex_lock(&adap->lock);
|
|
|
|
adap->kthread_config = NULL;
|
|
adap->kthread_config = NULL;
|
|
- mutex_unlock(&adap->lock);
|
|
|
|
complete(&adap->config_completion);
|
|
complete(&adap->config_completion);
|
|
|
|
+ mutex_unlock(&adap->lock);
|
|
return 0;
|
|
return 0;
|
|
|
|
|
|
unconfigure:
|
|
unconfigure:
|