|
@@ -1,11 +1,137 @@
|
|
|
Todo:
|
|
|
- - checkpatch.pl cleanups
|
|
|
- - sparse cleanups
|
|
|
- - lots of little modules, should be merged together
|
|
|
- and added to the build.
|
|
|
- - testing?
|
|
|
- - handle churn in v4l layer.
|
|
|
+ - create an API for motion detection
|
|
|
+ - let s2250-board use i2c subdevs as well instead of hardcoding
|
|
|
+ support for the i2c devices.
|
|
|
+ - when the driver is moved out of staging, support for saa7134-go7007
|
|
|
+ should be added to the saa7134 driver. The patch for that is
|
|
|
+ included below.
|
|
|
|
|
|
-Please send patches to Greg Kroah-Hartman <greg@linuxfoundation.org> and Cc: Ross
|
|
|
-Cohen <rcohen@snurgle.org> as well.
|
|
|
+Patch for saa7134:
|
|
|
|
|
|
+diff --git a/drivers/media/pci/saa7134/saa7134-cards.c b/drivers/media/pci/saa7134/saa7134-cards.c
|
|
|
+index dc68cf1..9a53794 100644
|
|
|
+--- a/drivers/media/pci/saa7134/saa7134-cards.c
|
|
|
++++ b/drivers/media/pci/saa7134/saa7134-cards.c
|
|
|
+@@ -5790,6 +5790,29 @@ struct saa7134_board saa7134_boards[] = {
|
|
|
+ .gpio = 0x6010000,
|
|
|
+ } },
|
|
|
+ },
|
|
|
++ [SAA7134_BOARD_WIS_VOYAGER] = {
|
|
|
++ .name = "WIS Voyager or compatible",
|
|
|
++ .audio_clock = 0x00200000,
|
|
|
++ .tuner_type = TUNER_PHILIPS_TDA8290,
|
|
|
++ .radio_type = UNSET,
|
|
|
++ .tuner_addr = ADDR_UNSET,
|
|
|
++ .radio_addr = ADDR_UNSET,
|
|
|
++ .mpeg = SAA7134_MPEG_GO7007,
|
|
|
++ .inputs = { {
|
|
|
++ .name = name_comp1,
|
|
|
++ .vmux = 0,
|
|
|
++ .amux = LINE2,
|
|
|
++ }, {
|
|
|
++ .name = name_tv,
|
|
|
++ .vmux = 3,
|
|
|
++ .amux = TV,
|
|
|
++ .tv = 1,
|
|
|
++ }, {
|
|
|
++ .name = name_svideo,
|
|
|
++ .vmux = 6,
|
|
|
++ .amux = LINE1,
|
|
|
++ } },
|
|
|
++ },
|
|
|
+
|
|
|
+ };
|
|
|
+
|
|
|
+@@ -7037,6 +7060,12 @@ struct pci_device_id saa7134_pci_tbl[] = {
|
|
|
+ .subdevice = 0x0911,
|
|
|
+ .driver_data = SAA7134_BOARD_SENSORAY811_911,
|
|
|
+ }, {
|
|
|
++ .vendor = PCI_VENDOR_ID_PHILIPS,
|
|
|
++ .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
|
|
|
++ .subvendor = 0x1905, /* WIS */
|
|
|
++ .subdevice = 0x7007,
|
|
|
++ .driver_data = SAA7134_BOARD_WIS_VOYAGER,
|
|
|
++ }, {
|
|
|
+ /* --- boards without eeprom + subsystem ID --- */
|
|
|
+ .vendor = PCI_VENDOR_ID_PHILIPS,
|
|
|
+ .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
|
|
|
+diff --git a/drivers/media/pci/saa7134/saa7134-core.c b/drivers/media/pci/saa7134/saa7134-core.c
|
|
|
+index 8fd24e7..0a849ea 100644
|
|
|
+--- a/drivers/media/pci/saa7134/saa7134-core.c
|
|
|
++++ b/drivers/media/pci/saa7134/saa7134-core.c
|
|
|
+@@ -156,6 +156,8 @@ static void request_module_async(struct work_struct *work){
|
|
|
+ request_module("saa7134-empress");
|
|
|
+ if (card_is_dvb(dev))
|
|
|
+ request_module("saa7134-dvb");
|
|
|
++ if (card_is_go7007(dev))
|
|
|
++ request_module("saa7134-go7007");
|
|
|
+ if (alsa) {
|
|
|
+ if (dev->pci->device != PCI_DEVICE_ID_PHILIPS_SAA7130)
|
|
|
+ request_module("saa7134-alsa");
|
|
|
+@@ -557,8 +559,12 @@ static irqreturn_t saa7134_irq(int irq, void *dev_id)
|
|
|
+ saa7134_irq_vbi_done(dev,status);
|
|
|
+
|
|
|
+ if ((report & SAA7134_IRQ_REPORT_DONE_RA2) &&
|
|
|
+- card_has_mpeg(dev))
|
|
|
+- saa7134_irq_ts_done(dev,status);
|
|
|
++ card_has_mpeg(dev)) {
|
|
|
++ if (dev->mops->irq_ts_done != NULL)
|
|
|
++ dev->mops->irq_ts_done(dev, status);
|
|
|
++ else
|
|
|
++ saa7134_irq_ts_done(dev, status);
|
|
|
++ }
|
|
|
+
|
|
|
+ if (report & SAA7134_IRQ_REPORT_GPIO16) {
|
|
|
+ switch (dev->has_remote) {
|
|
|
+diff --git a/drivers/media/pci/saa7134/saa7134.h b/drivers/media/pci/saa7134/saa7134.h
|
|
|
+index 62169dd..5fad39a 100644
|
|
|
+--- a/drivers/media/pci/saa7134/saa7134.h
|
|
|
++++ b/drivers/media/pci/saa7134/saa7134.h
|
|
|
+@@ -334,6 +334,7 @@ struct saa7134_card_ir {
|
|
|
+ #define SAA7134_BOARD_KWORLD_PC150U 189
|
|
|
+ #define SAA7134_BOARD_ASUSTeK_PS3_100 190
|
|
|
+ #define SAA7134_BOARD_HAWELL_HW_9004V1 191
|
|
|
++#define SAA7134_BOARD_WIS_VOYAGER 192
|
|
|
+
|
|
|
+ #define SAA7134_MAXBOARDS 32
|
|
|
+ #define SAA7134_INPUT_MAX 8
|
|
|
+@@ -364,6 +365,7 @@ enum saa7134_mpeg_type {
|
|
|
+ SAA7134_MPEG_UNUSED,
|
|
|
+ SAA7134_MPEG_EMPRESS,
|
|
|
+ SAA7134_MPEG_DVB,
|
|
|
++ SAA7134_MPEG_GO7007,
|
|
|
+ };
|
|
|
+
|
|
|
+ enum saa7134_mpeg_ts_type {
|
|
|
+@@ -403,6 +405,7 @@ struct saa7134_board {
|
|
|
+ #define card_has_radio(dev) (NULL != saa7134_boards[dev->board].radio.name)
|
|
|
+ #define card_is_empress(dev) (SAA7134_MPEG_EMPRESS == saa7134_boards[dev->board].mpeg)
|
|
|
+ #define card_is_dvb(dev) (SAA7134_MPEG_DVB == saa7134_boards[dev->board].mpeg)
|
|
|
++#define card_is_go7007(dev) (SAA7134_MPEG_GO7007 == saa7134_boards[dev->board].mpeg)
|
|
|
+ #define card_has_mpeg(dev) (SAA7134_MPEG_UNUSED != saa7134_boards[dev->board].mpeg)
|
|
|
+ #define card(dev) (saa7134_boards[dev->board])
|
|
|
+ #define card_in(dev,n) (saa7134_boards[dev->board].inputs[n])
|
|
|
+@@ -535,6 +538,8 @@ struct saa7134_mpeg_ops {
|
|
|
+ int (*init)(struct saa7134_dev *dev);
|
|
|
+ int (*fini)(struct saa7134_dev *dev);
|
|
|
+ void (*signal_change)(struct saa7134_dev *dev);
|
|
|
++ void (*irq_ts_done)(struct saa7134_dev *dev,
|
|
|
++ unsigned long status);
|
|
|
+ };
|
|
|
+
|
|
|
+ /* global device status */
|
|
|
+diff --git a/drivers/staging/media/go7007/Makefile b/drivers/staging/media/go7007/Makefile
|
|
|
+index 9c6ad4a..1b23689 100644
|
|
|
+--- a/drivers/staging/media/go7007/Makefile
|
|
|
++++ b/drivers/staging/media/go7007/Makefile
|
|
|
+@@ -8,8 +8,7 @@ go7007-y := go7007-v4l2.o go7007-driver.o go7007-i2c.o go7007-fw.o \
|
|
|
+
|
|
|
+ s2250-y := s2250-board.o
|
|
|
+
|
|
|
+-# Uncomment when the saa7134 patches get into upstream
|
|
|
+-#obj-$(CONFIG_VIDEO_SAA7134) += saa7134-go7007.o
|
|
|
+-#ccflags-$(CONFIG_VIDEO_SAA7134:m=y) += -Idrivers/media/pci/saa7134
|
|
|
++obj-$(CONFIG_VIDEO_SAA7134) += saa7134-go7007.o
|
|
|
++ccflags-$(CONFIG_VIDEO_SAA7134:m=y) += -Idrivers/media/pci/saa7134
|
|
|
+
|
|
|
+ ccflags-$(CONFIG_VIDEO_GO7007_LOADER:m=y) += -Idrivers/media/common
|