Skip to content

Commit f17578d

Browse files
author
Linus Torvalds
committed
Merge master.kernel.org:/pub/scm/linux/kernel/git/mchehab/v4l-dvb
2 parents 682e852 + cec4183 commit f17578d

File tree

203 files changed

+10709
-5147
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

203 files changed

+10709
-5147
lines changed

Documentation/dvb/avermedia.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,8 @@ Getting the card going
150150

151151
The frontend module sp887x.o, requires an external firmware.
152152
Please use the command "get_dvb_firmware sp887x" to download
153-
it. Then copy it to /usr/lib/hotplug/firmware.
153+
it. Then copy it to /usr/lib/hotplug/firmware or /lib/firmware/
154+
(depending on configuration of firmware hotplug).
154155

155156
Receiving DVB-T in Australia
156157

Documentation/dvb/get_dvb_firmware

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ use IO::Handle;
2323

2424
@components = ( "sp8870", "sp887x", "tda10045", "tda10046", "av7110", "dec2000t",
2525
"dec2540t", "dec3000s", "vp7041", "dibusb", "nxt2002", "nxt2004",
26-
"or51211", "or51132_qam", "or51132_vsb");
26+
"or51211", "or51132_qam", "or51132_vsb", "bluebird");
2727

2828
# Check args
2929
syntax() if (scalar(@ARGV) != 1);
@@ -34,7 +34,11 @@ for ($i=0; $i < scalar(@components); $i++) {
3434
if ($cid eq $components[$i]) {
3535
$outfile = eval($cid);
3636
die $@ if $@;
37-
print STDERR "Firmware $outfile extracted successfully. Now copy it to either /lib/firmware or /usr/lib/hotplug/firmware/ (depending on your hotplug version).\n";
37+
print STDERR <<EOF;
38+
Firmware $outfile extracted successfully.
39+
Now copy it to either /usr/lib/hotplug/firmware or /lib/firmware
40+
(depending on configuration of firmware hotplug).
41+
EOF
3842
exit(0);
3943
}
4044
}
@@ -243,7 +247,7 @@ sub nxt2002 {
243247
my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1);
244248

245249
checkstandard();
246-
250+
247251
wgetfile($sourcefile, $url);
248252
unzip($sourcefile, $tmpdir);
249253
verify("$tmpdir/SkyNETU.sys", $hash);
@@ -308,6 +312,19 @@ sub or51132_vsb {
308312
$fwfile;
309313
}
310314

315+
sub bluebird {
316+
my $url = "http://www.linuxtv.org/download/dvb/firmware/dvb-usb-bluebird-01.fw";
317+
my $outfile = "dvb-usb-bluebird-01.fw";
318+
my $hash = "658397cb9eba9101af9031302671f49d";
319+
320+
checkstandard();
321+
322+
wgetfile($outfile, $url);
323+
verify($outfile,$hash);
324+
325+
$outfile;
326+
}
327+
311328
# ---------------------------------------------------------------
312329
# Utilities
313330

Documentation/dvb/ttusb-dec.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,4 +41,5 @@ Hotplug Firmware Loading for 2.6 kernels
4141
For 2.6 kernels the firmware is loaded at the point that the driver module is
4242
loaded. See linux/Documentation/dvb/firmware.txt for more information.
4343

44-
Copy the three files downloaded above into the /usr/lib/hotplug/firmware directory.
44+
Copy the three files downloaded above into the /usr/lib/hotplug/firmware or
45+
/lib/firmware directory (depending on configuration of firmware hotplug).

Documentation/video4linux/CARDLIST.bttv

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,3 +141,4 @@
141141
140 -> Osprey 440 [0070:ff07]
142142
141 -> Asound Skyeye PCTV
143143
142 -> Sabrent TV-FM (bttv version)
144+
143 -> Hauppauge ImpactVCB (bt878) [0070:13eb]

Documentation/video4linux/CARDLIST.cx88

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
15 -> DViCO FusionHDTV DVB-T1 [18ac:db00]
1717
16 -> KWorld LTV883RF
1818
17 -> DViCO FusionHDTV 3 Gold-Q [18ac:d810]
19-
18 -> Hauppauge Nova-T DVB-T [0070:9002]
19+
18 -> Hauppauge Nova-T DVB-T [0070:9002,0070:9001]
2020
19 -> Conexant DVB-T reference design [14f1:0187]
2121
20 -> Provideo PV259 [1540:2580]
2222
21 -> DViCO FusionHDTV DVB-T Plus [18ac:db10]
@@ -35,3 +35,11 @@
3535
34 -> ATI HDTV Wonder [1002:a101]
3636
35 -> WinFast DTV1000-T [107d:665f]
3737
36 -> AVerTV 303 (M126) [1461:000a]
38+
37 -> Hauppauge Nova-S-Plus DVB-S [0070:9201,0070:9202]
39+
38 -> Hauppauge Nova-SE2 DVB-S [0070:9200]
40+
39 -> KWorld DVB-S 100 [17de:08b2]
41+
40 -> Hauppauge WinTV-HVR1100 DVB-T/Hybrid [0070:9400,0070:9402]
42+
41 -> Hauppauge WinTV-HVR1100 DVB-T/Hybrid (Low Profile) [0070:9800,0070:9802]
43+
42 -> digitalnow DNTV Live! DVB-T Pro [1822:0025]
44+
43 -> KWorld/VStream XPert DVB-T with cx22702 [17de:08a1]
45+
44 -> DViCO FusionHDTV DVB-T Dual Digital [18ac:db50]

Documentation/video4linux/CARDLIST.saa7134

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@
5656
55 -> LifeView FlyDVB-T DUO [5168:0502,5168:0306]
5757
56 -> Avermedia AVerTV 307 [1461:a70a]
5858
57 -> Avermedia AVerTV GO 007 FM [1461:f31f]
59-
58 -> ADS Tech Instant TV (saa7135) [1421:0350,1421:0370,1421:1370]
59+
58 -> ADS Tech Instant TV (saa7135) [1421:0350,1421:0351,1421:0370,1421:1370]
6060
59 -> Kworld/Tevion V-Stream Xpert TV PVR7134
6161
60 -> Typhoon DVB-T Duo Digital/Analog Cardbus [4e42:0502]
6262
61 -> Philips TOUGH DVB-T reference design [1131:2004]
@@ -81,4 +81,5 @@
8181
80 -> ASUS Digimatrix TV [1043:0210]
8282
81 -> Philips Tiger reference design [1131:2018]
8383
82 -> MSI TV@Anywhere plus [1462:6231]
84-
84+
83 -> Terratec Cinergy 250 PCI TV [153b:1160]
85+
84 -> LifeView FlyDVB Trio [5168:0319]

Documentation/video4linux/CARDLIST.tuner

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ tuner=38 - Philips PAL/SECAM multi (FM1216ME MK3)
4040
tuner=39 - LG NTSC (newer TAPC series)
4141
tuner=40 - HITACHI V7-J180AT
4242
tuner=41 - Philips PAL_MK (FI1216 MK)
43-
tuner=42 - Philips 1236D ATSC/NTSC daul in
43+
tuner=42 - Philips 1236D ATSC/NTSC dual in
4444
tuner=43 - Philips NTSC MK3 (FM1236MK3 or FM1236/F)
4545
tuner=44 - Philips 4 in 1 (ATI TV Wonder Pro/Conexant)
4646
tuner=45 - Microtune 4049 FM5
@@ -50,15 +50,15 @@ tuner=48 - Tenna TNF 8831 BGFF)
5050
tuner=49 - Microtune 4042 FI5 ATSC/NTSC dual in
5151
tuner=50 - TCL 2002N
5252
tuner=51 - Philips PAL/SECAM_D (FM 1256 I-H3)
53-
tuner=52 - Thomson DDT 7610 (ATSC/NTSC)
53+
tuner=52 - Thomson DTT 7610 (ATSC/NTSC)
5454
tuner=53 - Philips FQ1286
5555
tuner=54 - tda8290+75
5656
tuner=55 - TCL 2002MB
5757
tuner=56 - Philips PAL/SECAM multi (FQ1216AME MK4)
5858
tuner=57 - Philips FQ1236A MK4
5959
tuner=58 - Ymec TVision TVF-8531MF/8831MF/8731MF
6060
tuner=59 - Ymec TVision TVF-5533MF
61-
tuner=60 - Thomson DDT 7611 (ATSC/NTSC)
61+
tuner=60 - Thomson DTT 761X (ATSC/NTSC)
6262
tuner=61 - Tena TNF9533-D/IF/TNF9533-B/DF
6363
tuner=62 - Philips TEA5767HN FM Radio
6464
tuner=63 - Philips FMD1216ME MK3 Hybrid Tuner

