UPSTREAM: [media] cec: Kconfig cleanup

The Kconfig options for the CEC subsystem were a bit messy. In
addition there were two cec sources (cec-edid.c and cec-notifier.c)
that were outside of the media/cec directory, which was weird.

Move those sources to media/cec as well.

The cec-edid and cec-notifier functionality is now part of the cec
module and these are no longer separate modules.

Also remove the MEDIA_CEC_EDID config option and include it with the
main CEC config option (which defined CEC_EDID anyway).

Added static inlines to cec-edid.h for dummy functions when CEC_CORE
isn't defined.

CEC drivers should now depend on CEC_CORE.

CEC drivers that need the cec-notifier functionality must explicitly
select CEC_NOTIFIER.

The s5p-cec and stih-cec drivers depended on VIDEO_DEV instead of
CEC_CORE, fix that as well.

Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Acked-by: Benjamin Gaignard <benjamin.gaignard@linaro.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
(cherry picked from commit 56a263aaa0)

Change-Id: I3c83c4d1aea534c2e8163422c73c8bc276f20f8f
Signed-off-by: Algea Cao <algea.cao@rock-chips.com>
This commit is contained in:
Algea Cao 2017-12-26 11:48:24 +08:00 committed by Tao Huang
parent f43408f55b
commit d9b22827d2
8 changed files with 57 additions and 39 deletions

View File

@ -81,27 +81,15 @@ config MEDIA_RC_SUPPORT
Say Y when you have a TV or an IR device.
config MEDIA_CEC_SUPPORT
bool "HDMI CEC support"
select MEDIA_CEC_EDID
---help---
Enable support for HDMI CEC (Consumer Electronics Control),
which is an optional HDMI feature.
bool "HDMI CEC support"
---help---
Enable support for HDMI CEC (Consumer Electronics Control),
which is an optional HDMI feature.
Say Y when you have an HDMI receiver, transmitter or a USB CEC
adapter that supports HDMI CEC.
Say Y when you have an HDMI receiver, transmitter or a USB CEC
adapter that supports HDMI CEC.
config MEDIA_CEC_DEBUG
bool "HDMI CEC debugfs interface"
depends on MEDIA_CEC_SUPPORT && DEBUG_FS
---help---
Turns on the DebugFS interface for CEC devices.
config MEDIA_CEC_EDID
bool
config MEDIA_CEC_NOTIFIER
bool
select MEDIA_CEC_EDID
source "drivers/media/cec/Kconfig"
#
# Media controller

View File

@ -2,20 +2,10 @@
# Makefile for the kernel multimedia device drivers.
#
ifeq ($(CONFIG_MEDIA_CEC_EDID),y)
obj-$(CONFIG_MEDIA_SUPPORT) += cec-edid.o
endif
ifeq ($(CONFIG_MEDIA_CEC_NOTIFIER),y)
obj-$(CONFIG_MEDIA_SUPPORT) += cec-notifier.o
endif
ifeq ($(CONFIG_MEDIA_CEC_SUPPORT),y)
obj-$(CONFIG_MEDIA_SUPPORT) += cec/
endif
media-objs := media-device.o media-devnode.o media-entity.o
obj-$(CONFIG_CEC_CORE) += cec/
#
# I2C drivers should come before other drivers, otherwise they'll fail
# when compiled as builtin drivers

13
drivers/media/cec/Kconfig Normal file
View File

@ -0,0 +1,13 @@
config CEC_CORE
tristate
depends on MEDIA_CEC_SUPPORT
default y
config MEDIA_CEC_NOTIFIER
bool
config MEDIA_CEC_DEBUG
bool "HDMI CEC debugfs interface"
depends on MEDIA_CEC_SUPPORT && DEBUG_FS
---help---
Turns on the DebugFS interface for CEC devices.

View File

@ -1,5 +1,7 @@
cec-objs := cec-core.o cec-adap.o cec-api.o
cec-objs := cec-core.o cec-adap.o cec-api.o cec-edid.o
ifeq ($(CONFIG_MEDIA_CEC_SUPPORT),y)
obj-$(CONFIG_MEDIA_SUPPORT) += cec.o
ifeq ($(CONFIG_MEDIA_CEC_NOTIFIER),y)
cec-objs += cec-notifier.o
endif
obj-$(CONFIG_CEC_CORE) += cec.o

View File

@ -165,7 +165,3 @@ int cec_phys_addr_validate(u16 phys_addr, u16 *parent, u16 *port)
return 0;
}
EXPORT_SYMBOL_GPL(cec_phys_addr_validate);
MODULE_AUTHOR("Hans Verkuil <hans.verkuil@cisco.com>");
MODULE_DESCRIPTION("CEC EDID helper functions");
MODULE_LICENSE("GPL");

View File

@ -26,6 +26,8 @@
#define cec_phys_addr_exp(pa) \
((pa) >> 12), ((pa) >> 8) & 0xf, ((pa) >> 4) & 0xf, (pa) & 0xf
#if IS_ENABLED(CONFIG_CEC_CORE)
/**
* cec_get_edid_phys_addr() - find and return the physical address
*
@ -101,4 +103,31 @@ u16 cec_phys_addr_for_input(u16 phys_addr, u8 input);
*/
int cec_phys_addr_validate(u16 phys_addr, u16 *parent, u16 *port);
#else
static inline u16 cec_get_edid_phys_addr(const u8 *edid, unsigned int size,
unsigned int *offset)
{
if (offset)
*offset = 0;
return CEC_PHYS_ADDR_INVALID;
}
static inline void cec_set_edid_phys_addr(u8 *edid, unsigned int size,
u16 phys_addr)
{
}
static inline u16 cec_phys_addr_for_input(u16 phys_addr, u8 input)
{
return CEC_PHYS_ADDR_INVALID;
}
static inline int cec_phys_addr_validate(u16 phys_addr, u16 *parent, u16 *port)
{
return 0;
}
#endif
#endif /* _MEDIA_CEC_EDID_H */

View File

@ -199,7 +199,7 @@ static inline bool cec_is_sink(const struct cec_adapter *adap)
return adap->phys_addr == 0;
}
#if IS_ENABLED(CONFIG_MEDIA_CEC_SUPPORT)
#if IS_ENABLED(CONFIG_CEC_CORE)
struct cec_adapter *cec_allocate_adapter(const struct cec_adap_ops *ops,
void *priv, const char *name, u32 caps, u8 available_las);
int cec_register_adapter(struct cec_adapter *adap, struct device *parent);