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

Subject: media: cec: move cec_get/put_device to header
Author:  Hans Verkuil <hverkuil-ci...@xs4all.nl>
Date:    Fri Aug 2 12:19:48 2024 +0200

Move cec_get/put_device to the media/cec.h header. This
allows CEC drivers to use this.

Signed-off-by: Hans Verkuil <hverkuil-ci...@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab+hua...@kernel.org>

 drivers/media/cec/core/cec-api.c  |  4 ++--
 drivers/media/cec/core/cec-core.c | 29 -----------------------------
 drivers/media/cec/core/cec-priv.h |  2 --
 include/media/cec.h               | 31 +++++++++++++++++++++++++++++++
 4 files changed, 33 insertions(+), 33 deletions(-)

---

diff --git a/drivers/media/cec/core/cec-api.c b/drivers/media/cec/core/cec-api.c
index 3ef915344304..c75a4057f00e 100644
--- a/drivers/media/cec/core/cec-api.c
+++ b/drivers/media/cec/core/cec-api.c
@@ -580,7 +580,7 @@ static int cec_open(struct inode *inode, struct file *filp)
        fh->mode_initiator = CEC_MODE_INITIATOR;
        fh->adap = adap;
 
-       err = cec_get_device(devnode);
+       err = cec_get_device(adap);
        if (err) {
                kfree(fh);
                return err;
@@ -686,7 +686,7 @@ static int cec_release(struct inode *inode, struct file 
*filp)
        mutex_unlock(&fh->lock);
        kfree(fh);
 
-       cec_put_device(devnode);
+       cec_put_device(adap);
        filp->private_data = NULL;
        return 0;
 }
diff --git a/drivers/media/cec/core/cec-core.c 
b/drivers/media/cec/core/cec-core.c
index e0756826d629..48282d272fe6 100644
--- a/drivers/media/cec/core/cec-core.c
+++ b/drivers/media/cec/core/cec-core.c
@@ -51,35 +51,6 @@ static struct dentry *top_cec_dir;
 /* dev to cec_devnode */
 #define to_cec_devnode(cd) container_of(cd, struct cec_devnode, dev)
 
-int cec_get_device(struct cec_devnode *devnode)
-{
-       /*
-        * Check if the cec device is available. This needs to be done with
-        * the devnode->lock held to prevent an open/unregister race:
-        * without the lock, the device could be unregistered and freed between
-        * the devnode->registered check and get_device() calls, leading to
-        * a crash.
-        */
-       mutex_lock(&devnode->lock);
-       /*
-        * return ENODEV if the cec device has been removed
-        * already or if it is not registered anymore.
-        */
-       if (!devnode->registered) {
-               mutex_unlock(&devnode->lock);
-               return -ENODEV;
-       }
-       /* and increase the device refcount */
-       get_device(&devnode->dev);
-       mutex_unlock(&devnode->lock);
-       return 0;
-}
-
-void cec_put_device(struct cec_devnode *devnode)
-{
-       put_device(&devnode->dev);
-}
-
 /* Called when the last user of the cec device exits. */
 static void cec_devnode_release(struct device *cd)
 {
diff --git a/drivers/media/cec/core/cec-priv.h 
b/drivers/media/cec/core/cec-priv.h
index ed1f8c67626b..ce42a37c4ac0 100644
--- a/drivers/media/cec/core/cec-priv.h
+++ b/drivers/media/cec/core/cec-priv.h
@@ -37,8 +37,6 @@ static inline bool msg_is_raw(const struct cec_msg *msg)
 
 /* cec-core.c */
 extern int cec_debug;
-int cec_get_device(struct cec_devnode *devnode);
-void cec_put_device(struct cec_devnode *devnode);
 
 /* cec-adap.c */
 int cec_monitor_all_cnt_inc(struct cec_adapter *adap);
diff --git a/include/media/cec.h b/include/media/cec.h
index 07d2ee8a3904..16b412b3131b 100644
--- a/include/media/cec.h
+++ b/include/media/cec.h
@@ -298,6 +298,37 @@ struct cec_adapter {
        char input_phys[40];
 };
 
+static inline int cec_get_device(struct cec_adapter *adap)
+{
+       struct cec_devnode *devnode = &adap->devnode;
+
+       /*
+        * Check if the cec device is available. This needs to be done with
+        * the devnode->lock held to prevent an open/unregister race:
+        * without the lock, the device could be unregistered and freed between
+        * the devnode->registered check and get_device() calls, leading to
+        * a crash.
+        */
+       mutex_lock(&devnode->lock);
+       /*
+        * return ENODEV if the cec device has been removed
+        * already or if it is not registered anymore.
+        */
+       if (!devnode->registered) {
+               mutex_unlock(&devnode->lock);
+               return -ENODEV;
+       }
+       /* and increase the device refcount */
+       get_device(&devnode->dev);
+       mutex_unlock(&devnode->lock);
+       return 0;
+}
+
+static inline void cec_put_device(struct cec_adapter *adap)
+{
+       put_device(&adap->devnode.dev);
+}
+
 static inline void *cec_get_drvdata(const struct cec_adapter *adap)
 {
        return adap->priv;

Reply via email to