| Todo: |
| - 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. |
| |
| 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 |