Commit 5bb2399a authored by Hans Verkuil's avatar Hans Verkuil Committed by Mauro Carvalho Chehab

[media] cec: fix Kconfig dependency problems

- 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: default avatarHans Verkuil <hans.verkuil@cisco.com>
Reported-by: default avatarArnd Bergmann <arnd@arndb.de>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
parent ea8c535e
...@@ -81,7 +81,7 @@ config MEDIA_RC_SUPPORT ...@@ -81,7 +81,7 @@ config MEDIA_RC_SUPPORT
Say Y when you have a TV or an IR device. Say Y when you have a TV or an IR device.
config MEDIA_CEC_EDID config MEDIA_CEC_EDID
tristate bool
# #
# Media controller # Media controller
......
...@@ -2,7 +2,9 @@ ...@@ -2,7 +2,9 @@
# Makefile for the kernel multimedia device drivers. # 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 media-objs := media-device.o media-devnode.o media-entity.o
......
config MEDIA_CEC config MEDIA_CEC
tristate "CEC API (EXPERIMENTAL)" bool "CEC API (EXPERIMENTAL)"
depends on MEDIA_SUPPORT depends on MEDIA_SUPPORT
select MEDIA_CEC_EDID select MEDIA_CEC_EDID
---help--- ---help---
......
cec-objs := cec-core.o cec-adap.o cec-api.o 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
...@@ -23,5 +23,10 @@ Other TODOs: ...@@ -23,5 +23,10 @@ Other TODOs:
And also TYPE_SWITCH and TYPE_CDC_ONLY in addition to the TYPE_UNREGISTERED? 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 This should give the framework more information about the device type
since SPECIFIC and UNREGISTERED give no useful information. 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> Hans Verkuil <hans.verkuil@cisco.com>
...@@ -1456,7 +1456,7 @@ static int cec_receive_notify(struct cec_adapter *adap, struct cec_msg *msg, ...@@ -1456,7 +1456,7 @@ static int cec_receive_notify(struct cec_adapter *adap, struct cec_msg *msg,
if (!(adap->capabilities & CEC_CAP_RC)) if (!(adap->capabilities & CEC_CAP_RC))
break; break;
#if IS_ENABLED(CONFIG_RC_CORE) #if IS_REACHABLE(CONFIG_RC_CORE)
switch (msg->msg[2]) { switch (msg->msg[2]) {
/* /*
* Play function, this message can have variable length * 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, ...@@ -1492,7 +1492,7 @@ static int cec_receive_notify(struct cec_adapter *adap, struct cec_msg *msg,
case CEC_MSG_USER_CONTROL_RELEASED: case CEC_MSG_USER_CONTROL_RELEASED:
if (!(adap->capabilities & CEC_CAP_RC)) if (!(adap->capabilities & CEC_CAP_RC))
break; break;
#if IS_ENABLED(CONFIG_RC_CORE) #if IS_REACHABLE(CONFIG_RC_CORE)
rc_keyup(adap->rc); rc_keyup(adap->rc);
#endif #endif
break; break;
......
...@@ -239,7 +239,7 @@ struct cec_adapter *cec_allocate_adapter(const struct cec_adap_ops *ops, ...@@ -239,7 +239,7 @@ struct cec_adapter *cec_allocate_adapter(const struct cec_adap_ops *ops,
if (!(caps & CEC_CAP_RC)) if (!(caps & CEC_CAP_RC))
return adap; return adap;
#if IS_ENABLED(CONFIG_RC_CORE) #if IS_REACHABLE(CONFIG_RC_CORE)
/* Prepare the RC input device */ /* Prepare the RC input device */
adap->rc = rc_allocate_device(); adap->rc = rc_allocate_device();
if (!adap->rc) { if (!adap->rc) {
...@@ -282,7 +282,7 @@ int cec_register_adapter(struct cec_adapter *adap) ...@@ -282,7 +282,7 @@ int cec_register_adapter(struct cec_adapter *adap)
if (IS_ERR_OR_NULL(adap)) if (IS_ERR_OR_NULL(adap))
return 0; return 0;
#if IS_ENABLED(CONFIG_RC_CORE) #if IS_REACHABLE(CONFIG_RC_CORE)
if (adap->capabilities & CEC_CAP_RC) { if (adap->capabilities & CEC_CAP_RC) {
res = rc_register_device(adap->rc); res = rc_register_device(adap->rc);
...@@ -298,7 +298,7 @@ int cec_register_adapter(struct cec_adapter *adap) ...@@ -298,7 +298,7 @@ int cec_register_adapter(struct cec_adapter *adap)
res = cec_devnode_register(&adap->devnode, adap->owner); res = cec_devnode_register(&adap->devnode, adap->owner);
if (res) { if (res) {
#if IS_ENABLED(CONFIG_RC_CORE) #if IS_REACHABLE(CONFIG_RC_CORE)
/* Note: rc_unregister also calls rc_free */ /* Note: rc_unregister also calls rc_free */
rc_unregister_device(adap->rc); rc_unregister_device(adap->rc);
adap->rc = NULL; adap->rc = NULL;
...@@ -333,7 +333,7 @@ void cec_unregister_adapter(struct cec_adapter *adap) ...@@ -333,7 +333,7 @@ void cec_unregister_adapter(struct cec_adapter *adap)
if (IS_ERR_OR_NULL(adap)) if (IS_ERR_OR_NULL(adap))
return; return;
#if IS_ENABLED(CONFIG_RC_CORE) #if IS_REACHABLE(CONFIG_RC_CORE)
/* Note: rc_unregister also calls rc_free */ /* Note: rc_unregister also calls rc_free */
rc_unregister_device(adap->rc); rc_unregister_device(adap->rc);
adap->rc = NULL; adap->rc = NULL;
...@@ -353,7 +353,7 @@ void cec_delete_adapter(struct cec_adapter *adap) ...@@ -353,7 +353,7 @@ void cec_delete_adapter(struct cec_adapter *adap)
kthread_stop(adap->kthread); kthread_stop(adap->kthread);
if (adap->kthread_config) if (adap->kthread_config)
kthread_stop(adap->kthread_config); kthread_stop(adap->kthread_config);
#if IS_ENABLED(CONFIG_RC_CORE) #if IS_REACHABLE(CONFIG_RC_CORE)
if (adap->rc) if (adap->rc)
rc_free_device(adap->rc); rc_free_device(adap->rc);
#endif #endif
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment