Commit Graph

63 Commits

Author SHA1 Message Date
Jean-François Moine
f7059eaa28 V4L/DVB: gspca - main: Don't use the frame buffer flags
This patch fixes possible race conditions in queue management with SMP:
when a frame was completed, the irq function tried to use the next frame
buffer. At this time, it was possible that the application on an other
processor updated the frame pointer, making the image to point to a bad
buffer.
The patch contains two main changes:
- the image transfer uses the queue indexes which are protected against
  simultaneous memory access,
- the image pointer which is used for image concatenation is only set at
  interrupt level.
Some subdrivers which used the image pointer have been updated.

Reported-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Jean-François Moine <moinejf@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2010-08-02 16:42:48 -03:00
Jean-François Moine
b192ca9837 V4L/DVB: gspca - main: Simplify image building
The image pointer and its length are now in the main structure instead
of in the frame buffer. They are updated on application vidioc_qbuf and
in the URB interrupt function when ending an image.

Signed-off-by: Jean-François Moine <moinejf@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2010-08-02 15:31:10 -03:00
Jean-François Moine
a1317135d1 V4L/DVB: gspca - pac7302/11: Bad request value in USB write
Signed-off-by: Jean-François Moine <moinejf@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2010-08-02 14:51:30 -03:00
Hans de Goede
32ea3e44b9 V4L/DVB: gscpa_pac7311: Add support for camera button
gscpa_pac7311: Add support for camera button

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2010-02-26 15:11:08 -03:00
Jean-Francois Moine
14799f6cf3 V4L/DVB: gspca - pac7311: Use usb_err to propagate USB errors
Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2010-02-26 15:10:47 -03:00
Jean-Francois Moine
23a5de202b V4L/DVB: gspca - pac7302/pac7311: Remove the unused page loading
There is only one page to load (page 3 for pac7302 and page 4 for pac7311).

Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2010-02-26 15:10:47 -03:00
Marton Nemeth
7e64dc4c4d V4L/DVB (13899): gspca - all subdrivers: Make control descriptors constant.
The ctrls field of struct sd_desc is declared as const
in gspca.h. It is worth to initialize the content also with
constant values.

Signed-off-by: Marton Nemeth <nm127@freemail.hu>
Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2010-02-26 15:10:29 -03:00
Márton Németh
aabcdfb65b V4L/DVB (13898): gspca - some subdrivers: Make sd_desc const.
The function callbacks in sd_desc are defined at compile time and
they do not change at runtime. Make the sd_desc initializations const.

Signed-off-by: Márton Németh <nm127@freemail.hu>
Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2010-02-26 15:10:29 -03:00
Márton Németh
37b372e5eb V4L/DVB (13621): gspca - some subdrivers: Make device_table[]s constant.
Signed-off-by: Márton Németh <nm127@freemail.hu>
Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-12-16 00:18:48 -02:00
Jean-Francois Moine
76dd272b56 V4L/DVB (13453): gspca - all subdrivers: Remove the unused frame ptr from pkt_scan().
Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-12-05 18:41:59 -02:00
Márton Németh
4d0fc03a76 V4L/DVB (13418): gspca - pac7311: Stop sending URBs on first error.
Signed-off-by: Márton Németh <nm127@freemail.hu>
Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-12-05 18:41:47 -02:00
Márton Németh
b1784b3377 V4L/DVB (13383): gspca - pac7311/pac7302: Propagate error to higher level software.
The usb_control_msg() can fail any time. Only continue writing
sequence if there was no error with the previous write. If there
was any problem stop sending URBs and propagate the error to the
gspca_main.

Signed-off-by: Márton Németh <nm127@freemail.hu>
Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-12-05 18:41:37 -02:00
Marton Nemeth
8337fc3053 V4L/DVB (13325): gspca - pac7302/pac7311: Fix buffer overrun.
The reg_w_seq() function expects the sequence length in entries
and not in bytes. One entry in init_7302 and init_7311 is two
bytes and not one.

Signed-off-by: Marton Nemeth <nm127@freemail.hu>
Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-12-05 18:41:21 -02:00
Marton Nemeth
4f7309e278 V4L/DVB (13324): gspca - pac7302/pac7311: Handle return value of usb_control_msg().
The function usb_control_msg() can return error any time so at least
warn the user if an error happens. No message is printed in case of
normal operation.

Signed-off-by: Marton Nemeth <nm127@freemail.hu>
Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-12-05 18:41:20 -02:00
Marton Nemeth
1408b84729 V4L/DVB (13300): gspca - pac7302/pac7311: Separate the two subdrivers.
All PAC7311 specific functions remain in pac7311.c. All PAC7302 specific
functions are moved to pac7302.c. The USB device table is also divided into
two parts. This makes it possible to remove the sensor specific decisions
from different functions and also remove sensor infromation from the USB
device table.

The common functions are just copied to both subdrivers. These common
functions can be separated later to a common file or helper module.

Signed-off-by: Marton Nemeth <nm127@freemail.hu>
Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-12-05 18:41:16 -02:00
Marton Nemeth
cc409c0efb V4L/DVB (13299): gspca - pac7311: Extract pac_start_frame.
Creating the start of the frame is done in the same way for pac7302
and for pac7311. Extract this common part to the pac_start_frame()
function.

Signed-off-by: Marton Nemeth <nm127@freemail.hu>
Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-12-05 18:41:16 -02:00
Marton Nemeth
a6b69e409a V4L/DVB (13298): gspca - pac207/pac7311/mr97310a: Simplify pac_find_sof.
Remove struct sd dependency from pac_find_sof() function implementation.
This step prepares separation of pac7302 and pac7311 specific parts of
struct sd.

Signed-off-by: Marton Nemeth <nm127@freemail.hu>
Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-12-05 18:41:15 -02:00
Jean-Francois Moine
56e93ed9cf V4L/DVB (13249): gspca - pac7311: Webcam 093a:2628 added.
Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-12-05 18:41:06 -02:00
Marton Nemeth
56f6f5582f V4L/DVB (13121): gspca - pac7311: add comment about JPEG header
Add comment about the meaning of the fixed JPEG header bytes used to
create each image.

Signed-off-by: Marton Nemeth <nm127@freemail.hu>
Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-12-05 18:40:27 -02:00
Marton Nemeth
4fc8b64823 V4L/DVB (13120): gspca - pac7311: remove redundant register page switching
Remove redundant register page switching to page 0 when changing the
color control.

Signed-off-by: Marton Nemeth <nm127@freemail.hu>
Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-12-05 18:40:27 -02:00
Marton Nemeth
24067bb552 V4L/DVB (13119): gspca - pac7311: remove magic value for USB_BUF_SZ
The length check in reg_w_var() function is because the buffer contents
is copied to gspca_dev->usb_buf which has the size of USB_BUF_SZ bytes as
defined in drivers/media/video/gspca/gspca.h. Replace the number with
symbol for better readability and maintainability.

Signed-off-by: Marton Nemeth <nm127@freemail.hu>
Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-12-05 18:40:26 -02:00
Marton Nemeth
5a2e8d9fc1 V4L/DVB (13118): gspca - pac7311: remove magic values for END_OF_SEQUENCE and LOAD_PAGE.
Change the magic values 0, 254 and 255 to END_OF_SEQUENCE, LOAD_PAGE4 and
LOAD_PAGE3 respectively for better source code readability.

Signed-off-by: Marton Nemeth <nm127@freemail.hu>
Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-12-05 18:40:26 -02:00
Marton Nemeth
ff75e99c62 V4L/DVB (13117): gspca - pac7311: remove magic value for SKIP.
Change the magic value 0xaa to SKIP for better understandability.

Signed-off-by: Marton Nemeth <nm127@freemail.hu>
Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-12-05 18:40:25 -02:00
Stephane Marguet (Stemp)
b5948bee13 V4L/DVB (12690): gspca - pac7311: Webcam 06f8:3009 added.
Signed-off-by: Stephane Marguet (Stemp) <smarguet@gmail.com>
Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-09-12 12:20:04 -03:00
Jean-Francois Moine
3eed782599 V4L/DVB (12227): gspca - pac7311: Webcam 093a:2629 added.
Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-09-12 12:17:34 -03:00
Alexey Klimov
e6b148490f V4L/DVB (10336): gspca - all subdrivers: Return ret instead of -1 in sd_mod_init.
Signed-off-by: Alexey Klimov <klimov.linux@gmail.com>
Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-03-30 12:42:29 -03:00
Alexey Klimov
f69e9529ed V4L/DVB (10335): gspca - all subdrivers: Fix CodingStyle in sd_mod_init function.
Introduce int ret and check it value after call to usb_register().

