Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8a4e7866 authored by Michael Krufky's avatar Michael Krufky Committed by Mauro Carvalho Chehab
Browse files

[media] au0828: remove forced dependency of VIDEO_AU0828 on VIDEO_V4L2



This patch removes the dependendency of VIDEO_AU0828 on VIDEO_V4L2 by
creating a new Kconfig option, VIDEO_AU0828_V4L2, which enables analog
video capture support and depends on VIDEO_V4L2 itself.
With VIDEO_AU0828_V4L2 disabled, the driver will only support digital
television and will not depend on the v4l2-core. With VIDEO_AU0828_V4L2
enabled, the driver will be built with the analog v4l2 support included.
By default, the VIDEO_AU0828_V4L2 option will be set to Y, so as to
preserve the original behavior.

Signed-off-by: default avatarMichael Krufky <mkrufky@linuxtv.org>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent c70ffd59
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -21,7 +21,6 @@ endif

if MEDIA_ANALOG_TV_SUPPORT
	comment "Analog TV USB devices"
source "drivers/media/usb/au0828/Kconfig"
source "drivers/media/usb/pvrusb2/Kconfig"
source "drivers/media/usb/hdpvr/Kconfig"
source "drivers/media/usb/tlg2300/Kconfig"
@@ -31,6 +30,7 @@ endif

if (MEDIA_ANALOG_TV_SUPPORT || MEDIA_DIGITAL_TV_SUPPORT)
	comment "Analog/digital TV USB devices"
source "drivers/media/usb/au0828/Kconfig"
source "drivers/media/usb/cx231xx/Kconfig"
source "drivers/media/usb/tm6000/Kconfig"
endif
+14 −3
Original line number Diff line number Diff line

config VIDEO_AU0828
	tristate "Auvitek AU0828 support"
	depends on I2C && INPUT && DVB_CORE && USB && VIDEO_V4L2
	depends on I2C && INPUT && DVB_CORE && USB
	select I2C_ALGOBIT
	select VIDEO_TVEEPROM
	select VIDEOBUF_VMALLOC
	select DVB_AU8522_DTV if MEDIA_SUBDRV_AUTOSELECT
	select DVB_AU8522_V4L if MEDIA_SUBDRV_AUTOSELECT
	select MEDIA_TUNER_XC5000 if MEDIA_SUBDRV_AUTOSELECT
	select MEDIA_TUNER_MXL5007T if MEDIA_SUBDRV_AUTOSELECT
	select MEDIA_TUNER_TDA18271 if MEDIA_SUBDRV_AUTOSELECT
	---help---
	  This is a video4linux driver for Auvitek's USB device.
	  This is a hybrid analog/digital tv capture driver for
	  Auvitek's AU0828 USB device.

	  To compile this driver as a module, choose M here: the
	  module will be called au0828

config VIDEO_AU0828_V4L2
	bool "Auvitek AU0828 v4l2 analog video support"
	depends on VIDEO_AU0828 && VIDEO_V4L2
	select DVB_AU8522_V4L if MEDIA_SUBDRV_AUTOSELECT
	default y
	---help---
	  This is a video4linux driver for Auvitek's USB device.

	  Choose Y here to include support for v4l2 analog video
	  capture within the au0828 driver.
+5 −1
Original line number Diff line number Diff line
au0828-objs	:= au0828-core.o au0828-i2c.o au0828-cards.o au0828-dvb.o au0828-video.o au0828-vbi.o
au0828-objs	:= au0828-core.o au0828-i2c.o au0828-cards.o au0828-dvb.o

ifeq ($(CONFIG_VIDEO_AU0828_V4L2),y)
  au0828-objs   += au0828-video.o au0828-vbi.o
endif

obj-$(CONFIG_VIDEO_AU0828) += au0828.o

+4 −0
Original line number Diff line number Diff line
@@ -188,9 +188,11 @@ static void hauppauge_eeprom(struct au0828_dev *dev, u8 *eeprom_data)
void au0828_card_setup(struct au0828_dev *dev)
{
	static u8 eeprom[256];
#ifdef CONFIG_VIDEO_AU0828_V4L2
	struct tuner_setup tun_setup;
	struct v4l2_subdev *sd;
	unsigned int mode_mask = T_ANALOG_TV;
#endif

	dprintk(1, "%s()\n", __func__);

@@ -211,6 +213,7 @@ void au0828_card_setup(struct au0828_dev *dev)
		break;
	}

#ifdef CONFIG_VIDEO_AU0828_V4L2
	if (AUVI_INPUT(0).type != AU0828_VMUX_UNDEFINED) {
		/* Load the analog demodulator driver (note this would need to
		   be abstracted out if we ever need to support a different
@@ -236,6 +239,7 @@ void au0828_card_setup(struct au0828_dev *dev)
		v4l2_device_call_all(&dev->v4l2_dev, 0, tuner, s_type_addr,
				     &tun_setup);
	}
#endif
}

/*
+12 −1
Original line number Diff line number Diff line
@@ -134,13 +134,17 @@ static void au0828_usb_disconnect(struct usb_interface *interface)
	/* Digital TV */
	au0828_dvb_unregister(dev);

#ifdef CONFIG_VIDEO_AU0828_V4L2
	if (AUVI_INPUT(0).type != AU0828_VMUX_UNDEFINED)
		au0828_analog_unregister(dev);
#endif

	/* I2C */
	au0828_i2c_unregister(dev);

#ifdef CONFIG_VIDEO_AU0828_V4L2
	v4l2_device_unregister(&dev->v4l2_dev);
#endif

	usb_set_intfdata(interface, NULL);

@@ -155,7 +159,10 @@ static void au0828_usb_disconnect(struct usb_interface *interface)
static int au0828_usb_probe(struct usb_interface *interface,
	const struct usb_device_id *id)
{
	int ifnum, retval;
	int ifnum;
#ifdef CONFIG_VIDEO_AU0828_V4L2
	int retval;
#endif
	struct au0828_dev *dev;
	struct usb_device *usbdev = interface_to_usbdev(interface);

@@ -194,6 +201,7 @@ static int au0828_usb_probe(struct usb_interface *interface,
	dev->usbdev = usbdev;
	dev->boardnr = id->driver_info;

#ifdef CONFIG_VIDEO_AU0828_V4L2
	/* Create the v4l2_device */
	retval = v4l2_device_register(&interface->dev, &dev->v4l2_dev);
	if (retval) {
@@ -203,6 +211,7 @@ static int au0828_usb_probe(struct usb_interface *interface,
		kfree(dev);
		return -EIO;
	}
#endif

	/* Power Up the bridge */
	au0828_write(dev, REG_600, 1 << 4);
@@ -216,9 +225,11 @@ static int au0828_usb_probe(struct usb_interface *interface,
	/* Setup */
	au0828_card_setup(dev);

#ifdef CONFIG_VIDEO_AU0828_V4L2
	/* Analog TV */
	if (AUVI_INPUT(0).type != AU0828_VMUX_UNDEFINED)
		au0828_analog_register(dev, interface);
#endif

	/* Digital TV */
	au0828_dvb_register(dev);
Loading