2017-04-18 10:45 GMT+02:00 Hans Verkuil <hverkuil@xxxxxxxxx>: > From: Hans Verkuil <hans.verkuil@xxxxxxxxx> > > 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@xxxxxxxxx> Thanks for this clean up. Acked-by: Benjamin Gaignard <benjamin.gaignard@xxxxxxxxxx> > --- > MAINTAINERS | 2 -- > drivers/media/Kconfig | 26 ++++----------- > drivers/media/Makefile | 14 ++------ > drivers/media/cec/Kconfig | 13 ++++++++ > drivers/media/cec/Makefile | 8 +++-- > drivers/media/{ => cec}/cec-edid.c | 4 --- > drivers/media/{ => cec}/cec-notifier.c | 0 > drivers/media/i2c/Kconfig | 9 ++--- > drivers/media/platform/Kconfig | 56 ++++++++++++++++---------------- > drivers/media/platform/vivid/Kconfig | 3 +- > drivers/media/usb/pulse8-cec/Kconfig | 2 +- > drivers/media/usb/rainshadow-cec/Kconfig | 2 +- > include/media/cec-edid.h | 29 +++++++++++++++++ > include/media/cec.h | 2 +- > 14 files changed, 91 insertions(+), 79 deletions(-) > create mode 100644 drivers/media/cec/Kconfig > rename drivers/media/{ => cec}/cec-edid.c (97%) > rename drivers/media/{ => cec}/cec-notifier.c (100%) > > diff --git a/MAINTAINERS b/MAINTAINERS > index 7d3b9993e4ba..1b0049934cf9 100644 > --- a/MAINTAINERS > +++ b/MAINTAINERS > @@ -3075,8 +3075,6 @@ S: Supported > F: Documentation/media/kapi/cec-core.rst > F: Documentation/media/uapi/cec > F: drivers/media/cec/ > -F: drivers/media/cec-edid.c > -F: drivers/media/cec-notifier.c > F: drivers/media/rc/keymaps/rc-cec.c > F: include/media/cec.h > F: include/media/cec-edid.h > diff --git a/drivers/media/Kconfig b/drivers/media/Kconfig > index 9e9ded44e8a8..b72edd27f880 100644 > --- a/drivers/media/Kconfig > +++ b/drivers/media/Kconfig > @@ -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. > - > - 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. > + bool "HDMI CEC support" > + ---help--- > + Enable support for HDMI CEC (Consumer Electronics Control), > + which is an optional HDMI feature. > > -config MEDIA_CEC_EDID > - bool > + Say Y when you have an HDMI receiver, transmitter or a USB CEC > + adapter that supports HDMI CEC. > > -config MEDIA_CEC_NOTIFIER > - bool > - select MEDIA_CEC_EDID > +source "drivers/media/cec/Kconfig" > > # > # Media controller > diff --git a/drivers/media/Makefile b/drivers/media/Makefile > index 8b36a571d443..523fea3648ad 100644 > --- a/drivers/media/Makefile > +++ b/drivers/media/Makefile > @@ -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 > diff --git a/drivers/media/cec/Kconfig b/drivers/media/cec/Kconfig > new file mode 100644 > index 000000000000..24b53187ee52 > --- /dev/null > +++ b/drivers/media/cec/Kconfig > @@ -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. > diff --git a/drivers/media/cec/Makefile b/drivers/media/cec/Makefile > index d6686337275f..402a6c62a3e8 100644 > --- a/drivers/media/cec/Makefile > +++ b/drivers/media/cec/Makefile > @@ -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 > diff --git a/drivers/media/cec-edid.c b/drivers/media/cec/cec-edid.c > similarity index 97% > rename from drivers/media/cec-edid.c > rename to drivers/media/cec/cec-edid.c > index 5719b991e340..c63dc81d2a29 100644 > --- a/drivers/media/cec-edid.c > +++ b/drivers/media/cec/cec-edid.c > @@ -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@xxxxxxxxx>"); > -MODULE_DESCRIPTION("CEC EDID helper functions"); > -MODULE_LICENSE("GPL"); > diff --git a/drivers/media/cec-notifier.c b/drivers/media/cec/cec-notifier.c > similarity index 100% > rename from drivers/media/cec-notifier.c > rename to drivers/media/cec/cec-notifier.c > diff --git a/drivers/media/i2c/Kconfig b/drivers/media/i2c/Kconfig > index b358d1a40688..40bb4bdc51da 100644 > --- a/drivers/media/i2c/Kconfig > +++ b/drivers/media/i2c/Kconfig > @@ -209,7 +209,6 @@ config VIDEO_ADV7604 > depends on VIDEO_V4L2 && I2C && VIDEO_V4L2_SUBDEV_API > depends on GPIOLIB || COMPILE_TEST > select HDMI > - select MEDIA_CEC_EDID > ---help--- > Support for the Analog Devices ADV7604 video decoder. > > @@ -221,7 +220,7 @@ config VIDEO_ADV7604 > > config VIDEO_ADV7604_CEC > bool "Enable Analog Devices ADV7604 CEC support" > - depends on VIDEO_ADV7604 && MEDIA_CEC_SUPPORT > + depends on VIDEO_ADV7604 && CEC_CORE > ---help--- > When selected the adv7604 will support the optional > HDMI CEC feature. > @@ -230,7 +229,6 @@ config VIDEO_ADV7842 > tristate "Analog Devices ADV7842 decoder" > depends on VIDEO_V4L2 && I2C && VIDEO_V4L2_SUBDEV_API > select HDMI > - select MEDIA_CEC_EDID > ---help--- > Support for the Analog Devices ADV7842 video decoder. > > @@ -242,7 +240,7 @@ config VIDEO_ADV7842 > > config VIDEO_ADV7842_CEC > bool "Enable Analog Devices ADV7842 CEC support" > - depends on VIDEO_ADV7842 && MEDIA_CEC_SUPPORT > + depends on VIDEO_ADV7842 && CEC_CORE > ---help--- > When selected the adv7842 will support the optional > HDMI CEC feature. > @@ -470,7 +468,6 @@ config VIDEO_ADV7511 > tristate "Analog Devices ADV7511 encoder" > depends on VIDEO_V4L2 && I2C && VIDEO_V4L2_SUBDEV_API > select HDMI > - select MEDIA_CEC_EDID > ---help--- > Support for the Analog Devices ADV7511 video encoder. > > @@ -481,7 +478,7 @@ config VIDEO_ADV7511 > > config VIDEO_ADV7511_CEC > bool "Enable Analog Devices ADV7511 CEC support" > - depends on VIDEO_ADV7511 && MEDIA_CEC_SUPPORT > + depends on VIDEO_ADV7511 && CEC_CORE > ---help--- > When selected the adv7511 will support the optional > HDMI CEC feature. > diff --git a/drivers/media/platform/Kconfig b/drivers/media/platform/Kconfig > index 73c3bc5deadf..ac026ee1ca07 100644 > --- a/drivers/media/platform/Kconfig > +++ b/drivers/media/platform/Kconfig > @@ -461,34 +461,6 @@ config VIDEO_TI_SC > config VIDEO_TI_CSC > tristate > > -menuconfig V4L_CEC_DRIVERS > - bool "Platform HDMI CEC drivers" > - depends on MEDIA_CEC_SUPPORT > - > -if V4L_CEC_DRIVERS > - > -config VIDEO_SAMSUNG_S5P_CEC > - tristate "Samsung S5P CEC driver" > - depends on VIDEO_DEV && MEDIA_CEC_SUPPORT && (PLAT_S5P || ARCH_EXYNOS || COMPILE_TEST) > - select MEDIA_CEC_NOTIFIER > - ---help--- > - This is a driver for Samsung S5P HDMI CEC interface. It uses the > - generic CEC framework interface. > - CEC bus is present in the HDMI connector and enables communication > - between compatible devices. > - > -config VIDEO_STI_HDMI_CEC > - tristate "STMicroelectronics STiH4xx HDMI CEC driver" > - depends on VIDEO_DEV && MEDIA_CEC_SUPPORT && (ARCH_STI || COMPILE_TEST) > - select MEDIA_CEC_NOTIFIER > - ---help--- > - This is a driver for STIH4xx HDMI CEC interface. It uses the > - generic CEC framework interface. > - CEC bus is present in the HDMI connector and enables communication > - between compatible devices. > - > -endif #V4L_CEC_DRIVERS > - > menuconfig V4L_TEST_DRIVERS > bool "Media test drivers" > depends on MEDIA_CAMERA_SUPPORT > @@ -520,3 +492,31 @@ menuconfig DVB_PLATFORM_DRIVERS > if DVB_PLATFORM_DRIVERS > source "drivers/media/platform/sti/c8sectpfe/Kconfig" > endif #DVB_PLATFORM_DRIVERS > + > +menuconfig CEC_PLATFORM_DRIVERS > + bool "CEC platform devices" > + depends on MEDIA_CEC_SUPPORT > + > +if CEC_PLATFORM_DRIVERS > + > +config VIDEO_SAMSUNG_S5P_CEC > + tristate "Samsung S5P CEC driver" > + depends on CEC_CORE && (PLAT_S5P || ARCH_EXYNOS || COMPILE_TEST) > + select MEDIA_CEC_NOTIFIER > + ---help--- > + This is a driver for Samsung S5P HDMI CEC interface. It uses the > + generic CEC framework interface. > + CEC bus is present in the HDMI connector and enables communication > + between compatible devices. > + > +config VIDEO_STI_HDMI_CEC > + tristate "STMicroelectronics STiH4xx HDMI CEC driver" > + depends on CEC_CORE && (ARCH_STI || COMPILE_TEST) > + select MEDIA_CEC_NOTIFIER > + ---help--- > + This is a driver for STIH4xx HDMI CEC interface. It uses the > + generic CEC framework interface. > + CEC bus is present in the HDMI connector and enables communication > + between compatible devices. > + > +endif #CEC_PLATFORM_DRIVERS > diff --git a/drivers/media/platform/vivid/Kconfig b/drivers/media/platform/vivid/Kconfig > index 94ab1364a792..b36ac19dc6e4 100644 > --- a/drivers/media/platform/vivid/Kconfig > +++ b/drivers/media/platform/vivid/Kconfig > @@ -7,7 +7,6 @@ config VIDEO_VIVID > select FB_CFB_FILLRECT > select FB_CFB_COPYAREA > select FB_CFB_IMAGEBLIT > - select MEDIA_CEC_EDID > select VIDEOBUF2_VMALLOC > select VIDEOBUF2_DMA_CONTIG > select VIDEO_V4L2_TPG > @@ -27,7 +26,7 @@ config VIDEO_VIVID > > config VIDEO_VIVID_CEC > bool "Enable CEC emulation support" > - depends on VIDEO_VIVID && MEDIA_CEC_SUPPORT > + depends on VIDEO_VIVID && CEC_CORE > ---help--- > When selected the vivid module will emulate the optional > HDMI CEC feature. > diff --git a/drivers/media/usb/pulse8-cec/Kconfig b/drivers/media/usb/pulse8-cec/Kconfig > index 6ffc407de62f..8937f3986a01 100644 > --- a/drivers/media/usb/pulse8-cec/Kconfig > +++ b/drivers/media/usb/pulse8-cec/Kconfig > @@ -1,6 +1,6 @@ > config USB_PULSE8_CEC > tristate "Pulse Eight HDMI CEC" > - depends on USB_ACM && MEDIA_CEC_SUPPORT > + depends on USB_ACM && CEC_CORE > select SERIO > select SERIO_SERPORT > ---help--- > diff --git a/drivers/media/usb/rainshadow-cec/Kconfig b/drivers/media/usb/rainshadow-cec/Kconfig > index 447291b3cca3..3eb86607efb8 100644 > --- a/drivers/media/usb/rainshadow-cec/Kconfig > +++ b/drivers/media/usb/rainshadow-cec/Kconfig > @@ -1,6 +1,6 @@ > config USB_RAINSHADOW_CEC > tristate "RainShadow Tech HDMI CEC" > - depends on USB_ACM && MEDIA_CEC_SUPPORT > + depends on USB_ACM && CEC_CORE > select SERIO > select SERIO_SERPORT > ---help--- > diff --git a/include/media/cec-edid.h b/include/media/cec-edid.h > index bdf731ecba1a..242781fd377f 100644 > --- a/include/media/cec-edid.h > +++ b/include/media/cec-edid.h > @@ -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 */ > diff --git a/include/media/cec.h b/include/media/cec.h > index b313e3ecab70..bae8d0153de7 100644 > --- a/include/media/cec.h > +++ b/include/media/cec.h > @@ -204,7 +204,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); > -- > 2.11.0 > -- Benjamin Gaignard Graphic Study Group Linaro.org │ Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog