]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
[media] cec: fix Kconfig dependency problems
authorHans Verkuil <hans.verkuil@cisco.com>
Fri, 1 Jul 2016 10:33:10 +0000 (07:33 -0300)
committerMauro Carvalho Chehab <mchehab@s-opensource.com>
Fri, 8 Jul 2016 21:34:00 +0000 (18:34 -0300)
- Use IS_REACHABLE(RC_CORE) instead of IS_ENABLED: if cec is built-in and
  RC_CORE is a module, then CEC can't reach the RC symbols.
- Both cec and cec-edid should be bool and use the same build 'mode' as
  MEDIA_SUPPORT (just as is done for the media controller code).
- Add a note to staging that this should be changed once the cec framework
  is moved out of staging.

Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Reported-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
drivers/media/Kconfig
drivers/media/Makefile
drivers/staging/media/cec/Kconfig
drivers/staging/media/cec/Makefile
drivers/staging/media/cec/TODO
drivers/staging/media/cec/cec-adap.c
drivers/staging/media/cec/cec-core.c

index 052dcf77174b3605524c83af2cb00462a309da79..962f2a9a6614ccfb38b05eaab5badf6e5cfc9c82 100644 (file)
@@ -81,7 +81,7 @@ config MEDIA_RC_SUPPORT
          Say Y when you have a TV or an IR device.
 
 config MEDIA_CEC_EDID
-       tristate
+       bool
 
 #
 # Media controller
index b56f013b78c3a8e4faee6e0d9f6b75e3e413c4f9..081a7866fd44557d57cbe41b763713bdfb442b37 100644 (file)
@@ -2,7 +2,9 @@
 # Makefile for the kernel multimedia device drivers.
 #
 
-obj-$(CONFIG_MEDIA_CEC_EDID) += cec-edid.o
+ifeq ($(CONFIG_MEDIA_CEC_EDID),y)
+  obj-$(CONFIG_MEDIA_SUPPORT) += cec-edid.o
+endif
 
 media-objs     := media-device.o media-devnode.o media-entity.o
 
index cd523590ea6f3a42b1ff59ed818a0304dd6c33e0..21457a1f6c9f0de3d3278cdec022ae404ec1bc33 100644 (file)
@@ -1,5 +1,5 @@
 config MEDIA_CEC
-       tristate "CEC API (EXPERIMENTAL)"
+       bool "CEC API (EXPERIMENTAL)"
        depends on MEDIA_SUPPORT
        select MEDIA_CEC_EDID
        ---help---
index 426ef73b959f6296c6b932cefc75e60824486ecf..bd7f3c5934680bb349153f3319e13ea365137c68 100644 (file)
@@ -1,3 +1,5 @@
 cec-objs := cec-core.o cec-adap.o cec-api.o
 
-obj-$(CONFIG_MEDIA_CEC) += cec.o
+ifeq ($(CONFIG_MEDIA_CEC),y)
+  obj-$(CONFIG_MEDIA_SUPPORT) += cec.o
+endif
index a8f4b7df38c8093318de7cfe0db7f80abe0a34ca..8221d44f5c729e505dd3417c1738279afbdc6866 100644 (file)
@@ -23,5 +23,10 @@ Other TODOs:
   And also TYPE_SWITCH and TYPE_CDC_ONLY in addition to the TYPE_UNREGISTERED?
   This should give the framework more information about the device type
   since SPECIFIC and UNREGISTERED give no useful information.
+- Once this is out of staging this should no longer be a separate
+  config option, instead it should be selected by drivers that want it.
+- Revisit the IS_REACHABLE(RC_CORE): perhaps the RC_CORE support should
+  be enabled through a separate config option in drivers/media/Kconfig
+  or rc/Kconfig?
 
 Hans Verkuil <hans.verkuil@cisco.com>
index 307af431aea7287cadd31ceee9c81dd81b7aadfe..7df61870473caebdc706ae2dc03c61e3c470d2f0 100644 (file)
@@ -1456,7 +1456,7 @@ static int cec_receive_notify(struct cec_adapter *adap, struct cec_msg *msg,
                if (!(adap->capabilities & CEC_CAP_RC))
                        break;
 
-#if IS_ENABLED(CONFIG_RC_CORE)
+#if IS_REACHABLE(CONFIG_RC_CORE)
                switch (msg->msg[2]) {
                /*
                 * Play function, this message can have variable length
@@ -1492,7 +1492,7 @@ static int cec_receive_notify(struct cec_adapter *adap, struct cec_msg *msg,
        case CEC_MSG_USER_CONTROL_RELEASED:
                if (!(adap->capabilities & CEC_CAP_RC))
                        break;
-#if IS_ENABLED(CONFIG_RC_CORE)
+#if IS_REACHABLE(CONFIG_RC_CORE)
                rc_keyup(adap->rc);
 #endif
                break;
index 61a1e69a902ab20efd3629f4fd179a9ba30766da..112a5fae12f5dd1c11f592c1e3a087d3dc45e84c 100644 (file)
@@ -239,7 +239,7 @@ struct cec_adapter *cec_allocate_adapter(const struct cec_adap_ops *ops,
        if (!(caps & CEC_CAP_RC))
                return adap;
 
-#if IS_ENABLED(CONFIG_RC_CORE)
+#if IS_REACHABLE(CONFIG_RC_CORE)
        /* Prepare the RC input device */
        adap->rc = rc_allocate_device();
        if (!adap->rc) {
@@ -282,7 +282,7 @@ int cec_register_adapter(struct cec_adapter *adap)
        if (IS_ERR_OR_NULL(adap))
                return 0;
 
-#if IS_ENABLED(CONFIG_RC_CORE)
+#if IS_REACHABLE(CONFIG_RC_CORE)
        if (adap->capabilities & CEC_CAP_RC) {
                res = rc_register_device(adap->rc);
 
@@ -298,7 +298,7 @@ int cec_register_adapter(struct cec_adapter *adap)
 
        res = cec_devnode_register(&adap->devnode, adap->owner);
        if (res) {
-#if IS_ENABLED(CONFIG_RC_CORE)
+#if IS_REACHABLE(CONFIG_RC_CORE)
                /* Note: rc_unregister also calls rc_free */
                rc_unregister_device(adap->rc);
                adap->rc = NULL;
@@ -333,7 +333,7 @@ void cec_unregister_adapter(struct cec_adapter *adap)
        if (IS_ERR_OR_NULL(adap))
                return;
 
-#if IS_ENABLED(CONFIG_RC_CORE)
+#if IS_REACHABLE(CONFIG_RC_CORE)
        /* Note: rc_unregister also calls rc_free */
        rc_unregister_device(adap->rc);
        adap->rc = NULL;
@@ -353,7 +353,7 @@ void cec_delete_adapter(struct cec_adapter *adap)
        kthread_stop(adap->kthread);
        if (adap->kthread_config)
                kthread_stop(adap->kthread_config);
-#if IS_ENABLED(CONFIG_RC_CORE)
+#if IS_REACHABLE(CONFIG_RC_CORE)
        if (adap->rc)
                rc_free_device(adap->rc);
 #endif