drivers/media/common/saa7146_fops.c

Lines changed: 34 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,10 @@ static int fops_open(struct inode *inode, struct file *file)
253253

254254
if( fh->type == V4L2_BUF_TYPE_VBI_CAPTURE) {
255255
DEB_S(("initializing vbi...\n"));
256-
result = saa7146_vbi_uops.open(dev,file);
256+
if (dev->ext_vv_data->capabilities & V4L2_CAP_VBI_CAPTURE)
257+
result = saa7146_vbi_uops.open(dev,file);
258+
if (dev->ext_vv_data->vbi_fops.open)
259+
dev->ext_vv_data->vbi_fops.open(inode, file);
257260
} else {
258261
DEB_S(("initializing video...\n"));
259262
result = saa7146_video_uops.open(dev,file);
@@ -289,7 +292,10 @@ static int fops_release(struct inode *inode, struct file *file)
289292
return -ERESTARTSYS;
290293

291294
if( fh->type == V4L2_BUF_TYPE_VBI_CAPTURE) {
292-
saa7146_vbi_uops.release(dev,file);
295+
if (dev->ext_vv_data->capabilities & V4L2_CAP_VBI_CAPTURE)
296+
saa7146_vbi_uops.release(dev,file);
297+
if (dev->ext_vv_data->vbi_fops.release)
298+
dev->ext_vv_data->vbi_fops.release(inode, file);
293299
} else {
294300
saa7146_video_uops.release(dev,file);
295301
}
@@ -332,6 +338,7 @@ static int fops_mmap(struct file *file, struct vm_area_struct * vma)
332338
BUG();
333339
return 0;
334340
}
341+
335342
return videobuf_mmap_mapper(q,vma);
336343
}
337344

@@ -381,7 +388,10 @@ static ssize_t fops_read(struct file *file, char __user *data, size_t count, lof
381388
}
382389
case V4L2_BUF_TYPE_VBI_CAPTURE: {
383390
// DEB_EE(("V4L2_BUF_TYPE_VBI_CAPTURE: file:%p, data:%p, count:%lu\n", file, data, (unsigned long)count));
384-
return saa7146_vbi_uops.read(file,data,count,ppos);
391+
if (fh->dev->ext_vv_data->capabilities & V4L2_CAP_VBI_CAPTURE)
392+
return saa7146_vbi_uops.read(file,data,count,ppos);
393+
else
394+
return -EINVAL;
385395
}
386396
break;
387397
default:
@@ -390,12 +400,31 @@ static ssize_t fops_read(struct file *file, char __user *data, size_t count, lof
390400
}
391401
}
392402

