[media] cec: add MEDIA_CEC_RC config option
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>
This commit is contained in:
Родитель
ee7e987133
Коммит
5f2c467c54
|
@ -6,8 +6,14 @@ config CEC_CORE
|
||||||
config MEDIA_CEC_NOTIFIER
|
config MEDIA_CEC_NOTIFIER
|
||||||
bool
|
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
|
config MEDIA_CEC_DEBUG
|
||||||
bool "HDMI CEC debugfs interface"
|
bool "HDMI CEC debugfs interface"
|
||||||
depends on MEDIA_CEC_SUPPORT && DEBUG_FS
|
depends on CEC_CORE && DEBUG_FS
|
||||||
---help---
|
---help---
|
||||||
Turns on the DebugFS interface for CEC devices.
|
Turns on the DebugFS interface for CEC devices.
|
||||||
|
|
|
@ -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))
|
!(adap->log_addrs.flags & CEC_LOG_ADDRS_FL_ALLOW_RC_PASSTHRU))
|
||||||
break;
|
break;
|
||||||
|
|
||||||
#if IS_REACHABLE(CONFIG_RC_CORE)
|
#ifdef CONFIG_MEDIA_CEC_RC
|
||||||
switch (msg->msg[2]) {
|
switch (msg->msg[2]) {
|
||||||
/*
|
/*
|
||||||
* Play function, this message can have variable length
|
* 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) ||
|
if (!(adap->capabilities & CEC_CAP_RC) ||
|
||||||
!(adap->log_addrs.flags & CEC_LOG_ADDRS_FL_ALLOW_RC_PASSTHRU))
|
!(adap->log_addrs.flags & CEC_LOG_ADDRS_FL_ALLOW_RC_PASSTHRU))
|
||||||
break;
|
break;
|
||||||
#if IS_REACHABLE(CONFIG_RC_CORE)
|
#ifdef CONFIG_MEDIA_CEC_RC
|
||||||
rc_keyup(adap->rc);
|
rc_keyup(adap->rc);
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -220,7 +220,7 @@ struct cec_adapter *cec_allocate_adapter(const struct cec_adap_ops *ops,
|
||||||
struct cec_adapter *adap;
|
struct cec_adapter *adap;
|
||||||
int res;
|
int res;
|
||||||
|
|
||||||
#if !IS_REACHABLE(CONFIG_RC_CORE)
|
#ifndef CONFIG_MEDIA_CEC_RC
|
||||||
caps &= ~CEC_CAP_RC;
|
caps &= ~CEC_CAP_RC;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -256,7 +256,7 @@ struct cec_adapter *cec_allocate_adapter(const struct cec_adap_ops *ops,
|
||||||
return ERR_PTR(res);
|
return ERR_PTR(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if IS_REACHABLE(CONFIG_RC_CORE)
|
#ifdef CONFIG_MEDIA_CEC_RC
|
||||||
if (!(caps & CEC_CAP_RC))
|
if (!(caps & CEC_CAP_RC))
|
||||||
return adap;
|
return adap;
|
||||||
|
|
||||||
|
@ -305,7 +305,7 @@ int cec_register_adapter(struct cec_adapter *adap,
|
||||||
adap->owner = parent->driver->owner;
|
adap->owner = parent->driver->owner;
|
||||||
adap->devnode.dev.parent = parent;
|
adap->devnode.dev.parent = parent;
|
||||||
|
|
||||||
#if IS_REACHABLE(CONFIG_RC_CORE)
|
#ifdef CONFIG_MEDIA_CEC_RC
|
||||||
if (adap->capabilities & CEC_CAP_RC) {
|
if (adap->capabilities & CEC_CAP_RC) {
|
||||||
adap->rc->dev.parent = parent;
|
adap->rc->dev.parent = parent;
|
||||||
res = rc_register_device(adap->rc);
|
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);
|
res = cec_devnode_register(&adap->devnode, adap->owner);
|
||||||
if (res) {
|
if (res) {
|
||||||
#if IS_REACHABLE(CONFIG_RC_CORE)
|
#ifdef CONFIG_MEDIA_CEC_RC
|
||||||
/* 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;
|
||||||
|
@ -357,7 +357,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_REACHABLE(CONFIG_RC_CORE)
|
#ifdef CONFIG_MEDIA_CEC_RC
|
||||||
/* 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;
|
||||||
|
@ -381,7 +381,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_REACHABLE(CONFIG_RC_CORE)
|
#ifdef CONFIG_MEDIA_CEC_RC
|
||||||
rc_free_device(adap->rc);
|
rc_free_device(adap->rc);
|
||||||
#endif
|
#endif
|
||||||
kfree(adap);
|
kfree(adap);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче