saa7134: add saa7134-go7007
Subsystems (2)
PATCH 1/1 saa7134: add saa7134-go7007
This patch adds support to saa7134 for 'WIS Voyager or compatible' PCI boards such as the Sensoray model 614 with which this patch was tested. It is a saa7134-based PCI board with a go7007 MPEG encoder. This was a patch when the go7007 was still in staging and was not applied when go7007 was moved to drivers/media since it needed more work.
That work is now done and this last piece of go7007 support can now go in.
Signed-off-by Hans Verkuil <[email protected]>
Tested-by Hans Verkuil <[email protected]>
--- drivers/media/pci/saa7134/Makefile | 3 +- drivers/media/pci/saa7134/saa7134-cards.c | 29 ++ drivers/media/pci/saa7134/saa7134-core.c | 10 +- drivers/media/pci/saa7134/saa7134-go7007.c | 532 +++++++++++++++++++++++++++++ drivers/media/pci/saa7134/saa7134.h | 5 + 5 files changed, 576 insertions(+), 3 deletions(-) create mode 100644 drivers/media/pci/saa7134/saa7134-go7007.c
drivers/media/pci/saa7134/Makefile +2 -1
@@ -4,7 +4,7 @@ saa7134-y += saa7134-ts.o saa7134-tvaudio.o saa7134-vbi.o saa7134-y += saa7134-video.o saa7134-$(CONFIG_VIDEO_SAA7134_RC) += saa7134-input.o -obj-$(CONFIG_VIDEO_SAA7134) += saa7134.o saa7134-empress.o +obj-$(CONFIG_VIDEO_SAA7134) += saa7134.o saa7134-empress.o saa7134-go7007.o obj-$(CONFIG_VIDEO_SAA7134_ALSA) += saa7134-alsa.o
@@ -14,3 +14,4 @@ ccflags-y += -I$(srctree)/drivers/media/i2c ccflags-y += -I$(srctree)/drivers/media/tuners ccflags-y += -I$(srctree)/drivers/media/dvb-core ccflags-y += -I$(srctree)/drivers/media/dvb-frontends +ccflags-y += -I$(srctree)/drivers/media/usb/go7007
drivers/media/pci/saa7134/saa7134-cards.c +29 -0
@@ -5827,6 +5827,29 @@ struct saa7134_board saa7134_boards[] = { .gpio = 0x0000800, }, }, + [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 , + } }, + }, };
@@ -7080,6 +7103,12 @@ struct pci_device_id saa7134_pci_tbl[] = { .subdevice = 0x2055, /* AverTV Satellite Hybrid+FM A706 */ .driver_data = SAA7134_BOARD_AVERMEDIA_A706, }, { + .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,
drivers/media/pci/saa7134/saa7134-core.c +8 -2
@@ -160,6 +160,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" );
@@ -563,8 +565,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) {
drivers/media/pci/saa7134/saa7134-go7007.c new file +532 -0
532 lines not on this page · raw message
drivers/media/pci/saa7134/saa7134.h +5 -0
@@ -338,6 +338,7 @@ struct saa7134_card_ir {#define SAA7134_BOARD_ASUSTeK_PS3_100 190#define SAA7134_BOARD_HAWELL_HW_9004V1 191#define SAA7134_BOARD_AVERMEDIA_A706 192 +#define SAA7134_BOARD_WIS_VOYAGER 193#define SAA7134_MAXBOARDS 32#define SAA7134_INPUT_MAX 8
@@ -368,6 +369,7 @@ enum saa7134_mpeg_type {SAA7134_MPEG_UNUSED ,SAA7134_MPEG_EMPRESS ,SAA7134_MPEG_DVB , + SAA7134_MPEG_GO7007, }; enum saa7134_mpeg_ts_type {
@@ -407,6 +409,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])
@@ -522,6 +525,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 */
Signature · 1 line
2.1.0