diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-09-11 17:58:47 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-09-11 17:58:47 -0400 |
| commit | 87adf1c66cacbc4acd0e696c896755a5091a9d3d (patch) | |
| tree | f11e7a175b2de55b6cb66f47cb5d4fbb10d458c9 | |
| parent | 14f69ec706e596a2443fe6c296c522c33584a77e (diff) | |
| parent | fc61ccd35fd59d5362d37c8bf9c0526c85086c84 (diff) | |
Merge branch 'v4l_for_linus' of git://linuxtv.org/mchehab/for_linus
* 'v4l_for_linus' of git://linuxtv.org/mchehab/for_linus:
[media] vp7045: fix buffer setup
[media] nuvoton-cir: simplify raw IR sample handling
[media] [Resend] viacam: Don't explode if pci_find_bus() returns NULL
[media] v4l2: Fix documentation of the codec device controls
[media] gspca - sonixj: Fix the darkness of sensor om6802 in 320x240
[media] gspca - sonixj: Fix wrong register mask for sensor om6802
[media] gspca - ov519: Fix LED inversion of some ov519 webcams
[media] pwc: precedence bug in pwc_init_controls()
| -rw-r--r-- | Documentation/DocBook/media/v4l/controls.xml | 38 | ||||
| -rw-r--r-- | drivers/media/dvb/dvb-usb/vp7045.c | 26 | ||||
| -rw-r--r-- | drivers/media/rc/nuvoton-cir.c | 45 | ||||
| -rw-r--r-- | drivers/media/rc/nuvoton-cir.h | 1 | ||||
| -rw-r--r-- | drivers/media/video/gspca/ov519.c | 22 | ||||
| -rw-r--r-- | drivers/media/video/gspca/sonixj.c | 6 | ||||
| -rw-r--r-- | drivers/media/video/pwc/pwc-v4l.c | 2 | ||||
| -rw-r--r-- | drivers/media/video/via-camera.c | 2 |
8 files changed, 49 insertions, 93 deletions
diff --git a/Documentation/DocBook/media/v4l/controls.xml b/Documentation/DocBook/media/v4l/controls.xml index 85164016ed26..23fdf79f8cf3 100644 --- a/Documentation/DocBook/media/v4l/controls.xml +++ b/Documentation/DocBook/media/v4l/controls.xml | |||
| @@ -1455,7 +1455,7 @@ Applicable to the H264 encoder.</entry> | |||
| 1455 | </row> | 1455 | </row> |
| 1456 | 1456 | ||
| 1457 | <row><entry></entry></row> | 1457 | <row><entry></entry></row> |
| 1458 | <row> | 1458 | <row id="v4l2-mpeg-video-h264-vui-sar-idc"> |
| 1459 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_IDC</constant> </entry> | 1459 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_IDC</constant> </entry> |
| 1460 | <entry>enum v4l2_mpeg_video_h264_vui_sar_idc</entry> | 1460 | <entry>enum v4l2_mpeg_video_h264_vui_sar_idc</entry> |
| 1461 | </row> | 1461 | </row> |
| @@ -1561,7 +1561,7 @@ Applicable to the H264 encoder.</entry> | |||
| 1561 | </row> | 1561 | </row> |
| 1562 | 1562 | ||
| 1563 | <row><entry></entry></row> | 1563 | <row><entry></entry></row> |
| 1564 | <row> | 1564 | <row id="v4l2-mpeg-video-h264-level"> |
| 1565 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_LEVEL</constant> </entry> | 1565 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_LEVEL</constant> </entry> |
| 1566 | <entry>enum v4l2_mpeg_video_h264_level</entry> | 1566 | <entry>enum v4l2_mpeg_video_h264_level</entry> |
| 1567 | </row> | 1567 | </row> |
| @@ -1641,7 +1641,7 @@ Possible values are:</entry> | |||
| 1641 | </row> | 1641 | </row> |
| 1642 | 1642 | ||
| 1643 | <row><entry></entry></row> | 1643 | <row><entry></entry></row> |
| 1644 | <row> | 1644 | <row id="v4l2-mpeg-video-mpeg4-level"> |
| 1645 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MPEG4_LEVEL</constant> </entry> | 1645 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MPEG4_LEVEL</constant> </entry> |
| 1646 | <entry>enum v4l2_mpeg_video_mpeg4_level</entry> | 1646 | <entry>enum v4l2_mpeg_video_mpeg4_level</entry> |
| 1647 | </row> | 1647 | </row> |
| @@ -1689,9 +1689,9 @@ Possible values are:</entry> | |||
| 1689 | </row> | 1689 | </row> |
| 1690 | 1690 | ||
| 1691 | <row><entry></entry></row> | 1691 | <row><entry></entry></row> |
| 1692 | <row> | 1692 | <row id="v4l2-mpeg-video-h264-profile"> |
| 1693 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_PROFILE</constant> </entry> | 1693 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_PROFILE</constant> </entry> |
| 1694 | <entry>enum v4l2_mpeg_h264_profile</entry> | 1694 | <entry>enum v4l2_mpeg_video_h264_profile</entry> |
| 1695 | </row> | 1695 | </row> |
| 1696 | <row><entry spanname="descr">The profile information for H264. | 1696 | <row><entry spanname="descr">The profile information for H264. |
| 1697 | Applicable to the H264 encoder. | 1697 | Applicable to the H264 encoder. |
| @@ -1774,9 +1774,9 @@ Possible values are:</entry> | |||
| 1774 | </row> | 1774 | </row> |
| 1775 | 1775 | ||
| 1776 | <row><entry></entry></row> | 1776 | <row><entry></entry></row> |
| 1777 | <row> | 1777 | <row id="v4l2-mpeg-video-mpeg4-profile"> |
| 1778 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MPEG4_PROFILE</constant> </entry> | 1778 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MPEG4_PROFILE</constant> </entry> |
| 1779 | <entry>enum v4l2_mpeg_mpeg4_profile</entry> | 1779 | <entry>enum v4l2_mpeg_video_mpeg4_profile</entry> |
| 1780 | </row> | 1780 | </row> |
| 1781 | <row><entry spanname="descr">The profile information for MPEG4. | 1781 | <row><entry spanname="descr">The profile information for MPEG4. |
| 1782 | Applicable to the MPEG4 encoder. | 1782 | Applicable to the MPEG4 encoder. |
| @@ -1820,9 +1820,9 @@ Applicable to the encoder. | |||
| 1820 | </row> | 1820 | </row> |
| 1821 | 1821 | ||
| 1822 | <row><entry></entry></row> | 1822 | <row><entry></entry></row> |
| 1823 | <row> | 1823 | <row id="v4l2-mpeg-video-multi-slice-mode"> |
| 1824 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MODE</constant> </entry> | 1824 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MODE</constant> </entry> |
| 1825 | <entry>enum v4l2_mpeg_multi_slice_mode</entry> | 1825 | <entry>enum v4l2_mpeg_video_multi_slice_mode</entry> |
| 1826 | </row> | 1826 | </row> |
| 1827 | <row><entry spanname="descr">Determines how the encoder should handle division of frame into slices. | 1827 | <row><entry spanname="descr">Determines how the encoder should handle division of frame into slices. |
| 1828 | Applicable to the encoder. | 1828 | Applicable to the encoder. |
| @@ -1868,9 +1868,9 @@ Applicable to the encoder.</entry> | |||
| 1868 | </row> | 1868 | </row> |
| 1869 | 1869 | ||
| 1870 | <row><entry></entry></row> | 1870 | <row><entry></entry></row> |
| 1871 | <row> | 1871 | <row id="v4l2-mpeg-video-h264-loop-filter-mode"> |
| 1872 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_MODE</constant> </entry> | 1872 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_MODE</constant> </entry> |
| 1873 | <entry>enum v4l2_mpeg_h264_loop_filter_mode</entry> | 1873 | <entry>enum v4l2_mpeg_video_h264_loop_filter_mode</entry> |
| 1874 | </row> | 1874 | </row> |
| 1875 | <row><entry spanname="descr">Loop filter mode for H264 encoder. | 1875 | <row><entry spanname="descr">Loop filter mode for H264 encoder. |
| 1876 | Possible values are:</entry> | 1876 | Possible values are:</entry> |
| @@ -1913,9 +1913,9 @@ Applicable to the H264 encoder.</entry> | |||
| 1913 | </row> | 1913 | </row> |
| 1914 | 1914 | ||
| 1915 | <row><entry></entry></row> | 1915 | <row><entry></entry></row> |
| 1916 | <row> | 1916 | <row id="v4l2-mpeg-video-h264-entropy-mode"> |
| 1917 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_ENTROPY_MODE</constant> </entry> | 1917 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_ENTROPY_MODE</constant> </entry> |
| 1918 | <entry>enum v4l2_mpeg_h264_symbol_mode</entry> | 1918 | <entry>enum v4l2_mpeg_video_h264_entropy_mode</entry> |
| 1919 | </row> | 1919 | </row> |
| 1920 | <row><entry spanname="descr">Entropy coding mode for H264 - CABAC/CAVALC. | 1920 | <row><entry spanname="descr">Entropy coding mode for H264 - CABAC/CAVALC. |
| 1921 | Applicable to the H264 encoder. | 1921 | Applicable to the H264 encoder. |
| @@ -2140,9 +2140,9 @@ previous frames. Applicable to the H264 encoder.</entry> | |||
| 2140 | </row> | 2140 | </row> |
| 2141 | 2141 | ||
| 2142 | <row><entry></entry></row> | 2142 | <row><entry></entry></row> |
| 2143 | <row> | 2143 | <row id="v4l2-mpeg-video-header-mode"> |
| 2144 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_HEADER_MODE</constant> </entry> | 2144 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_HEADER_MODE</constant> </entry> |
| 2145 | <entry>enum v4l2_mpeg_header_mode</entry> | 2145 | <entry>enum v4l2_mpeg_video_header_mode</entry> |
| 2146 | </row> | 2146 | </row> |
| 2147 | <row><entry spanname="descr">Determines whether the header is returned as the first buffer or is | 2147 | <row><entry spanname="descr">Determines whether the header is returned as the first buffer or is |
| 2148 | it returned together with the first frame. Applicable to encoders. | 2148 | it returned together with the first frame. Applicable to encoders. |
| @@ -2320,9 +2320,9 @@ Valid only when H.264 and macroblock level RC is enabled (<constant>V4L2_CID_MPE | |||
| 2320 | Applicable to the H264 encoder.</entry> | 2320 | Applicable to the H264 encoder.</entry> |
| 2321 | </row> | 2321 | </row> |
| 2322 | <row><entry></entry></row> | 2322 | <row><entry></entry></row> |
| 2323 | <row> | 2323 | <row id="v4l2-mpeg-mfc51-video-frame-skip-mode"> |
| 2324 | <entry spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE</constant> </entry> | 2324 | <entry spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE</constant> </entry> |
| 2325 | <entry>enum v4l2_mpeg_mfc51_frame_skip_mode</entry> | 2325 | <entry>enum v4l2_mpeg_mfc51_video_frame_skip_mode</entry> |
| 2326 | </row> | 2326 | </row> |
| 2327 | <row><entry spanname="descr"> | 2327 | <row><entry spanname="descr"> |
| 2328 | Indicates in what conditions the encoder should skip frames. If encoding a frame would cause the encoded stream to be larger then | 2328 | Indicates in what conditions the encoder should skip frames. If encoding a frame would cause the encoded stream to be larger then |
| @@ -2361,9 +2361,9 @@ the stream will meet tight bandwidth contraints. Applicable to encoders. | |||
| 2361 | </entry> | 2361 | </entry> |
| 2362 | </row> | 2362 | </row> |
| 2363 | <row><entry></entry></row> | 2363 | <row><entry></entry></row> |
| 2364 | <row> | 2364 | <row id="v4l2-mpeg-mfc51-video-force-frame-type"> |
| 2365 | <entry spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE</constant> </entry> | 2365 | <entry spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE</constant> </entry> |
| 2366 | <entry>enum v4l2_mpeg_mfc51_force_frame_type</entry> | 2366 | <entry>enum v4l2_mpeg_mfc51_video_force_frame_type</entry> |
| 2367 | </row> | 2367 | </row> |
| 2368 | <row><entry spanname="descr">Force a frame type for the next queued buffer. Applicable to encoders. | 2368 | <row><entry spanname="descr">Force a frame type for the next queued buffer. Applicable to encoders. |
| 2369 | Possible values are:</entry> | 2369 | Possible values are:</entry> |
diff --git a/drivers/media/dvb/dvb-usb/vp7045.c b/drivers/media/dvb/dvb-usb/vp7045.c index 3db89e3cb0bb..536c16c943bd 100644 --- a/drivers/media/dvb/dvb-usb/vp7045.c +++ b/drivers/media/dvb/dvb-usb/vp7045.c | |||
| @@ -224,26 +224,8 @@ static struct dvb_usb_device_properties vp7045_properties; | |||
| 224 | static int vp7045_usb_probe(struct usb_interface *intf, | 224 | static int vp7045_usb_probe(struct usb_interface *intf, |
| 225 | const struct usb_device_id *id) | 225 | const struct usb_device_id *id) |
| 226 | { | 226 | { |
| 227 | struct dvb_usb_device *d; | 227 | return dvb_usb_device_init(intf, &vp7045_properties, |
| 228 | int ret = dvb_usb_device_init(intf, &vp7045_properties, | 228 | THIS_MODULE, NULL, adapter_nr); |
| 229 | THIS_MODULE, &d, adapter_nr); | ||
| 230 | if (ret) | ||
| 231 | return ret; | ||
| 232 | |||
| 233 | d->priv = kmalloc(20, GFP_KERNEL); | ||
| 234 | if (!d->priv) { | ||
| 235 | dvb_usb_device_exit(intf); | ||
| 236 | return -ENOMEM; | ||
| 237 | } | ||
| 238 | |||
| 239 | return ret; | ||
| 240 | } | ||
| 241 | |||
| 242 | static void vp7045_usb_disconnect(struct usb_interface *intf) | ||
| 243 | { | ||
| 244 | struct dvb_usb_device *d = usb_get_intfdata(intf); | ||
| 245 | kfree(d->priv); | ||
| 246 | dvb_usb_device_exit(intf); | ||
| 247 | } | 229 | } |
| 248 | 230 | ||
| 249 | static struct usb_device_id vp7045_usb_table [] = { | 231 | static struct usb_device_id vp7045_usb_table [] = { |
| @@ -258,7 +240,7 @@ MODULE_DEVICE_TABLE(usb, vp7045_usb_table); | |||
| 258 | static struct dvb_usb_device_properties vp7045_properties = { | 240 | static struct dvb_usb_device_properties vp7045_properties = { |
| 259 | .usb_ctrl = CYPRESS_FX2, | 241 | .usb_ctrl = CYPRESS_FX2, |
| 260 | .firmware = "dvb-usb-vp7045-01.fw", | 242 | .firmware = "dvb-usb-vp7045-01.fw", |
| 261 | .size_of_priv = sizeof(u8 *), | 243 | .size_of_priv = 20, |
| 262 | 244 | ||
| 263 | .num_adapters = 1, | 245 | .num_adapters = 1, |
| 264 | .adapter = { | 246 | .adapter = { |
| @@ -305,7 +287,7 @@ static struct dvb_usb_device_properties vp7045_properties = { | |||
| 305 | static struct usb_driver vp7045_usb_driver = { | 287 | static struct usb_driver vp7045_usb_driver = { |
| 306 | .name = "dvb_usb_vp7045", | 288 | .name = "dvb_usb_vp7045", |
| 307 | .probe = vp7045_usb_probe, | 289 | .probe = vp7045_usb_probe, |
| 308 | .disconnect = vp7045_usb_disconnect, | 290 | .disconnect = dvb_usb_device_exit, |
| 309 | .id_table = vp7045_usb_table, | 291 | .id_table = vp7045_usb_table, |
| 310 | }; | 292 | }; |
| 311 | 293 | ||
diff --git a/drivers/media/rc/nuvoton-cir.c b/drivers/media/rc/nuvoton-cir.c index eae05b500476..144f3f55d765 100644 --- a/drivers/media/rc/nuvoton-cir.c +++ b/drivers/media/rc/nuvoton-cir.c | |||
| @@ -618,7 +618,6 @@ static void nvt_dump_rx_buf(struct nvt_dev *nvt) | |||
| 618 | static void nvt_process_rx_ir_data(struct nvt_dev *nvt) | 618 | static void nvt_process_rx_ir_data(struct nvt_dev *nvt) |
| 619 | { | 619 | { |
| 620 | DEFINE_IR_RAW_EVENT(rawir); | 620 | DEFINE_IR_RAW_EVENT(rawir); |
| 621 | unsigned int count; | ||
| 622 | u32 carrier; | 621 | u32 carrier; |
| 623 | u8 sample; | 622 | u8 sample; |
| 624 | int i; | 623 | int i; |
| @@ -631,65 +630,38 @@ static void nvt_process_rx_ir_data(struct nvt_dev *nvt) | |||
| 631 | if (nvt->carrier_detect_enabled) | 630 | if (nvt->carrier_detect_enabled) |
| 632 | carrier = nvt_rx_carrier_detect(nvt); | 631 | carrier = nvt_rx_carrier_detect(nvt); |
| 633 | 632 | ||
| 634 | count = nvt->pkts; | 633 | nvt_dbg_verbose("Processing buffer of len %d", nvt->pkts); |
| 635 | nvt_dbg_verbose("Processing buffer of len %d", count); | ||
| 636 | 634 | ||
| 637 | init_ir_raw_event(&rawir); | 635 | init_ir_raw_event(&rawir); |
| 638 | 636 | ||
| 639 | for (i = 0; i < count; i++) { | 637 | for (i = 0; i < nvt->pkts; i++) { |
| 640 | nvt->pkts--; | ||
| 641 | sample = nvt->buf[i]; | 638 | sample = nvt->buf[i]; |
| 642 | 639 | ||
| 643 | rawir.pulse = ((sample & BUF_PULSE_BIT) != 0); | 640 | rawir.pulse = ((sample & BUF_PULSE_BIT) != 0); |
| 644 | rawir.duration = US_TO_NS((sample & BUF_LEN_MASK) | 641 | rawir.duration = US_TO_NS((sample & BUF_LEN_MASK) |
| 645 | * SAMPLE_PERIOD); | 642 | * SAMPLE_PERIOD); |
| 646 | 643 | ||
| 647 | if ((sample & BUF_LEN_MASK) == BUF_LEN_MASK) { | 644 | nvt_dbg("Storing %s with duration %d", |
| 648 | if (nvt->rawir.pulse == rawir.pulse) | 645 | rawir.pulse ? "pulse" : "space", rawir.duration); |
| 649 | nvt->rawir.duration += rawir.duration; | ||
| 650 | else { | ||
| 651 | nvt->rawir.duration = rawir.duration; | ||
| 652 | nvt->rawir.pulse = rawir.pulse; | ||
| 653 | } | ||
| 654 | continue; | ||
| 655 | } | ||
| 656 | |||
| 657 | rawir.duration += nvt->rawir.duration; | ||
| 658 | 646 | ||
| 659 | init_ir_raw_event(&nvt->rawir); | 647 | ir_raw_event_store_with_filter(nvt->rdev, &rawir); |
| 660 | nvt->rawir.duration = 0; | ||
| 661 | nvt->rawir.pulse = rawir.pulse; | ||
| 662 | |||
| 663 | if (sample == BUF_PULSE_BIT) | ||
| 664 | rawir.pulse = false; | ||
| 665 | |||
| 666 | if (rawir.duration) { | ||
| 667 | nvt_dbg("Storing %s with duration %d", | ||
| 668 | rawir.pulse ? "pulse" : "space", | ||
| 669 | rawir.duration); | ||
| 670 | |||
| 671 | ir_raw_event_store_with_filter(nvt->rdev, &rawir); | ||
| 672 | } | ||
| 673 | 648 | ||
| 674 | /* | 649 | /* |
| 675 | * BUF_PULSE_BIT indicates end of IR data, BUF_REPEAT_BYTE | 650 | * BUF_PULSE_BIT indicates end of IR data, BUF_REPEAT_BYTE |
| 676 | * indicates end of IR signal, but new data incoming. In both | 651 | * indicates end of IR signal, but new data incoming. In both |
| 677 | * cases, it means we're ready to call ir_raw_event_handle | 652 | * cases, it means we're ready to call ir_raw_event_handle |
| 678 | */ | 653 | */ |
| 679 | if ((sample == BUF_PULSE_BIT) && nvt->pkts) { | 654 | if ((sample == BUF_PULSE_BIT) && (i + 1 < nvt->pkts)) { |
| 680 | nvt_dbg("Calling ir_raw_event_handle (signal end)\n"); | 655 | nvt_dbg("Calling ir_raw_event_handle (signal end)\n"); |
| 681 | ir_raw_event_handle(nvt->rdev); | 656 | ir_raw_event_handle(nvt->rdev); |
| 682 | } | 657 | } |
| 683 | } | 658 | } |
| 684 | 659 | ||
| 660 | nvt->pkts = 0; | ||
| 661 | |||
| 685 | nvt_dbg("Calling ir_raw_event_handle (buffer empty)\n"); | 662 | nvt_dbg("Calling ir_raw_event_handle (buffer empty)\n"); |
| 686 | ir_raw_event_handle(nvt->rdev); | 663 | ir_raw_event_handle(nvt->rdev); |
| 687 | 664 | ||
| 688 | if (nvt->pkts) { | ||
| 689 | nvt_dbg("Odd, pkts should be 0 now... (its %u)", nvt->pkts); | ||
| 690 | nvt->pkts = 0; | ||
| 691 | } | ||
| 692 | |||
| 693 | nvt_dbg_verbose("%s done", __func__); | 665 | nvt_dbg_verbose("%s done", __func__); |
| 694 | } | 666 | } |
| 695 | 667 | ||
| @@ -1048,7 +1020,6 @@ static int nvt_probe(struct pnp_dev *pdev, const struct pnp_device_id *dev_id) | |||
| 1048 | 1020 | ||
| 1049 | spin_lock_init(&nvt->nvt_lock); | 1021 | spin_lock_init(&nvt->nvt_lock); |
| 1050 | spin_lock_init(&nvt->tx.lock); | 1022 | spin_lock_init(&nvt->tx.lock); |
| 1051 | init_ir_raw_event(&nvt->rawir); | ||
| 1052 | 1023 | ||
| 1053 | ret = -EBUSY; | 1024 | ret = -EBUSY; |
| 1054 | /* now claim resources */ | 1025 | /* now claim resources */ |
diff --git a/drivers/media/rc/nuvoton-cir.h b/drivers/media/rc/nuvoton-cir.h index 1241fc89a36c..0d5e0872a2ea 100644 --- a/drivers/media/rc/nuvoton-cir.h +++ b/drivers/media/rc/nuvoton-cir.h | |||
| @@ -67,7 +67,6 @@ static int debug; | |||
| 67 | struct nvt_dev { | 67 | struct nvt_dev { |
| 68 | struct pnp_dev *pdev; | 68 | struct pnp_dev *pdev; |
| 69 | struct rc_dev *rdev; | 69 | struct rc_dev *rdev; |
| 70 | struct ir_raw_event rawir; | ||
| 71 | 70 | ||
| 72 | spinlock_t nvt_lock; | 71 | spinlock_t nvt_lock; |
| 73 | 72 | ||
diff --git a/drivers/media/video/gspca/ov519.c b/drivers/media/video/gspca/ov519.c index 0800433b2092..18305c89083c 100644 --- a/drivers/media/video/gspca/ov519.c +++ b/drivers/media/video/gspca/ov519.c | |||
| @@ -2858,7 +2858,6 @@ static void ov7xx0_configure(struct sd *sd) | |||
| 2858 | case 0x60: | 2858 | case 0x60: |
| 2859 | PDEBUG(D_PROBE, "Sensor is a OV7660"); | 2859 | PDEBUG(D_PROBE, "Sensor is a OV7660"); |
| 2860 | sd->sensor = SEN_OV7660; | 2860 | sd->sensor = SEN_OV7660; |
| 2861 | sd->invert_led = 0; | ||
| 2862 | break; | 2861 | break; |
| 2863 | default: | 2862 | default: |
| 2864 | PDEBUG(D_PROBE, "Unknown sensor: 0x76%x", low); | 2863 | PDEBUG(D_PROBE, "Unknown sensor: 0x76%x", low); |
| @@ -3337,7 +3336,6 @@ static int sd_config(struct gspca_dev *gspca_dev, | |||
| 3337 | case BRIDGE_OV519: | 3336 | case BRIDGE_OV519: |
| 3338 | cam->cam_mode = ov519_vga_mode; | 3337 | cam->cam_mode = ov519_vga_mode; |
| 3339 | cam->nmodes = ARRAY_SIZE(ov519_vga_mode); | 3338 | cam->nmodes = ARRAY_SIZE(ov519_vga_mode); |
| 3340 | sd->invert_led = !sd->invert_led; | ||
| 3341 | break; | 3339 | break; |
| 3342 | case BRIDGE_OVFX2: | 3340 | case BRIDGE_OVFX2: |
| 3343 | cam->cam_mode = ov519_vga_mode; | 3341 | cam->cam_mode = ov519_vga_mode; |
| @@ -5005,24 +5003,24 @@ static const struct sd_desc sd_desc = { | |||
| 5005 | /* -- module initialisation -- */ | 5003 | /* -- module initialisation -- */ |
| 5006 | static const struct usb_device_id device_table[] = { | 5004 | static const struct usb_device_id device_table[] = { |
| 5007 | {USB_DEVICE(0x041e, 0x4003), .driver_info = BRIDGE_W9968CF }, | 5005 | {USB_DEVICE(0x041e, 0x4003), .driver_info = BRIDGE_W9968CF }, |
| 5008 | {USB_DEVICE(0x041e, 0x4052), .driver_info = BRIDGE_OV519 }, | 5006 | {USB_DEVICE(0x041e, 0x4052), |
| 5009 | {USB_DEVICE(0x041e, 0x405f), | ||
| 5010 | .driver_info = BRIDGE_OV519 | BRIDGE_INVERT_LED }, | 5007 | .driver_info = BRIDGE_OV519 | BRIDGE_INVERT_LED }, |
| 5008 | {USB_DEVICE(0x041e, 0x405f), .driver_info = BRIDGE_OV519 }, | ||
| 5011 | {USB_DEVICE(0x041e, 0x4060), .driver_info = BRIDGE_OV519 }, | 5009 | {USB_DEVICE(0x041e, 0x4060), .driver_info = BRIDGE_OV519 }, |
| 5012 | {USB_DEVICE(0x041e, 0x4061), .driver_info = BRIDGE_OV519 }, | 5010 | {USB_DEVICE(0x041e, 0x4061), .driver_info = BRIDGE_OV519 }, |
| 5013 | {USB_DEVICE(0x041e, 0x4064), | 5011 | {USB_DEVICE(0x041e, 0x4064), .driver_info = BRIDGE_OV519 }, |
| 5014 | .driver_info = BRIDGE_OV519 | BRIDGE_INVERT_LED }, | ||
| 5015 | {USB_DEVICE(0x041e, 0x4067), .driver_info = BRIDGE_OV519 }, | 5012 | {USB_DEVICE(0x041e, 0x4067), .driver_info = BRIDGE_OV519 }, |
| 5016 | {USB_DEVICE(0x041e, 0x4068), | 5013 | {USB_DEVICE(0x041e, 0x4068), .driver_info = BRIDGE_OV519 }, |
| 5014 | {USB_DEVICE(0x045e, 0x028c), | ||
| 5017 | .driver_info = BRIDGE_OV519 | BRIDGE_INVERT_LED }, | 5015 | .driver_info = BRIDGE_OV519 | BRIDGE_INVERT_LED }, |
| 5018 | {USB_DEVICE(0x045e, 0x028c), .driver_info = BRIDGE_OV519 }, | ||
| 5019 | {USB_DEVICE(0x054c, 0x0154), .driver_info = BRIDGE_OV519 }, | 5016 | {USB_DEVICE(0x054c, 0x0154), .driver_info = BRIDGE_OV519 }, |
| 5020 | {USB_DEVICE(0x054c, 0x0155), | 5017 | {USB_DEVICE(0x054c, 0x0155), .driver_info = BRIDGE_OV519 }, |
| 5021 | .driver_info = BRIDGE_OV519 | BRIDGE_INVERT_LED }, | ||
| 5022 | {USB_DEVICE(0x05a9, 0x0511), .driver_info = BRIDGE_OV511 }, | 5018 | {USB_DEVICE(0x05a9, 0x0511), .driver_info = BRIDGE_OV511 }, |
| 5023 | {USB_DEVICE(0x05a9, 0x0518), .driver_info = BRIDGE_OV518 }, | 5019 | {USB_DEVICE(0x05a9, 0x0518), .driver_info = BRIDGE_OV518 }, |
| 5024 | {USB_DEVICE(0x05a9, 0x0519), .driver_info = BRIDGE_OV519 }, | 5020 | {USB_DEVICE(0x05a9, 0x0519), |
| 5025 | {USB_DEVICE(0x05a9, 0x0530), .driver_info = BRIDGE_OV519 }, | 5021 | .driver_info = BRIDGE_OV519 | BRIDGE_INVERT_LED }, |
| 5022 | {USB_DEVICE(0x05a9, 0x0530), | ||
| 5023 | .driver_info = BRIDGE_OV519 | BRIDGE_INVERT_LED }, | ||
| 5026 | {USB_DEVICE(0x05a9, 0x2800), .driver_info = BRIDGE_OVFX2 }, | 5024 | {USB_DEVICE(0x05a9, 0x2800), .driver_info = BRIDGE_OVFX2 }, |
| 5027 | {USB_DEVICE(0x05a9, 0x4519), .driver_info = BRIDGE_OV519 }, | 5025 | {USB_DEVICE(0x05a9, 0x4519), .driver_info = BRIDGE_OV519 }, |
| 5028 | {USB_DEVICE(0x05a9, 0x8519), .driver_info = BRIDGE_OV519 }, | 5026 | {USB_DEVICE(0x05a9, 0x8519), .driver_info = BRIDGE_OV519 }, |
diff --git a/drivers/media/video/gspca/sonixj.c b/drivers/media/video/gspca/sonixj.c index 81b8a600783b..c477ad11f103 100644 --- a/drivers/media/video/gspca/sonixj.c +++ b/drivers/media/video/gspca/sonixj.c | |||
| @@ -2386,7 +2386,7 @@ static int sd_start(struct gspca_dev *gspca_dev) | |||
| 2386 | reg_w1(gspca_dev, 0x01, 0x22); | 2386 | reg_w1(gspca_dev, 0x01, 0x22); |
| 2387 | msleep(100); | 2387 | msleep(100); |
| 2388 | reg01 = SCL_SEL_OD | S_PDN_INV; | 2388 | reg01 = SCL_SEL_OD | S_PDN_INV; |
| 2389 | reg17 &= MCK_SIZE_MASK; | 2389 | reg17 &= ~MCK_SIZE_MASK; |
| 2390 | reg17 |= 0x04; /* clock / 4 */ | 2390 | reg17 |= 0x04; /* clock / 4 */ |
| 2391 | break; | 2391 | break; |
| 2392 | } | 2392 | } |
| @@ -2532,6 +2532,10 @@ static int sd_start(struct gspca_dev *gspca_dev) | |||
| 2532 | if (!mode) { /* if 640x480 */ | 2532 | if (!mode) { /* if 640x480 */ |
| 2533 | reg17 &= ~MCK_SIZE_MASK; | 2533 | reg17 &= ~MCK_SIZE_MASK; |
| 2534 | reg17 |= 0x04; /* clock / 4 */ | 2534 | reg17 |= 0x04; /* clock / 4 */ |
| 2535 | } else { | ||
| 2536 | reg01 &= ~SYS_SEL_48M; /* clk 24Mz */ | ||
| 2537 | reg17 &= ~MCK_SIZE_MASK; | ||
| 2538 | reg17 |= 0x02; /* clock / 2 */ | ||
| 2535 | } | 2539 | } |
| 2536 | break; | 2540 | break; |
| 2537 | case SENSOR_OV7630: | 2541 | case SENSOR_OV7630: |
diff --git a/drivers/media/video/pwc/pwc-v4l.c b/drivers/media/video/pwc/pwc-v4l.c index e9a0e94b9995..8c70e64444e7 100644 --- a/drivers/media/video/pwc/pwc-v4l.c +++ b/drivers/media/video/pwc/pwc-v4l.c | |||
| @@ -338,7 +338,7 @@ int pwc_init_controls(struct pwc_device *pdev) | |||
| 338 | if (pdev->restore_factory) | 338 | if (pdev->restore_factory) |
| 339 | pdev->restore_factory->flags = V4L2_CTRL_FLAG_UPDATE; | 339 | pdev->restore_factory->flags = V4L2_CTRL_FLAG_UPDATE; |
| 340 | 340 | ||
| 341 | if (!pdev->features & FEATURE_MOTOR_PANTILT) | 341 | if (!(pdev->features & FEATURE_MOTOR_PANTILT)) |
| 342 | return hdl->error; | 342 | return hdl->error; |
| 343 | 343 | ||
| 344 | /* Motor pan / tilt / reset */ | 344 | /* Motor pan / tilt / reset */ |
diff --git a/drivers/media/video/via-camera.c b/drivers/media/video/via-camera.c index 85d3048c1d67..bb7f17f2a33c 100644 --- a/drivers/media/video/via-camera.c +++ b/drivers/media/video/via-camera.c | |||
| @@ -1332,6 +1332,8 @@ static __devinit bool viacam_serial_is_enabled(void) | |||
| 1332 | struct pci_bus *pbus = pci_find_bus(0, 0); | 1332 | struct pci_bus *pbus = pci_find_bus(0, 0); |
| 1333 | u8 cbyte; | 1333 | u8 cbyte; |
| 1334 | 1334 | ||
| 1335 | if (!pbus) | ||
| 1336 | return false; | ||
| 1335 | pci_bus_read_config_byte(pbus, VIACAM_SERIAL_DEVFN, | 1337 | pci_bus_read_config_byte(pbus, VIACAM_SERIAL_DEVFN, |
| 1336 | VIACAM_SERIAL_CREG, &cbyte); | 1338 | VIACAM_SERIAL_CREG, &cbyte); |
| 1337 | if ((cbyte & VIACAM_SERIAL_BIT) == 0) | 1339 | if ((cbyte & VIACAM_SERIAL_BIT) == 0) |
