• Home
Name Date Size #Lines LOC

..--

KconfigD08-May-20241.6 KiB5547

MakefileD08-May-2024546 168

READMED08-May-20244.9 KiB138125

go7007-driver.cD08-May-202417.9 KiB713558

go7007-fw.cD08-May-202439.8 KiB1,6291,458

go7007-i2c.cD08-May-20246.2 KiB224158

go7007-loader.cD08-May-20243.9 KiB145106

go7007-priv.hD08-May-20248.3 KiB295227

go7007-usb.cD08-May-202435.4 KiB1,3801,207

go7007-v4l2.cD08-May-202427.5 KiB1,053852

go7007.hD08-May-20241.5 KiB4119

go7007.txtD08-May-202418.9 KiB481346

s2250-board.cD08-May-202414.6 KiB633507

saa7134-go7007.cD08-May-202415.6 KiB564420

snd-go7007.cD08-May-20247.9 KiB305250

README

1Todo:
2	- create an API for motion detection
3	- let s2250-board use i2c subdevs as well instead of hardcoding
4	  support for the i2c devices.
5	- when the driver is moved out of staging, support for saa7134-go7007
6	  should be added to the saa7134 driver. The patch for that is
7	  included below.
8
9Patch for saa7134:
10
11diff --git a/drivers/media/pci/saa7134/saa7134-cards.c b/drivers/media/pci/saa7134/saa7134-cards.c
12index dc68cf1..9a53794 100644
13--- a/drivers/media/pci/saa7134/saa7134-cards.c
14+++ b/drivers/media/pci/saa7134/saa7134-cards.c
15@@ -5790,6 +5790,29 @@ struct saa7134_board saa7134_boards[] = {
16 			.gpio = 0x6010000,
17 		} },
18 	},
19+	[SAA7134_BOARD_WIS_VOYAGER] = {
20+		.name           = "WIS Voyager or compatible",
21+		.audio_clock    = 0x00200000,
22+		.tuner_type	= TUNER_PHILIPS_TDA8290,
23+		.radio_type     = UNSET,
24+		.tuner_addr     = ADDR_UNSET,
25+		.radio_addr     = ADDR_UNSET,
26+		.mpeg		= SAA7134_MPEG_GO7007,
27+		.inputs		= { {
28+			.name = name_comp1,
29+			.vmux = 0,
30+			.amux = LINE2,
31+		}, {
32+			.name = name_tv,
33+			.vmux = 3,
34+			.amux = TV,
35+			.tv   = 1,
36+		}, {
37+			.name = name_svideo,
38+			.vmux = 6,
39+		.amux = LINE1,
40+		} },
41+	},
42
43 };
44
45@@ -7037,6 +7060,12 @@ struct pci_device_id saa7134_pci_tbl[] = {
46 		.subdevice    = 0x0911,
47 		.driver_data  = SAA7134_BOARD_SENSORAY811_911,
48 	}, {
49+		.vendor       = PCI_VENDOR_ID_PHILIPS,
50+		.device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
51+		.subvendor    = 0x1905, /* WIS */
52+		.subdevice    = 0x7007,
53+		.driver_data  = SAA7134_BOARD_WIS_VOYAGER,
54+	}, {
55 		/* --- boards without eeprom + subsystem ID --- */
56 		.vendor       = PCI_VENDOR_ID_PHILIPS,
57 		.device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
58diff --git a/drivers/media/pci/saa7134/saa7134-core.c b/drivers/media/pci/saa7134/saa7134-core.c
59index 8fd24e7..0a849ea 100644
60--- a/drivers/media/pci/saa7134/saa7134-core.c
61+++ b/drivers/media/pci/saa7134/saa7134-core.c
62@@ -156,6 +156,8 @@ static void request_module_async(struct work_struct *work){
63 		request_module("saa7134-empress");
64 	if (card_is_dvb(dev))
65 		request_module("saa7134-dvb");
66+	if (card_is_go7007(dev))
67+		request_module("saa7134-go7007");
68 	if (alsa) {
69 		if (dev->pci->device != PCI_DEVICE_ID_PHILIPS_SAA7130)
70 			request_module("saa7134-alsa");
71@@ -557,8 +559,12 @@ static irqreturn_t saa7134_irq(int irq, void *dev_id)
72 			saa7134_irq_vbi_done(dev,status);
73
74 		if ((report & SAA7134_IRQ_REPORT_DONE_RA2) &&
75-		    card_has_mpeg(dev))
76-			saa7134_irq_ts_done(dev,status);
77+		    card_has_mpeg(dev)) {
78+			if (dev->mops->irq_ts_done != NULL)
79+				dev->mops->irq_ts_done(dev, status);
80+			else
81+				saa7134_irq_ts_done(dev, status);
82+		}
83
84 		if (report & SAA7134_IRQ_REPORT_GPIO16) {
85 			switch (dev->has_remote) {
86diff --git a/drivers/media/pci/saa7134/saa7134.h b/drivers/media/pci/saa7134/saa7134.h
87index 62169dd..5fad39a 100644
88--- a/drivers/media/pci/saa7134/saa7134.h
89+++ b/drivers/media/pci/saa7134/saa7134.h
90@@ -334,6 +334,7 @@ struct saa7134_card_ir {
91 #define SAA7134_BOARD_KWORLD_PC150U         189
92 #define SAA7134_BOARD_ASUSTeK_PS3_100      190
93 #define SAA7134_BOARD_HAWELL_HW_9004V1      191
94+#define SAA7134_BOARD_WIS_VOYAGER           192
95
96 #define SAA7134_MAXBOARDS 32
97 #define SAA7134_INPUT_MAX 8
98@@ -364,6 +365,7 @@ enum saa7134_mpeg_type {
99 	SAA7134_MPEG_UNUSED,
100 	SAA7134_MPEG_EMPRESS,
101 	SAA7134_MPEG_DVB,
102+	SAA7134_MPEG_GO7007,
103 };
104
105 enum saa7134_mpeg_ts_type {
106@@ -403,6 +405,7 @@ struct saa7134_board {
107 #define card_has_radio(dev)   (NULL != saa7134_boards[dev->board].radio.name)
108 #define card_is_empress(dev)  (SAA7134_MPEG_EMPRESS == saa7134_boards[dev->board].mpeg)
109 #define card_is_dvb(dev)      (SAA7134_MPEG_DVB     == saa7134_boards[dev->board].mpeg)
110+#define card_is_go7007(dev)   (SAA7134_MPEG_GO7007  == saa7134_boards[dev->board].mpeg)
111 #define card_has_mpeg(dev)    (SAA7134_MPEG_UNUSED  != saa7134_boards[dev->board].mpeg)
112 #define card(dev)             (saa7134_boards[dev->board])
113 #define card_in(dev,n)        (saa7134_boards[dev->board].inputs[n])
114@@ -535,6 +538,8 @@ struct saa7134_mpeg_ops {
115 	int                        (*init)(struct saa7134_dev *dev);
116 	int                        (*fini)(struct saa7134_dev *dev);
117 	void                       (*signal_change)(struct saa7134_dev *dev);
118+	void                       (*irq_ts_done)(struct saa7134_dev *dev,
119+						  unsigned long status);
120 };
121
122 /* global device status */
123diff --git a/drivers/staging/media/go7007/Makefile b/drivers/staging/media/go7007/Makefile
124index 9c6ad4a..1b23689 100644
125--- a/drivers/staging/media/go7007/Makefile
126+++ b/drivers/staging/media/go7007/Makefile
127@@ -8,8 +8,7 @@ go7007-y := go7007-v4l2.o go7007-driver.o go7007-i2c.o go7007-fw.o \
128
129 s2250-y := s2250-board.o
130
131-# Uncomment when the saa7134 patches get into upstream
132-#obj-$(CONFIG_VIDEO_SAA7134) += saa7134-go7007.o
133-#ccflags-$(CONFIG_VIDEO_SAA7134:m=y) += -Idrivers/media/pci/saa7134
134+obj-$(CONFIG_VIDEO_SAA7134) += saa7134-go7007.o
135+ccflags-$(CONFIG_VIDEO_SAA7134:m=y) += -Idrivers/media/pci/saa7134
136
137 ccflags-$(CONFIG_VIDEO_GO7007_LOADER:m=y) += -Idrivers/media/common
138