diff options
Diffstat (limited to 'drivers/media')
| -rw-r--r-- | drivers/media/common/tuners/tuner-simple.c | 10 | ||||
| -rw-r--r-- | drivers/media/dvb/dvb-core/dmxdev.c | 16 | ||||
| -rw-r--r-- | drivers/media/dvb/dvb-core/dvb_demux.c | 16 | ||||
| -rw-r--r-- | drivers/media/radio/radio-si470x.c | 55 | ||||
| -rw-r--r-- | drivers/media/video/gspca/gspca.c | 5 | ||||
| -rw-r--r-- | drivers/media/video/ivtv/ivtv-ioctl.c | 26 |
6 files changed, 81 insertions, 47 deletions
diff --git a/drivers/media/common/tuners/tuner-simple.c b/drivers/media/common/tuners/tuner-simple.c index de7adaf5fa5b..78412c9c424a 100644 --- a/drivers/media/common/tuners/tuner-simple.c +++ b/drivers/media/common/tuners/tuner-simple.c | |||
| @@ -318,7 +318,6 @@ static int simple_std_setup(struct dvb_frontend *fe, | |||
| 318 | u8 *config, u8 *cb) | 318 | u8 *config, u8 *cb) |
| 319 | { | 319 | { |
| 320 | struct tuner_simple_priv *priv = fe->tuner_priv; | 320 | struct tuner_simple_priv *priv = fe->tuner_priv; |
| 321 | u8 tuneraddr; | ||
| 322 | int rc; | 321 | int rc; |
| 323 | 322 | ||
| 324 | /* tv norm specific stuff for multi-norm tuners */ | 323 | /* tv norm specific stuff for multi-norm tuners */ |
| @@ -387,6 +386,7 @@ static int simple_std_setup(struct dvb_frontend *fe, | |||
| 387 | 386 | ||
| 388 | case TUNER_PHILIPS_TUV1236D: | 387 | case TUNER_PHILIPS_TUV1236D: |
| 389 | { | 388 | { |
| 389 | struct tuner_i2c_props i2c = priv->i2c_props; | ||
| 390 | /* 0x40 -> ATSC antenna input 1 */ | 390 | /* 0x40 -> ATSC antenna input 1 */ |
| 391 | /* 0x48 -> ATSC antenna input 2 */ | 391 | /* 0x48 -> ATSC antenna input 2 */ |
| 392 | /* 0x00 -> NTSC antenna input 1 */ | 392 | /* 0x00 -> NTSC antenna input 1 */ |
| @@ -398,17 +398,15 @@ static int simple_std_setup(struct dvb_frontend *fe, | |||
| 398 | buffer[1] = 0x04; | 398 | buffer[1] = 0x04; |
| 399 | } | 399 | } |
| 400 | /* set to the correct mode (analog or digital) */ | 400 | /* set to the correct mode (analog or digital) */ |
| 401 | tuneraddr = priv->i2c_props.addr; | 401 | i2c.addr = 0x0a; |
| 402 | priv->i2c_props.addr = 0x0a; | 402 | rc = tuner_i2c_xfer_send(&i2c, &buffer[0], 2); |
| 403 | rc = tuner_i2c_xfer_send(&priv->i2c_props, &buffer[0], 2); | ||
| 404 | if (2 != rc) | 403 | if (2 != rc) |
| 405 | tuner_warn("i2c i/o error: rc == %d " | 404 | tuner_warn("i2c i/o error: rc == %d " |
| 406 | "(should be 2)\n", rc); | 405 | "(should be 2)\n", rc); |
| 407 | rc = tuner_i2c_xfer_send(&priv->i2c_props, &buffer[2], 2); | 406 | rc = tuner_i2c_xfer_send(&i2c, &buffer[2], 2); |
| 408 | if (2 != rc) | 407 | if (2 != rc) |
| 409 | tuner_warn("i2c i/o error: rc == %d " | 408 | tuner_warn("i2c i/o error: rc == %d " |
| 410 | "(should be 2)\n", rc); | 409 | "(should be 2)\n", rc); |
| 411 | priv->i2c_props.addr = tuneraddr; | ||
| 412 | break; | 410 | break; |
| 413 | } | 411 | } |
| 414 | } | 412 | } |
diff --git a/drivers/media/dvb/dvb-core/dmxdev.c b/drivers/media/dvb/dvb-core/dmxdev.c index 0c733c66a441..069d847ba887 100644 --- a/drivers/media/dvb/dvb-core/dmxdev.c +++ b/drivers/media/dvb/dvb-core/dmxdev.c | |||
| @@ -364,16 +364,15 @@ static int dvb_dmxdev_section_callback(const u8 *buffer1, size_t buffer1_len, | |||
| 364 | enum dmx_success success) | 364 | enum dmx_success success) |
| 365 | { | 365 | { |
| 366 | struct dmxdev_filter *dmxdevfilter = filter->priv; | 366 | struct dmxdev_filter *dmxdevfilter = filter->priv; |
| 367 | unsigned long flags; | ||
| 368 | int ret; | 367 | int ret; |
| 369 | 368 | ||
| 370 | if (dmxdevfilter->buffer.error) { | 369 | if (dmxdevfilter->buffer.error) { |
| 371 | wake_up(&dmxdevfilter->buffer.queue); | 370 | wake_up(&dmxdevfilter->buffer.queue); |
| 372 | return 0; | 371 | return 0; |
| 373 | } | 372 | } |
| 374 | spin_lock_irqsave(&dmxdevfilter->dev->lock, flags); | 373 | spin_lock(&dmxdevfilter->dev->lock); |
| 375 | if (dmxdevfilter->state != DMXDEV_STATE_GO) { | 374 | if (dmxdevfilter->state != DMXDEV_STATE_GO) { |
| 376 | spin_unlock_irqrestore(&dmxdevfilter->dev->lock, flags); | 375 | spin_unlock(&dmxdevfilter->dev->lock); |
| 377 | return 0; | 376 | return 0; |
| 378 | } | 377 | } |
| 379 | del_timer(&dmxdevfilter->timer); | 378 | del_timer(&dmxdevfilter->timer); |
| @@ -392,7 +391,7 @@ static int dvb_dmxdev_section_callback(const u8 *buffer1, size_t buffer1_len, | |||
| 392 | } | 391 | } |
| 393 | if (dmxdevfilter->params.sec.flags & DMX_ONESHOT) | 392 | if (dmxdevfilter->params.sec.flags & DMX_ONESHOT) |
| 394 | dmxdevfilter->state = DMXDEV_STATE_DONE; | 393 | dmxdevfilter->state = DMXDEV_STATE_DONE; |
| 395 | spin_unlock_irqrestore(&dmxdevfilter->dev->lock, flags); | 394 | spin_unlock(&dmxdevfilter->dev->lock); |
| 396 | wake_up(&dmxdevfilter->buffer.queue); | 395 | wake_up(&dmxdevfilter->buffer.queue); |
| 397 | return 0; | 396 | return 0; |
| 398 | } | 397 | } |
| @@ -404,12 +403,11 @@ static int dvb_dmxdev_ts_callback(const u8 *buffer1, size_t buffer1_len, | |||
| 404 | { | 403 | { |
| 405 | struct dmxdev_filter *dmxdevfilter = feed->priv; | 404 | struct dmxdev_filter *dmxdevfilter = feed->priv; |
| 406 | struct dvb_ringbuffer *buffer; | 405 | struct dvb_ringbuffer *buffer; |
| 407 | unsigned long flags; | ||
| 408 | int ret; | 406 | int ret; |
| 409 | 407 | ||
| 410 | spin_lock_irqsave(&dmxdevfilter->dev->lock, flags); | 408 | spin_lock(&dmxdevfilter->dev->lock); |
| 411 | if (dmxdevfilter->params.pes.output == DMX_OUT_DECODER) { | 409 | if (dmxdevfilter->params.pes.output == DMX_OUT_DECODER) { |
| 412 | spin_unlock_irqrestore(&dmxdevfilter->dev->lock, flags); | 410 | spin_unlock(&dmxdevfilter->dev->lock); |
| 413 | return 0; | 411 | return 0; |
| 414 | } | 412 | } |
| 415 | 413 | ||
| @@ -419,7 +417,7 @@ static int dvb_dmxdev_ts_callback(const u8 *buffer1, size_t buffer1_len, | |||
| 419 | else | 417 | else |
| 420 | buffer = &dmxdevfilter->dev->dvr_buffer; | 418 | buffer = &dmxdevfilter->dev->dvr_buffer; |
| 421 | if (buffer->error) { | 419 | if (buffer->error) { |
| 422 | spin_unlock_irqrestore(&dmxdevfilter->dev->lock, flags); | 420 | spin_unlock(&dmxdevfilter->dev->lock); |
| 423 | wake_up(&buffer->queue); | 421 | wake_up(&buffer->queue); |
| 424 | return 0; | 422 | return 0; |
| 425 | } | 423 | } |
| @@ -430,7 +428,7 @@ static int dvb_dmxdev_ts_callback(const u8 *buffer1, size_t buffer1_len, | |||
| 430 | dvb_ringbuffer_flush(buffer); | 428 | dvb_ringbuffer_flush(buffer); |
| 431 | buffer->error = ret; | 429 | buffer->error = ret; |
| 432 | } | 430 | } |
| 433 | spin_unlock_irqrestore(&dmxdevfilter->dev->lock, flags); | 431 | spin_unlock(&dmxdevfilter->dev->lock); |
| 434 | wake_up(&buffer->queue); | 432 | wake_up(&buffer->queue); |
| 435 | return 0; | 433 | return 0; |
| 436 | } | 434 | } |
diff --git a/drivers/media/dvb/dvb-core/dvb_demux.c b/drivers/media/dvb/dvb-core/dvb_demux.c index a2c1fd5d2f67..e2eca0b1fe7c 100644 --- a/drivers/media/dvb/dvb-core/dvb_demux.c +++ b/drivers/media/dvb/dvb-core/dvb_demux.c | |||
| @@ -399,9 +399,7 @@ static void dvb_dmx_swfilter_packet(struct dvb_demux *demux, const u8 *buf) | |||
| 399 | void dvb_dmx_swfilter_packets(struct dvb_demux *demux, const u8 *buf, | 399 | void dvb_dmx_swfilter_packets(struct dvb_demux *demux, const u8 *buf, |
| 400 | size_t count) | 400 | size_t count) |
| 401 | { | 401 | { |
| 402 | unsigned long flags; | 402 | spin_lock(&demux->lock); |
| 403 | |||
| 404 | spin_lock_irqsave(&demux->lock, flags); | ||
| 405 | 403 | ||
| 406 | while (count--) { | 404 | while (count--) { |
| 407 | if (buf[0] == 0x47) | 405 | if (buf[0] == 0x47) |
| @@ -409,17 +407,16 @@ void dvb_dmx_swfilter_packets(struct dvb_demux *demux, const u8 *buf, | |||
| 409 | buf += 188; | 407 | buf += 188; |
| 410 | } | 408 | } |
| 411 | 409 | ||
| 412 | spin_unlock_irqrestore(&demux->lock, flags); | 410 | spin_unlock(&demux->lock); |
| 413 | } | 411 | } |
| 414 | 412 | ||
| 415 | EXPORT_SYMBOL(dvb_dmx_swfilter_packets); | 413 | EXPORT_SYMBOL(dvb_dmx_swfilter_packets); |
| 416 | 414 | ||
| 417 | void dvb_dmx_swfilter(struct dvb_demux *demux, const u8 *buf, size_t count) | 415 | void dvb_dmx_swfilter(struct dvb_demux *demux, const u8 *buf, size_t count) |
| 418 | { | 416 | { |
| 419 | unsigned long flags; | ||
| 420 | int p = 0, i, j; | 417 | int p = 0, i, j; |
| 421 | 418 | ||
| 422 | spin_lock_irqsave(&demux->lock, flags); | 419 | spin_lock(&demux->lock); |
| 423 | 420 | ||
| 424 | if (demux->tsbufp) { | 421 | if (demux->tsbufp) { |
| 425 | i = demux->tsbufp; | 422 | i = demux->tsbufp; |
| @@ -452,18 +449,17 @@ void dvb_dmx_swfilter(struct dvb_demux *demux, const u8 *buf, size_t count) | |||
| 452 | } | 449 | } |
| 453 | 450 | ||
| 454 | bailout: | 451 | bailout: |
| 455 | spin_unlock_irqrestore(&demux->lock, flags); | 452 | spin_unlock(&demux->lock); |
| 456 | } | 453 | } |
| 457 | 454 | ||
| 458 | EXPORT_SYMBOL(dvb_dmx_swfilter); | 455 | EXPORT_SYMBOL(dvb_dmx_swfilter); |
| 459 | 456 | ||
| 460 | void dvb_dmx_swfilter_204(struct dvb_demux *demux, const u8 *buf, size_t count) | 457 | void dvb_dmx_swfilter_204(struct dvb_demux *demux, const u8 *buf, size_t count) |
| 461 | { | 458 | { |
| 462 | unsigned long flags; | ||
| 463 | int p = 0, i, j; | 459 | int p = 0, i, j; |
| 464 | u8 tmppack[188]; | 460 | u8 tmppack[188]; |
| 465 | 461 | ||
| 466 | spin_lock_irqsave(&demux->lock, flags); | 462 | spin_lock(&demux->lock); |
| 467 | 463 | ||
| 468 | if (demux->tsbufp) { | 464 | if (demux->tsbufp) { |
| 469 | i = demux->tsbufp; | 465 | i = demux->tsbufp; |
| @@ -504,7 +500,7 @@ void dvb_dmx_swfilter_204(struct dvb_demux *demux, const u8 *buf, size_t count) | |||
| 504 | } | 500 | } |
| 505 | 501 | ||
| 506 | bailout: | 502 | bailout: |
| 507 | spin_unlock_irqrestore(&demux->lock, flags); | 503 | spin_unlock(&demux->lock); |
| 508 | } | 504 | } |
| 509 | 505 | ||
| 510 | EXPORT_SYMBOL(dvb_dmx_swfilter_204); | 506 | EXPORT_SYMBOL(dvb_dmx_swfilter_204); |
diff --git a/drivers/media/radio/radio-si470x.c b/drivers/media/radio/radio-si470x.c index 67cbce82cb91..4dfed6aa2dbc 100644 --- a/drivers/media/radio/radio-si470x.c +++ b/drivers/media/radio/radio-si470x.c | |||
| @@ -98,11 +98,16 @@ | |||
| 98 | * - blacklisted KWorld radio in hid-core.c and hid-ids.h | 98 | * - blacklisted KWorld radio in hid-core.c and hid-ids.h |
| 99 | * 2008-12-03 Mark Lord <mlord@pobox.com> | 99 | * 2008-12-03 Mark Lord <mlord@pobox.com> |
| 100 | * - add support for DealExtreme USB Radio | 100 | * - add support for DealExtreme USB Radio |
| 101 | * 2009-01-31 Bob Ross <pigiron@gmx.com> | ||
| 102 | * - correction of stereo detection/setting | ||
| 103 | * - correction of signal strength indicator scaling | ||
| 104 | * 2009-01-31 Rick Bronson <rick@efn.org> | ||
| 105 | * Tobias Lorenz <tobias.lorenz@gmx.net> | ||
| 106 | * - add LED status output | ||
| 101 | * | 107 | * |
| 102 | * ToDo: | 108 | * ToDo: |
| 103 | * - add firmware download/update support | 109 | * - add firmware download/update support |
| 104 | * - RDS support: interrupt mode, instead of polling | 110 | * - RDS support: interrupt mode, instead of polling |
| 105 | * - add LED status output (check if that's not already done in firmware) | ||
| 106 | */ | 111 | */ |
| 107 | 112 | ||
| 108 | 113 | ||
| @@ -882,6 +887,30 @@ static int si470x_rds_on(struct si470x_device *radio) | |||
| 882 | 887 | ||
| 883 | 888 | ||
| 884 | /************************************************************************** | 889 | /************************************************************************** |
| 890 | * General Driver Functions - LED_REPORT | ||
| 891 | **************************************************************************/ | ||
| 892 | |||
| 893 | /* | ||
| 894 | * si470x_set_led_state - sets the led state | ||
| 895 | */ | ||
| 896 | static int si470x_set_led_state(struct si470x_device *radio, | ||
| 897 | unsigned char led_state) | ||
| 898 | { | ||
| 899 | unsigned char buf[LED_REPORT_SIZE]; | ||
| 900 | int retval; | ||
| 901 | |||
| 902 | buf[0] = LED_REPORT; | ||
| 903 | buf[1] = LED_COMMAND; | ||
| 904 | buf[2] = led_state; | ||
| 905 | |||
| 906 | retval = si470x_set_report(radio, (void *) &buf, sizeof(buf)); | ||
| 907 | |||
| 908 | return (retval < 0) ? -EINVAL : 0; | ||
| 909 | } | ||
| 910 | |||
| 911 | |||
| 912 | |||
| 913 | /************************************************************************** | ||
| 885 | * RDS Driver Functions | 914 | * RDS Driver Functions |
| 886 | **************************************************************************/ | 915 | **************************************************************************/ |
| 887 | 916 | ||
| @@ -1385,20 +1414,22 @@ static int si470x_vidioc_g_tuner(struct file *file, void *priv, | |||
| 1385 | }; | 1414 | }; |
| 1386 | 1415 | ||
| 1387 | /* stereo indicator == stereo (instead of mono) */ | 1416 | /* stereo indicator == stereo (instead of mono) */ |
| 1388 | if ((radio->registers[STATUSRSSI] & STATUSRSSI_ST) == 1) | 1417 | if ((radio->registers[STATUSRSSI] & STATUSRSSI_ST) == 0) |
| 1389 | tuner->rxsubchans = V4L2_TUNER_SUB_MONO | V4L2_TUNER_SUB_STEREO; | ||
| 1390 | else | ||
| 1391 | tuner->rxsubchans = V4L2_TUNER_SUB_MONO; | 1418 | tuner->rxsubchans = V4L2_TUNER_SUB_MONO; |
| 1419 | else | ||
| 1420 | tuner->rxsubchans = V4L2_TUNER_SUB_MONO | V4L2_TUNER_SUB_STEREO; | ||
| 1392 | 1421 | ||
| 1393 | /* mono/stereo selector */ | 1422 | /* mono/stereo selector */ |
| 1394 | if ((radio->registers[POWERCFG] & POWERCFG_MONO) == 1) | 1423 | if ((radio->registers[POWERCFG] & POWERCFG_MONO) == 0) |
| 1395 | tuner->audmode = V4L2_TUNER_MODE_MONO; | ||
| 1396 | else | ||
| 1397 | tuner->audmode = V4L2_TUNER_MODE_STEREO; | 1424 | tuner->audmode = V4L2_TUNER_MODE_STEREO; |
| 1425 | else | ||
| 1426 | tuner->audmode = V4L2_TUNER_MODE_MONO; | ||
| 1398 | 1427 | ||
| 1399 | /* min is worst, max is best; signal:0..0xffff; rssi: 0..0xff */ | 1428 | /* min is worst, max is best; signal:0..0xffff; rssi: 0..0xff */ |
| 1400 | tuner->signal = (radio->registers[STATUSRSSI] & STATUSRSSI_RSSI) | 1429 | /* measured in units of dbµV in 1 db increments (max at ~75 dbµV) */ |
| 1401 | * 0x0101; | 1430 | tuner->signal = (radio->registers[STATUSRSSI] & STATUSRSSI_RSSI); |
| 1431 | /* the ideal factor is 0xffff/75 = 873,8 */ | ||
| 1432 | tuner->signal = (tuner->signal * 873) + (8 * tuner->signal / 10); | ||
| 1402 | 1433 | ||
| 1403 | /* automatic frequency control: -1: freq to low, 1 freq to high */ | 1434 | /* automatic frequency control: -1: freq to low, 1 freq to high */ |
| 1404 | /* AFCRL does only indicate that freq. differs, not if too low/high */ | 1435 | /* AFCRL does only indicate that freq. differs, not if too low/high */ |
| @@ -1632,6 +1663,9 @@ static int si470x_usb_driver_probe(struct usb_interface *intf, | |||
| 1632 | /* set initial frequency */ | 1663 | /* set initial frequency */ |
| 1633 | si470x_set_freq(radio, 87.5 * FREQ_MUL); /* available in all regions */ | 1664 | si470x_set_freq(radio, 87.5 * FREQ_MUL); /* available in all regions */ |
| 1634 | 1665 | ||
| 1666 | /* set led to connect state */ | ||
| 1667 | si470x_set_led_state(radio, BLINK_GREEN_LED); | ||
| 1668 | |||
| 1635 | /* rds buffer allocation */ | 1669 | /* rds buffer allocation */ |
| 1636 | radio->buf_size = rds_buf * 3; | 1670 | radio->buf_size = rds_buf * 3; |
| 1637 | radio->buffer = kmalloc(radio->buf_size, GFP_KERNEL); | 1671 | radio->buffer = kmalloc(radio->buf_size, GFP_KERNEL); |
| @@ -1715,6 +1749,9 @@ static void si470x_usb_driver_disconnect(struct usb_interface *intf) | |||
| 1715 | cancel_delayed_work_sync(&radio->work); | 1749 | cancel_delayed_work_sync(&radio->work); |
| 1716 | usb_set_intfdata(intf, NULL); | 1750 | usb_set_intfdata(intf, NULL); |
| 1717 | if (radio->users == 0) { | 1751 | if (radio->users == 0) { |
| 1752 | /* set led to disconnect state */ | ||
| 1753 | si470x_set_led_state(radio, BLINK_ORANGE_LED); | ||
| 1754 | |||
| 1718 | video_unregister_device(radio->videodev); | 1755 | video_unregister_device(radio->videodev); |
| 1719 | kfree(radio->buffer); | 1756 | kfree(radio->buffer); |
| 1720 | kfree(radio); | 1757 | kfree(radio); |
diff --git a/drivers/media/video/gspca/gspca.c b/drivers/media/video/gspca/gspca.c index 2ed24527ecd6..65e4901f4db7 100644 --- a/drivers/media/video/gspca/gspca.c +++ b/drivers/media/video/gspca/gspca.c | |||
| @@ -422,6 +422,7 @@ static void destroy_urbs(struct gspca_dev *gspca_dev) | |||
| 422 | if (urb == NULL) | 422 | if (urb == NULL) |
| 423 | break; | 423 | break; |
| 424 | 424 | ||
| 425 | BUG_ON(!gspca_dev->dev); | ||
| 425 | gspca_dev->urb[i] = NULL; | 426 | gspca_dev->urb[i] = NULL; |
| 426 | if (!gspca_dev->present) | 427 | if (!gspca_dev->present) |
| 427 | usb_kill_urb(urb); | 428 | usb_kill_urb(urb); |
| @@ -1950,8 +1951,12 @@ void gspca_disconnect(struct usb_interface *intf) | |||
| 1950 | { | 1951 | { |
| 1951 | struct gspca_dev *gspca_dev = usb_get_intfdata(intf); | 1952 | struct gspca_dev *gspca_dev = usb_get_intfdata(intf); |
| 1952 | 1953 | ||
| 1954 | mutex_lock(&gspca_dev->usb_lock); | ||
| 1953 | gspca_dev->present = 0; | 1955 | gspca_dev->present = 0; |
| 1956 | mutex_unlock(&gspca_dev->usb_lock); | ||
| 1954 | 1957 | ||
| 1958 | destroy_urbs(gspca_dev); | ||
| 1959 | gspca_dev->dev = NULL; | ||
| 1955 | usb_set_intfdata(intf, NULL); | 1960 | usb_set_intfdata(intf, NULL); |
| 1956 | 1961 | ||
| 1957 | /* release the device */ | 1962 | /* release the device */ |
diff --git a/drivers/media/video/ivtv/ivtv-ioctl.c b/drivers/media/video/ivtv/ivtv-ioctl.c index f6b3ef6e691b..c13bd2aa0bea 100644 --- a/drivers/media/video/ivtv/ivtv-ioctl.c +++ b/drivers/media/video/ivtv/ivtv-ioctl.c | |||
| @@ -393,7 +393,7 @@ static int ivtv_g_fmt_sliced_vbi_cap(struct file *file, void *fh, struct v4l2_fo | |||
| 393 | return 0; | 393 | return 0; |
| 394 | } | 394 | } |
| 395 | 395 | ||
| 396 | v4l2_subdev_call(itv->sd_video, video, s_fmt, fmt); | 396 | v4l2_subdev_call(itv->sd_video, video, g_fmt, fmt); |
| 397 | vbifmt->service_set = ivtv_get_service_set(vbifmt); | 397 | vbifmt->service_set = ivtv_get_service_set(vbifmt); |
| 398 | return 0; | 398 | return 0; |
| 399 | } | 399 | } |
| @@ -1748,6 +1748,18 @@ static long ivtv_default(struct file *file, void *fh, int cmd, void *arg) | |||
| 1748 | break; | 1748 | break; |
| 1749 | } | 1749 | } |
| 1750 | 1750 | ||
| 1751 | case IVTV_IOC_DMA_FRAME: | ||
| 1752 | case VIDEO_GET_PTS: | ||
| 1753 | case VIDEO_GET_FRAME_COUNT: | ||
| 1754 | case VIDEO_GET_EVENT: | ||
| 1755 | case VIDEO_PLAY: | ||
| 1756 | case VIDEO_STOP: | ||
| 1757 | case VIDEO_FREEZE: | ||
| 1758 | case VIDEO_CONTINUE: | ||
| 1759 | case VIDEO_COMMAND: | ||
| 1760 | case VIDEO_TRY_COMMAND: | ||
| 1761 | return ivtv_decoder_ioctls(file, cmd, (void *)arg); | ||
| 1762 | |||
| 1751 | default: | 1763 | default: |
| 1752 | return -EINVAL; | 1764 | return -EINVAL; |
| 1753 | } | 1765 | } |
| @@ -1790,18 +1802,6 @@ static long ivtv_serialized_ioctl(struct ivtv *itv, struct file *filp, | |||
| 1790 | ivtv_vapi(itv, CX2341X_DEC_SET_AUDIO_MODE, 2, itv->audio_bilingual_mode, itv->audio_stereo_mode); | 1802 | ivtv_vapi(itv, CX2341X_DEC_SET_AUDIO_MODE, 2, itv->audio_bilingual_mode, itv->audio_stereo_mode); |
| 1791 | return 0; | 1803 | return 0; |
| 1792 | 1804 | ||
| 1793 | case IVTV_IOC_DMA_FRAME: | ||
| 1794 | case VIDEO_GET_PTS: | ||
| 1795 | case VIDEO_GET_FRAME_COUNT: | ||
| 1796 | case VIDEO_GET_EVENT: | ||
| 1797 | case VIDEO_PLAY: | ||
| 1798 | case VIDEO_STOP: | ||
| 1799 | case VIDEO_FREEZE: | ||
| 1800 | case VIDEO_CONTINUE: | ||
| 1801 | case VIDEO_COMMAND: | ||
| 1802 | case VIDEO_TRY_COMMAND: | ||
| 1803 | return ivtv_decoder_ioctls(filp, cmd, (void *)arg); | ||
| 1804 | |||
| 1805 | default: | 1805 | default: |
| 1806 | break; | 1806 | break; |
| 1807 | } | 1807 | } |
