Commit 4f11c88c authored by Ronald Bultje's avatar Ronald Bultje Committed by Linus Torvalds

[PATCH] Big zoran driver update

This is a patch for the video4linux unified zoran driver that has been
in the kernel since 2.4.5 or so.

It fixes the compile issues in the current 2.6.0-test3 unified zoran
driver (current one doesn't compile at all), and also updates its
version to what we have in CVS.  This adds support for new cards (e.g.
LML33R10 from LinuxMediaLabs and DC30+ from Pinnacle), fixes bugs in
cards that were already supported and generally improves capture
reliability.  Changes per file (in detail) are given below. 

i2c-id.h:
  add some new IDs for new i2c drivers

pci_ids.h:
  add PCI IDs for each of the supported cards if it has any

saa7111.c, saa7110.c, adv7175.c, bt819.c, saa7185.c, bt856.c:
  update to whatever we've got in our CVS. For most, these are just
  "easiness" fixes that either add some better debug output, or that make
  maintainance for both 2.6.x and 2.4.x simpler for me. There's also some
  specific changes. E.g., in saa7110.c, we enable the VCR mode bits so we
  get a better image from VCR input. In all of them, we make debugging an
  insmod option rather than a compile-time option (this makes debugging
  for users a *lot* easier). Point is that I just want our latest CVS in
  here. Maintainance is going to be a personal horror-story if it's not.

vpx3220.c, saa7114.c, adv7170.c:
  new i2c ones (for respectively DC10/DC30, LML33R10 and again LML33R10)

zr36067.c:
  removed, the driver is now spread over multiple source files.

zoran*.[ch], zr36057.h
  spread-out source files. Also fixes lots of bugs, can't even start
  naming them all, you don't want that, neither do I. Just assume that it
  works better than it used to - it does.

  Nice things that aren't in the old driver: much more stable, supports
  DC30+, supports LML33R10, has proper locking/semaphores, supports
  multiple opens without races now, adapted to new i2c subsystem, v4l2
  support, Xv (hardware-scaled) overlay support, and a lot more.

  Oh, and this one actually compiles.

videocodec.[ch], zr360{16,50,60}.[ch]:
  new sublayer for the driver to unify how we handle the zr36060 chip
  (DC10(+)/LML33/LML33R10/Buz) and the zr36050/zr36016 (DC30(+)).

MAINTAINERS:
  add me as maintainer (I am).

Kconfig:
  add new cards, plus improve the descriptions.

Makefile:
  d'oh.

Zoran:
  documentation update.

Others:
  I don't think there are any.

Greg has gone over the i2c changes a long time ago, he agreed on all of
them. Gerd is supposed to take care of the v4l part, he has never
complained about any of them. Stability is good, we've fixed most issues
(there's still some out there, but nothing serious), lots better than in
the old driver. Also, the cards work much better than with the old
driver.
parent ca377000
This diff is collapsed.
...@@ -2249,6 +2249,13 @@ M: fuganti@netbank.com.br ...@@ -2249,6 +2249,13 @@ M: fuganti@netbank.com.br
W: http://cvs.conectiva.com.br/drivers/ZFL-watchdog/ W: http://cvs.conectiva.com.br/drivers/ZFL-watchdog/
S: Maintained S: Maintained
ZR36067 VIDEO FOR LINUX DRIVER
P: Ronald Bultje
M: R.S.Bultje@pharm.uu.nl
L: mjpeg-users@lists.sourceforge.net
W: http://mjpeg.sourceforge.net/driver-zoran/
S: Maintained
ZR36120 VIDEO FOR LINUX DRIVER ZR36120 VIDEO FOR LINUX DRIVER
P: Pauline Middelink P: Pauline Middelink
M: middelin@polyware.nl M: middelin@polyware.nl
......
...@@ -160,33 +160,54 @@ config VIDEO_STRADIS ...@@ -160,33 +160,54 @@ config VIDEO_STRADIS
<http://www.stradis.com/decoder.html>. <http://www.stradis.com/decoder.html>.
config VIDEO_ZORAN config VIDEO_ZORAN
tristate "Zoran ZR36057/36060 Video For Linux" tristate "Zoran ZR36057/36067 Video For Linux"
depends on VIDEO_DEV && PCI && I2C depends on VIDEO_DEV && PCI && I2C
help help
Say Y here to include support for video cards based on the Zoran Say Y for support for MJPEG capture cards based on the Zoran
ZR36057/36060 encoder/decoder chip (including the Iomega Buz and the 36057/36067 PCI controller chipset. This includes the Iomega
Miro DC10 and DC30 video capture cards). Buz, Pinnacle DC10+ and the Linux Media Labs LML33. There is
a driver homepage at <http://mjpeg.sf.net/driver-zoran/>. For
more information, check <file:Documentation/video4linux/Zoran>.
This driver is available as a module called zr36067 ( = code
which can be inserted in and removed from the running kernel
whenever you want). If you want to compile it as a module, say M
here and read <file:Documentation/modules.txt>.
config VIDEO_ZORAN_BUZ config VIDEO_ZORAN_BUZ
tristate "Iomega Buz support" tristate "Iomega Buz support"
depends on VIDEO_ZORAN depends on VIDEO_ZORAN
help help
Say Y here to include support for the Iomega Buz video card. There Support for the Iomega Buz MJPEG capture/playback card.
is a Buz/Linux homepage at <http://www.lysator.liu.se/~gz/buz/>.
config VIDEO_ZORAN_DC10 config VIDEO_ZORAN_DC10
tristate "Miro DC10(+) support" tristate "Pinnacle/Miro DC10(+) support"
depends on VIDEO_ZORAN depends on VIDEO_ZORAN
help help
Say Y to support the Pinnacle Systems Studio DC10 plus TV/Video Support for the Pinnacle/Miro DC10(+) MJPEG capture/playback
card. Vendor page at <http://www.pinnaclesys.com/>. card.
config VIDEO_ZORAN_DC30
tristate "Pinnacle/Miro DC30(+) support"
depends on VIDEO_ZORAN
help
Support for the Pinnacle/Miro DC30(+) MJPEG capture/playback
card. This also supports really old DC10 cards based on the
zr36050 MJPEG codec and zr36016 VFE.
config VIDEO_ZORAN_LML33 config VIDEO_ZORAN_LML33
tristate "Linux Media Labs LML33 support" tristate "Linux Media Labs LML33 support"
depends on VIDEO_ZORAN depends on VIDEO_ZORAN
help help
Say Y here to support the Linux Media Labs LML33 TV/Video card. Support for the Linux Media Labs LML33 MJPEG capture/playback
Resources page is at <http://www.linuxmedialabs.com/lml33doc.html>. card.
config VIDEO_ZORAN_LML33R10
tristate "Linux Media Labs LML33R10 support"
depends on VIDEO_ZORAN
help
support for the Linux Media Labs LML33R10 MJPEG capture/playback
card.
config VIDEO_ZR36120 config VIDEO_ZR36120
tristate "Zoran ZR36120/36125 Video For Linux" tristate "Zoran ZR36120/36125 Video For Linux"
......
...@@ -5,6 +5,8 @@ ...@@ -5,6 +5,8 @@
bttv-objs := bttv-driver.o bttv-cards.o bttv-if.o \ bttv-objs := bttv-driver.o bttv-cards.o bttv-if.o \
bttv-risc.o bttv-vbi.o bttv-risc.o bttv-vbi.o
zoran-objs := zr36120.o zr36120_i2c.o zr36120_mem.o zoran-objs := zr36120.o zr36120_i2c.o zr36120_mem.o
zr36067-objs := zoran_procfs.o zoran_device.o \
zoran_driver.o zoran_card.o
obj-$(CONFIG_VIDEO_DEV) += videodev.o v4l2-common.o v4l1-compat.o obj-$(CONFIG_VIDEO_DEV) += videodev.o v4l2-common.o v4l1-compat.o
...@@ -17,10 +19,13 @@ obj-$(CONFIG_VIDEO_SAA5249) += saa5249.o ...@@ -17,10 +19,13 @@ obj-$(CONFIG_VIDEO_SAA5249) += saa5249.o
obj-$(CONFIG_VIDEO_CQCAM) += c-qcam.o obj-$(CONFIG_VIDEO_CQCAM) += c-qcam.o
obj-$(CONFIG_VIDEO_BWQCAM) += bw-qcam.o obj-$(CONFIG_VIDEO_BWQCAM) += bw-qcam.o
obj-$(CONFIG_VIDEO_W9966) += w9966.o obj-$(CONFIG_VIDEO_W9966) += w9966.o
obj-$(CONFIG_VIDEO_ZORAN_BUZ) += saa7111.o saa7185.o obj-$(CONFIG_VIDEO_ZORAN_BUZ) += saa7111.o saa7185.o zr36060.o
obj-$(CONFIG_VIDEO_ZORAN_DC10) += saa7110.o adv7175.o obj-$(CONFIG_VIDEO_ZORAN_DC10) += saa7110.o adv7175.o zr36060.o
obj-$(CONFIG_VIDEO_ZORAN_LML33) += bt819.o bt856.o obj-$(CONFIG_VIDEO_ZORAN_DC30) += adv7175.o vpx3220.o zr36050.o \
obj-$(CONFIG_VIDEO_ZORAN) += zr36067.o zr36016.o
obj-$(CONFIG_VIDEO_ZORAN_LML33) += bt819.o bt856.o zr36060.o
obj-$(CONFIG_VIDEO_ZORAN_LML33R10) += saa7114.o adv7170.o zr36060.o
obj-$(CONFIG_VIDEO_ZORAN) += zr36067.o videocodec.o
obj-$(CONFIG_VIDEO_PMS) += pms.o obj-$(CONFIG_VIDEO_PMS) += pms.o
obj-$(CONFIG_VIDEO_PLANB) += planb.o obj-$(CONFIG_VIDEO_PLANB) += planb.o
obj-$(CONFIG_VIDEO_VINO) += vino.o obj-$(CONFIG_VIDEO_VINO) += vino.o
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
/*
* Zoran zr36057/zr36067 PCI controller driver, for the
* Pinnacle/Miro DC10/DC10+/DC30/DC30+, Iomega Buz, Linux
* Media Labs LML33/LML33R10.
*
* This part handles card-specific data and detection
*
* Copyright (C) 2000 Serguei Miridonov <mirsev@cicese.mx>
*
* Currently maintained by:
* Ronald Bultje <rbultje@ronald.bitfreak.net>
* Laurent Pinchart <laurent.pinchart@skynet.be>
* Mailinglist <mjpeg-users@lists.sf.net>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef __ZORAN_CARD_H__
#define __ZORAN_CARD_H__
/* Anybody who uses more than four? */
#define BUZ_MAX 4
extern int zoran_num;
extern struct zoran zoran[BUZ_MAX];
extern struct video_device zoran_template;
extern int zoran_check_jpg_settings(struct zoran *zr,
struct zoran_jpg_settings *settings);
extern void zoran_open_init_params(struct zoran *zr);
#endif /* __ZORAN_CARD_H__ */
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
/*
* Zoran zr36057/zr36067 PCI controller driver, for the
* Pinnacle/Miro DC10/DC10+/DC30/DC30+, Iomega Buz, Linux
* Media Labs LML33/LML33R10.
*
* This part handles card-specific data and detection
*
* Copyright (C) 2000 Serguei Miridonov <mirsev@cicese.mx>
*
* Currently maintained by:
* Ronald Bultje <rbultje@ronald.bitfreak.net>
* Laurent Pinchart <laurent.pinchart@skynet.be>
* Mailinglist <mjpeg-users@lists.sf.net>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef __ZORAN_PROCFS_H__
#define __ZORAN_PROCFS_H__
extern int zoran_proc_init(struct zoran *zr);
extern void zoran_proc_cleanup(struct zoran *zr);
#endif /* __ZORAN_PROCFS_H__ */
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -87,18 +87,19 @@ ...@@ -87,18 +87,19 @@
#define I2C_DRIVERID_TDA8444 39 /* octuple 6-bit DAC */ #define I2C_DRIVERID_TDA8444 39 /* octuple 6-bit DAC */
#define I2C_DRIVERID_BT819 40 /* video decoder */ #define I2C_DRIVERID_BT819 40 /* video decoder */
#define I2C_DRIVERID_BT856 41 /* video encoder */ #define I2C_DRIVERID_BT856 41 /* video encoder */
#define I2C_DRIVERID_VPX32XX 42 /* video decoder+vbi/vtxt */ #define I2C_DRIVERID_VPX3220 42 /* video decoder+vbi/vtxt */
#define I2C_DRIVERID_DRP3510 43 /* ADR decoder (Astra Radio) */ #define I2C_DRIVERID_DRP3510 43 /* ADR decoder (Astra Radio) */
#define I2C_DRIVERID_SP5055 44 /* Satellite tuner */ #define I2C_DRIVERID_SP5055 44 /* Satellite tuner */
#define I2C_DRIVERID_STV0030 45 /* Multipurpose switch */ #define I2C_DRIVERID_STV0030 45 /* Multipurpose switch */
#define I2C_DRIVERID_SAA7108 46 /* video decoder, image scaler */ #define I2C_DRIVERID_SAA7108 46 /* video decoder, image scaler */
#define I2C_DRIVERID_DS1307 47 /* DS1307 real time clock */ #define I2C_DRIVERID_DS1307 47 /* DS1307 real time clock */
#define I2C_DRIVERID_ADV717x 48 /* ADV 7175/7176 video encoder */ #define I2C_DRIVERID_ADV7175 48 /* ADV 7175/7176 video encoder */
#define I2C_DRIVERID_ZR36067 49 /* Zoran 36067 video encoder */ #define I2C_DRIVERID_SAA7114 49 /* video decoder */
#define I2C_DRIVERID_ZR36120 50 /* Zoran 36120 video encoder */ #define I2C_DRIVERID_ZR36120 50 /* Zoran 36120 video encoder */
#define I2C_DRIVERID_24LC32A 51 /* Microchip 24LC32A 32k EEPROM */ #define I2C_DRIVERID_24LC32A 51 /* Microchip 24LC32A 32k EEPROM */
#define I2C_DRIVERID_STM41T00 52 /* real time clock */ #define I2C_DRIVERID_STM41T00 52 /* real time clock */
#define I2C_DRIVERID_UDA1342 53 /* UDA1342 audio codec */ #define I2C_DRIVERID_UDA1342 53 /* UDA1342 audio codec */
#define I2C_DRIVERID_ADV7170 54 /* video encoder */
...@@ -218,6 +219,7 @@ ...@@ -218,6 +219,7 @@
#define I2C_HW_B_IXP2000 0x16 /* GPIO on IXP2000 systems */ #define I2C_HW_B_IXP2000 0x16 /* GPIO on IXP2000 systems */
#define I2C_HW_B_IXP425 0x17 /* GPIO on IXP425 systems */ #define I2C_HW_B_IXP425 0x17 /* GPIO on IXP425 systems */
#define I2C_HW_B_S3VIA 0x18 /* S3Via ProSavage adapter */ #define I2C_HW_B_S3VIA 0x18 /* S3Via ProSavage adapter */
#define I2C_HW_B_ZR36067 0x19 /* Zoran-36057/36067 based boards */
/* --- PCF 8584 based algorithms */ /* --- PCF 8584 based algorithms */
#define I2C_HW_P_LP 0x00 /* Parallel port interface */ #define I2C_HW_P_LP 0x00 /* Parallel port interface */
......
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment