OSDN Git Service

[media] cec: add MEDIA_CEC_RC config option
authorHans Verkuil <hans.verkuil@cisco.com>
Mon, 17 Apr 2017 11:05:10 +0000 (08:05 -0300)
committerMauro Carvalho Chehab <mchehab@s-opensource.com>
Wed, 19 Apr 2017 09:54:15 +0000 (06:54 -0300)
Add an explicit config option to select whether the CEC remote control
messages are to be passed on to the RC subsystem or not.

Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
drivers/media/cec/Kconfig
drivers/media/cec/cec-adap.c
drivers/media/cec/cec-core.c

index 24b5318..f944d93 100644 (file)
@@ -6,8 +6,14 @@ config CEC_CORE
 config MEDIA_CEC_NOTIFIER
        bool
 
+config MEDIA_CEC_RC
+       bool "HDMI CEC RC integration"
+       depends on CEC_CORE && RC_CORE
+       ---help---
+         Pass on CEC remote control messages to the RC framework.
+
 config MEDIA_CEC_DEBUG
        bool "HDMI CEC debugfs interface"
-       depends on MEDIA_CEC_SUPPORT && DEBUG_FS
+       depends on CEC_CORE && DEBUG_FS
        ---help---
          Turns on the DebugFS interface for CEC devices.
index 25d0a83..f5fe01c 100644 (file)
@@ -1732,7 +1732,7 @@ static int cec_receive_notify(struct cec_adapter *adap, struct cec_msg *msg,
                    !(adap->log_addrs.flags & CEC_LOG_ADDRS_FL_ALLOW_RC_PASSTHRU))
                        break;
 
-#if IS_REACHABLE(CONFIG_RC_CORE)
+#ifdef CONFIG_MEDIA_CEC_RC
                switch (msg->msg[2]) {
                /*
                 * Play function, this message can have variable length
@@ -1769,7 +1769,7 @@ static int cec_receive_notify(struct cec_adapter *adap, struct cec_msg *msg,
                if (!(adap->capabilities & CEC_CAP_RC) ||
                    !(adap->log_addrs.flags & CEC_LOG_ADDRS_FL_ALLOW_RC_PASSTHRU))
                        break;
-#if IS_REACHABLE(CONFIG_RC_CORE)
+#ifdef CONFIG_MEDIA_CEC_RC
                rc_keyup(adap->rc);
 #endif
                break;
index 430f5e0..a21fca7 100644 (file)
@@ -220,7 +220,7 @@ struct cec_adapter *cec_allocate_adapter(const struct cec_adap_ops *ops,
        struct cec_adapter *adap;
        int res;
 
-#if !IS_REACHABLE(CONFIG_RC_CORE)
+#ifndef CONFIG_MEDIA_CEC_RC
        caps &= ~CEC_CAP_RC;
 #endif
 
@@ -256,7 +256,7 @@ struct cec_adapter *cec_allocate_adapter(const struct cec_adap_ops *ops,
                return ERR_PTR(res);
        }
 
-#if IS_REACHABLE(CONFIG_RC_CORE)
+#ifdef CONFIG_MEDIA_CEC_RC
        if (!(caps & CEC_CAP_RC))
                return adap;
 
@@ -305,7 +305,7 @@ int cec_register_adapter(struct cec_adapter *adap,
        adap->owner = parent->driver->owner;
        adap->devnode.dev.parent = parent;
 
-#if IS_REACHABLE(CONFIG_RC_CORE)
+#ifdef CONFIG_MEDIA_CEC_RC
        if (adap->capabilities & CEC_CAP_RC) {
                adap->rc->dev.parent = parent;
                res = rc_register_device(adap->rc);
@@ -322,7 +322,7 @@ int cec_register_adapter(struct cec_adapter *adap,
 
        res = cec_devnode_register(&adap->devnode, adap->owner);
        if (res) {
-#if IS_REACHABLE(CONFIG_RC_CORE)
+#ifdef CONFIG_MEDIA_CEC_RC
                /* Note: rc_unregister also calls rc_free */
                rc_unregister_device(adap->rc);
                adap->rc = NULL;
@@ -357,7 +357,7 @@ void cec_unregister_adapter(struct cec_adapter *adap)
        if (IS_ERR_OR_NULL(adap))
                return;
 
-#if IS_REACHABLE(CONFIG_RC_CORE)
+#ifdef CONFIG_MEDIA_CEC_RC
        /* Note: rc_unregister also calls rc_free */
        rc_unregister_device(adap->rc);
        adap->rc = NULL;
@@ -381,7 +381,7 @@ void cec_delete_adapter(struct cec_adapter *adap)
        kthread_stop(adap->kthread);
        if (adap->kthread_config)
                kthread_stop(adap->kthread_config);
-#if IS_REACHABLE(CONFIG_RC_CORE)
+#ifdef CONFIG_MEDIA_CEC_RC
        rc_free_device(adap->rc);
 #endif
        kfree(adap);