Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/v4l-dvb

* 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/v4l-dvb: (33 commits)
V4L/DVB (9103): em28xx: HVR-900 B3C0 - fix audio clicking issue
V4L/DVB (9099): em28xx: Add detection for K-WORLD DVB-T 310U
V4L/DVB (9092): gspca: Bad init values for sonixj ov7660.
V4L/DVB (9080): gspca: Add a delay after writing to the sonixj sensors.
V4L/DVB (9075): gspca: Bad check of returned status in i2c_read() spca561.
V4L/DVB (9053): fix buffer overflow in uvc-video
V4L/DVB (9043): S5H1420: Fix size of shadow-array to avoid overflow
V4L/DVB (9037): Fix support for Hauppauge Nova-S SE
V4L/DVB (9029): Fix deadlock in demux code
V4L/DVB (8979): sms1xxx: Add new USB product ID for Hauppauge WinTV MiniStick
V4L/DVB (8978): sms1xxx: fix product name for Hauppauge WinTV MiniStick
V4L/DVB (8967): Use correct XC3028L firmware for AMD ATI TV Wonder 600
V4L/DVB (8963): s2255drv field count fix
V4L/DVB (8961): zr36067: Fix RGBR pixel format
V4L/DVB (8960): drivers/media/video/cafe_ccic.c needs mm.h
V4L/DVB (8958): zr36067: Return proper bytes-per-line value
V4L/DVB (8957): zr36067: Restore the default pixel format
V4L/DVB (8955): bttv: Prevent NULL pointer dereference in radio_open
V4L/DVB (8935): em28xx-cards: Remove duplicate entry (EM2800_BOARD_KWORLD_USB2800)
V4L/DVB (8933): gspca: Disable light frquency for zc3xx cs2102 Kokom.
...

