Thank you for your contribution! Sashiko AI review found 1 potential issue(s) 
to consider:
- [High] media: cec: undeclared and unset EDID_PRESENT flags break build
--

commit 4a28932b9583376e3239ca1f0078c8d04cbe00a1
Author: Hans Verkuil <[email protected]>

media: cec: core: implement CEC_EVENT_FL_STATE_EDID_PRESENT

This commit checks for CEC_LOG_ADDRS_FL_EDID_PRESENT in
adap->log_addrs.flags and sets CEC_EVENT_FL_STATE_EDID_PRESENT on
CEC_EVENT_STATE_CHANGE events in cec_post_state_event() and cec_open().

> diff --git a/drivers/media/cec/core/cec-adap.c 
> b/drivers/media/cec/core/cec-adap.c
> index ee8a200b9803f..c02d036ee221e 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 a491d7fc8a71a..a2ceea5522d46 100644
> --- a/drivers/media/cec/core/cec-api.c
> +++ b/drivers/media/cec/core/cec-api.c
> @@ -559,10 +559,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;
>  
> @@ -588,12 +585,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;

[Severity: High]
Are the header definitions and flag updates for
CEC_LOG_ADDRS_FL_EDID_PRESENT and CEC_EVENT_FL_STATE_EDID_PRESENT missing
from this patch?

In both cec_post_state_event() in drivers/media/cec/core/cec-adap.c and
cec_open() in drivers/media/cec/core/cec-api.c, the build fails with
undeclared identifier errors because neither CEC_LOG_ADDRS_FL_EDID_PRESENT
nor CEC_EVENT_FL_STATE_EDID_PRESENT is defined in include/uapi/linux/cec.h:

#define CEC_EVENT_FL_INITIAL_STATE      (1 << 0)
#define CEC_EVENT_FL_DROPPED_EVENTS     (1 << 1)

In addition, nothing in the tree sets CEC_LOG_ADDRS_FL_EDID_PRESENT in
adap->log_addrs.flags, and cec_adap_s_log_addrs() in
drivers/media/cec/core/cec-api.c strips all other flags before
__cec_s_log_addrs() updates adap->log_addrs:

        log_addrs.flags &= CEC_LOG_ADDRS_FL_ALLOW_UNREG_FALLBACK |
                           CEC_LOG_ADDRS_FL_ALLOW_RC_PASSTHRU |
                           CEC_LOG_ADDRS_FL_CDC_ONLY;

Should include/uapi/linux/cec.h define these flags, and should the CEC core
set or preserve CEC_LOG_ADDRS_FL_EDID_PRESENT when EDID is present?

-- 
Sashiko AI review ยท 
https://sashiko.dev/#/patchset/897c6071fbdca71dbb446b03e32c0e6af219ecf0.1793691124.git.hverkuil+ci...@kernel.org?part=1

Reply via email to