403+
static ssize_t fops_write(struct file *file, const char __user *data, size_t count, loff_t *ppos)
404+
{
405+
struct saa7146_fh *fh = file->private_data;
406+
407+
switch (fh->type) {
408+
case V4L2_BUF_TYPE_VIDEO_CAPTURE:
409+
return -EINVAL;
410+
case V4L2_BUF_TYPE_VBI_CAPTURE:
411+
if (fh->dev->ext_vv_data->vbi_fops.write)
412+
return fh->dev->ext_vv_data->vbi_fops.write(file, data, count, ppos);
413+
else
414+
return -EINVAL;
415+
default:
416+
BUG();
417+
return -EINVAL;
418+
}
419+
}
420+
393421
static struct file_operations video_fops =
394422
{
395423
.owner = THIS_MODULE,
396424
.open = fops_open,
397425
.release = fops_release,
398426
.read = fops_read,
427+
.write = fops_write,
399428
.poll = fops_poll,
400429
.mmap = fops_mmap,
401430
.ioctl = fops_ioctl,
@@ -467,7 +496,8 @@ int saa7146_vv_init(struct saa7146_dev* dev, struct saa7146_ext_vv *ext_vv)
467496
memset(vv->d_clipping.cpu_addr, 0x0, SAA7146_CLIPPING_MEM);
468497

469498
saa7146_video_uops.init(dev,vv);
470-
saa7146_vbi_uops.init(dev,vv);
499+
if (dev->ext_vv_data->capabilities & V4L2_CAP_VBI_CAPTURE)
500+
saa7146_vbi_uops.init(dev,vv);
471501

472502
dev->vv_data = vv;
473503
dev->vv_callback = &vv_callback;

drivers/media/common/saa7146_hlp.c

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -562,19 +562,26 @@ static void saa7146_set_position(struct saa7146_dev *dev, int w_x, int w_y, int
562562

563563
int b_depth = vv->ov_fmt->depth;
564564
int b_bpl = vv->ov_fb.fmt.bytesperline;
565-
u32 base = (u32)vv->ov_fb.base;
565+
/* The unsigned long cast is to remove a 64-bit compile warning since
566+
it looks like a 64-bit address is cast to a 32-bit value, even
567+
though the base pointer is really a 32-bit physical address that
568+
goes into a 32-bit DMA register.
569+
FIXME: might not work on some 64-bit platforms, but see the FIXME
570+
in struct v4l2_framebuffer (videodev2.h) for that.
571+
*/
572+
u32 base = (u32)(unsigned long)vv->ov_fb.base;
566573

567574
struct saa7146_video_dma vdma1;
568575

569576
/* calculate memory offsets for picture, look if we shall top-down-flip */
570577
vdma1.pitch = 2*b_bpl;
571578
if ( 0 == vv->vflip ) {
572-
vdma1.base_even = (u32)base + (w_y * (vdma1.pitch/2)) + (w_x * (b_depth / 8));
579+
vdma1.base_even = base + (w_y * (vdma1.pitch/2)) + (w_x * (b_depth / 8));
573580
vdma1.base_odd = vdma1.base_even + (vdma1.pitch / 2);
574581
vdma1.prot_addr = vdma1.base_even + (w_height * (vdma1.pitch / 2));
575582
}
576583
else {
577-
vdma1.base_even = (u32)base + ((w_y+w_height) * (vdma1.pitch/2)) + (w_x * (b_depth / 8));
584+
vdma1.base_even = base + ((w_y+w_height) * (vdma1.pitch/2)) + (w_x * (b_depth / 8));
578585
vdma1.base_odd = vdma1.base_even - (vdma1.pitch / 2);
579586
vdma1.prot_addr = vdma1.base_odd - (w_height * (vdma1.pitch / 2));
580587
}

drivers/media/common/saa7146_vbi.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -500,9 +500,9 @@ static ssize_t vbi_read(struct file *file, char __user *data, size_t count, loff
500500
}
501501

502502
struct saa7146_use_ops saa7146_vbi_uops = {
503-
.init = vbi_init,
504-
.open = vbi_open,
503+
.init = vbi_init,
504+
.open = vbi_open,
505505
.release = vbi_close,
506506
.irq_done = vbi_irq_done,
507-
.read = vbi_read,
507+
.read = vbi_read,
508508
};

drivers/media/common/saa7146_video.c

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -151,8 +151,8 @@ static int try_win(struct saa7146_dev *dev, struct v4l2_window *win)
151151

152152
if (V4L2_FIELD_ANY == field) {
153153
field = (win->w.height > maxh/2)
154-
? V4L2_FIELD_INTERLACED
155-
: V4L2_FIELD_TOP;
154+
? V4L2_FIELD_INTERLACED
155+
: V4L2_FIELD_TOP;
156156
}
157157
switch (field) {
158158
case V4L2_FIELD_TOP:
@@ -1114,10 +1114,6 @@ int saa7146_video_do_ioctl(struct inode *inode, struct file *file, unsigned int
11141114
return 0;
11151115
}
11161116
case VIDIOC_OVERLAY:
1117-
1118-
1119-
1120-
11211117
{
11221118
int on = *(int *)arg;
11231119
int err = 0;
@@ -1359,7 +1355,6 @@ static void buffer_queue(struct videobuf_queue *q, struct videobuf_buffer *vb)
13591355
saa7146_buffer_queue(fh->dev,&vv->video_q,buf);
13601356
}
13611357

1362-
13631358
static void buffer_release(struct videobuf_queue *q, struct videobuf_buffer *vb)
13641359
{
13651360
struct file *file = q->priv_data;

drivers/media/dvb/b2c2/flexcop-fe-tuner.c

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -298,7 +298,7 @@ static int flexcop_fe_request_firmware(struct dvb_frontend* fe, const struct fir
298298
}
299299

300300
static int lgdt3303_pll_set(struct dvb_frontend* fe,
301-
struct dvb_frontend_parameters* params)
301+
struct dvb_frontend_parameters* params)
302302
{
303303
struct flexcop_device *fc = fe->dvb->priv;
304304
u8 buf[4];
@@ -485,12 +485,16 @@ static struct stv0297_config alps_tdee4_stv0297_config = {
485485
/* try to figure out the frontend, each card/box can have on of the following list */
486486
int flexcop_frontend_init(struct flexcop_device *fc)
487487
{
488+
struct dvb_frontend_ops *ops;
489+
488490
/* try the sky v2.6 (stv0299/Samsung tbmu24112(sl1935)) */
489491
if ((fc->fe = stv0299_attach(&samsung_tbmu24112_config, &fc->i2c_adap)) != NULL) {
490-
fc->fe->ops->set_voltage = flexcop_set_voltage;
492+
ops = fc->fe->ops;
493+
494+
ops->set_voltage = flexcop_set_voltage;
491495

492-
fc->fe_sleep = fc->fe->ops->sleep;
493-
fc->fe->ops->sleep = flexcop_sleep;
496+
fc->fe_sleep = ops->sleep;
497+
ops->sleep = flexcop_sleep;
494498

495499
fc->dev_type = FC_SKY;
496500
info("found the stv0299 at i2c address: 0x%02x",samsung_tbmu24112_config.demod_address);
@@ -522,15 +526,17 @@ int flexcop_frontend_init(struct flexcop_device *fc)
522526
} else
523527
/* try the sky v2.3 (vp310/Samsung tbdu18132(tsa5059)) */
524528
if ((fc->fe = vp310_attach(&skystar23_samsung_tbdu18132_config, &fc->i2c_adap)) != NULL) {
525-
fc->fe->ops->diseqc_send_master_cmd = flexcop_diseqc_send_master_cmd;
526-
fc->fe->ops->diseqc_send_burst = flexcop_diseqc_send_burst;
527-
fc->fe->ops->set_tone = flexcop_set_tone;
528-
fc->fe->ops->set_voltage = flexcop_set_voltage;
529+
ops = fc->fe->ops;
530+
531+
ops->diseqc_send_master_cmd = flexcop_diseqc_send_master_cmd;
532+
ops->diseqc_send_burst = flexcop_diseqc_send_burst;
533+
ops->set_tone = flexcop_set_tone;
534+
ops->set_voltage = flexcop_set_voltage;
529535

530-
fc->fe_sleep = fc->fe->ops->sleep;
531-
fc->fe->ops->sleep = flexcop_sleep;
536+
fc->fe_sleep = ops->sleep;
537+
ops->sleep = flexcop_sleep;
532538

533-
fc->dev_type = FC_SKY_OLD;
539+
fc->dev_type = FC_SKY_OLD;
534540
info("found the vp310 (aka mt312) at i2c address: 0x%02x",skystar23_samsung_tbdu18132_config.demod_address);
535541
}
536542

@@ -540,8 +546,9 @@ int flexcop_frontend_init(struct flexcop_device *fc)
540546
} else {
541547
if (dvb_register_frontend(&fc->dvb_adapter, fc->fe)) {
542548
err("frontend registration failed!");
543-
if (fc->fe->ops->release != NULL)
544-
fc->fe->ops->release(fc->fe);
549+
ops = fc->fe->ops;
550+
if (ops->release != NULL)
551+
ops->release(fc->fe);
545552
fc->fe = NULL;
546553
return -EINVAL;
547554
}

drivers/media/dvb/b2c2/flexcop-reg.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,13 @@ extern const char *flexcop_device_names[];
3939
/* FlexCop IBI Registers */
4040
#if defined(__LITTLE_ENDIAN)
4141
#include "flexcop_ibi_value_le.h"
42-
#elif defined(__BIG_ENDIAN)
42+
#else
43+
#if defined(__BIG_ENDIAN)
4344
#include "flexcop_ibi_value_be.h"
4445
#else
4546
#error no endian defined
4647
#endif
48+
#endif
4749

4850
#define fc_data_Tag_ID_DVB 0x3e
4951
#define fc_data_Tag_ID_ATSC 0x3f

0 commit comments

Comments
 (0)