This is an automatic generated email to let you know that the following patch 
were queued:

Subject: media: cec: add optional adap_configured callback
Author:  Hans Verkuil <[email protected]>
Date:    Thu Feb 3 12:11:15 2022 +0000

This new optional callback is called when the adapter is fully configured
or fully unconfigured. Some drivers may have to take action when this
happens.

Signed-off-by: Hans Verkuil <[email protected]>
Signed-off-by: Mauro Carvalho Chehab <[email protected]>

 Documentation/driver-api/media/cec-core.rst | 13 ++++++++++++-
 drivers/media/cec/core/cec-adap.c           |  2 ++
 include/media/cec.h                         |  1 +
 3 files changed, 15 insertions(+), 1 deletion(-)

---

diff --git a/Documentation/driver-api/media/cec-core.rst 
b/Documentation/driver-api/media/cec-core.rst
index c6194ee81c41..ae0d20798edc 100644
--- a/Documentation/driver-api/media/cec-core.rst
+++ b/Documentation/driver-api/media/cec-core.rst
@@ -109,6 +109,7 @@ your driver:
                int (*adap_monitor_all_enable)(struct cec_adapter *adap, bool 
enable);
                int (*adap_monitor_pin_enable)(struct cec_adapter *adap, bool 
enable);
                int (*adap_log_addr)(struct cec_adapter *adap, u8 logical_addr);
+               void (*adap_configured)(struct cec_adapter *adap, bool 
configured);
                int (*adap_transmit)(struct cec_adapter *adap, u8 attempts,
                                      u32 signal_free_time, struct cec_msg 
*msg);
                void (*adap_status)(struct cec_adapter *adap, struct seq_file 
*file);
@@ -117,7 +118,7 @@ your driver:
                /* Error injection callbacks */
                ...
 
-               /* High-level callbacks */
+               /* High-level callback */
                ...
        };
 
@@ -178,6 +179,16 @@ can receive directed messages to that address.
 Note that adap_log_addr must return 0 if logical_addr is CEC_LOG_ADDR_INVALID.
 
 
+Called when the adapter is fully configured or unconfigured::
+
+       void (*adap_configured)(struct cec_adapter *adap, bool configured);
+
+If configured == true, then the adapter is fully configured, i.e. all logical
+addresses have been successfully claimed. If configured == false, then the
+adapter is unconfigured. If the driver has to take specific actions after
+(un)configuration, then that can be done through this optional callback.
+
+
 To transmit a new message::
 
        int (*adap_transmit)(struct cec_adapter *adap, u8 attempts,
diff --git a/drivers/media/cec/core/cec-adap.c 
b/drivers/media/cec/core/cec-adap.c
index 2425cb4c6a9a..e789aec7455c 100644
--- a/drivers/media/cec/core/cec-adap.c
+++ b/drivers/media/cec/core/cec-adap.c
@@ -1336,6 +1336,7 @@ static void cec_adap_unconfigure(struct cec_adapter *adap)
        cec_flush(adap);
        wake_up_interruptible(&adap->kthread_waitq);
        cec_post_state_event(adap);
+       call_void_op(adap, adap_configured, false);
 }
 
 /*
@@ -1517,6 +1518,7 @@ configured:
        adap->kthread_config = NULL;
        complete(&adap->config_completion);
        mutex_unlock(&adap->lock);
+       call_void_op(adap, adap_configured, true);
        return 0;
 
 unconfigure:
diff --git a/include/media/cec.h b/include/media/cec.h
index 80340c9eb0f2..6f13b0222aa3 100644
--- a/include/media/cec.h
+++ b/include/media/cec.h
@@ -118,6 +118,7 @@ struct cec_adap_ops {
        int (*adap_monitor_all_enable)(struct cec_adapter *adap, bool enable);
        int (*adap_monitor_pin_enable)(struct cec_adapter *adap, bool enable);
        int (*adap_log_addr)(struct cec_adapter *adap, u8 logical_addr);
+       void (*adap_configured)(struct cec_adapter *adap, bool configured);
        int (*adap_transmit)(struct cec_adapter *adap, u8 attempts,
                             u32 signal_free_time, struct cec_msg *msg);
        void (*adap_status)(struct cec_adapter *adap, struct seq_file *file);

_______________________________________________
linuxtv-commits mailing list
[email protected]
https://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits

Reply via email to