Set CEC_EVENT_FL_STATE_EDID_PRESENT if needed when posting the state
change event.

Signed-off-by: Hans Verkuil <[email protected]>
---
 drivers/media/cec/core/cec-adap.c |  2 ++
 drivers/media/cec/core/cec-api.c  | 10 ++++++----
 2 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/drivers/media/cec/core/cec-adap.c 
b/drivers/media/cec/core/cec-adap.c
index 1a7b79916e47..52a56cabedcf 100644
--- a/drivers/media/cec/core/cec-adap.c
+++ b/drivers/media/cec/core/cec-adap.c
@@ -323,6 +323,8 @@ static void cec_post_state_event(struct cec_adapter *adap)
        ev.state_change.log_addr_mask = adap->log_addrs.log_addr_mask;
        ev.state_change.have_conn_info =
                adap->conn_info.type != CEC_CONNECTOR_TYPE_NO_CONNECTOR;
+       if (adap->log_addrs.flags & CEC_LOG_ADDRS_FL_EDID_PRESENT)
+               ev.flags |= CEC_EVENT_FL_STATE_EDID_PRESENT;
        cec_queue_event(adap, &ev);
 }
 
diff --git a/drivers/media/cec/core/cec-api.c b/drivers/media/cec/core/cec-api.c
index 1ba080d5a123..77778ff737a6 100644
--- a/drivers/media/cec/core/cec-api.c
+++ b/drivers/media/cec/core/cec-api.c
@@ -560,10 +560,7 @@ static int cec_open(struct inode *inode, struct file *filp)
         * Initial events that are automatically sent when the cec device is
         * opened.
         */
-       struct cec_event ev = {
-               .event = CEC_EVENT_STATE_CHANGE,
-               .flags = CEC_EVENT_FL_INITIAL_STATE,
-       };
+       struct cec_event ev = {};
        unsigned int i;
        int err;
 
@@ -589,12 +586,17 @@ static int cec_open(struct inode *inode, struct file 
*filp)
        filp->private_data = fh;
 
        /* Queue up initial state events */
+       ev.event = CEC_EVENT_STATE_CHANGE;
        ev.state_change.phys_addr = adap->phys_addr;
        ev.state_change.log_addr_mask = adap->log_addrs.log_addr_mask;
        ev.state_change.have_conn_info =
                adap->conn_info.type != CEC_CONNECTOR_TYPE_NO_CONNECTOR;
+       ev.flags = CEC_EVENT_FL_INITIAL_STATE;
+       if (adap->log_addrs.flags & CEC_LOG_ADDRS_FL_EDID_PRESENT)
+               ev.flags |= CEC_EVENT_FL_STATE_EDID_PRESENT;
        cec_queue_event_fh(fh, &ev, 0);
 #ifdef CONFIG_CEC_PIN
+       ev.flags = CEC_EVENT_FL_INITIAL_STATE;
        if (adap->pin && adap->pin->ops->read_hpd &&
            !adap->devnode.unregistered) {
                err = adap->pin->ops->read_hpd(adap);
-- 
2.53.0

Reply via email to