mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-06 08:46:46 +00:00
[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: Hans Verkuil <hans.verkuil@cisco.com> Reported-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
This commit is contained in:
parent
ea8c535e30
commit
5bb2399a4f
7 changed files with 20 additions and 11 deletions
|
@ -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 @@
|
||||||
# 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
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
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---
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
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:
|
||||||
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,
|
||||||
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,
|
||||||
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,
|
||||||
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)
|
||||||
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)
|
||||||
|
|
||||||
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)
|
||||||
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)
|
||||||
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
|
||||||
|
|
Loading…
Reference in a new issue