+130 -86
+1 -1
Documentation/video4linux/CARDLIST.em28xx
··· 46 46 45 -> Pinnacle PCTV DVB-T (em2870) 47 47 46 -> Compro, VideoMate U3 (em2870) [185b:2870] 48 48 47 -> KWorld DVB-T 305U (em2880) [eb1a:e305] 49 - 48 -> KWorld DVB-T 310U (em2880) 49 + 48 -> KWorld DVB-T 310U (em2880) [eb1a:e310] 50 50 49 -> MSI DigiVox A/D (em2880) [eb1a:e310] 51 51 50 -> MSI DigiVox A/D II (em2880) [eb1a:e320] 52 52 51 -> Terratec Hybrid XS Secam (em2880) [0ccd:004c]
+1
Documentation/video4linux/gspca.txt
··· 190 190 pac7311 093a:2621 PAC731x 191 191 pac7311 093a:2624 PAC7302 192 192 pac7311 093a:2626 Labtec 2200 193 + pac7311 093a:262a Webcam 300k 193 194 zc3xx 0ac8:0302 Z-star Vimicro zc0302 194 195 vc032x 0ac8:0321 Vimicro generic vc0321 195 196 vc032x 0ac8:0323 Vimicro Vc0323
+1
drivers/media/common/tuners/tuner-xc2028.h
··· 10 10 #include "dvb_frontend.h" 11 11 12 12 #define XC2028_DEFAULT_FIRMWARE "xc3028-v27.fw" 13 + #define XC3028L_DEFAULT_FIRMWARE "xc3028L-v36.fw" 13 14 14 15 /* Dmoduler IF (kHz) */ 15 16 #define XC3028_FE_DEFAULT 0 /* Don't load SCODE */
+1
drivers/media/dvb/b2c2/flexcop-fe-tuner.c
··· 491 491 .demod_address = 0x53, 492 492 .invert = 1, 493 493 .repeated_start_workaround = 1, 494 + .serial_mpeg = 1, 494 495 }; 495 496 496 497 static struct itd1000_config skystar2_rev2_7_itd1000_config = {
+9 -7
drivers/media/dvb/dvb-core/dmxdev.c
··· 364 364 enum dmx_success success) 365 365 { 366 366 struct dmxdev_filter *dmxdevfilter = filter->priv; 367 + unsigned long flags; 367 368 int ret; 368 369 369 370 if (dmxdevfilter->buffer.error) { 370 371 wake_up(&dmxdevfilter->buffer.queue); 371 372 return 0; 372 373 } 373 - spin_lock(&dmxdevfilter->dev->lock); 374 + spin_lock_irqsave(&dmxdevfilter->dev->lock, flags); 374 375 if (dmxdevfilter->state != DMXDEV_STATE_GO) { 375 - spin_unlock(&dmxdevfilter->dev->lock); 376 + spin_unlock_irqrestore(&dmxdevfilter->dev->lock, flags); 376 377 return 0; 377 378 } 378 379 del_timer(&dmxdevfilter->timer); ··· 392 391 } 393 392 if (dmxdevfilter->params.sec.flags & DMX_ONESHOT) 394 393 dmxdevfilter->state = DMXDEV_STATE_DONE; 395 - spin_unlock(&dmxdevfilter->dev->lock); 394 + spin_unlock_irqrestore(&dmxdevfilter->dev->lock, flags); 396 395 wake_up(&dmxdevfilter->buffer.queue); 397 396 return 0; 398 397 } ··· 404 403 { 405 404 struct dmxdev_filter *dmxdevfilter = feed->priv; 406 405 struct dvb_ringbuffer *buffer; 406 + unsigned long flags; 407 407 int ret; 408 408 409 - spin_lock(&dmxdevfilter->dev->lock); 409 + spin_lock_irqsave(&dmxdevfilter->dev->lock, flags); 410 410 if (dmxdevfilter->params.pes.output == DMX_OUT_DECODER) { 411 - spin_unlock(&dmxdevfilter->dev->lock); 411 + spin_unlock_irqrestore(&dmxdevfilter->dev->lock, flags); 412 412 return 0; 413 413 } 414 414 ··· 419 417 else 420 418 buffer = &dmxdevfilter->dev->dvr_buffer; 421 419 if (buffer->error) { 422 - spin_unlock(&dmxdevfilter->dev->lock); 420 + spin_unlock_irqrestore(&dmxdevfilter->dev->lock, flags); 423 421 wake_up(&buffer->queue); 424 422 return 0; 425 423 } ··· 430 428 dvb_ringbuffer_flush(buffer); 431 429 buffer->error = ret; 432 430 } 433 - spin_unlock(&dmxdevfilter->dev->lock); 431 + spin_unlock_irqrestore(&dmxdevfilter->dev->lock, flags); 434 432 wake_up(&buffer->queue); 435 433 return 0; 436 434 }
+10 -6
drivers/media/dvb/dvb-core/dvb_demux.c
··· 399 399 void dvb_dmx_swfilter_packets(struct dvb_demux *demux, const u8 *buf, 400 400 size_t count) 401 401 { 402 - spin_lock(&demux->lock); 402 + unsigned long flags; 403 + 404 + spin_lock_irqsave(&demux->lock, flags); 403 405 404 406 while (count--) { 405 407 if (buf[0] == 0x47) ··· 409 407 buf += 188; 410 408 } 411 409 412 - spin_unlock(&demux->lock); 410 + spin_unlock_irqrestore(&demux->lock, flags); 413 411 } 414 412 415 413 EXPORT_SYMBOL(dvb_dmx_swfilter_packets); 416 414 417 415 void dvb_dmx_swfilter(struct dvb_demux *demux, const u8 *buf, size_t count) 418 416 { 417 + unsigned long flags; 419 418 int p = 0, i, j; 420 419 421 - spin_lock(&demux->lock); 420 + spin_lock_irqsave(&demux->lock, flags); 422 421 423 422 if (demux->tsbufp) { 424 423 i = demux->tsbufp; ··· 452 449 } 453 450 454 451 bailout: 455 - spin_unlock(&demux->lock); 452 + spin_unlock_irqrestore(&demux->lock, flags); 456 453 } 457 454 458 455 EXPORT_SYMBOL(dvb_dmx_swfilter); 459 456 460 457 void dvb_dmx_swfilter_204(struct dvb_demux *demux, const u8 *buf, size_t count) 461 458 { 459 + unsigned long flags; 462 460 int p = 0, i, j; 463 461 u8 tmppack[188]; 464 462 465 - spin_lock(&demux->lock); 463 + spin_lock_irqsave(&demux->lock, flags); 466 464 467 465 if (demux->tsbufp) { 468 466 i = demux->tsbufp; ··· 504 500 } 505 501 506 502 bailout: 507 - spin_unlock(&demux->lock); 503 + spin_unlock_irqrestore(&demux->lock, flags); 508 504 } 509 505 510 506 EXPORT_SYMBOL(dvb_dmx_swfilter_204);
+7 -4
drivers/media/dvb/frontends/s5h1420.c
··· 59 59 * it does not support repeated-start, workaround: write addr-1 60 60 * and then read 61 61 */ 62 - u8 shadow[255]; 62 + u8 shadow[256]; 63 63 }; 64 64 65 65 static u32 s5h1420_getsymbolrate(struct s5h1420_state* state); ··· 94 94 if (ret != 3) 95 95 return ret; 96 96 } else { 97 - ret = i2c_transfer(state->i2c, &msg[1], 2); 98 - if (ret != 2) 97 + ret = i2c_transfer(state->i2c, &msg[1], 1); 98 + if (ret != 1) 99 + return ret; 100 + ret = i2c_transfer(state->i2c, &msg[2], 1); 101 + if (ret != 1) 99 102 return ret; 100 103 } 101 104 ··· 826 823 struct s5h1420_state* state = fe->demodulator_priv; 827 824 828 825 /* disable power down and do reset */ 829 - state->CON_1_val = 0x10; 826 + state->CON_1_val = state->config->serial_mpeg << 4; 830 827 s5h1420_writereg(state, 0x02, state->CON_1_val); 831 828 msleep(10); 832 829 s5h1420_reset(state);
+5 -3
drivers/media/dvb/frontends/s5h1420.h
··· 32 32 u8 demod_address; 33 33 34 34 /* does the inversion require inversion? */ 35 - u8 invert : 1; 35 + u8 invert:1; 36 36 37 - u8 repeated_start_workaround : 1; 38 - u8 cdclk_polarity : 1; /* 1 == falling edge, 0 == raising edge */ 37 + u8 repeated_start_workaround:1; 38 + u8 cdclk_polarity:1; /* 1 == falling edge, 0 == raising edge */ 39 + 40 + u8 serial_mpeg:1; 39 41 }; 40 42 41 43 #if defined(CONFIG_DVB_S5H1420) || (defined(CONFIG_DVB_S5H1420_MODULE) && defined(MODULE))
+3 -1
drivers/media/dvb/siano/sms-cards.c
··· 40 40 .driver_info = SMS1XXX_BOARD_HAUPPAUGE_OKEMO_B }, 41 41 { USB_DEVICE(0x2040, 0x5500), 42 42 .driver_info = SMS1XXX_BOARD_HAUPPAUGE_WINDHAM }, 43 + { USB_DEVICE(0x2040, 0x5510), 44 + .driver_info = SMS1XXX_BOARD_HAUPPAUGE_WINDHAM }, 43 45 { USB_DEVICE(0x2040, 0x5580), 44 46 .driver_info = SMS1XXX_BOARD_HAUPPAUGE_WINDHAM }, 45 47 { USB_DEVICE(0x2040, 0x5590), ··· 89 87 .fw[DEVICE_MODE_DVBT_BDA] = "sms1xxx-nova-b-dvbt-01.fw", 90 88 }, 91 89 [SMS1XXX_BOARD_HAUPPAUGE_WINDHAM] = { 92 - .name = "Hauppauge WinTV-Nova-T-MiniStick", 90 + .name = "Hauppauge WinTV MiniStick", 93 91 .type = SMS_NOVA_B0, 94 92 .fw[DEVICE_MODE_DVBT_BDA] = "sms1xxx-hcw-55xxx-dvbt-01.fw", 95 93 },
+1 -1
drivers/media/video/bt8xx/bttv-driver.c
··· 3431 3431 dprintk("bttv: open minor=%d\n",minor); 3432 3432 3433 3433 for (i = 0; i < bttv_num; i++) { 3434 - if (bttvs[i].radio_dev->minor == minor) { 3434 + if (bttvs[i].radio_dev && bttvs[i].radio_dev->minor == minor) { 3435 3435 btv = &bttvs[i]; 3436 3436 break; 3437 3437 }
+1
drivers/media/video/cafe_ccic.c
··· 19 19 #include <linux/module.h> 20 20 #include <linux/init.h> 21 21 #include <linux/fs.h> 22 + #include <linux/mm.h> 22 23 #include <linux/pci.h> 23 24 #include <linux/i2c.h> 24 25 #include <linux/interrupt.h>
+4 -1
drivers/media/video/cpia2/cpia2_usb.c
··· 632 632 static int submit_urbs(struct camera_data *cam) 633 633 { 634 634 struct urb *urb; 635 - int fx, err, i; 635 + int fx, err, i, j; 636 636 637 637 for(i=0; i<NUM_SBUF; ++i) { 638 638 if (cam->sbuf[i].data) ··· 657 657 } 658 658 urb = usb_alloc_urb(FRAMES_PER_DESC, GFP_KERNEL); 659 659 if (!urb) { 660 + ERR("%s: usb_alloc_urb error!\n", __func__); 661 + for (j = 0; j < i; j++) 662 + usb_free_urb(cam->sbuf[j].urb); 660 663 return -ENOMEM; 661 664 } 662 665
+1 -1
drivers/media/video/cx18/cx18-cards.c
··· 163 163 }, 164 164 .audio_inputs = { 165 165 { CX18_CARD_INPUT_AUD_TUNER, 166 - CX18_AV_AUDIO8, 0 }, 166 + CX18_AV_AUDIO5, 0 }, 167 167 { CX18_CARD_INPUT_LINE_IN1, 168 168 CX18_AV_AUDIO_SERIAL1, 0 }, 169 169 },
+1
drivers/media/video/cx88/cx88-blackbird.c
··· 1070 1070 err = drv->request_acquire(drv); 1071 1071 if(err != 0) { 1072 1072 dprintk(1,"%s: Unable to acquire hardware, %d\n", __func__, err); 1073 + unlock_kernel(); 1073 1074 return err; 1074 1075 } 1075 1076 }
+9 -3
drivers/media/video/em28xx/em28xx-audio.c
··· 117 117 118 118 if (oldptr + length >= runtime->buffer_size) { 119 119 unsigned int cnt = 120 - runtime->buffer_size - oldptr - 1; 120 + runtime->buffer_size - oldptr; 121 121 memcpy(runtime->dma_area + oldptr * stride, cp, 122 122 cnt * stride); 123 - memcpy(runtime->dma_area, cp + cnt, 123 + memcpy(runtime->dma_area, cp + cnt * stride, 124 124 length * stride - cnt * stride); 125 125 } else { 126 126 memcpy(runtime->dma_area + oldptr * stride, cp, ··· 161 161 162 162 memset(dev->adev->transfer_buffer[i], 0x80, sb_size); 163 163 urb = usb_alloc_urb(EM28XX_NUM_AUDIO_PACKETS, GFP_ATOMIC); 164 - if (!urb) 164 + if (!urb) { 165 + em28xx_errdev("usb_alloc_urb failed!\n"); 166 + for (j = 0; j < i; j++) { 167 + usb_free_urb(dev->adev->urb[j]); 168 + kfree(dev->adev->transfer_buffer[j]); 169 + } 165 170 return -ENOMEM; 171 + } 166 172 167 173 urb->dev = dev->udev; 168 174 urb->context = dev;
+26 -29
drivers/media/video/em28xx/em28xx-cards.c
··· 93 93 .amux = 0, 94 94 } }, 95 95 }, 96 - [EM2800_BOARD_KWORLD_USB2800] = { 97 - .name = "Kworld USB2800", 98 - .valid = EM28XX_BOARD_NOT_VALIDATED, 99 - .is_em2800 = 1, 100 - .vchannels = 3, 101 - .tuner_type = TUNER_PHILIPS_FCV1236D, 102 - .tda9887_conf = TDA9887_PRESENT, 103 - .decoder = EM28XX_SAA7113, 104 - .input = { { 105 - .type = EM28XX_VMUX_TELEVISION, 106 - .vmux = SAA7115_COMPOSITE2, 107 - .amux = 0, 108 - }, { 109 - .type = EM28XX_VMUX_COMPOSITE1, 110 - .vmux = SAA7115_COMPOSITE0, 111 - .amux = 1, 112 - }, { 113 - .type = EM28XX_VMUX_SVIDEO, 114 - .vmux = SAA7115_SVIDEO3, 115 - .amux = 1, 116 - } }, 117 - }, 118 96 [EM2820_BOARD_KWORLD_PVRTV2800RF] = { 119 97 .name = "Kworld PVR TV 2800 RF", 120 98 .is_em2800 = 0, ··· 577 599 }, { 578 600 .type = EM28XX_VMUX_COMPOSITE1, 579 601 .vmux = TVP5150_COMPOSITE1, 580 - .amux = 1, 602 + .amux = 3, 581 603 }, { 582 604 .type = EM28XX_VMUX_SVIDEO, 583 605 .vmux = TVP5150_SVIDEO, ··· 930 952 }, 931 953 [EM2880_BOARD_KWORLD_DVB_310U] = { 932 954 .name = "KWorld DVB-T 310U", 933 - .valid = EM28XX_BOARD_NOT_VALIDATED, 934 955 .vchannels = 3, 935 956 .tuner_type = TUNER_XC2028, 957 + .has_dvb = 1, 958 + .mts_firmware = 1, 936 959 .decoder = EM28XX_TVP5150, 937 960 .input = { { 938 961 .type = EM28XX_VMUX_TELEVISION, 939 962 .vmux = TVP5150_COMPOSITE0, 940 - .amux = 0, 963 + .amux = EM28XX_AMUX_VIDEO, 941 964 }, { 942 965 .type = EM28XX_VMUX_COMPOSITE1, 943 966 .vmux = TVP5150_COMPOSITE1, 944 - .amux = 1, 945 - }, { 967 + .amux = EM28XX_AMUX_AC97_LINE_IN, 968 + }, { /* S-video has not been tested yet */ 946 969 .type = EM28XX_VMUX_SVIDEO, 947 970 .vmux = TVP5150_SVIDEO, 948 - .amux = 1, 971 + .amux = EM28XX_AMUX_AC97_LINE_IN, 949 972 } }, 950 973 }, 951 974 [EM2881_BOARD_DNT_DA2_HYBRID] = { ··· 1261 1282 static struct em28xx_hash_table em28xx_eeprom_hash [] = { 1262 1283 /* P/N: SA 60002070465 Tuner: TVF7533-MF */ 1263 1284 {0x6ce05a8f, EM2820_BOARD_PROLINK_PLAYTV_USB2, TUNER_YMEC_TVF_5533MF}, 1285 + {0x966a0441, EM2880_BOARD_KWORLD_DVB_310U, TUNER_XC2028}, 1264 1286 }; 1265 1287 1266 1288 /* I2C devicelist hash table for devices with generic USB IDs */ ··· 1532 1552 /* djh - Not sure which demod we need here */ 1533 1553 ctl->demod = XC3028_FE_DEFAULT; 1534 1554 break; 1555 + case EM2880_BOARD_AMD_ATI_TV_WONDER_HD_600: 1556 + ctl->demod = XC3028_FE_DEFAULT; 1557 + ctl->fname = XC3028L_DEFAULT_FIRMWARE; 1558 + break; 1535 1559 case EM2883_BOARD_HAUPPAUGE_WINTV_HVR_950: 1536 1560 case EM2880_BOARD_PINNACLE_PCTV_HD_PRO: 1537 - case EM2880_BOARD_AMD_ATI_TV_WONDER_HD_600: 1538 1561 /* FIXME: Better to specify the needed IF */ 1539 1562 ctl->demod = XC3028_FE_DEFAULT; 1540 1563 break; ··· 1747 1764 break; 1748 1765 case EM2820_BOARD_UNKNOWN: 1749 1766 case EM2800_BOARD_UNKNOWN: 1767 + /* 1768 + * The K-WORLD DVB-T 310U is detected as an MSI Digivox AD. 1769 + * 1770 + * This occurs because they share identical USB vendor and 1771 + * product IDs. 1772 + * 1773 + * What we do here is look up the EEPROM hash of the K-WORLD 1774 + * and if it is found then we decide that we do not have 1775 + * a DIGIVOX and reset the device to the K-WORLD instead. 1776 + * 1777 + * This solution is only valid if they do not share eeprom 1778 + * hash identities which has not been determined as yet. 1779 + */ 1780 + case EM2880_BOARD_MSI_DIGIVOX_AD: 1750 1781 if (!em28xx_hint_board(dev)) 1751 1782 em28xx_set_model(dev); 1752 1783 break;
+9
drivers/media/video/em28xx/em28xx-dvb.c
··· 452 452 goto out_free; 453 453 } 454 454 break; 455 + case EM2880_BOARD_KWORLD_DVB_310U: 456 + dvb->frontend = dvb_attach(zl10353_attach, 457 + &em28xx_zl10353_with_xc3028, 458 + &dev->i2c_adap); 459 + if (attach_xc3028(0x61, dev) < 0) { 460 + result = -EINVAL; 461 + goto out_free; 462 + } 463 + break; 455 464 default: 456 465 printk(KERN_ERR "%s/2: The frontend of your DVB/ATSC card" 457 466 " isn't supported yet\n",
+2 -1
drivers/media/video/gspca/gspca.c
··· 459 459 urb = usb_alloc_urb(npkt, GFP_KERNEL); 460 460 if (!urb) { 461 461 err("usb_alloc_urb failed"); 462 + destroy_urbs(gspca_dev); 462 463 return -ENOMEM; 463 464 } 464 465 urb->transfer_buffer = usb_buffer_alloc(gspca_dev->dev, ··· 469 468 470 469 if (urb->transfer_buffer == NULL) { 471 470 usb_free_urb(urb); 472 - destroy_urbs(gspca_dev); 473 471 err("usb_buffer_urb failed"); 472 + destroy_urbs(gspca_dev); 474 473 return -ENOMEM; 475 474 } 476 475 gspca_dev->urb[n] = urb;
+1
drivers/media/video/gspca/pac7311.c
··· 1063 1063 {USB_DEVICE(0x093a, 0x2621), .driver_info = SENSOR_PAC7302}, 1064 1064 {USB_DEVICE(0x093a, 0x2624), .driver_info = SENSOR_PAC7302}, 1065 1065 {USB_DEVICE(0x093a, 0x2626), .driver_info = SENSOR_PAC7302}, 1066 + {USB_DEVICE(0x093a, 0x262a), .driver_info = SENSOR_PAC7302}, 1066 1067 {} 1067 1068 }; 1068 1069 MODULE_DEVICE_TABLE(usb, device_table);
+2 -2
drivers/media/video/gspca/sonixb.c
··· 232 232 static struct v4l2_pix_format vga_mode[] = { 233 233 {160, 120, V4L2_PIX_FMT_SBGGR8, V4L2_FIELD_NONE, 234 234 .bytesperline = 160, 235 - .sizeimage = 160 * 120 * 5 / 4, 235 + .sizeimage = 160 * 120, 236 236 .colorspace = V4L2_COLORSPACE_SRGB, 237 237 .priv = 2 | MODE_RAW}, 238 238 {160, 120, V4L2_PIX_FMT_SN9C10X, V4L2_FIELD_NONE, ··· 264 264 .priv = 1 | MODE_REDUCED_SIF}, 265 265 {176, 144, V4L2_PIX_FMT_SBGGR8, V4L2_FIELD_NONE, 266 266 .bytesperline = 176, 267 - .sizeimage = 176 * 144 * 5 / 4, 267 + .sizeimage = 176 * 144, 268 268 .colorspace = V4L2_COLORSPACE_SRGB, 269 269 .priv = 1 | MODE_RAW}, 270 270 {176, 144, V4L2_PIX_FMT_SN9C10X, V4L2_FIELD_NONE,
+14 -5
drivers/media/video/gspca/sonixj.c
··· 707 707 0x08, 0, /* value, index */ 708 708 gspca_dev->usb_buf, 8, 709 709 500); 710 + msleep(2); 710 711 } 711 712 712 713 /* read 5 bytes in gspca_dev->usb_buf */ ··· 977 976 case BRIDGE_SN9C105: 978 977 if (regF1 != 0x11) 979 978 return -ENODEV; 980 - reg_w(gspca_dev, 0x02, regGpio, 2); 979 + reg_w(gspca_dev, 0x01, regGpio, 2); 981 980 break; 982 981 case BRIDGE_SN9C120: 983 982 if (regF1 != 0x12) 984 983 return -ENODEV; 985 984 regGpio[1] = 0x70; 986 - reg_w(gspca_dev, 0x02, regGpio, 2); 985 + reg_w(gspca_dev, 0x01, regGpio, 2); 987 986 break; 988 987 default: 989 988 /* case BRIDGE_SN9C110: */ ··· 1184 1183 static const __u8 CA[] = { 0x28, 0xd8, 0x14, 0xec }; 1185 1184 static const __u8 CE[] = { 0x32, 0xdd, 0x2d, 0xdd }; /* MI0360 */ 1186 1185 static const __u8 CE_ov76xx[] = 1187 - { 0x32, 0xdd, 0x32, 0xdd }; /* OV7630/48 */ 1186 + { 0x32, 0xdd, 0x32, 0xdd }; 1188 1187 1189 1188 sn9c1xx = sn_tb[(int) sd->sensor]; 1190 1189 configure_gpio(gspca_dev, sn9c1xx); ··· 1224 1223 reg_w(gspca_dev, 0x20, gamma_def, sizeof gamma_def); 1225 1224 for (i = 0; i < 8; i++) 1226 1225 reg_w(gspca_dev, 0x84, reg84, sizeof reg84); 1226 + switch (sd->sensor) { 1227 + case SENSOR_OV7660: 1228 + reg_w1(gspca_dev, 0x9a, 0x05); 1229 + break; 1230 + default: 1227 1231 reg_w1(gspca_dev, 0x9a, 0x08); 1228 1232 reg_w1(gspca_dev, 0x99, 0x59); 1233 + break; 1234 + } 1229 1235 1230 1236 mode = gspca_dev->cam.cam_mode[(int) gspca_dev->curr_mode].priv; 1231 1237 if (mode) ··· 1283 1275 /* reg1 = 0x44; */ 1284 1276 /* reg1 = 0x46; (done) */ 1285 1277 } else { 1286 - reg17 = 0x22; /* 640 MCKSIZE */ 1287 - reg1 = 0x06; 1278 + reg17 = 0xa2; /* 640 */ 1279 + reg1 = 0x44; 1288 1280 } 1289 1281 break; 1290 1282 } ··· 1293 1285 switch (sd->sensor) { 1294 1286 case SENSOR_OV7630: 1295 1287 case SENSOR_OV7648: 1288 + case SENSOR_OV7660: 1296 1289 reg_w(gspca_dev, 0xce, CE_ov76xx, 4); 1297 1290 break; 1298 1291 default:
+1 -1
drivers/media/video/gspca/spca561.c
··· 225 225 reg_w_val(gspca_dev->dev, 0x8802, (mode | 0x01)); 226 226 do { 227 227 reg_r(gspca_dev, 0x8803, 1); 228 - if (!gspca_dev->usb_buf) 228 + if (!gspca_dev->usb_buf[0]) 229 229 break; 230 230 } while (--retry); 231 231 if (retry == 0)
+2 -2
drivers/media/video/gspca/zc3xx.c
··· 6576 6576 cs2102_60HZ, cs2102_60HZScale}, 6577 6577 /* SENSOR_CS2102K 1 */ 6578 6578 {cs2102_NoFliker, cs2102_NoFlikerScale, 6579 - cs2102_50HZ, cs2102_50HZScale, 6580 - cs2102_60HZ, cs2102_60HZScale}, 6579 + NULL, NULL, /* currently disabled */ 6580 + NULL, NULL}, 6581 6581 /* SENSOR_GC0305 2 */ 6582 6582 {gc0305_NoFliker, gc0305_NoFliker, 6583 6583 gc0305_50HZ, gc0305_50HZ,
+4 -2
drivers/media/video/ov511.c
··· 3591 3591 ov51x_init_isoc(struct usb_ov511 *ov) 3592 3592 { 3593 3593 struct urb *urb; 3594 - int fx, err, n, size; 3594 + int fx, err, n, i, size; 3595 3595 3596 3596 PDEBUG(3, "*** Initializing capture ***"); 3597 3597 ··· 3662 3662 urb = usb_alloc_urb(FRAMES_PER_DESC, GFP_KERNEL); 3663 3663 if (!urb) { 3664 3664 err("init isoc: usb_alloc_urb ret. NULL"); 3665 + for (i = 0; i < n; i++) 3666 + usb_free_urb(ov->sbuf[i].urb); 3665 3667 return -ENOMEM; 3666 3668 } 3667 3669 ov->sbuf[n].urb = urb; ··· 5653 5651 if (!ov->dev) 5654 5652 return -ENODEV; 5655 5653 sensor_get_exposure(ov, &exp); 5656 - return sprintf(buf, "%d\n", exp >> 8); 5654 + return sprintf(buf, "%d\n", exp); 5657 5655 } 5658 5656 static DEVICE_ATTR(exposure, S_IRUGO, show_exposure, NULL); 5659 5657
+2
drivers/media/video/pvrusb2/pvrusb2-devattr.c
··· 489 489 struct usb_device_id pvr2_device_table[] = { 490 490 { USB_DEVICE(0x2040, 0x2900), 491 491 .driver_info = (kernel_ulong_t)&pvr2_device_29xxx}, 492 + { USB_DEVICE(0x2040, 0x2950), /* Logically identical to 2900 */ 493 + .driver_info = (kernel_ulong_t)&pvr2_device_29xxx}, 492 494 { USB_DEVICE(0x2040, 0x2400), 493 495 .driver_info = (kernel_ulong_t)&pvr2_device_24xxx}, 494 496 { USB_DEVICE(0x1164, 0x0622),
+2 -1
drivers/media/video/s2255drv.c
··· 669 669 (unsigned long)vbuf, pos); 670 670 /* tell v4l buffer was filled */ 671 671 672 - buf->vb.field_count++; 672 + buf->vb.field_count = dev->frame_count[chn] * 2; 673 673 do_gettimeofday(&ts); 674 674 buf->vb.ts = ts; 675 675 buf->vb.state = VIDEOBUF_DONE; ··· 1268 1268 dev->last_frame[chn] = -1; 1269 1269 dev->bad_payload[chn] = 0; 1270 1270 dev->cur_frame[chn] = 0; 1271 + dev->frame_count[chn] = 0; 1271 1272 for (j = 0; j < SYS_FRAMES; j++) { 1272 1273 dev->buffer[chn].frame[j].ulState = 0; 1273 1274 dev->buffer[chn].frame[j].cur_size = 0;
+1 -1
drivers/media/video/uvc/uvc_ctrl.c
··· 592 592 if (ctrl == NULL) 593 593 return -EINVAL; 594 594 595 - data = kmalloc(8, GFP_KERNEL); 595 + data = kmalloc(ctrl->info->size, GFP_KERNEL); 596 596 if (data == NULL) 597 597 return -ENOMEM; 598 598
+1 -1
drivers/media/video/w9968cf.c
··· 911 911 912 912 for (i = 0; i < W9968CF_URBS; i++) { 913 913 urb = usb_alloc_urb(W9968CF_ISO_PACKETS, GFP_KERNEL); 914 - cam->urb[i] = urb; 915 914 if (!urb) { 916 915 for (j = 0; j < i; j++) 917 916 usb_free_urb(cam->urb[j]); ··· 918 919 return -ENOMEM; 919 920 } 920 921 922 + cam->urb[i] = urb; 921 923 urb->dev = udev; 922 924 urb->context = (void*)cam; 923 925 urb->pipe = usb_rcvisocpipe(udev, 1);
+1 -3
drivers/media/video/wm8739.c
··· 274 274 client->addr << 1, client->adapter->name); 275 275 276 276 state = kmalloc(sizeof(struct wm8739_state), GFP_KERNEL); 277 - if (state == NULL) { 278 - kfree(client); 277 + if (state == NULL) 279 278 return -ENOMEM; 280 - } 281 279 state->vol_l = 0x17; /* 0dB */ 282 280 state->vol_r = 0x17; /* 0dB */ 283 281 state->muted = 0;
+1 -1
drivers/media/video/zoran_card.c
··· 988 988 zr->v4l_grab_seq = 0; 989 989 zr->v4l_settings.width = 192; 990 990 zr->v4l_settings.height = 144; 991 - zr->v4l_settings.format = &zoran_formats[4]; /* YUY2 - YUV-4:2:2 packed */ 991 + zr->v4l_settings.format = &zoran_formats[7]; /* YUY2 - YUV-4:2:2 packed */ 992 992 zr->v4l_settings.bytesperline = 993 993 zr->v4l_settings.width * 994 994 ((zr->v4l_settings.format->depth + 7) / 8);
+6 -9
drivers/media/video/zoran_driver.c
··· 134 134 }, { 135 135 .name = "16-bit RGB BE", 136 136 ZFMT(-1, 137 - V4L2_PIX_FMT_RGB565, V4L2_COLORSPACE_SRGB), 137 + V4L2_PIX_FMT_RGB565X, V4L2_COLORSPACE_SRGB), 138 138 .depth = 16, 139 139 .flags = ZORAN_FORMAT_CAPTURE | 140 140 ZORAN_FORMAT_OVERLAY, ··· 2737 2737 fh->v4l_settings.format->fourcc; 2738 2738 fmt->fmt.pix.colorspace = 2739 2739 fh->v4l_settings.format->colorspace; 2740 - fmt->fmt.pix.bytesperline = 0; 2740 + fmt->fmt.pix.bytesperline = 2741 + fh->v4l_settings.bytesperline; 2741 2742 if (BUZ_MAX_HEIGHT < 2742 2743 (fh->v4l_settings.height * 2)) 2743 2744 fmt->fmt.pix.field = ··· 2834 2833 fmt->fmt.pix.pixelformat, 2835 2834 (char *) &printformat); 2836 2835 2837 - if (fmt->fmt.pix.bytesperline > 0) { 2838 - dprintk(5, 2839 - KERN_ERR "%s: bpl not supported\n", 2840 - ZR_DEVNAME(zr)); 2841 - return -EINVAL; 2842 - } 2843 - 2844 2836 /* we can be requested to do JPEG/raw playback/capture */ 2845 2837 if (! 2846 2838 (fmt->type == V4L2_BUF_TYPE_VIDEO_CAPTURE || ··· 2917 2923 fh->jpg_buffers.buffer_size = 2918 2924 zoran_v4l2_calc_bufsize(&fh-> 2919 2925 jpg_settings); 2926 + fmt->fmt.pix.bytesperline = 0; 2920 2927 fmt->fmt.pix.sizeimage = 2921 2928 fh->jpg_buffers.buffer_size; 2922 2929 ··· 2974 2979 2975 2980 /* tell the user the 2976 2981 * results/missing stuff */ 2982 + fmt->fmt.pix.bytesperline = 2983 + fh->v4l_settings.bytesperline; 2977 2984 fmt->fmt.pix.sizeimage = 2978 2985 fh->v4l_settings.height * 2979 2986 fh->v4l_settings.bytesperline;