Signed-off-by: Alexey Klimov <klimov.linux@gmail.com>
Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-03-30 12:42:29 -03:00
Jean-Francois Moine
50e06dee95 V4L/DVB (10333): gspca - main and many subdrivers: Remove the epaddr variable.
The transfer endpoint address is now automatically chosen.

Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-03-30 12:42:29 -03:00
Jean-Francois Moine
cc611b8aef V4L/DVB (10049): gspca - many subdrivers: Set 'const' the pixel format table.
Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2008-12-30 09:40:07 -02:00
Hans de Goede
71d50f3072 V4L/DVB (10044): gspca - pac7311: Webcam 093a:2620 added.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2008-12-30 09:40:05 -02:00
Jean-Francois Moine
ca8959bb07 V4L/DVB (9984): gspca - pac7311: Webcam 093a:262c added.
Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2008-12-30 09:39:39 -02:00
Jean-Francois Moine
121520a708 V4L/DVB (9853): gspca: Webcam 093a:2622 added in pac7311.
Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2008-12-30 09:38:52 -02:00
Jean-Francois Moine
98522a7be9 V4L/DVB (9689): gspca: Memory leak when disconnect while streaming.
As a side effect, the sd routine stop0 is called on disconnect.
This permits the subdriver to free its resources.

Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2008-11-24 12:01:07 -02:00
Jean-Francois Moine
72ab97cecb V4L/DVB (9079): gspca: Return error code from stream start functions.
Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2008-10-12 09:37:12 -02:00
Hans de Goede
40f17a7981 V4L/DVB (8909): gspca: PAC 7302 webcam 093a:262a added.
Signed-off-by: Hans de Goede <j.w.r.degoede@hhs.nl>
Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2008-09-29 11:38:23 -03:00
Hans de Goede
271315a9b4 V4L/DVB (8830): gspca: Move some probe code to the new init function.
Signed-off-by: Hans de Goede <j.w.r.degoede@hhs.nl>
Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2008-09-03 18:37:43 -03:00
Hans de Goede
038ec7c772 V4L/DVB (8827): gspca: Stop pac7302 autogain oscillation.
Signed-off-by: Hans de Goede <j.w.r.degoede@hhs.nl>
Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2008-09-03 18:37:40 -03:00
Jean-Francois Moine
086272555d V4L/DVB (8826): gspca: Webcam Labtec 2200 (093a:2626) added in pac7311.
Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2008-09-03 18:37:39 -03:00
Hans de Goede
8a5b2e909d V4L/DVB (8825): gspca: More controls for pac73xx and new webcam 093a:2624.
-Add usb id for 093a:2624 (pac7302)
-Report some controls to userspace with 7302 only, as they are 7302 only
-Add gain and exposure controls
-Add autogain
-Fix 7302 imaged being mirrored by default

Signed-off-by: Hans de Goede <j.w.r.degoede@hhs.nl>
Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2008-09-03 18:37:38 -03:00
Jean-Francois Moine
012d6b029e V4L/DVB (8822): gspca: Change some subdriver functions for suspend/resume.
- new function 'init' called on probe and resume
- remove the functions 'open' and 'closed'
- 'stopN' and 'stop0' are optional

Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2008-09-03 18:37:35 -03:00
Jean-Francois Moine
f50ba1bed3 V4L/DVB (8814): gspca: Set DISABLED the disabled controls at query control time.
Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2008-09-03 18:37:27 -03:00
Hans de Goede
221e7dbe55 V4L/DVB (8813): gspca: Adjust SOF detection for pac73xx.
Signed-off-by: Hans de Goede <j.w.r.degoede@hhs.nl>
Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2008-09-03 18:37:25 -03:00
Hans de Goede
327c4abf74 V4L/DVB (8812): gspca: Do pac73xx webcams work.
- documentation for some registers
- some preparations for adding autogain_n_exposure functionality
- various pac7311 fixes
- disable brightness and colors controls for 7311
- fix contrast control for 7311
- add hflip and vflip controls for 7311
- minimal jpeg header
- proper SOF detection

Signed-off-by: Hans de Goede <j.w.r.degoede@hhs.nl>
Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2008-09-03 18:37:24 -03:00
Jean-Francois Moine
6a70974922 V4L/DVB (8718): gspca: suspend/resume added.
Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2008-09-03 18:36:58 -03:00
Jean-Francois Moine
4a18625e88 V4L/DVB (8711): gspca: Bad controls and quantization table of pac7311.
Patch adapted from a gspca v1 patch by Thomas Kaiser.

Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2008-09-03 18:36:50 -03:00
Jean-Francois Moine
41b469745f V4L/DVB (8707): gspca: Colors, hflip and vflip controls added for pac7302.
Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2008-09-03 18:36:47 -03:00
Jean-Francois Moine
dff6d321d4 V4L/DVB (8706): Make contrast and brightness work for pac7302.
Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2008-09-03 18:36:46 -03:00
Jean-Francois Moine
f75c4950bb V4L/DVB (8675): gspca: Pixmap PJPG (Pixart 73xx JPEG) added, generated by pac7311.
The JPEG frames generated by the Pixart 73xx have:
- special markers 'ff ff ff xx' every 1024/512 bytes,
- unused 8 bits at end of JPEG blocks,
and then ask for a new pixel format.

Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
2008-09-03 18:36:39 -03:00
Jean-Francois Moine
285a4f6c8e V4L/DVB (8673): gspca: Bad frame scanning again and bad init in pac7311.
Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
2008-09-03 18:36:37 -03:00
Jean-Francois Moine
8559e8da31 V4L/DVB (8666): gspca: Bad scanning of frames in pac7311.
The previous change in packet scanning did not work,
Also, autogain was no more treated at interrupt level.

Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
2008-09-03 18:36:31 -03:00