提交 c93396e1 编写于 作者: T Theodore Kilgore 提交者: Mauro Carvalho Chehab

[media] gspca: Remove gspca-specific debug magic

Instead use v4l2_dbg and v4l2_err. Note that the PDEBUG macro is kept to
make this patch-set less invasive, but it is simply a wrapper around
v4l2_dbg now. Most of the other changes are there to make the dev parameter
for the v4l2_xxx macros available everywhere we do logging.
Signed-off-by: NTheodore Kilgore <kilgota@auburn.edu>
Signed-off-by: NHans de Goede <hdegoede@redhat.com>
Signed-off-by: NMauro Carvalho Chehab <mchehab@redhat.com>
上级 70c8ecf5
...@@ -186,7 +186,7 @@ static void sd_isoc_irq(struct urb *urb) ...@@ -186,7 +186,7 @@ static void sd_isoc_irq(struct urb *urb)
/* check the packet status and length */ /* check the packet status and length */
if (urb0->iso_frame_desc[i].actual_length != SD_PKT_SZ if (urb0->iso_frame_desc[i].actual_length != SD_PKT_SZ
|| urb->iso_frame_desc[i].actual_length != SD_PKT_SZ) { || urb->iso_frame_desc[i].actual_length != SD_PKT_SZ) {
PDEBUG(D_ERR, "ISOC bad lengths %d / %d", PERR("ISOC bad lengths %d / %d",
urb0->iso_frame_desc[i].actual_length, urb0->iso_frame_desc[i].actual_length,
urb->iso_frame_desc[i].actual_length); urb->iso_frame_desc[i].actual_length);
gspca_dev->last_packet_type = DISCARD_PACKET; gspca_dev->last_packet_type = DISCARD_PACKET;
......
...@@ -73,12 +73,11 @@ static void reg_r(struct gspca_dev *gspca_dev, ...@@ -73,12 +73,11 @@ static void reg_r(struct gspca_dev *gspca_dev,
{ {
struct usb_device *dev = gspca_dev->dev; struct usb_device *dev = gspca_dev->dev;
#ifdef GSPCA_DEBUG
if (len > USB_BUF_SZ) { if (len > USB_BUF_SZ) {
pr_err("reg_r: buffer overflow\n"); PERR("reg_r: buffer overflow\n");
return; return;
} }
#endif
usb_control_msg(dev, usb_control_msg(dev,
usb_rcvctrlpipe(dev, 0), usb_rcvctrlpipe(dev, 0),
0, 0,
...@@ -113,13 +112,12 @@ static void reg_w(struct gspca_dev *gspca_dev, ...@@ -113,13 +112,12 @@ static void reg_w(struct gspca_dev *gspca_dev,
{ {
struct usb_device *dev = gspca_dev->dev; struct usb_device *dev = gspca_dev->dev;
#ifdef GSPCA_DEBUG
if (len > USB_BUF_SZ) { if (len > USB_BUF_SZ) {
pr_err("reg_w: buffer overflow\n"); PERR("reg_w: buffer overflow\n");
return; return;
} }
PDEBUG(D_USBO, "reg write [%02x] = %02x..", index, *buffer); PDEBUG(D_USBO, "reg write [%02x] = %02x..", index, *buffer);
#endif
memcpy(gspca_dev->usb_buf, buffer, len); memcpy(gspca_dev->usb_buf, buffer, len);
usb_control_msg(dev, usb_control_msg(dev,
usb_sndctrlpipe(dev, 0), usb_sndctrlpipe(dev, 0),
...@@ -689,7 +687,7 @@ static void cx11646_jpeg(struct gspca_dev*gspca_dev) ...@@ -689,7 +687,7 @@ static void cx11646_jpeg(struct gspca_dev*gspca_dev)
reg_w_val(gspca_dev, 0x0053, 0x00); reg_w_val(gspca_dev, 0x0053, 0x00);
} while (--retry); } while (--retry);
if (retry == 0) if (retry == 0)
PDEBUG(D_ERR, "Damned Errors sending jpeg Table"); PERR("Damned Errors sending jpeg Table");
/* send the qtable now */ /* send the qtable now */
reg_r(gspca_dev, 0x0001, 1); /* -> 0x18 */ reg_r(gspca_dev, 0x0001, 1); /* -> 0x18 */
length = 8; length = 8;
......
...@@ -421,8 +421,7 @@ static int cpia_usb_transferCmd(struct gspca_dev *gspca_dev, u8 *command) ...@@ -421,8 +421,7 @@ static int cpia_usb_transferCmd(struct gspca_dev *gspca_dev, u8 *command)
pipe = usb_sndctrlpipe(gspca_dev->dev, 0); pipe = usb_sndctrlpipe(gspca_dev->dev, 0);
requesttype = USB_TYPE_VENDOR | USB_RECIP_DEVICE; requesttype = USB_TYPE_VENDOR | USB_RECIP_DEVICE;
} else { } else {
PDEBUG(D_ERR, "Unexpected first byte of command: %x", PERR("Unexpected first byte of command: %x", command[0]);
command[0]);
return -EINVAL; return -EINVAL;
} }
...@@ -701,7 +700,7 @@ static void reset_camera_params(struct gspca_dev *gspca_dev) ...@@ -701,7 +700,7 @@ static void reset_camera_params(struct gspca_dev *gspca_dev)
params->qx3.cradled = 0; params->qx3.cradled = 0;
} }
static void printstatus(struct cam_params *params) static void printstatus(struct gspca_dev *gspca_dev, struct cam_params *params)
{ {
PDEBUG(D_PROBE, "status: %02x %02x %02x %02x %02x %02x %02x %02x", PDEBUG(D_PROBE, "status: %02x %02x %02x %02x %02x %02x %02x %02x",
params->status.systemState, params->status.grabState, params->status.systemState, params->status.grabState,
...@@ -725,10 +724,9 @@ static int goto_low_power(struct gspca_dev *gspca_dev) ...@@ -725,10 +724,9 @@ static int goto_low_power(struct gspca_dev *gspca_dev)
if (sd->params.status.systemState != LO_POWER_STATE) { if (sd->params.status.systemState != LO_POWER_STATE) {
if (sd->params.status.systemState != WARM_BOOT_STATE) { if (sd->params.status.systemState != WARM_BOOT_STATE) {
PDEBUG(D_ERR, PERR("unexpected state after lo power cmd: %02x",
"unexpected state after lo power cmd: %02x", sd->params.status.systemState);
sd->params.status.systemState); printstatus(gspca_dev, &sd->params);
printstatus(&sd->params);
} }
return -EIO; return -EIO;
} }
...@@ -756,9 +754,9 @@ static int goto_high_power(struct gspca_dev *gspca_dev) ...@@ -756,9 +754,9 @@ static int goto_high_power(struct gspca_dev *gspca_dev)
return ret; return ret;
if (sd->params.status.systemState != HI_POWER_STATE) { if (sd->params.status.systemState != HI_POWER_STATE) {
PDEBUG(D_ERR, "unexpected state after hi power cmd: %02x", PERR("unexpected state after hi power cmd: %02x",
sd->params.status.systemState); sd->params.status.systemState);
printstatus(&sd->params); printstatus(gspca_dev, &sd->params);
return -EIO; return -EIO;
} }
...@@ -1449,8 +1447,8 @@ static int sd_config(struct gspca_dev *gspca_dev, ...@@ -1449,8 +1447,8 @@ static int sd_config(struct gspca_dev *gspca_dev,
sd->params.version.firmwareVersion = 0; sd->params.version.firmwareVersion = 0;
get_version_information(gspca_dev); get_version_information(gspca_dev);
if (sd->params.version.firmwareVersion != 1) { if (sd->params.version.firmwareVersion != 1) {
PDEBUG(D_ERR, "only firmware version 1 is supported (got: %d)", PERR("only firmware version 1 is supported (got: %d)",
sd->params.version.firmwareVersion); sd->params.version.firmwareVersion);
return -ENODEV; return -ENODEV;
} }
...@@ -1475,9 +1473,9 @@ static int sd_start(struct gspca_dev *gspca_dev) ...@@ -1475,9 +1473,9 @@ static int sd_start(struct gspca_dev *gspca_dev)
/* Start the camera in low power mode */ /* Start the camera in low power mode */
if (goto_low_power(gspca_dev)) { if (goto_low_power(gspca_dev)) {
if (sd->params.status.systemState != WARM_BOOT_STATE) { if (sd->params.status.systemState != WARM_BOOT_STATE) {
PDEBUG(D_ERR, "unexpected systemstate: %02x", PERR("unexpected systemstate: %02x",
sd->params.status.systemState); sd->params.status.systemState);
printstatus(&sd->params); printstatus(gspca_dev, &sd->params);
return -ENODEV; return -ENODEV;
} }
...@@ -1523,9 +1521,8 @@ static int sd_start(struct gspca_dev *gspca_dev) ...@@ -1523,9 +1521,8 @@ static int sd_start(struct gspca_dev *gspca_dev)
return ret; return ret;
if (sd->params.status.fatalError) { if (sd->params.status.fatalError) {
PDEBUG(D_ERR, "fatal_error: %04x, vp_status: %04x", PERR("fatal_error: %04x, vp_status: %04x",
sd->params.status.fatalError, sd->params.status.fatalError, sd->params.status.vpStatus);
sd->params.status.vpStatus);
return -EIO; return -EIO;
} }
......
...@@ -163,12 +163,11 @@ static void reg_r(struct gspca_dev *gspca_dev, ...@@ -163,12 +163,11 @@ static void reg_r(struct gspca_dev *gspca_dev,
{ {
struct usb_device *dev = gspca_dev->dev; struct usb_device *dev = gspca_dev->dev;
#ifdef GSPCA_DEBUG
if (len > USB_BUF_SZ) { if (len > USB_BUF_SZ) {
pr_err("reg_r: buffer overflow\n"); PERR("reg_r: buffer overflow\n");
return; return;
} }
#endif
usb_control_msg(dev, usb_control_msg(dev,
usb_rcvctrlpipe(dev, 0), usb_rcvctrlpipe(dev, 0),
0, 0,
...@@ -201,13 +200,12 @@ static void reg_w(struct gspca_dev *gspca_dev, ...@@ -201,13 +200,12 @@ static void reg_w(struct gspca_dev *gspca_dev,
{ {
struct usb_device *dev = gspca_dev->dev; struct usb_device *dev = gspca_dev->dev;
#ifdef GSPCA_DEBUG
if (len > USB_BUF_SZ) { if (len > USB_BUF_SZ) {
pr_err("reg_w: buffer overflow\n"); pr_err("reg_w: buffer overflow\n");
return; return;
} }
PDEBUG(D_USBO, "reg write [%02x] = %02x..", index, *buffer); PDEBUG(D_USBO, "reg write [%02x] = %02x..", index, *buffer);
#endif
memcpy(gspca_dev->usb_buf, buffer, len); memcpy(gspca_dev->usb_buf, buffer, len);
usb_control_msg(dev, usb_control_msg(dev,
usb_sndctrlpipe(dev, 0), usb_sndctrlpipe(dev, 0),
...@@ -274,7 +272,7 @@ static int et_video(struct gspca_dev *gspca_dev, ...@@ -274,7 +272,7 @@ static int et_video(struct gspca_dev *gspca_dev,
: 0); /* stopvideo */ : 0); /* stopvideo */
ret = Et_WaitStatus(gspca_dev); ret = Et_WaitStatus(gspca_dev);
if (ret != 0) if (ret != 0)
PDEBUG(D_ERR, "timeout video on/off"); PERR("timeout video on/off");
return ret; return ret;
} }
......
...@@ -582,7 +582,7 @@ int gl860_RTx(struct gspca_dev *gspca_dev, ...@@ -582,7 +582,7 @@ int gl860_RTx(struct gspca_dev *gspca_dev,
pr_err("ctrl transfer failed %4d [p%02x r%d v%04x i%04x len%d]\n", pr_err("ctrl transfer failed %4d [p%02x r%d v%04x i%04x len%d]\n",
r, pref, req, val, index, len); r, pref, req, val, index, len);
else if (len > 1 && r < len) else if (len > 1 && r < len)
PDEBUG(D_ERR, "short ctrl transfer %d/%d", r, len); PERR("short ctrl transfer %d/%d", r, len);
msleep(1); msleep(1);
......
...@@ -60,14 +60,14 @@ MODULE_DESCRIPTION("GSPCA USB Camera Driver"); ...@@ -60,14 +60,14 @@ MODULE_DESCRIPTION("GSPCA USB Camera Driver");
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
MODULE_VERSION(GSPCA_VERSION); MODULE_VERSION(GSPCA_VERSION);
#ifdef GSPCA_DEBUG int gspca_debug;
int gspca_debug = D_ERR | D_PROBE;
EXPORT_SYMBOL(gspca_debug); EXPORT_SYMBOL(gspca_debug);
static void PDEBUG_MODE(char *txt, __u32 pixfmt, int w, int h) static void PDEBUG_MODE(struct gspca_dev *gspca_dev, int debug, char *txt,
__u32 pixfmt, int w, int h)
{ {
if ((pixfmt >> 24) >= '0' && (pixfmt >> 24) <= 'z') { if ((pixfmt >> 24) >= '0' && (pixfmt >> 24) <= 'z') {
PDEBUG(D_CONF|D_STREAM, "%s %c%c%c%c %dx%d", PDEBUG(debug, "%s %c%c%c%c %dx%d",
txt, txt,
pixfmt & 0xff, pixfmt & 0xff,
(pixfmt >> 8) & 0xff, (pixfmt >> 8) & 0xff,
...@@ -75,15 +75,12 @@ static void PDEBUG_MODE(char *txt, __u32 pixfmt, int w, int h) ...@@ -75,15 +75,12 @@ static void PDEBUG_MODE(char *txt, __u32 pixfmt, int w, int h)
pixfmt >> 24, pixfmt >> 24,
w, h); w, h);
} else { } else {
PDEBUG(D_CONF|D_STREAM, "%s 0x%08x %dx%d", PDEBUG(debug, "%s 0x%08x %dx%d",
txt, txt,
pixfmt, pixfmt,
w, h); w, h);
} }
} }
#else
#define PDEBUG_MODE(txt, pixfmt, w, h)
#endif
/* specific memory types - !! should be different from V4L2_MEMORY_xxx */ /* specific memory types - !! should be different from V4L2_MEMORY_xxx */
#define GSPCA_MEMORY_NO 0 /* V4L2_MEMORY_xxx starts from 1 */ #define GSPCA_MEMORY_NO 0 /* V4L2_MEMORY_xxx starts from 1 */
...@@ -129,7 +126,7 @@ static void int_irq(struct urb *urb) ...@@ -129,7 +126,7 @@ static void int_irq(struct urb *urb)
case 0: case 0:
if (gspca_dev->sd_desc->int_pkt_scan(gspca_dev, if (gspca_dev->sd_desc->int_pkt_scan(gspca_dev,
urb->transfer_buffer, urb->actual_length) < 0) { urb->transfer_buffer, urb->actual_length) < 0) {
PDEBUG(D_ERR, "Unknown packet received"); PERR("Unknown packet received");
} }
break; break;
...@@ -143,7 +140,7 @@ static void int_irq(struct urb *urb) ...@@ -143,7 +140,7 @@ static void int_irq(struct urb *urb)
break; break;
default: default:
PDEBUG(D_ERR, "URB error %i, resubmitting", urb->status); PERR("URB error %i, resubmitting", urb->status);
urb->status = 0; urb->status = 0;
ret = 0; ret = 0;
} }
...@@ -229,7 +226,7 @@ static int alloc_and_submit_int_urb(struct gspca_dev *gspca_dev, ...@@ -229,7 +226,7 @@ static int alloc_and_submit_int_urb(struct gspca_dev *gspca_dev,
urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP; urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;
ret = usb_submit_urb(urb, GFP_KERNEL); ret = usb_submit_urb(urb, GFP_KERNEL);
if (ret < 0) { if (ret < 0) {
PDEBUG(D_ERR, "submit int URB failed with error %i", ret); PERR("submit int URB failed with error %i", ret);
goto error_submit; goto error_submit;
} }
gspca_dev->int_urb = urb; gspca_dev->int_urb = urb;
...@@ -315,7 +312,7 @@ static void fill_frame(struct gspca_dev *gspca_dev, ...@@ -315,7 +312,7 @@ static void fill_frame(struct gspca_dev *gspca_dev,
if (gspca_dev->frozen) if (gspca_dev->frozen)
return; return;
#endif #endif
PDEBUG(D_ERR|D_PACK, "urb status: %d", urb->status); PERR("urb status: %d", urb->status);
urb->status = 0; urb->status = 0;
goto resubmit; goto resubmit;
} }
...@@ -388,7 +385,7 @@ static void bulk_irq(struct urb *urb) ...@@ -388,7 +385,7 @@ static void bulk_irq(struct urb *urb)
if (gspca_dev->frozen) if (gspca_dev->frozen)
return; return;
#endif #endif
PDEBUG(D_ERR|D_PACK, "urb status: %d", urb->status); PERR("urb status: %d", urb->status);
urb->status = 0; urb->status = 0;
goto resubmit; goto resubmit;
} }
...@@ -460,7 +457,7 @@ void gspca_frame_add(struct gspca_dev *gspca_dev, ...@@ -460,7 +457,7 @@ void gspca_frame_add(struct gspca_dev *gspca_dev,
/* append the packet to the frame buffer */ /* append the packet to the frame buffer */
if (len > 0) { if (len > 0) {
if (gspca_dev->image_len + len > gspca_dev->frsz) { if (gspca_dev->image_len + len > gspca_dev->frsz) {
PDEBUG(D_ERR|D_PACK, "frame overflow %d > %d", PERR("frame overflow %d > %d",
gspca_dev->image_len + len, gspca_dev->image_len + len,
gspca_dev->frsz); gspca_dev->frsz);
packet_type = DISCARD_PACKET; packet_type = DISCARD_PACKET;
...@@ -960,9 +957,7 @@ static int gspca_init_transfer(struct gspca_dev *gspca_dev) ...@@ -960,9 +957,7 @@ static int gspca_init_transfer(struct gspca_dev *gspca_dev)
/* the bandwidth is not wide enough /* the bandwidth is not wide enough
* negotiate or try a lower alternate setting */ * negotiate or try a lower alternate setting */
retry: retry:
PDEBUG(D_ERR|D_STREAM, PERR("alt %d - bandwidth not wide enough, trying again", alt);
"alt %d - bandwidth not wide enough - trying again",
alt);
msleep(20); /* wait for kill complete */ msleep(20); /* wait for kill complete */
if (gspca_dev->sd_desc->isoc_nego) { if (gspca_dev->sd_desc->isoc_nego) {
ret = gspca_dev->sd_desc->isoc_nego(gspca_dev); ret = gspca_dev->sd_desc->isoc_nego(gspca_dev);
...@@ -1127,10 +1122,9 @@ static int try_fmt_vid_cap(struct gspca_dev *gspca_dev, ...@@ -1127,10 +1122,9 @@ static int try_fmt_vid_cap(struct gspca_dev *gspca_dev,
w = fmt->fmt.pix.width; w = fmt->fmt.pix.width;
h = fmt->fmt.pix.height; h = fmt->fmt.pix.height;
#ifdef GSPCA_DEBUG PDEBUG_MODE(gspca_dev, D_CONF, "try fmt cap",
if (gspca_debug & D_CONF) fmt->fmt.pix.pixelformat, w, h);
PDEBUG_MODE("try fmt cap", fmt->fmt.pix.pixelformat, w, h);
#endif
/* search the closest mode for width and height */ /* search the closest mode for width and height */
mode = wxh_to_mode(gspca_dev, w, h); mode = wxh_to_mode(gspca_dev, w, h);
...@@ -1143,8 +1137,6 @@ static int try_fmt_vid_cap(struct gspca_dev *gspca_dev, ...@@ -1143,8 +1137,6 @@ static int try_fmt_vid_cap(struct gspca_dev *gspca_dev,
fmt->fmt.pix.pixelformat); fmt->fmt.pix.pixelformat);
if (mode2 >= 0) if (mode2 >= 0)
mode = mode2; mode = mode2;
/* else
; * no chance, return this mode */
} }
fmt->fmt.pix = gspca_dev->cam.cam_mode[mode]; fmt->fmt.pix = gspca_dev->cam.cam_mode[mode];
/* some drivers use priv internally, zero it before giving it to /* some drivers use priv internally, zero it before giving it to
...@@ -1280,15 +1272,6 @@ static int dev_open(struct file *file) ...@@ -1280,15 +1272,6 @@ static int dev_open(struct file *file)
if (!try_module_get(gspca_dev->module)) if (!try_module_get(gspca_dev->module))
return -ENODEV; return -ENODEV;
#ifdef GSPCA_DEBUG
/* activate the v4l2 debug */
if (gspca_debug & D_V4L2)
gspca_dev->vdev.debug |= V4L2_DEBUG_IOCTL
| V4L2_DEBUG_IOCTL_ARG;
else
gspca_dev->vdev.debug &= ~(V4L2_DEBUG_IOCTL
| V4L2_DEBUG_IOCTL_ARG);
#endif
return v4l2_fh_open(file); return v4l2_fh_open(file);
} }
...@@ -1483,14 +1466,8 @@ static int vidioc_streamon(struct file *file, void *priv, ...@@ -1483,14 +1466,8 @@ static int vidioc_streamon(struct file *file, void *priv,
if (ret < 0) if (ret < 0)
goto out; goto out;
} }
#ifdef GSPCA_DEBUG PDEBUG_MODE(gspca_dev, D_STREAM, "stream on OK", gspca_dev->pixfmt,
if (gspca_debug & D_STREAM) { gspca_dev->width, gspca_dev->height);
PDEBUG_MODE("stream on OK",
gspca_dev->pixfmt,
gspca_dev->width,
gspca_dev->height);
}
#endif
ret = 0; ret = 0;
out: out:
mutex_unlock(&gspca_dev->queue_lock); mutex_unlock(&gspca_dev->queue_lock);
...@@ -1741,8 +1718,7 @@ static int vidioc_dqbuf(struct file *file, void *priv, ...@@ -1741,8 +1718,7 @@ static int vidioc_dqbuf(struct file *file, void *priv,
if (copy_to_user((__u8 __user *) frame->v4l2_buf.m.userptr, if (copy_to_user((__u8 __user *) frame->v4l2_buf.m.userptr,
frame->data, frame->data,
frame->v4l2_buf.bytesused)) { frame->v4l2_buf.bytesused)) {
PDEBUG(D_ERR|D_STREAM, PERR("dqbuf cp to user failed");
"dqbuf cp to user failed");
ret = -EFAULT; ret = -EFAULT;
} }
} }
...@@ -1954,8 +1930,7 @@ static ssize_t dev_read(struct file *file, char __user *data, ...@@ -1954,8 +1930,7 @@ static ssize_t dev_read(struct file *file, char __user *data,
count = frame->v4l2_buf.bytesused; count = frame->v4l2_buf.bytesused;
ret = copy_to_user(data, frame->data, count); ret = copy_to_user(data, frame->data, count);
if (ret != 0) { if (ret != 0) {
PDEBUG(D_ERR|D_STREAM, PERR("read cp to user lack %d / %zd", ret, count);
"read cp to user lack %d / %zd", ret, count);
ret = -EFAULT; ret = -EFAULT;
goto out; goto out;
} }
...@@ -2290,10 +2265,6 @@ static void __exit gspca_exit(void) ...@@ -2290,10 +2265,6 @@ static void __exit gspca_exit(void)
module_init(gspca_init); module_init(gspca_init);
module_exit(gspca_exit); module_exit(gspca_exit);
#ifdef GSPCA_DEBUG
module_param_named(debug, gspca_debug, int, 0644); module_param_named(debug, gspca_debug, int, 0644);
MODULE_PARM_DESC(debug, MODULE_PARM_DESC(debug,
"Debug (bit) 0x01:error 0x02:probe 0x04:config" "1:probe 2:config 3:stream 4:frame 5:packet 6:usbi 7:usbo");
" 0x08:stream 0x10:frame 0x20:packet"
" 0x0100: v4l2");
#endif
...@@ -10,30 +10,26 @@ ...@@ -10,30 +10,26 @@
#include <media/v4l2-device.h> #include <media/v4l2-device.h>
#include <linux/mutex.h> #include <linux/mutex.h>
/* compilation option */
/*#define GSPCA_DEBUG 1*/
#ifdef GSPCA_DEBUG
/* GSPCA our debug messages */ /* GSPCA debug codes */
#define D_PROBE 1
#define D_CONF 2
#define D_STREAM 3
#define D_FRAM 4
#define D_PACK 5
#define D_USBI 6
#define D_USBO 7
extern int gspca_debug; extern int gspca_debug;
#define PDEBUG(level, fmt, ...) \
do { \
if (gspca_debug & (level)) \ #define PDEBUG(level, fmt, ...) \
pr_info(fmt, ##__VA_ARGS__); \ v4l2_dbg(level, gspca_debug, &gspca_dev->v4l2_dev, fmt, ##__VA_ARGS__)
} while (0)
#define PERR(fmt, ...) \
#define D_ERR 0x01 v4l2_err(&gspca_dev->v4l2_dev, fmt, ##__VA_ARGS__)
#define D_PROBE 0x02
#define D_CONF 0x04
#define D_STREAM 0x08
#define D_FRAM 0x10
#define D_PACK 0x20
#define D_USBI 0x00
#define D_USBO 0x00
#define D_V4L2 0x0100
#else
#define PDEBUG(level, fmt, ...) do {} while(0)
#endif
#define GSPCA_MAX_FRAMES 16 /* maximum number of video frame buffers */ #define GSPCA_MAX_FRAMES 16 /* maximum number of video frame buffers */
/* image transfers */ /* image transfers */
......
...@@ -266,7 +266,7 @@ static int jlj_start(struct gspca_dev *gspca_dev) ...@@ -266,7 +266,7 @@ static int jlj_start(struct gspca_dev *gspca_dev)
msleep(2); msleep(2);
setfreq(gspca_dev, v4l2_ctrl_g_ctrl(sd->freq)); setfreq(gspca_dev, v4l2_ctrl_g_ctrl(sd->freq));
if (gspca_dev->usb_err < 0) if (gspca_dev->usb_err < 0)
PDEBUG(D_ERR, "Start streaming command failed"); PERR("Start streaming command failed");
return gspca_dev->usb_err; return gspca_dev->usb_err;
} }
......
...@@ -277,7 +277,7 @@ static void sd_isoc_irq(struct urb *urb) ...@@ -277,7 +277,7 @@ static void sd_isoc_irq(struct urb *urb)
if (gspca_dev->frozen) if (gspca_dev->frozen)
return; return;
#endif #endif
PDEBUG(D_ERR, "urb status: %d", urb->status); PERR("urb status: %d", urb->status);
st = usb_submit_urb(urb, GFP_ATOMIC); st = usb_submit_urb(urb, GFP_ATOMIC);
if (st < 0) if (st < 0)
pr_err("resubmit urb error %d\n", st); pr_err("resubmit urb error %d\n", st);
...@@ -295,33 +295,30 @@ static void sd_isoc_irq(struct urb *urb) ...@@ -295,33 +295,30 @@ static void sd_isoc_irq(struct urb *urb)
sd->last_data_urb = NULL; sd->last_data_urb = NULL;
if (!data_urb || data_urb->start_frame != status_urb->start_frame) { if (!data_urb || data_urb->start_frame != status_urb->start_frame) {
PDEBUG(D_ERR|D_PACK, "lost sync on frames"); PERR("lost sync on frames");
goto resubmit; goto resubmit;
} }
if (data_urb->number_of_packets != status_urb->number_of_packets) { if (data_urb->number_of_packets != status_urb->number_of_packets) {
PDEBUG(D_ERR|D_PACK, PERR("no packets does not match, data: %d, status: %d",
"no packets does not match, data: %d, status: %d", data_urb->number_of_packets,
data_urb->number_of_packets, status_urb->number_of_packets);
status_urb->number_of_packets);
goto resubmit; goto resubmit;
} }
for (i = 0; i < status_urb->number_of_packets; i++) { for (i = 0; i < status_urb->number_of_packets; i++) {
if (data_urb->iso_frame_desc[i].status || if (data_urb->iso_frame_desc[i].status ||
status_urb->iso_frame_desc[i].status) { status_urb->iso_frame_desc[i].status) {
PDEBUG(D_ERR|D_PACK, PERR("pkt %d data-status %d, status-status %d", i,
"pkt %d data-status %d, status-status %d", i, data_urb->iso_frame_desc[i].status,
data_urb->iso_frame_desc[i].status, status_urb->iso_frame_desc[i].status);
status_urb->iso_frame_desc[i].status);
gspca_dev->last_packet_type = DISCARD_PACKET; gspca_dev->last_packet_type = DISCARD_PACKET;
continue; continue;
} }
if (status_urb->iso_frame_desc[i].actual_length != 1) { if (status_urb->iso_frame_desc[i].actual_length != 1) {
PDEBUG(D_ERR|D_PACK, PERR("bad status packet length %d",
"bad status packet length %d", status_urb->iso_frame_desc[i].actual_length);
status_urb->iso_frame_desc[i].actual_length);
gspca_dev->last_packet_type = DISCARD_PACKET; gspca_dev->last_packet_type = DISCARD_PACKET;
continue; continue;
} }
...@@ -366,12 +363,11 @@ static void sd_isoc_irq(struct urb *urb) ...@@ -366,12 +363,11 @@ static void sd_isoc_irq(struct urb *urb)
if (data_urb) { if (data_urb) {
st = usb_submit_urb(data_urb, GFP_ATOMIC); st = usb_submit_urb(data_urb, GFP_ATOMIC);
if (st < 0) if (st < 0)
PDEBUG(D_ERR|D_PACK, PERR("usb_submit_urb(data_urb) ret %d", st);
"usb_submit_urb(data_urb) ret %d", st);
} }
st = usb_submit_urb(status_urb, GFP_ATOMIC); st = usb_submit_urb(status_urb, GFP_ATOMIC);
if (st < 0) if (st < 0)
pr_err("usb_submit_urb(status_urb) ret %d\n", st); PERR("usb_submit_urb(status_urb) ret %d\n", st);
} }
static int sd_s_ctrl(struct v4l2_ctrl *ctrl) static int sd_s_ctrl(struct v4l2_ctrl *ctrl)
......
...@@ -41,6 +41,7 @@ MODULE_DEVICE_TABLE(usb, m5602_table); ...@@ -41,6 +41,7 @@ MODULE_DEVICE_TABLE(usb, m5602_table);
int m5602_read_bridge(struct sd *sd, const u8 address, u8 *i2c_data) int m5602_read_bridge(struct sd *sd, const u8 address, u8 *i2c_data)
{ {
int err; int err;
struct gspca_dev *gspca_dev = (struct gspca_dev *) sd;
struct usb_device *udev = sd->gspca_dev.dev; struct usb_device *udev = sd->gspca_dev.dev;
__u8 *buf = sd->gspca_dev.usb_buf; __u8 *buf = sd->gspca_dev.usb_buf;
...@@ -62,6 +63,7 @@ int m5602_read_bridge(struct sd *sd, const u8 address, u8 *i2c_data) ...@@ -62,6 +63,7 @@ int m5602_read_bridge(struct sd *sd, const u8 address, u8 *i2c_data)
int m5602_write_bridge(struct sd *sd, const u8 address, const u8 i2c_data) int m5602_write_bridge(struct sd *sd, const u8 address, const u8 i2c_data)
{ {
int err; int err;
struct gspca_dev *gspca_dev = (struct gspca_dev *) sd;
struct usb_device *udev = sd->gspca_dev.dev; struct usb_device *udev = sd->gspca_dev.dev;
__u8 *buf = sd->gspca_dev.usb_buf; __u8 *buf = sd->gspca_dev.usb_buf;
...@@ -98,6 +100,7 @@ int m5602_read_sensor(struct sd *sd, const u8 address, ...@@ -98,6 +100,7 @@ int m5602_read_sensor(struct sd *sd, const u8 address,
u8 *i2c_data, const u8 len) u8 *i2c_data, const u8 len)
{ {
int err, i; int err, i;
struct gspca_dev *gspca_dev = (struct gspca_dev *) sd;
if (!len || len > sd->sensor->i2c_regW) if (!len || len > sd->sensor->i2c_regW)
return -EINVAL; return -EINVAL;
...@@ -147,6 +150,7 @@ int m5602_write_sensor(struct sd *sd, const u8 address, ...@@ -147,6 +150,7 @@ int m5602_write_sensor(struct sd *sd, const u8 address,
{ {
int err, i; int err, i;
u8 *p; u8 *p;
struct gspca_dev *gspca_dev = (struct gspca_dev *) sd;
struct usb_device *udev = sd->gspca_dev.dev; struct usb_device *udev = sd->gspca_dev.dev;
__u8 *buf = sd->gspca_dev.usb_buf; __u8 *buf = sd->gspca_dev.usb_buf;
...@@ -378,7 +382,7 @@ static int m5602_configure(struct gspca_dev *gspca_dev, ...@@ -378,7 +382,7 @@ static int m5602_configure(struct gspca_dev *gspca_dev,
return 0; return 0;
fail: fail:
PDEBUG(D_ERR, "ALi m5602 webcam failed"); PERR("ALi m5602 webcam failed");
cam->cam_mode = NULL; cam->cam_mode = NULL;
cam->nmodes = 0; cam->nmodes = 0;
......
...@@ -56,6 +56,7 @@ int mt9m111_probe(struct sd *sd) ...@@ -56,6 +56,7 @@ int mt9m111_probe(struct sd *sd)
{ {
u8 data[2] = {0x00, 0x00}; u8 data[2] = {0x00, 0x00};
int i; int i;
struct gspca_dev *gspca_dev = (struct gspca_dev *)sd;
if (force_sensor) { if (force_sensor) {
if (force_sensor == MT9M111_SENSOR) { if (force_sensor == MT9M111_SENSOR) {
...@@ -169,6 +170,7 @@ int mt9m111_start(struct sd *sd) ...@@ -169,6 +170,7 @@ int mt9m111_start(struct sd *sd)
int i, err = 0; int i, err = 0;
u8 data[2]; u8 data[2];
struct cam *cam = &sd->gspca_dev.cam; struct cam *cam = &sd->gspca_dev.cam;
struct gspca_dev *gspca_dev = (struct gspca_dev *)sd;
int width = cam->cam_mode[sd->gspca_dev.curr_mode].width - 1; int width = cam->cam_mode[sd->gspca_dev.curr_mode].width - 1;
int height = cam->cam_mode[sd->gspca_dev.curr_mode].height; int height = cam->cam_mode[sd->gspca_dev.curr_mode].height;
...@@ -229,11 +231,11 @@ int mt9m111_start(struct sd *sd) ...@@ -229,11 +231,11 @@ int mt9m111_start(struct sd *sd)
switch (width) { switch (width) {
case 640: case 640:
PDEBUG(D_V4L2, "Configuring camera for VGA mode"); PDEBUG(D_CONF, "Configuring camera for VGA mode");
break; break;
case 320: case 320:
PDEBUG(D_V4L2, "Configuring camera for QVGA mode"); PDEBUG(D_CONF, "Configuring camera for QVGA mode");
break; break;
} }
return err; return err;
...@@ -252,7 +254,7 @@ static int mt9m111_set_hvflip(struct gspca_dev *gspca_dev) ...@@ -252,7 +254,7 @@ static int mt9m111_set_hvflip(struct gspca_dev *gspca_dev)
int hflip; int hflip;
int vflip; int vflip;
PDEBUG(D_V4L2, "Set hvflip to %d %d", sd->hflip->val, sd->vflip->val); PDEBUG(D_CONF, "Set hvflip to %d %d", sd->hflip->val, sd->vflip->val);
/* The mt9m111 is flipped by default */ /* The mt9m111 is flipped by default */
hflip = !sd->hflip->val; hflip = !sd->hflip->val;
...@@ -293,7 +295,7 @@ static int mt9m111_set_auto_white_balance(struct gspca_dev *gspca_dev, ...@@ -293,7 +295,7 @@ static int mt9m111_set_auto_white_balance(struct gspca_dev *gspca_dev,
err = m5602_write_sensor(sd, MT9M111_CP_OPERATING_MODE_CTL, data, 2); err = m5602_write_sensor(sd, MT9M111_CP_OPERATING_MODE_CTL, data, 2);
PDEBUG(D_V4L2, "Set auto white balance %d", val); PDEBUG(D_CONF, "Set auto white balance %d", val);
return err; return err;
} }
...@@ -326,7 +328,7 @@ static int mt9m111_set_gain(struct gspca_dev *gspca_dev, __s32 val) ...@@ -326,7 +328,7 @@ static int mt9m111_set_gain(struct gspca_dev *gspca_dev, __s32 val)
data[1] = (tmp & 0xff); data[1] = (tmp & 0xff);
data[0] = (tmp & 0xff00) >> 8; data[0] = (tmp & 0xff00) >> 8;
PDEBUG(D_V4L2, "tmp=%d, data[1]=%d, data[0]=%d", tmp, PDEBUG(D_CONF, "tmp=%d, data[1]=%d, data[0]=%d", tmp,
data[1], data[0]); data[1], data[0]);
err = m5602_write_sensor(sd, MT9M111_SC_GLOBAL_GAIN, err = m5602_write_sensor(sd, MT9M111_SC_GLOBAL_GAIN,
...@@ -344,7 +346,7 @@ static int mt9m111_set_green_balance(struct gspca_dev *gspca_dev, __s32 val) ...@@ -344,7 +346,7 @@ static int mt9m111_set_green_balance(struct gspca_dev *gspca_dev, __s32 val)
data[1] = (val & 0xff); data[1] = (val & 0xff);
data[0] = (val & 0xff00) >> 8; data[0] = (val & 0xff00) >> 8;
PDEBUG(D_V4L2, "Set green balance %d", val); PDEBUG(D_CONF, "Set green balance %d", val);
err = m5602_write_sensor(sd, MT9M111_SC_GREEN_1_GAIN, err = m5602_write_sensor(sd, MT9M111_SC_GREEN_1_GAIN,
data, 2); data, 2);
if (err < 0) if (err < 0)
...@@ -362,7 +364,7 @@ static int mt9m111_set_blue_balance(struct gspca_dev *gspca_dev, __s32 val) ...@@ -362,7 +364,7 @@ static int mt9m111_set_blue_balance(struct gspca_dev *gspca_dev, __s32 val)
data[1] = (val & 0xff); data[1] = (val & 0xff);
data[0] = (val & 0xff00) >> 8; data[0] = (val & 0xff00) >> 8;
PDEBUG(D_V4L2, "Set blue balance %d", val); PDEBUG(D_CONF, "Set blue balance %d", val);
return m5602_write_sensor(sd, MT9M111_SC_BLUE_GAIN, return m5602_write_sensor(sd, MT9M111_SC_BLUE_GAIN,
data, 2); data, 2);
...@@ -376,7 +378,7 @@ static int mt9m111_set_red_balance(struct gspca_dev *gspca_dev, __s32 val) ...@@ -376,7 +378,7 @@ static int mt9m111_set_red_balance(struct gspca_dev *gspca_dev, __s32 val)
data[1] = (val & 0xff); data[1] = (val & 0xff);
data[0] = (val & 0xff00) >> 8; data[0] = (val & 0xff00) >> 8;
PDEBUG(D_V4L2, "Set red balance %d", val); PDEBUG(D_CONF, "Set red balance %d", val);
return m5602_write_sensor(sd, MT9M111_SC_RED_GAIN, return m5602_write_sensor(sd, MT9M111_SC_RED_GAIN,
data, 2); data, 2);
......
...@@ -175,7 +175,7 @@ static int ov7660_set_gain(struct gspca_dev *gspca_dev, __s32 val) ...@@ -175,7 +175,7 @@ static int ov7660_set_gain(struct gspca_dev *gspca_dev, __s32 val)
u8 i2c_data = val; u8 i2c_data = val;
struct sd *sd = (struct sd *) gspca_dev; struct sd *sd = (struct sd *) gspca_dev;
PDEBUG(D_V4L2, "Setting gain to %d", val); PDEBUG(D_CONF, "Setting gain to %d", val);
err = m5602_write_sensor(sd, OV7660_GAIN, &i2c_data, 1); err = m5602_write_sensor(sd, OV7660_GAIN, &i2c_data, 1);
return err; return err;
...@@ -188,7 +188,7 @@ static int ov7660_set_auto_white_balance(struct gspca_dev *gspca_dev, ...@@ -188,7 +188,7 @@ static int ov7660_set_auto_white_balance(struct gspca_dev *gspca_dev,
u8 i2c_data; u8 i2c_data;
struct sd *sd = (struct sd *) gspca_dev; struct sd *sd = (struct sd *) gspca_dev;
PDEBUG(D_V4L2, "Set auto white balance to %d", val); PDEBUG(D_CONF, "Set auto white balance to %d", val);
err = m5602_read_sensor(sd, OV7660_COM8, &i2c_data, 1); err = m5602_read_sensor(sd, OV7660_COM8, &i2c_data, 1);
if (err < 0) if (err < 0)
...@@ -206,7 +206,7 @@ static int ov7660_set_auto_gain(struct gspca_dev *gspca_dev, __s32 val) ...@@ -206,7 +206,7 @@ static int ov7660_set_auto_gain(struct gspca_dev *gspca_dev, __s32 val)
u8 i2c_data; u8 i2c_data;
struct sd *sd = (struct sd *) gspca_dev; struct sd *sd = (struct sd *) gspca_dev;
PDEBUG(D_V4L2, "Set auto gain control to %d", val); PDEBUG(D_CONF, "Set auto gain control to %d", val);
err = m5602_read_sensor(sd, OV7660_COM8, &i2c_data, 1); err = m5602_read_sensor(sd, OV7660_COM8, &i2c_data, 1);
if (err < 0) if (err < 0)
...@@ -224,7 +224,7 @@ static int ov7660_set_auto_exposure(struct gspca_dev *gspca_dev, ...@@ -224,7 +224,7 @@ static int ov7660_set_auto_exposure(struct gspca_dev *gspca_dev,
u8 i2c_data; u8 i2c_data;
struct sd *sd = (struct sd *) gspca_dev; struct sd *sd = (struct sd *) gspca_dev;
PDEBUG(D_V4L2, "Set auto exposure control to %d", val); PDEBUG(D_CONF, "Set auto exposure control to %d", val);
err = m5602_read_sensor(sd, OV7660_COM8, &i2c_data, 1); err = m5602_read_sensor(sd, OV7660_COM8, &i2c_data, 1);
if (err < 0) if (err < 0)
...@@ -242,7 +242,7 @@ static int ov7660_set_hvflip(struct gspca_dev *gspca_dev) ...@@ -242,7 +242,7 @@ static int ov7660_set_hvflip(struct gspca_dev *gspca_dev)
u8 i2c_data; u8 i2c_data;
struct sd *sd = (struct sd *) gspca_dev; struct sd *sd = (struct sd *) gspca_dev;
PDEBUG(D_V4L2, "Set hvflip to %d, %d", sd->hflip->val, sd->vflip->val); PDEBUG(D_CONF, "Set hvflip to %d, %d", sd->hflip->val, sd->vflip->val);
i2c_data = (sd->hflip->val << 5) | (sd->vflip->val << 4); i2c_data = (sd->hflip->val << 5) | (sd->vflip->val << 4);
......
...@@ -147,6 +147,7 @@ int ov9650_probe(struct sd *sd) ...@@ -147,6 +147,7 @@ int ov9650_probe(struct sd *sd)
{ {
int err = 0; int err = 0;
u8 prod_id = 0, ver_id = 0, i; u8 prod_id = 0, ver_id = 0, i;
struct gspca_dev *gspca_dev = (struct gspca_dev *)sd;
if (force_sensor) { if (force_sensor) {
if (force_sensor == OV9650_SENSOR) { if (force_sensor == OV9650_SENSOR) {
...@@ -268,6 +269,7 @@ int ov9650_start(struct sd *sd) ...@@ -268,6 +269,7 @@ int ov9650_start(struct sd *sd)
int height = cam->cam_mode[sd->gspca_dev.curr_mode].height; int height = cam->cam_mode[sd->gspca_dev.curr_mode].height;
int ver_offs = cam->cam_mode[sd->gspca_dev.curr_mode].priv; int ver_offs = cam->cam_mode[sd->gspca_dev.curr_mode].priv;
int hor_offs = OV9650_LEFT_OFFSET; int hor_offs = OV9650_LEFT_OFFSET;
struct gspca_dev *gspca_dev = (struct gspca_dev *)sd;
if ((!dmi_check_system(ov9650_flip_dmi_table) && if ((!dmi_check_system(ov9650_flip_dmi_table) &&
sd->vflip->val) || sd->vflip->val) ||
...@@ -351,7 +353,7 @@ int ov9650_start(struct sd *sd) ...@@ -351,7 +353,7 @@ int ov9650_start(struct sd *sd)
switch (width) { switch (width) {
case 640: case 640:
PDEBUG(D_V4L2, "Configuring camera for VGA mode"); PDEBUG(D_CONF, "Configuring camera for VGA mode");
data = OV9650_VGA_SELECT | OV9650_RGB_SELECT | data = OV9650_VGA_SELECT | OV9650_RGB_SELECT |
OV9650_RAW_RGB_SELECT; OV9650_RAW_RGB_SELECT;
...@@ -359,7 +361,7 @@ int ov9650_start(struct sd *sd) ...@@ -359,7 +361,7 @@ int ov9650_start(struct sd *sd)
break; break;
case 352: case 352:
PDEBUG(D_V4L2, "Configuring camera for CIF mode"); PDEBUG(D_CONF, "Configuring camera for CIF mode");
data = OV9650_CIF_SELECT | OV9650_RGB_SELECT | data = OV9650_CIF_SELECT | OV9650_RGB_SELECT |
OV9650_RAW_RGB_SELECT; OV9650_RAW_RGB_SELECT;
...@@ -367,7 +369,7 @@ int ov9650_start(struct sd *sd) ...@@ -367,7 +369,7 @@ int ov9650_start(struct sd *sd)
break; break;
case 320: case 320:
PDEBUG(D_V4L2, "Configuring camera for QVGA mode"); PDEBUG(D_CONF, "Configuring camera for QVGA mode");
data = OV9650_QVGA_SELECT | OV9650_RGB_SELECT | data = OV9650_QVGA_SELECT | OV9650_RGB_SELECT |
OV9650_RAW_RGB_SELECT; OV9650_RAW_RGB_SELECT;
...@@ -375,7 +377,7 @@ int ov9650_start(struct sd *sd) ...@@ -375,7 +377,7 @@ int ov9650_start(struct sd *sd)
break; break;
case 176: case 176:
PDEBUG(D_V4L2, "Configuring camera for QCIF mode"); PDEBUG(D_CONF, "Configuring camera for QCIF mode");
data = OV9650_QCIF_SELECT | OV9650_RGB_SELECT | data = OV9650_QCIF_SELECT | OV9650_RGB_SELECT |
OV9650_RAW_RGB_SELECT; OV9650_RAW_RGB_SELECT;
...@@ -404,7 +406,7 @@ static int ov9650_set_exposure(struct gspca_dev *gspca_dev, __s32 val) ...@@ -404,7 +406,7 @@ static int ov9650_set_exposure(struct gspca_dev *gspca_dev, __s32 val)
u8 i2c_data; u8 i2c_data;
int err; int err;
PDEBUG(D_V4L2, "Set exposure to %d", val); PDEBUG(D_CONF, "Set exposure to %d", val);
/* The 6 MSBs */ /* The 6 MSBs */
i2c_data = (val >> 10) & 0x3f; i2c_data = (val >> 10) & 0x3f;
...@@ -432,7 +434,7 @@ static int ov9650_set_gain(struct gspca_dev *gspca_dev, __s32 val) ...@@ -432,7 +434,7 @@ static int ov9650_set_gain(struct gspca_dev *gspca_dev, __s32 val)
u8 i2c_data; u8 i2c_data;
struct sd *sd = (struct sd *) gspca_dev; struct sd *sd = (struct sd *) gspca_dev;
PDEBUG(D_V4L2, "Setting gain to %d", val); PDEBUG(D_CONF, "Setting gain to %d", val);
/* The 2 MSB */ /* The 2 MSB */
/* Read the OV9650_VREF register first to avoid /* Read the OV9650_VREF register first to avoid
...@@ -460,7 +462,7 @@ static int ov9650_set_red_balance(struct gspca_dev *gspca_dev, __s32 val) ...@@ -460,7 +462,7 @@ static int ov9650_set_red_balance(struct gspca_dev *gspca_dev, __s32 val)
u8 i2c_data; u8 i2c_data;
struct sd *sd = (struct sd *) gspca_dev; struct sd *sd = (struct sd *) gspca_dev;
PDEBUG(D_V4L2, "Set red gain to %d", val); PDEBUG(D_CONF, "Set red gain to %d", val);
i2c_data = val & 0xff; i2c_data = val & 0xff;
err = m5602_write_sensor(sd, OV9650_RED, &i2c_data, 1); err = m5602_write_sensor(sd, OV9650_RED, &i2c_data, 1);
...@@ -473,7 +475,7 @@ static int ov9650_set_blue_balance(struct gspca_dev *gspca_dev, __s32 val) ...@@ -473,7 +475,7 @@ static int ov9650_set_blue_balance(struct gspca_dev *gspca_dev, __s32 val)
u8 i2c_data; u8 i2c_data;
struct sd *sd = (struct sd *) gspca_dev; struct sd *sd = (struct sd *) gspca_dev;
PDEBUG(D_V4L2, "Set blue gain to %d", val); PDEBUG(D_CONF, "Set blue gain to %d", val);
i2c_data = val & 0xff; i2c_data = val & 0xff;
err = m5602_write_sensor(sd, OV9650_BLUE, &i2c_data, 1); err = m5602_write_sensor(sd, OV9650_BLUE, &i2c_data, 1);
...@@ -488,7 +490,7 @@ static int ov9650_set_hvflip(struct gspca_dev *gspca_dev) ...@@ -488,7 +490,7 @@ static int ov9650_set_hvflip(struct gspca_dev *gspca_dev)
int hflip = sd->hflip->val; int hflip = sd->hflip->val;
int vflip = sd->vflip->val; int vflip = sd->vflip->val;
PDEBUG(D_V4L2, "Set hvflip to %d %d", hflip, vflip); PDEBUG(D_CONF, "Set hvflip to %d %d", hflip, vflip);
if (dmi_check_system(ov9650_flip_dmi_table)) if (dmi_check_system(ov9650_flip_dmi_table))
vflip = !vflip; vflip = !vflip;
...@@ -512,7 +514,7 @@ static int ov9650_set_auto_exposure(struct gspca_dev *gspca_dev, ...@@ -512,7 +514,7 @@ static int ov9650_set_auto_exposure(struct gspca_dev *gspca_dev,
u8 i2c_data; u8 i2c_data;
struct sd *sd = (struct sd *) gspca_dev; struct sd *sd = (struct sd *) gspca_dev;
PDEBUG(D_V4L2, "Set auto exposure control to %d", val); PDEBUG(D_CONF, "Set auto exposure control to %d", val);
err = m5602_read_sensor(sd, OV9650_COM8, &i2c_data, 1); err = m5602_read_sensor(sd, OV9650_COM8, &i2c_data, 1);
if (err < 0) if (err < 0)
...@@ -531,7 +533,7 @@ static int ov9650_set_auto_white_balance(struct gspca_dev *gspca_dev, ...@@ -531,7 +533,7 @@ static int ov9650_set_auto_white_balance(struct gspca_dev *gspca_dev,
u8 i2c_data; u8 i2c_data;
struct sd *sd = (struct sd *) gspca_dev; struct sd *sd = (struct sd *) gspca_dev;
PDEBUG(D_V4L2, "Set auto white balance to %d", val); PDEBUG(D_CONF, "Set auto white balance to %d", val);
err = m5602_read_sensor(sd, OV9650_COM8, &i2c_data, 1); err = m5602_read_sensor(sd, OV9650_COM8, &i2c_data, 1);
if (err < 0) if (err < 0)
...@@ -549,7 +551,7 @@ static int ov9650_set_auto_gain(struct gspca_dev *gspca_dev, __s32 val) ...@@ -549,7 +551,7 @@ static int ov9650_set_auto_gain(struct gspca_dev *gspca_dev, __s32 val)
u8 i2c_data; u8 i2c_data;
struct sd *sd = (struct sd *) gspca_dev; struct sd *sd = (struct sd *) gspca_dev;
PDEBUG(D_V4L2, "Set auto gain control to %d", val); PDEBUG(D_CONF, "Set auto gain control to %d", val);
err = m5602_read_sensor(sd, OV9650_COM8, &i2c_data, 1); err = m5602_read_sensor(sd, OV9650_COM8, &i2c_data, 1);
if (err < 0) if (err < 0)
......
...@@ -55,6 +55,7 @@ static const struct v4l2_ctrl_config po1030_greenbal_cfg = { ...@@ -55,6 +55,7 @@ static const struct v4l2_ctrl_config po1030_greenbal_cfg = {
int po1030_probe(struct sd *sd) int po1030_probe(struct sd *sd)
{ {
u8 dev_id_h = 0, i; u8 dev_id_h = 0, i;
struct gspca_dev *gspca_dev = (struct gspca_dev *)sd;
if (force_sensor) { if (force_sensor) {
if (force_sensor == PO1030_SENSOR) { if (force_sensor == PO1030_SENSOR) {
...@@ -305,10 +306,10 @@ static int po1030_set_exposure(struct gspca_dev *gspca_dev, __s32 val) ...@@ -305,10 +306,10 @@ static int po1030_set_exposure(struct gspca_dev *gspca_dev, __s32 val)
u8 i2c_data; u8 i2c_data;
int err; int err;
PDEBUG(D_V4L2, "Set exposure to %d", val & 0xffff); PDEBUG(D_CONF, "Set exposure to %d", val & 0xffff);
i2c_data = ((val & 0xff00) >> 8); i2c_data = ((val & 0xff00) >> 8);
PDEBUG(D_V4L2, "Set exposure to high byte to 0x%x", PDEBUG(D_CONF, "Set exposure to high byte to 0x%x",
i2c_data); i2c_data);
err = m5602_write_sensor(sd, PO1030_INTEGLINES_H, err = m5602_write_sensor(sd, PO1030_INTEGLINES_H,
...@@ -317,7 +318,7 @@ static int po1030_set_exposure(struct gspca_dev *gspca_dev, __s32 val) ...@@ -317,7 +318,7 @@ static int po1030_set_exposure(struct gspca_dev *gspca_dev, __s32 val)
return err; return err;
i2c_data = (val & 0xff); i2c_data = (val & 0xff);
PDEBUG(D_V4L2, "Set exposure to low byte to 0x%x", PDEBUG(D_CONF, "Set exposure to low byte to 0x%x",
i2c_data); i2c_data);
err = m5602_write_sensor(sd, PO1030_INTEGLINES_M, err = m5602_write_sensor(sd, PO1030_INTEGLINES_M,
&i2c_data, 1); &i2c_data, 1);
...@@ -332,7 +333,7 @@ static int po1030_set_gain(struct gspca_dev *gspca_dev, __s32 val) ...@@ -332,7 +333,7 @@ static int po1030_set_gain(struct gspca_dev *gspca_dev, __s32 val)
int err; int err;
i2c_data = val & 0xff; i2c_data = val & 0xff;
PDEBUG(D_V4L2, "Set global gain to %d", i2c_data); PDEBUG(D_CONF, "Set global gain to %d", i2c_data);
err = m5602_write_sensor(sd, PO1030_GLOBALGAIN, err = m5602_write_sensor(sd, PO1030_GLOBALGAIN,
&i2c_data, 1); &i2c_data, 1);
return err; return err;
...@@ -344,7 +345,7 @@ static int po1030_set_hvflip(struct gspca_dev *gspca_dev) ...@@ -344,7 +345,7 @@ static int po1030_set_hvflip(struct gspca_dev *gspca_dev)
u8 i2c_data; u8 i2c_data;
int err; int err;
PDEBUG(D_V4L2, "Set hvflip %d %d", sd->hflip->val, sd->vflip->val); PDEBUG(D_CONF, "Set hvflip %d %d", sd->hflip->val, sd->vflip->val);
err = m5602_read_sensor(sd, PO1030_CONTROL2, &i2c_data, 1); err = m5602_read_sensor(sd, PO1030_CONTROL2, &i2c_data, 1);
if (err < 0) if (err < 0)
return err; return err;
...@@ -365,7 +366,7 @@ static int po1030_set_red_balance(struct gspca_dev *gspca_dev, __s32 val) ...@@ -365,7 +366,7 @@ static int po1030_set_red_balance(struct gspca_dev *gspca_dev, __s32 val)
int err; int err;
i2c_data = val & 0xff; i2c_data = val & 0xff;
PDEBUG(D_V4L2, "Set red gain to %d", i2c_data); PDEBUG(D_CONF, "Set red gain to %d", i2c_data);
err = m5602_write_sensor(sd, PO1030_RED_GAIN, err = m5602_write_sensor(sd, PO1030_RED_GAIN,
&i2c_data, 1); &i2c_data, 1);
return err; return err;
...@@ -378,7 +379,7 @@ static int po1030_set_blue_balance(struct gspca_dev *gspca_dev, __s32 val) ...@@ -378,7 +379,7 @@ static int po1030_set_blue_balance(struct gspca_dev *gspca_dev, __s32 val)
int err; int err;
i2c_data = val & 0xff; i2c_data = val & 0xff;
PDEBUG(D_V4L2, "Set blue gain to %d", i2c_data); PDEBUG(D_CONF, "Set blue gain to %d", i2c_data);
err = m5602_write_sensor(sd, PO1030_BLUE_GAIN, err = m5602_write_sensor(sd, PO1030_BLUE_GAIN,
&i2c_data, 1); &i2c_data, 1);
...@@ -392,7 +393,7 @@ static int po1030_set_green_balance(struct gspca_dev *gspca_dev, __s32 val) ...@@ -392,7 +393,7 @@ static int po1030_set_green_balance(struct gspca_dev *gspca_dev, __s32 val)
int err; int err;
i2c_data = val & 0xff; i2c_data = val & 0xff;
PDEBUG(D_V4L2, "Set green gain to %d", i2c_data); PDEBUG(D_CONF, "Set green gain to %d", i2c_data);
err = m5602_write_sensor(sd, PO1030_GREEN_1_GAIN, err = m5602_write_sensor(sd, PO1030_GREEN_1_GAIN,
&i2c_data, 1); &i2c_data, 1);
...@@ -414,7 +415,7 @@ static int po1030_set_auto_white_balance(struct gspca_dev *gspca_dev, ...@@ -414,7 +415,7 @@ static int po1030_set_auto_white_balance(struct gspca_dev *gspca_dev,
if (err < 0) if (err < 0)
return err; return err;
PDEBUG(D_V4L2, "Set auto white balance to %d", val); PDEBUG(D_CONF, "Set auto white balance to %d", val);
i2c_data = (i2c_data & 0xfe) | (val & 0x01); i2c_data = (i2c_data & 0xfe) | (val & 0x01);
err = m5602_write_sensor(sd, PO1030_AUTOCTRL1, &i2c_data, 1); err = m5602_write_sensor(sd, PO1030_AUTOCTRL1, &i2c_data, 1);
return err; return err;
...@@ -431,7 +432,7 @@ static int po1030_set_auto_exposure(struct gspca_dev *gspca_dev, ...@@ -431,7 +432,7 @@ static int po1030_set_auto_exposure(struct gspca_dev *gspca_dev,
if (err < 0) if (err < 0)
return err; return err;
PDEBUG(D_V4L2, "Set auto exposure to %d", val); PDEBUG(D_CONF, "Set auto exposure to %d", val);
val = (val == V4L2_EXPOSURE_AUTO); val = (val == V4L2_EXPOSURE_AUTO);
i2c_data = (i2c_data & 0xfd) | ((val & 0x01) << 1); i2c_data = (i2c_data & 0xfd) | ((val & 0x01) << 1);
return m5602_write_sensor(sd, PO1030_AUTOCTRL1, &i2c_data, 1); return m5602_write_sensor(sd, PO1030_AUTOCTRL1, &i2c_data, 1);
......
...@@ -145,6 +145,7 @@ int s5k4aa_probe(struct sd *sd) ...@@ -145,6 +145,7 @@ int s5k4aa_probe(struct sd *sd)
{ {
u8 prod_id[6] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; u8 prod_id[6] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
const u8 expected_prod_id[6] = {0x00, 0x10, 0x00, 0x4b, 0x33, 0x75}; const u8 expected_prod_id[6] = {0x00, 0x10, 0x00, 0x4b, 0x33, 0x75};
struct gspca_dev *gspca_dev = (struct gspca_dev *)sd;
int i, err = 0; int i, err = 0;
if (force_sensor) { if (force_sensor) {
...@@ -215,10 +216,11 @@ int s5k4aa_start(struct sd *sd) ...@@ -215,10 +216,11 @@ int s5k4aa_start(struct sd *sd)
int i, err = 0; int i, err = 0;
u8 data[2]; u8 data[2];
struct cam *cam = &sd->gspca_dev.cam; struct cam *cam = &sd->gspca_dev.cam;
struct gspca_dev *gspca_dev = (struct gspca_dev *)sd;
switch (cam->cam_mode[sd->gspca_dev.curr_mode].width) { switch (cam->cam_mode[sd->gspca_dev.curr_mode].width) {
case 1280: case 1280:
PDEBUG(D_V4L2, "Configuring camera for SXGA mode"); PDEBUG(D_CONF, "Configuring camera for SXGA mode");
for (i = 0; i < ARRAY_SIZE(SXGA_s5k4aa); i++) { for (i = 0; i < ARRAY_SIZE(SXGA_s5k4aa); i++) {
switch (SXGA_s5k4aa[i][0]) { switch (SXGA_s5k4aa[i][0]) {
...@@ -251,7 +253,7 @@ int s5k4aa_start(struct sd *sd) ...@@ -251,7 +253,7 @@ int s5k4aa_start(struct sd *sd)
break; break;
case 640: case 640:
PDEBUG(D_V4L2, "Configuring camera for VGA mode"); PDEBUG(D_CONF, "Configuring camera for VGA mode");
for (i = 0; i < ARRAY_SIZE(VGA_s5k4aa); i++) { for (i = 0; i < ARRAY_SIZE(VGA_s5k4aa); i++) {
switch (VGA_s5k4aa[i][0]) { switch (VGA_s5k4aa[i][0]) {
...@@ -367,7 +369,7 @@ static int s5k4aa_set_exposure(struct gspca_dev *gspca_dev, __s32 val) ...@@ -367,7 +369,7 @@ static int s5k4aa_set_exposure(struct gspca_dev *gspca_dev, __s32 val)
u8 data = S5K4AA_PAGE_MAP_2; u8 data = S5K4AA_PAGE_MAP_2;
int err; int err;
PDEBUG(D_V4L2, "Set exposure to %d", val); PDEBUG(D_CONF, "Set exposure to %d", val);
err = m5602_write_sensor(sd, S5K4AA_PAGE_MAP, &data, 1); err = m5602_write_sensor(sd, S5K4AA_PAGE_MAP, &data, 1);
if (err < 0) if (err < 0)
return err; return err;
...@@ -389,7 +391,7 @@ static int s5k4aa_set_hvflip(struct gspca_dev *gspca_dev) ...@@ -389,7 +391,7 @@ static int s5k4aa_set_hvflip(struct gspca_dev *gspca_dev)
int hflip = sd->hflip->val; int hflip = sd->hflip->val;
int vflip = sd->vflip->val; int vflip = sd->vflip->val;
PDEBUG(D_V4L2, "Set hvflip %d %d", hflip, vflip); PDEBUG(D_CONF, "Set hvflip %d %d", hflip, vflip);
err = m5602_write_sensor(sd, S5K4AA_PAGE_MAP, &data, 1); err = m5602_write_sensor(sd, S5K4AA_PAGE_MAP, &data, 1);
if (err < 0) if (err < 0)
return err; return err;
...@@ -439,7 +441,7 @@ static int s5k4aa_set_gain(struct gspca_dev *gspca_dev, __s32 val) ...@@ -439,7 +441,7 @@ static int s5k4aa_set_gain(struct gspca_dev *gspca_dev, __s32 val)
u8 data = S5K4AA_PAGE_MAP_2; u8 data = S5K4AA_PAGE_MAP_2;
int err; int err;
PDEBUG(D_V4L2, "Set gain to %d", val); PDEBUG(D_CONF, "Set gain to %d", val);
err = m5602_write_sensor(sd, S5K4AA_PAGE_MAP, &data, 1); err = m5602_write_sensor(sd, S5K4AA_PAGE_MAP, &data, 1);
if (err < 0) if (err < 0)
return err; return err;
...@@ -456,7 +458,7 @@ static int s5k4aa_set_brightness(struct gspca_dev *gspca_dev, __s32 val) ...@@ -456,7 +458,7 @@ static int s5k4aa_set_brightness(struct gspca_dev *gspca_dev, __s32 val)
u8 data = S5K4AA_PAGE_MAP_2; u8 data = S5K4AA_PAGE_MAP_2;
int err; int err;
PDEBUG(D_V4L2, "Set brightness to %d", val); PDEBUG(D_CONF, "Set brightness to %d", val);
err = m5602_write_sensor(sd, S5K4AA_PAGE_MAP, &data, 1); err = m5602_write_sensor(sd, S5K4AA_PAGE_MAP, &data, 1);
if (err < 0) if (err < 0)
return err; return err;
...@@ -471,7 +473,7 @@ static int s5k4aa_set_noise(struct gspca_dev *gspca_dev, __s32 val) ...@@ -471,7 +473,7 @@ static int s5k4aa_set_noise(struct gspca_dev *gspca_dev, __s32 val)
u8 data = S5K4AA_PAGE_MAP_2; u8 data = S5K4AA_PAGE_MAP_2;
int err; int err;
PDEBUG(D_V4L2, "Set noise to %d", val); PDEBUG(D_CONF, "Set noise to %d", val);
err = m5602_write_sensor(sd, S5K4AA_PAGE_MAP, &data, 1); err = m5602_write_sensor(sd, S5K4AA_PAGE_MAP, &data, 1);
if (err < 0) if (err < 0)
return err; return err;
......
...@@ -51,6 +51,7 @@ int s5k83a_probe(struct sd *sd) ...@@ -51,6 +51,7 @@ int s5k83a_probe(struct sd *sd)
{ {
u8 prod_id = 0, ver_id = 0; u8 prod_id = 0, ver_id = 0;
int i, err = 0; int i, err = 0;
struct gspca_dev *gspca_dev = (struct gspca_dev *)sd;
if (force_sensor) { if (force_sensor) {
if (force_sensor == S5K83A_SENSOR) { if (force_sensor == S5K83A_SENSOR) {
......
...@@ -289,7 +289,7 @@ static int zero_the_pointer(struct gspca_dev *gspca_dev) ...@@ -289,7 +289,7 @@ static int zero_the_pointer(struct gspca_dev *gspca_dev)
return err_code; return err_code;
} }
if (status != 0x0a) if (status != 0x0a)
PDEBUG(D_ERR, "status is %02x", status); PERR("status is %02x", status);
tries = 0; tries = 0;
while (tries < 4) { while (tries < 4) {
...@@ -330,7 +330,7 @@ static void stream_stop(struct gspca_dev *gspca_dev) ...@@ -330,7 +330,7 @@ static void stream_stop(struct gspca_dev *gspca_dev)
gspca_dev->usb_buf[0] = 0x01; gspca_dev->usb_buf[0] = 0x01;
gspca_dev->usb_buf[1] = 0x00; gspca_dev->usb_buf[1] = 0x00;
if (mr_write(gspca_dev, 2) < 0) if (mr_write(gspca_dev, 2) < 0)
PDEBUG(D_ERR, "Stream Stop failed"); PERR("Stream Stop failed");
} }
static void lcd_stop(struct gspca_dev *gspca_dev) static void lcd_stop(struct gspca_dev *gspca_dev)
...@@ -338,7 +338,7 @@ static void lcd_stop(struct gspca_dev *gspca_dev) ...@@ -338,7 +338,7 @@ static void lcd_stop(struct gspca_dev *gspca_dev)
gspca_dev->usb_buf[0] = 0x19; gspca_dev->usb_buf[0] = 0x19;
gspca_dev->usb_buf[1] = 0x54; gspca_dev->usb_buf[1] = 0x54;
if (mr_write(gspca_dev, 2) < 0) if (mr_write(gspca_dev, 2) < 0)
PDEBUG(D_ERR, "LCD Stop failed"); PERR("LCD Stop failed");
} }
static int isoc_enable(struct gspca_dev *gspca_dev) static int isoc_enable(struct gspca_dev *gspca_dev)
...@@ -1026,7 +1026,7 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev, ...@@ -1026,7 +1026,7 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
struct sd *sd = (struct sd *) gspca_dev; struct sd *sd = (struct sd *) gspca_dev;
unsigned char *sof; unsigned char *sof;
sof = pac_find_sof(&sd->sof_read, data, len); sof = pac_find_sof(gspca_dev, &sd->sof_read, data, len);
if (sof) { if (sof) {
int n; int n;
......
...@@ -2034,6 +2034,7 @@ static unsigned char ov7670_abs_to_sm(unsigned char v) ...@@ -2034,6 +2034,7 @@ static unsigned char ov7670_abs_to_sm(unsigned char v)
/* Write a OV519 register */ /* Write a OV519 register */
static void reg_w(struct sd *sd, u16 index, u16 value) static void reg_w(struct sd *sd, u16 index, u16 value)
{ {
struct gspca_dev *gspca_dev = (struct gspca_dev *)sd;
int ret, req = 0; int ret, req = 0;
if (sd->gspca_dev.usb_err < 0) if (sd->gspca_dev.usb_err < 0)
...@@ -2071,7 +2072,7 @@ static void reg_w(struct sd *sd, u16 index, u16 value) ...@@ -2071,7 +2072,7 @@ static void reg_w(struct sd *sd, u16 index, u16 value)
sd->gspca_dev.usb_buf, 1, 500); sd->gspca_dev.usb_buf, 1, 500);
leave: leave:
if (ret < 0) { if (ret < 0) {
pr_err("reg_w %02x failed %d\n", index, ret); PERR("reg_w %02x failed %d\n", index, ret);
sd->gspca_dev.usb_err = ret; sd->gspca_dev.usb_err = ret;
return; return;
} }
...@@ -2081,6 +2082,7 @@ static void reg_w(struct sd *sd, u16 index, u16 value) ...@@ -2081,6 +2082,7 @@ static void reg_w(struct sd *sd, u16 index, u16 value)
/* returns: negative is error, pos or zero is data */ /* returns: negative is error, pos or zero is data */
static int reg_r(struct sd *sd, u16 index) static int reg_r(struct sd *sd, u16 index)
{ {
struct gspca_dev *gspca_dev = (struct gspca_dev *)sd;
int ret; int ret;
int req; int req;
...@@ -2110,7 +2112,7 @@ static int reg_r(struct sd *sd, u16 index) ...@@ -2110,7 +2112,7 @@ static int reg_r(struct sd *sd, u16 index)
PDEBUG(D_USBI, "GET %02x 0000 %04x %02x", PDEBUG(D_USBI, "GET %02x 0000 %04x %02x",
req, index, ret); req, index, ret);
} else { } else {
pr_err("reg_r %02x failed %d\n", index, ret); PERR("reg_r %02x failed %d\n", index, ret);
sd->gspca_dev.usb_err = ret; sd->gspca_dev.usb_err = ret;
} }
...@@ -2121,6 +2123,7 @@ static int reg_r(struct sd *sd, u16 index) ...@@ -2121,6 +2123,7 @@ static int reg_r(struct sd *sd, u16 index)
static int reg_r8(struct sd *sd, static int reg_r8(struct sd *sd,
u16 index) u16 index)
{ {
struct gspca_dev *gspca_dev = (struct gspca_dev *)sd;
int ret; int ret;
if (sd->gspca_dev.usb_err < 0) if (sd->gspca_dev.usb_err < 0)
...@@ -2135,7 +2138,7 @@ static int reg_r8(struct sd *sd, ...@@ -2135,7 +2138,7 @@ static int reg_r8(struct sd *sd,
if (ret >= 0) { if (ret >= 0) {
ret = sd->gspca_dev.usb_buf[0]; ret = sd->gspca_dev.usb_buf[0];
} else { } else {
pr_err("reg_r8 %02x failed %d\n", index, ret); PERR("reg_r8 %02x failed %d\n", index, ret);
sd->gspca_dev.usb_err = ret; sd->gspca_dev.usb_err = ret;
} }
...@@ -2174,6 +2177,7 @@ static void reg_w_mask(struct sd *sd, ...@@ -2174,6 +2177,7 @@ static void reg_w_mask(struct sd *sd,
*/ */
static void ov518_reg_w32(struct sd *sd, u16 index, u32 value, int n) static void ov518_reg_w32(struct sd *sd, u16 index, u32 value, int n)
{ {
struct gspca_dev *gspca_dev = (struct gspca_dev *)sd;
int ret; int ret;
if (sd->gspca_dev.usb_err < 0) if (sd->gspca_dev.usb_err < 0)
...@@ -2188,13 +2192,14 @@ static void ov518_reg_w32(struct sd *sd, u16 index, u32 value, int n) ...@@ -2188,13 +2192,14 @@ static void ov518_reg_w32(struct sd *sd, u16 index, u32 value, int n)
0, index, 0, index,
sd->gspca_dev.usb_buf, n, 500); sd->gspca_dev.usb_buf, n, 500);
if (ret < 0) { if (ret < 0) {
pr_err("reg_w32 %02x failed %d\n", index, ret); PERR("reg_w32 %02x failed %d\n", index, ret);
sd->gspca_dev.usb_err = ret; sd->gspca_dev.usb_err = ret;
} }
} }
static void ov511_i2c_w(struct sd *sd, u8 reg, u8 value) static void ov511_i2c_w(struct sd *sd, u8 reg, u8 value)
{ {
struct gspca_dev *gspca_dev = (struct gspca_dev *)sd;
int rc, retries; int rc, retries;
PDEBUG(D_USBO, "ov511_i2c_w %02x %02x", reg, value); PDEBUG(D_USBO, "ov511_i2c_w %02x %02x", reg, value);
...@@ -2228,6 +2233,7 @@ static void ov511_i2c_w(struct sd *sd, u8 reg, u8 value) ...@@ -2228,6 +2233,7 @@ static void ov511_i2c_w(struct sd *sd, u8 reg, u8 value)
static int ov511_i2c_r(struct sd *sd, u8 reg) static int ov511_i2c_r(struct sd *sd, u8 reg)
{ {
struct gspca_dev *gspca_dev = (struct gspca_dev *)sd;
int rc, value, retries; int rc, value, retries;
/* Two byte write cycle */ /* Two byte write cycle */
...@@ -2300,6 +2306,8 @@ static void ov518_i2c_w(struct sd *sd, ...@@ -2300,6 +2306,8 @@ static void ov518_i2c_w(struct sd *sd,
u8 reg, u8 reg,
u8 value) u8 value)
{ {
struct gspca_dev *gspca_dev = (struct gspca_dev *)sd;
PDEBUG(D_USBO, "ov518_i2c_w %02x %02x", reg, value); PDEBUG(D_USBO, "ov518_i2c_w %02x %02x", reg, value);
/* Select camera register */ /* Select camera register */
...@@ -2325,6 +2333,7 @@ static void ov518_i2c_w(struct sd *sd, ...@@ -2325,6 +2333,7 @@ static void ov518_i2c_w(struct sd *sd,
*/ */
static int ov518_i2c_r(struct sd *sd, u8 reg) static int ov518_i2c_r(struct sd *sd, u8 reg)
{ {
struct gspca_dev *gspca_dev = (struct gspca_dev *)sd;
int value; int value;
/* Select camera register */ /* Select camera register */
...@@ -2345,6 +2354,7 @@ static int ov518_i2c_r(struct sd *sd, u8 reg) ...@@ -2345,6 +2354,7 @@ static int ov518_i2c_r(struct sd *sd, u8 reg)
static void ovfx2_i2c_w(struct sd *sd, u8 reg, u8 value) static void ovfx2_i2c_w(struct sd *sd, u8 reg, u8 value)
{ {
struct gspca_dev *gspca_dev = (struct gspca_dev *)sd;
int ret; int ret;
if (sd->gspca_dev.usb_err < 0) if (sd->gspca_dev.usb_err < 0)
...@@ -2357,7 +2367,7 @@ static void ovfx2_i2c_w(struct sd *sd, u8 reg, u8 value) ...@@ -2357,7 +2367,7 @@ static void ovfx2_i2c_w(struct sd *sd, u8 reg, u8 value)
(u16) value, (u16) reg, NULL, 0, 500); (u16) value, (u16) reg, NULL, 0, 500);
if (ret < 0) { if (ret < 0) {
pr_err("ovfx2_i2c_w %02x failed %d\n", reg, ret); PERR("ovfx2_i2c_w %02x failed %d\n", reg, ret);
sd->gspca_dev.usb_err = ret; sd->gspca_dev.usb_err = ret;
} }
...@@ -2366,6 +2376,7 @@ static void ovfx2_i2c_w(struct sd *sd, u8 reg, u8 value) ...@@ -2366,6 +2376,7 @@ static void ovfx2_i2c_w(struct sd *sd, u8 reg, u8 value)
static int ovfx2_i2c_r(struct sd *sd, u8 reg) static int ovfx2_i2c_r(struct sd *sd, u8 reg)
{ {
struct gspca_dev *gspca_dev = (struct gspca_dev *)sd;
int ret; int ret;
if (sd->gspca_dev.usb_err < 0) if (sd->gspca_dev.usb_err < 0)
...@@ -2381,7 +2392,7 @@ static int ovfx2_i2c_r(struct sd *sd, u8 reg) ...@@ -2381,7 +2392,7 @@ static int ovfx2_i2c_r(struct sd *sd, u8 reg)
ret = sd->gspca_dev.usb_buf[0]; ret = sd->gspca_dev.usb_buf[0];
PDEBUG(D_USBI, "ovfx2_i2c_r %02x %02x", reg, ret); PDEBUG(D_USBI, "ovfx2_i2c_r %02x %02x", reg, ret);
} else { } else {
pr_err("ovfx2_i2c_r %02x failed %d\n", reg, ret); PERR("ovfx2_i2c_r %02x failed %d\n", reg, ret);
sd->gspca_dev.usb_err = ret; sd->gspca_dev.usb_err = ret;
} }
...@@ -2478,6 +2489,8 @@ static void i2c_w_mask(struct sd *sd, ...@@ -2478,6 +2489,8 @@ static void i2c_w_mask(struct sd *sd,
* registers while the camera is streaming */ * registers while the camera is streaming */
static inline void ov51x_stop(struct sd *sd) static inline void ov51x_stop(struct sd *sd)
{ {
struct gspca_dev *gspca_dev = (struct gspca_dev *)sd;
PDEBUG(D_STREAM, "stopping"); PDEBUG(D_STREAM, "stopping");
sd->stopped = 1; sd->stopped = 1;
switch (sd->bridge) { switch (sd->bridge) {
...@@ -2507,6 +2520,8 @@ static inline void ov51x_stop(struct sd *sd) ...@@ -2507,6 +2520,8 @@ static inline void ov51x_stop(struct sd *sd)
* actually stopped (for performance). */ * actually stopped (for performance). */
static inline void ov51x_restart(struct sd *sd) static inline void ov51x_restart(struct sd *sd)
{ {
struct gspca_dev *gspca_dev = (struct gspca_dev *)sd;
PDEBUG(D_STREAM, "restarting"); PDEBUG(D_STREAM, "restarting");
if (!sd->stopped) if (!sd->stopped)
return; return;
...@@ -2545,6 +2560,7 @@ static void ov51x_set_slave_ids(struct sd *sd, u8 slave); ...@@ -2545,6 +2560,7 @@ static void ov51x_set_slave_ids(struct sd *sd, u8 slave);
static int init_ov_sensor(struct sd *sd, u8 slave) static int init_ov_sensor(struct sd *sd, u8 slave)
{ {
int i; int i;
struct gspca_dev *gspca_dev = (struct gspca_dev *)sd;
ov51x_set_slave_ids(sd, slave); ov51x_set_slave_ids(sd, slave);
...@@ -2624,10 +2640,11 @@ static void write_i2c_regvals(struct sd *sd, ...@@ -2624,10 +2640,11 @@ static void write_i2c_regvals(struct sd *sd,
/* This initializes the OV2x10 / OV3610 / OV3620 / OV9600 */ /* This initializes the OV2x10 / OV3610 / OV3620 / OV9600 */
static void ov_hires_configure(struct sd *sd) static void ov_hires_configure(struct sd *sd)
{ {
struct gspca_dev *gspca_dev = (struct gspca_dev *)sd;
int high, low; int high, low;
if (sd->bridge != BRIDGE_OVFX2) { if (sd->bridge != BRIDGE_OVFX2) {
pr_err("error hires sensors only supported with ovfx2\n"); PERR("error hires sensors only supported with ovfx2\n");
return; return;
} }
...@@ -2662,7 +2679,7 @@ static void ov_hires_configure(struct sd *sd) ...@@ -2662,7 +2679,7 @@ static void ov_hires_configure(struct sd *sd)
} }
break; break;
} }
pr_err("Error unknown sensor type: %02x%02x\n", high, low); PERR("Error unknown sensor type: %02x%02x\n", high, low);
} }
/* This initializes the OV8110, OV8610 sensor. The OV8110 uses /* This initializes the OV8110, OV8610 sensor. The OV8110 uses
...@@ -2670,6 +2687,7 @@ static void ov_hires_configure(struct sd *sd) ...@@ -2670,6 +2687,7 @@ static void ov_hires_configure(struct sd *sd)
*/ */
static void ov8xx0_configure(struct sd *sd) static void ov8xx0_configure(struct sd *sd)
{ {
struct gspca_dev *gspca_dev = (struct gspca_dev *)sd;
int rc; int rc;
PDEBUG(D_PROBE, "starting ov8xx0 configuration"); PDEBUG(D_PROBE, "starting ov8xx0 configuration");
...@@ -2677,13 +2695,13 @@ static void ov8xx0_configure(struct sd *sd) ...@@ -2677,13 +2695,13 @@ static void ov8xx0_configure(struct sd *sd)
/* Detect sensor (sub)type */ /* Detect sensor (sub)type */
rc = i2c_r(sd, OV7610_REG_COM_I); rc = i2c_r(sd, OV7610_REG_COM_I);
if (rc < 0) { if (rc < 0) {
PDEBUG(D_ERR, "Error detecting sensor type"); PERR("Error detecting sensor type");
return; return;
} }
if ((rc & 3) == 1) if ((rc & 3) == 1)
sd->sensor = SEN_OV8610; sd->sensor = SEN_OV8610;
else else
pr_err("Unknown image sensor version: %d\n", rc & 3); PERR("Unknown image sensor version: %d\n", rc & 3);
} }
/* This initializes the OV7610, OV7620, or OV76BE sensor. The OV76BE uses /* This initializes the OV7610, OV7620, or OV76BE sensor. The OV76BE uses
...@@ -2691,6 +2709,7 @@ static void ov8xx0_configure(struct sd *sd) ...@@ -2691,6 +2709,7 @@ static void ov8xx0_configure(struct sd *sd)
*/ */
static void ov7xx0_configure(struct sd *sd) static void ov7xx0_configure(struct sd *sd)
{ {
struct gspca_dev *gspca_dev = (struct gspca_dev *)sd;
int rc, high, low; int rc, high, low;
PDEBUG(D_PROBE, "starting OV7xx0 configuration"); PDEBUG(D_PROBE, "starting OV7xx0 configuration");
...@@ -2701,7 +2720,7 @@ static void ov7xx0_configure(struct sd *sd) ...@@ -2701,7 +2720,7 @@ static void ov7xx0_configure(struct sd *sd)
/* add OV7670 here /* add OV7670 here
* it appears to be wrongly detected as a 7610 by default */ * it appears to be wrongly detected as a 7610 by default */
if (rc < 0) { if (rc < 0) {
pr_err("Error detecting sensor type\n"); PERR("Error detecting sensor type\n");
return; return;
} }
if ((rc & 3) == 3) { if ((rc & 3) == 3) {
...@@ -2729,19 +2748,19 @@ static void ov7xx0_configure(struct sd *sd) ...@@ -2729,19 +2748,19 @@ static void ov7xx0_configure(struct sd *sd)
/* try to read product id registers */ /* try to read product id registers */
high = i2c_r(sd, 0x0a); high = i2c_r(sd, 0x0a);
if (high < 0) { if (high < 0) {
pr_err("Error detecting camera chip PID\n"); PERR("Error detecting camera chip PID\n");
return; return;
} }
low = i2c_r(sd, 0x0b); low = i2c_r(sd, 0x0b);
if (low < 0) { if (low < 0) {
pr_err("Error detecting camera chip VER\n"); PERR("Error detecting camera chip VER\n");
return; return;
} }
if (high == 0x76) { if (high == 0x76) {
switch (low) { switch (low) {
case 0x30: case 0x30:
pr_err("Sensor is an OV7630/OV7635\n"); PERR("Sensor is an OV7630/OV7635\n");
pr_err("7630 is not supported by this driver\n"); PERR("7630 is not supported by this driver\n");
return; return;
case 0x40: case 0x40:
PDEBUG(D_PROBE, "Sensor is an OV7645"); PDEBUG(D_PROBE, "Sensor is an OV7645");
...@@ -2760,7 +2779,7 @@ static void ov7xx0_configure(struct sd *sd) ...@@ -2760,7 +2779,7 @@ static void ov7xx0_configure(struct sd *sd)
sd->sensor = SEN_OV7660; sd->sensor = SEN_OV7660;
break; break;
default: default:
pr_err("Unknown sensor: 0x76%02x\n", low); PERR("Unknown sensor: 0x76%02x\n", low);
return; return;
} }
} else { } else {
...@@ -2768,20 +2787,22 @@ static void ov7xx0_configure(struct sd *sd) ...@@ -2768,20 +2787,22 @@ static void ov7xx0_configure(struct sd *sd)
sd->sensor = SEN_OV7620; sd->sensor = SEN_OV7620;
} }
} else { } else {
pr_err("Unknown image sensor version: %d\n", rc & 3); PERR("Unknown image sensor version: %d\n", rc & 3);
} }
} }
/* This initializes the OV6620, OV6630, OV6630AE, or OV6630AF sensor. */ /* This initializes the OV6620, OV6630, OV6630AE, or OV6630AF sensor. */
static void ov6xx0_configure(struct sd *sd) static void ov6xx0_configure(struct sd *sd)
{ {
struct gspca_dev *gspca_dev = (struct gspca_dev *)sd;
int rc; int rc;
PDEBUG(D_PROBE, "starting OV6xx0 configuration"); PDEBUG(D_PROBE, "starting OV6xx0 configuration");
/* Detect sensor (sub)type */ /* Detect sensor (sub)type */
rc = i2c_r(sd, OV7610_REG_COM_I); rc = i2c_r(sd, OV7610_REG_COM_I);
if (rc < 0) { if (rc < 0) {
pr_err("Error detecting sensor type\n"); PERR("Error detecting sensor type\n");
return; return;
} }
...@@ -2810,7 +2831,7 @@ static void ov6xx0_configure(struct sd *sd) ...@@ -2810,7 +2831,7 @@ static void ov6xx0_configure(struct sd *sd)
pr_warn("WARNING: Sensor is an OV66307. Your camera may have been misdetected in previous driver versions.\n"); pr_warn("WARNING: Sensor is an OV66307. Your camera may have been misdetected in previous driver versions.\n");
break; break;
default: default:
pr_err("FATAL: Unknown sensor version: 0x%02x\n", rc); PERR("FATAL: Unknown sensor version: 0x%02x\n", rc);
return; return;
} }
...@@ -2907,6 +2928,7 @@ static void ov51x_upload_quan_tables(struct sd *sd) ...@@ -2907,6 +2928,7 @@ static void ov51x_upload_quan_tables(struct sd *sd)
7, 7, 7, 7, 7, 7, 8, 8 7, 7, 7, 7, 7, 7, 8, 8
}; };
struct gspca_dev *gspca_dev = (struct gspca_dev *)sd;
const unsigned char *pYTable, *pUVTable; const unsigned char *pYTable, *pUVTable;
unsigned char val0, val1; unsigned char val0, val1;
int i, size, reg = R51x_COMP_LUT_BEGIN; int i, size, reg = R51x_COMP_LUT_BEGIN;
...@@ -3300,7 +3322,7 @@ static int sd_init(struct gspca_dev *gspca_dev) ...@@ -3300,7 +3322,7 @@ static int sd_init(struct gspca_dev *gspca_dev)
} else if (init_ov_sensor(sd, OV_HIRES_SID) >= 0) { } else if (init_ov_sensor(sd, OV_HIRES_SID) >= 0) {
ov_hires_configure(sd); ov_hires_configure(sd);
} else { } else {
pr_err("Can't determine sensor slave IDs\n"); PERR("Can't determine sensor slave IDs\n");
goto error; goto error;
} }
...@@ -3433,7 +3455,7 @@ static int sd_init(struct gspca_dev *gspca_dev) ...@@ -3433,7 +3455,7 @@ static int sd_init(struct gspca_dev *gspca_dev)
} }
return gspca_dev->usb_err; return gspca_dev->usb_err;
error: error:
PDEBUG(D_ERR, "OV519 Config failed"); PERR("OV519 Config failed");
return -EINVAL; return -EINVAL;
} }
...@@ -3459,6 +3481,7 @@ static int sd_isoc_init(struct gspca_dev *gspca_dev) ...@@ -3459,6 +3481,7 @@ static int sd_isoc_init(struct gspca_dev *gspca_dev)
*/ */
static void ov511_mode_init_regs(struct sd *sd) static void ov511_mode_init_regs(struct sd *sd)
{ {
struct gspca_dev *gspca_dev = (struct gspca_dev *)sd;
int hsegs, vsegs, packet_size, fps, needed; int hsegs, vsegs, packet_size, fps, needed;
int interlaced = 0; int interlaced = 0;
struct usb_host_interface *alt; struct usb_host_interface *alt;
...@@ -3467,7 +3490,7 @@ static void ov511_mode_init_regs(struct sd *sd) ...@@ -3467,7 +3490,7 @@ static void ov511_mode_init_regs(struct sd *sd)
intf = usb_ifnum_to_if(sd->gspca_dev.dev, sd->gspca_dev.iface); intf = usb_ifnum_to_if(sd->gspca_dev.dev, sd->gspca_dev.iface);
alt = usb_altnum_to_altsetting(intf, sd->gspca_dev.alt); alt = usb_altnum_to_altsetting(intf, sd->gspca_dev.alt);
if (!alt) { if (!alt) {
pr_err("Couldn't get altsetting\n"); PERR("Couldn't get altsetting\n");
sd->gspca_dev.usb_err = -EIO; sd->gspca_dev.usb_err = -EIO;
return; return;
} }
...@@ -3583,6 +3606,7 @@ static void ov511_mode_init_regs(struct sd *sd) ...@@ -3583,6 +3606,7 @@ static void ov511_mode_init_regs(struct sd *sd)
*/ */
static void ov518_mode_init_regs(struct sd *sd) static void ov518_mode_init_regs(struct sd *sd)
{ {
struct gspca_dev *gspca_dev = (struct gspca_dev *)sd;
int hsegs, vsegs, packet_size; int hsegs, vsegs, packet_size;
struct usb_host_interface *alt; struct usb_host_interface *alt;
struct usb_interface *intf; struct usb_interface *intf;
...@@ -3590,7 +3614,7 @@ static void ov518_mode_init_regs(struct sd *sd) ...@@ -3590,7 +3614,7 @@ static void ov518_mode_init_regs(struct sd *sd)
intf = usb_ifnum_to_if(sd->gspca_dev.dev, sd->gspca_dev.iface); intf = usb_ifnum_to_if(sd->gspca_dev.dev, sd->gspca_dev.iface);
alt = usb_altnum_to_altsetting(intf, sd->gspca_dev.alt); alt = usb_altnum_to_altsetting(intf, sd->gspca_dev.alt);
if (!alt) { if (!alt) {
pr_err("Couldn't get altsetting\n"); PERR("Couldn't get altsetting\n");
sd->gspca_dev.usb_err = -EIO; sd->gspca_dev.usb_err = -EIO;
return; return;
} }
...@@ -3750,6 +3774,8 @@ static void ov519_mode_init_regs(struct sd *sd) ...@@ -3750,6 +3774,8 @@ static void ov519_mode_init_regs(struct sd *sd)
/* windows reads 0x55 at this point, why? */ /* windows reads 0x55 at this point, why? */
}; };
struct gspca_dev *gspca_dev = (struct gspca_dev *)sd;
/******** Set the mode ********/ /******** Set the mode ********/
switch (sd->sensor) { switch (sd->sensor) {
default: default:
...@@ -3865,11 +3891,10 @@ static void ov519_mode_init_regs(struct sd *sd) ...@@ -3865,11 +3891,10 @@ static void ov519_mode_init_regs(struct sd *sd)
static void mode_init_ov_sensor_regs(struct sd *sd) static void mode_init_ov_sensor_regs(struct sd *sd)
{ {
struct gspca_dev *gspca_dev; struct gspca_dev *gspca_dev = (struct gspca_dev *)sd;
int qvga, xstart, xend, ystart, yend; int qvga, xstart, xend, ystart, yend;
u8 v; u8 v;
gspca_dev = &sd->gspca_dev;
qvga = gspca_dev->cam.cam_mode[gspca_dev->curr_mode].priv & 1; qvga = gspca_dev->cam.cam_mode[gspca_dev->curr_mode].priv & 1;
/******** Mode (VGA/QVGA) and sensor specific regs ********/ /******** Mode (VGA/QVGA) and sensor specific regs ********/
...@@ -4304,7 +4329,7 @@ static void ov511_pkt_scan(struct gspca_dev *gspca_dev, ...@@ -4304,7 +4329,7 @@ static void ov511_pkt_scan(struct gspca_dev *gspca_dev,
/* Frame end */ /* Frame end */
if ((in[9] + 1) * 8 != gspca_dev->width || if ((in[9] + 1) * 8 != gspca_dev->width ||
(in[10] + 1) * 8 != gspca_dev->height) { (in[10] + 1) * 8 != gspca_dev->height) {
PDEBUG(D_ERR, "Invalid frame size, got: %dx%d," PERR("Invalid frame size, got: %dx%d,"
" requested: %dx%d\n", " requested: %dx%d\n",
(in[9] + 1) * 8, (in[10] + 1) * 8, (in[9] + 1) * 8, (in[10] + 1) * 8,
gspca_dev->width, gspca_dev->height); gspca_dev->width, gspca_dev->height);
...@@ -4355,7 +4380,7 @@ static void ov518_pkt_scan(struct gspca_dev *gspca_dev, ...@@ -4355,7 +4380,7 @@ static void ov518_pkt_scan(struct gspca_dev *gspca_dev,
except that they may contain part of the footer), are except that they may contain part of the footer), are
numbered 0 */ numbered 0 */
else if (sd->packet_nr == 0 || data[len]) { else if (sd->packet_nr == 0 || data[len]) {
PDEBUG(D_ERR, "Invalid packet nr: %d (expect: %d)", PERR("Invalid packet nr: %d (expect: %d)",
(int)data[len], (int)sd->packet_nr); (int)data[len], (int)sd->packet_nr);
gspca_dev->last_packet_type = DISCARD_PACKET; gspca_dev->last_packet_type = DISCARD_PACKET;
return; return;
...@@ -4898,7 +4923,7 @@ static int sd_init_controls(struct gspca_dev *gspca_dev) ...@@ -4898,7 +4923,7 @@ static int sd_init_controls(struct gspca_dev *gspca_dev)
QUALITY_MIN, QUALITY_MAX, 1, QUALITY_DEF); QUALITY_MIN, QUALITY_MAX, 1, QUALITY_DEF);
if (hdl->error) { if (hdl->error) {
pr_err("Could not initialize controls\n"); PERR("Could not initialize controls\n");
return hdl->error; return hdl->error;
} }
if (gspca_dev->autogain) if (gspca_dev->autogain)
......
...@@ -690,7 +690,7 @@ static int sccb_check_status(struct gspca_dev *gspca_dev) ...@@ -690,7 +690,7 @@ static int sccb_check_status(struct gspca_dev *gspca_dev)
case 0x03: case 0x03:
break; break;
default: default:
PDEBUG(D_ERR, "sccb status 0x%02x, attempt %d/5", PERR("sccb status 0x%02x, attempt %d/5",
data, i + 1); data, i + 1);
} }
} }
......
...@@ -373,7 +373,7 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev, ...@@ -373,7 +373,7 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
struct sd *sd = (struct sd *) gspca_dev; struct sd *sd = (struct sd *) gspca_dev;
unsigned char *sof; unsigned char *sof;
sof = pac_find_sof(&sd->sof_read, data, len); sof = pac_find_sof(gspca_dev, &sd->sof_read, data, len);
if (sof) { if (sof) {
int n; int n;
......
...@@ -344,13 +344,10 @@ static void reg_w_var(struct gspca_dev *gspca_dev, ...@@ -344,13 +344,10 @@ static void reg_w_var(struct gspca_dev *gspca_dev,
reg_w_page(gspca_dev, page3, page3_len); reg_w_page(gspca_dev, page3, page3_len);
break; break;
default: default:
#ifdef GSPCA_DEBUG
if (len > USB_BUF_SZ) { if (len > USB_BUF_SZ) {
PDEBUG(D_ERR|D_STREAM, PERR("Incorrect variable sequence");
"Incorrect variable sequence");
return; return;
} }
#endif
while (len > 0) { while (len > 0) {
if (len < 8) { if (len < 8) {
reg_w_buf(gspca_dev, reg_w_buf(gspca_dev,
...@@ -795,7 +792,7 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev, ...@@ -795,7 +792,7 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
u8 *image; u8 *image;
u8 *sof; u8 *sof;
sof = pac_find_sof(&sd->sof_read, data, len); sof = pac_find_sof(gspca_dev, &sd->sof_read, data, len);
if (sof) { if (sof) {
int n, lum_offset, footer_length; int n, lum_offset, footer_length;
......
...@@ -262,8 +262,7 @@ static void reg_w_var(struct gspca_dev *gspca_dev, ...@@ -262,8 +262,7 @@ static void reg_w_var(struct gspca_dev *gspca_dev,
break; break;
default: default:
if (len > USB_BUF_SZ) { if (len > USB_BUF_SZ) {
PDEBUG(D_ERR|D_STREAM, PERR("Incorrect variable sequence");
"Incorrect variable sequence");
return; return;
} }
while (len > 0) { while (len > 0) {
...@@ -575,7 +574,7 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev, ...@@ -575,7 +574,7 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
u8 *image; u8 *image;
unsigned char *sof; unsigned char *sof;
sof = pac_find_sof(&sd->sof_read, data, len); sof = pac_find_sof(gspca_dev, &sd->sof_read, data, len);
if (sof) { if (sof) {
int n, lum_offset, footer_length; int n, lum_offset, footer_length;
......
...@@ -71,7 +71,7 @@ static const unsigned char pac_sof_marker[5] = ...@@ -71,7 +71,7 @@ static const unsigned char pac_sof_marker[5] =
+----------+ +----------+
*/ */
static unsigned char *pac_find_sof(u8 *sof_read, static unsigned char *pac_find_sof(struct gspca_dev *gspca_dev, u8 *sof_read,
unsigned char *m, int len) unsigned char *m, int len)
{ {
int i; int i;
......
...@@ -650,13 +650,13 @@ static void sd_stopN(struct gspca_dev *gspca_dev) ...@@ -650,13 +650,13 @@ static void sd_stopN(struct gspca_dev *gspca_dev)
result = sn9c2028_read1(gspca_dev); result = sn9c2028_read1(gspca_dev);
if (result < 0) if (result < 0)
PDEBUG(D_ERR, "Camera Stop read failed"); PERR("Camera Stop read failed");
memset(data, 0, 6); memset(data, 0, 6);
data[0] = 0x14; data[0] = 0x14;
result = sn9c2028_command(gspca_dev, data); result = sn9c2028_command(gspca_dev, data);
if (result < 0) if (result < 0)
PDEBUG(D_ERR, "Camera Stop command failed"); PERR("Camera Stop command failed");
} }
/* Include sn9c2028 sof detection functions */ /* Include sn9c2028 sof detection functions */
......
...@@ -1159,12 +1159,11 @@ static void reg_r(struct gspca_dev *gspca_dev, ...@@ -1159,12 +1159,11 @@ static void reg_r(struct gspca_dev *gspca_dev,
if (gspca_dev->usb_err < 0) if (gspca_dev->usb_err < 0)
return; return;
#ifdef GSPCA_DEBUG
if (len > USB_BUF_SZ) { if (len > USB_BUF_SZ) {
pr_err("reg_r: buffer overflow\n"); PERR("reg_r: buffer overflow\n");
return; return;
} }
#endif
ret = usb_control_msg(gspca_dev->dev, ret = usb_control_msg(gspca_dev->dev,
usb_rcvctrlpipe(gspca_dev->dev, 0), usb_rcvctrlpipe(gspca_dev->dev, 0),
0, 0,
...@@ -1213,12 +1212,12 @@ static void reg_w(struct gspca_dev *gspca_dev, ...@@ -1213,12 +1212,12 @@ static void reg_w(struct gspca_dev *gspca_dev,
return; return;
PDEBUG(D_USBO, "reg_w [%04x] = %02x %02x ..", PDEBUG(D_USBO, "reg_w [%04x] = %02x %02x ..",
value, buffer[0], buffer[1]); value, buffer[0], buffer[1]);
#ifdef GSPCA_DEBUG
if (len > USB_BUF_SZ) { if (len > USB_BUF_SZ) {
pr_err("reg_w: buffer overflow\n"); PERR("reg_w: buffer overflow\n");
return; return;
} }
#endif
memcpy(gspca_dev->usb_buf, buffer, len); memcpy(gspca_dev->usb_buf, buffer, len);
ret = usb_control_msg(gspca_dev->dev, ret = usb_control_msg(gspca_dev->dev,
usb_sndctrlpipe(gspca_dev->dev, 0), usb_sndctrlpipe(gspca_dev->dev, 0),
......
...@@ -146,7 +146,7 @@ static void wait_status_0(struct gspca_dev *gspca_dev) ...@@ -146,7 +146,7 @@ static void wait_status_0(struct gspca_dev *gspca_dev)
w += 15; w += 15;
msleep(w); msleep(w);
} while (--i > 0); } while (--i > 0);
PDEBUG(D_ERR, "wait_status_0 timeout"); PERR("wait_status_0 timeout");
gspca_dev->usb_err = -ETIME; gspca_dev->usb_err = -ETIME;
} }
...@@ -164,7 +164,7 @@ static void wait_status_1(struct gspca_dev *gspca_dev) ...@@ -164,7 +164,7 @@ static void wait_status_1(struct gspca_dev *gspca_dev)
return; return;
} }
} while (--i > 0); } while (--i > 0);
PDEBUG(D_ERR, "wait_status_1 timeout"); PERR("wait_status_1 timeout");
gspca_dev->usb_err = -ETIME; gspca_dev->usb_err = -ETIME;
} }
......
...@@ -489,7 +489,7 @@ static int spca500_full_reset(struct gspca_dev *gspca_dev) ...@@ -489,7 +489,7 @@ static int spca500_full_reset(struct gspca_dev *gspca_dev)
return err; return err;
err = reg_r_wait(gspca_dev, 0x06, 0, 0); err = reg_r_wait(gspca_dev, 0x06, 0, 0);
if (err < 0) { if (err < 0) {
PDEBUG(D_ERR, "reg_r_wait() failed"); PERR("reg_r_wait() failed");
return err; return err;
} }
/* all ok */ /* all ok */
...@@ -505,7 +505,7 @@ static int spca500_full_reset(struct gspca_dev *gspca_dev) ...@@ -505,7 +505,7 @@ static int spca500_full_reset(struct gspca_dev *gspca_dev)
static int spca500_synch310(struct gspca_dev *gspca_dev) static int spca500_synch310(struct gspca_dev *gspca_dev)
{ {
if (usb_set_interface(gspca_dev->dev, gspca_dev->iface, 0) < 0) { if (usb_set_interface(gspca_dev->dev, gspca_dev->iface, 0) < 0) {
PDEBUG(D_ERR, "Set packet size: set interface error"); PERR("Set packet size: set interface error");
goto error; goto error;
} }
spca500_ping310(gspca_dev); spca500_ping310(gspca_dev);
...@@ -519,7 +519,7 @@ static int spca500_synch310(struct gspca_dev *gspca_dev) ...@@ -519,7 +519,7 @@ static int spca500_synch310(struct gspca_dev *gspca_dev)
if (usb_set_interface(gspca_dev->dev, if (usb_set_interface(gspca_dev->dev,
gspca_dev->iface, gspca_dev->iface,
gspca_dev->alt) < 0) { gspca_dev->alt) < 0) {
PDEBUG(D_ERR, "Set packet size: set interface error"); PERR("Set packet size: set interface error");
goto error; goto error;
} }
return 0; return 0;
...@@ -544,7 +544,7 @@ static void spca500_reinit(struct gspca_dev *gspca_dev) ...@@ -544,7 +544,7 @@ static void spca500_reinit(struct gspca_dev *gspca_dev)
err = spca50x_setup_qtable(gspca_dev, 0x00, 0x8800, 0x8840, err = spca50x_setup_qtable(gspca_dev, 0x00, 0x8800, 0x8840,
qtable_pocketdv); qtable_pocketdv);
if (err < 0) if (err < 0)
PDEBUG(D_ERR|D_STREAM, "spca50x_setup_qtable failed on init"); PERR("spca50x_setup_qtable failed on init");
/* set qtable index */ /* set qtable index */
reg_w(gspca_dev, 0x00, 0x8880, 2); reg_w(gspca_dev, 0x00, 0x8880, 2);
...@@ -639,7 +639,7 @@ static int sd_start(struct gspca_dev *gspca_dev) ...@@ -639,7 +639,7 @@ static int sd_start(struct gspca_dev *gspca_dev)
0x00, 0x8800, 0x8840, 0x00, 0x8800, 0x8840,
qtable_creative_pccam); qtable_creative_pccam);
if (err < 0) if (err < 0)
PDEBUG(D_ERR, "spca50x_setup_qtable failed"); PERR("spca50x_setup_qtable failed");
/* Init SDRAM - needed for SDRAM access */ /* Init SDRAM - needed for SDRAM access */
reg_w(gspca_dev, 0x00, 0x870a, 0x04); reg_w(gspca_dev, 0x00, 0x870a, 0x04);
...@@ -647,7 +647,7 @@ static int sd_start(struct gspca_dev *gspca_dev) ...@@ -647,7 +647,7 @@ static int sd_start(struct gspca_dev *gspca_dev)
reg_w(gspca_dev, 0x00, 0x8000, 0x0004); reg_w(gspca_dev, 0x00, 0x8000, 0x0004);
msleep(500); msleep(500);
if (reg_r_wait(gspca_dev, 0, 0x8000, 0x44) != 0) if (reg_r_wait(gspca_dev, 0, 0x8000, 0x44) != 0)
PDEBUG(D_ERR, "reg_r_wait() failed"); PERR("reg_r_wait() failed");
reg_r(gspca_dev, 0x816b, 1); reg_r(gspca_dev, 0x816b, 1);
Data = gspca_dev->usb_buf[0]; Data = gspca_dev->usb_buf[0];
...@@ -660,13 +660,13 @@ static int sd_start(struct gspca_dev *gspca_dev) ...@@ -660,13 +660,13 @@ static int sd_start(struct gspca_dev *gspca_dev)
/* enable drop packet */ /* enable drop packet */
err = reg_w(gspca_dev, 0x00, 0x850a, 0x0001); err = reg_w(gspca_dev, 0x00, 0x850a, 0x0001);
if (err < 0) if (err < 0)
PDEBUG(D_ERR, "failed to enable drop packet"); PERR("failed to enable drop packet");
reg_w(gspca_dev, 0x00, 0x8880, 3); reg_w(gspca_dev, 0x00, 0x8880, 3);
err = spca50x_setup_qtable(gspca_dev, err = spca50x_setup_qtable(gspca_dev,
0x00, 0x8800, 0x8840, 0x00, 0x8800, 0x8840,
qtable_creative_pccam); qtable_creative_pccam);
if (err < 0) if (err < 0)
PDEBUG(D_ERR, "spca50x_setup_qtable failed"); PERR("spca50x_setup_qtable failed");
/* Init SDRAM - needed for SDRAM access */ /* Init SDRAM - needed for SDRAM access */
reg_w(gspca_dev, 0x00, 0x870a, 0x04); reg_w(gspca_dev, 0x00, 0x870a, 0x04);
...@@ -675,7 +675,7 @@ static int sd_start(struct gspca_dev *gspca_dev) ...@@ -675,7 +675,7 @@ static int sd_start(struct gspca_dev *gspca_dev)
reg_w(gspca_dev, 0x00, 0x8000, 0x0004); reg_w(gspca_dev, 0x00, 0x8000, 0x0004);
if (reg_r_wait(gspca_dev, 0, 0x8000, 0x44) != 0) if (reg_r_wait(gspca_dev, 0, 0x8000, 0x44) != 0)
PDEBUG(D_ERR, "reg_r_wait() failed"); PERR("reg_r_wait() failed");
reg_r(gspca_dev, 0x816b, 1); reg_r(gspca_dev, 0x816b, 1);
Data = gspca_dev->usb_buf[0]; Data = gspca_dev->usb_buf[0];
...@@ -689,18 +689,18 @@ static int sd_start(struct gspca_dev *gspca_dev) ...@@ -689,18 +689,18 @@ static int sd_start(struct gspca_dev *gspca_dev)
/* do a full reset */ /* do a full reset */
err = spca500_full_reset(gspca_dev); err = spca500_full_reset(gspca_dev);
if (err < 0) if (err < 0)
PDEBUG(D_ERR, "spca500_full_reset failed"); PERR("spca500_full_reset failed");
/* enable drop packet */ /* enable drop packet */
err = reg_w(gspca_dev, 0x00, 0x850a, 0x0001); err = reg_w(gspca_dev, 0x00, 0x850a, 0x0001);
if (err < 0) if (err < 0)
PDEBUG(D_ERR, "failed to enable drop packet"); PERR("failed to enable drop packet");
reg_w(gspca_dev, 0x00, 0x8880, 3); reg_w(gspca_dev, 0x00, 0x8880, 3);
err = spca50x_setup_qtable(gspca_dev, err = spca50x_setup_qtable(gspca_dev,
0x00, 0x8800, 0x8840, 0x00, 0x8800, 0x8840,
qtable_creative_pccam); qtable_creative_pccam);
if (err < 0) if (err < 0)
PDEBUG(D_ERR, "spca50x_setup_qtable failed"); PERR("spca50x_setup_qtable failed");
spca500_setmode(gspca_dev, xmult, ymult); spca500_setmode(gspca_dev, xmult, ymult);
reg_w(gspca_dev, 0x20, 0x0001, 0x0004); reg_w(gspca_dev, 0x20, 0x0001, 0x0004);
...@@ -709,7 +709,7 @@ static int sd_start(struct gspca_dev *gspca_dev) ...@@ -709,7 +709,7 @@ static int sd_start(struct gspca_dev *gspca_dev)
reg_w(gspca_dev, 0x00, 0x8000, 0x0004); reg_w(gspca_dev, 0x00, 0x8000, 0x0004);
if (reg_r_wait(gspca_dev, 0, 0x8000, 0x44) != 0) if (reg_r_wait(gspca_dev, 0, 0x8000, 0x44) != 0)
PDEBUG(D_ERR, "reg_r_wait() failed"); PERR("reg_r_wait() failed");
reg_r(gspca_dev, 0x816b, 1); reg_r(gspca_dev, 0x816b, 1);
Data = gspca_dev->usb_buf[0]; Data = gspca_dev->usb_buf[0];
...@@ -722,7 +722,7 @@ static int sd_start(struct gspca_dev *gspca_dev) ...@@ -722,7 +722,7 @@ static int sd_start(struct gspca_dev *gspca_dev)
/* do a full reset */ /* do a full reset */
err = spca500_full_reset(gspca_dev); err = spca500_full_reset(gspca_dev);
if (err < 0) if (err < 0)
PDEBUG(D_ERR, "spca500_full_reset failed"); PERR("spca500_full_reset failed");
/* enable drop packet */ /* enable drop packet */
reg_w(gspca_dev, 0x00, 0x850a, 0x0001); reg_w(gspca_dev, 0x00, 0x850a, 0x0001);
reg_w(gspca_dev, 0x00, 0x8880, 0); reg_w(gspca_dev, 0x00, 0x8880, 0);
...@@ -730,7 +730,7 @@ static int sd_start(struct gspca_dev *gspca_dev) ...@@ -730,7 +730,7 @@ static int sd_start(struct gspca_dev *gspca_dev)
0x00, 0x8800, 0x8840, 0x00, 0x8800, 0x8840,
qtable_kodak_ez200); qtable_kodak_ez200);
if (err < 0) if (err < 0)
PDEBUG(D_ERR, "spca50x_setup_qtable failed"); PERR("spca50x_setup_qtable failed");
spca500_setmode(gspca_dev, xmult, ymult); spca500_setmode(gspca_dev, xmult, ymult);
reg_w(gspca_dev, 0x20, 0x0001, 0x0004); reg_w(gspca_dev, 0x20, 0x0001, 0x0004);
...@@ -739,7 +739,7 @@ static int sd_start(struct gspca_dev *gspca_dev) ...@@ -739,7 +739,7 @@ static int sd_start(struct gspca_dev *gspca_dev)
reg_w(gspca_dev, 0x00, 0x8000, 0x0004); reg_w(gspca_dev, 0x00, 0x8000, 0x0004);
if (reg_r_wait(gspca_dev, 0, 0x8000, 0x44) != 0) if (reg_r_wait(gspca_dev, 0, 0x8000, 0x44) != 0)
PDEBUG(D_ERR, "reg_r_wait() failed"); PERR("reg_r_wait() failed");
reg_r(gspca_dev, 0x816b, 1); reg_r(gspca_dev, 0x816b, 1);
Data = gspca_dev->usb_buf[0]; Data = gspca_dev->usb_buf[0];
...@@ -765,7 +765,7 @@ static int sd_start(struct gspca_dev *gspca_dev) ...@@ -765,7 +765,7 @@ static int sd_start(struct gspca_dev *gspca_dev)
err = spca50x_setup_qtable(gspca_dev, err = spca50x_setup_qtable(gspca_dev,
0x00, 0x8800, 0x8840, qtable_pocketdv); 0x00, 0x8800, 0x8840, qtable_pocketdv);
if (err < 0) if (err < 0)
PDEBUG(D_ERR, "spca50x_setup_qtable failed"); PERR("spca50x_setup_qtable failed");
reg_w(gspca_dev, 0x00, 0x8880, 2); reg_w(gspca_dev, 0x00, 0x8880, 2);
/* familycam Quicksmart pocketDV stuff */ /* familycam Quicksmart pocketDV stuff */
...@@ -795,7 +795,7 @@ static int sd_start(struct gspca_dev *gspca_dev) ...@@ -795,7 +795,7 @@ static int sd_start(struct gspca_dev *gspca_dev)
0x00, 0x8800, 0x00, 0x8800,
0x8840, qtable_creative_pccam); 0x8840, qtable_creative_pccam);
if (err < 0) if (err < 0)
PDEBUG(D_ERR, "spca50x_setup_qtable failed"); PERR("spca50x_setup_qtable failed");
reg_w(gspca_dev, 0x00, 0x8880, 3); reg_w(gspca_dev, 0x00, 0x8880, 3);
reg_w(gspca_dev, 0x00, 0x800a, 0x00); reg_w(gspca_dev, 0x00, 0x800a, 0x00);
/* Init SDRAM - needed for SDRAM access */ /* Init SDRAM - needed for SDRAM access */
......
...@@ -1756,10 +1756,11 @@ static const __u16 spca501c_mysterious_init_data[][3] = { ...@@ -1756,10 +1756,11 @@ static const __u16 spca501c_mysterious_init_data[][3] = {
{} {}
}; };
static int reg_write(struct usb_device *dev, static int reg_write(struct gspca_dev *gspca_dev,
__u16 req, __u16 index, __u16 value) __u16 req, __u16 index, __u16 value)
{ {
int ret; int ret;
struct usb_device *dev = gspca_dev->dev;
ret = usb_control_msg(dev, ret = usb_control_msg(dev,
usb_sndctrlpipe(dev, 0), usb_sndctrlpipe(dev, 0),
...@@ -1774,17 +1775,15 @@ static int reg_write(struct usb_device *dev, ...@@ -1774,17 +1775,15 @@ static int reg_write(struct usb_device *dev,
} }
static int write_vector(struct gspca_dev *gspca_dev, static int write_vector(struct gspca_dev *gspca_dev, const __u16 data[][3])
const __u16 data[][3])
{ {
struct usb_device *dev = gspca_dev->dev;
int ret, i = 0; int ret, i = 0;
while (data[i][0] != 0 || data[i][1] != 0 || data[i][2] != 0) { while (data[i][0] != 0 || data[i][1] != 0 || data[i][2] != 0) {
ret = reg_write(dev, data[i][0], data[i][2], data[i][1]); ret = reg_write(gspca_dev, data[i][0], data[i][2],
data[i][1]);
if (ret < 0) { if (ret < 0) {
PDEBUG(D_ERR, PERR("Reg write failed for 0x%02x,0x%02x,0x%02x",
"Reg write failed for 0x%02x,0x%02x,0x%02x",
data[i][0], data[i][1], data[i][2]); data[i][0], data[i][1], data[i][2]);
return ret; return ret;
} }
...@@ -1795,30 +1794,28 @@ static int write_vector(struct gspca_dev *gspca_dev, ...@@ -1795,30 +1794,28 @@ static int write_vector(struct gspca_dev *gspca_dev,
static void setbrightness(struct gspca_dev *gspca_dev, s32 val) static void setbrightness(struct gspca_dev *gspca_dev, s32 val)
{ {
reg_write(gspca_dev->dev, SPCA501_REG_CCDSP, 0x12, val); reg_write(gspca_dev, SPCA501_REG_CCDSP, 0x12, val);
} }
static void setcontrast(struct gspca_dev *gspca_dev, s32 val) static void setcontrast(struct gspca_dev *gspca_dev, s32 val)
{ {
reg_write(gspca_dev->dev, 0x00, 0x00, reg_write(gspca_dev, 0x00, 0x00, (val >> 8) & 0xff);
(val >> 8) & 0xff); reg_write(gspca_dev, 0x00, 0x01, val & 0xff);
reg_write(gspca_dev->dev, 0x00, 0x01,
val & 0xff);
} }
static void setcolors(struct gspca_dev *gspca_dev, s32 val) static void setcolors(struct gspca_dev *gspca_dev, s32 val)
{ {
reg_write(gspca_dev->dev, SPCA501_REG_CCDSP, 0x0c, val); reg_write(gspca_dev, SPCA501_REG_CCDSP, 0x0c, val);
} }
static void setblue_balance(struct gspca_dev *gspca_dev, s32 val) static void setblue_balance(struct gspca_dev *gspca_dev, s32 val)
{ {
reg_write(gspca_dev->dev, SPCA501_REG_CCDSP, 0x11, val); reg_write(gspca_dev, SPCA501_REG_CCDSP, 0x11, val);
} }
static void setred_balance(struct gspca_dev *gspca_dev, s32 val) static void setred_balance(struct gspca_dev *gspca_dev, s32 val)
{ {
reg_write(gspca_dev->dev, SPCA501_REG_CCDSP, 0x13, val); reg_write(gspca_dev, SPCA501_REG_CCDSP, 0x13, val);
} }
/* this function is called at probe time */ /* this function is called at probe time */
...@@ -1868,7 +1865,6 @@ static int sd_init(struct gspca_dev *gspca_dev) ...@@ -1868,7 +1865,6 @@ static int sd_init(struct gspca_dev *gspca_dev)
static int sd_start(struct gspca_dev *gspca_dev) static int sd_start(struct gspca_dev *gspca_dev)
{ {
struct sd *sd = (struct sd *) gspca_dev; struct sd *sd = (struct sd *) gspca_dev;
struct usb_device *dev = gspca_dev->dev;
int mode; int mode;
switch (sd->subtype) { switch (sd->subtype) {
...@@ -1895,20 +1891,20 @@ static int sd_start(struct gspca_dev *gspca_dev) ...@@ -1895,20 +1891,20 @@ static int sd_start(struct gspca_dev *gspca_dev)
/* Enable ISO packet machine CTRL reg=2, /* Enable ISO packet machine CTRL reg=2,
* index=1 bitmask=0x2 (bit ordinal 1) */ * index=1 bitmask=0x2 (bit ordinal 1) */
reg_write(dev, SPCA50X_REG_USB, 0x6, 0x94); reg_write(gspca_dev, SPCA50X_REG_USB, 0x6, 0x94);
switch (mode) { switch (mode) {
case 0: /* 640x480 */ case 0: /* 640x480 */
reg_write(dev, SPCA50X_REG_USB, 0x07, 0x004a); reg_write(gspca_dev, SPCA50X_REG_USB, 0x07, 0x004a);
break; break;
case 1: /* 320x240 */ case 1: /* 320x240 */
reg_write(dev, SPCA50X_REG_USB, 0x07, 0x104a); reg_write(gspca_dev, SPCA50X_REG_USB, 0x07, 0x104a);
break; break;
default: default:
/* case 2: * 160x120 */ /* case 2: * 160x120 */
reg_write(dev, SPCA50X_REG_USB, 0x07, 0x204a); reg_write(gspca_dev, SPCA50X_REG_USB, 0x07, 0x204a);
break; break;
} }
reg_write(dev, SPCA501_REG_CTLRL, 0x01, 0x02); reg_write(gspca_dev, SPCA501_REG_CTLRL, 0x01, 0x02);
return 0; return 0;
} }
...@@ -1917,7 +1913,7 @@ static void sd_stopN(struct gspca_dev *gspca_dev) ...@@ -1917,7 +1913,7 @@ static void sd_stopN(struct gspca_dev *gspca_dev)
{ {
/* Disable ISO packet /* Disable ISO packet
* machine CTRL reg=2, index=1 bitmask=0x0 (bit ordinal 1) */ * machine CTRL reg=2, index=1 bitmask=0x0 (bit ordinal 1) */
reg_write(gspca_dev->dev, SPCA501_REG_CTLRL, 0x01, 0x00); reg_write(gspca_dev, SPCA501_REG_CTLRL, 0x01, 0x00);
} }
/* called on streamoff with alt 0 and on disconnect */ /* called on streamoff with alt 0 and on disconnect */
...@@ -1925,7 +1921,7 @@ static void sd_stop0(struct gspca_dev *gspca_dev) ...@@ -1925,7 +1921,7 @@ static void sd_stop0(struct gspca_dev *gspca_dev)
{ {
if (!gspca_dev->present) if (!gspca_dev->present)
return; return;
reg_write(gspca_dev->dev, SPCA501_REG_CTLRL, 0x05, 0x00); reg_write(gspca_dev, SPCA501_REG_CTLRL, 0x05, 0x00);
} }
static void sd_pkt_scan(struct gspca_dev *gspca_dev, static void sd_pkt_scan(struct gspca_dev *gspca_dev,
......
...@@ -544,10 +544,11 @@ static const u8 spca505b_open_data_ccd[][3] = { ...@@ -544,10 +544,11 @@ static const u8 spca505b_open_data_ccd[][3] = {
{} {}
}; };
static int reg_write(struct usb_device *dev, static int reg_write(struct gspca_dev *gspca_dev,
u16 req, u16 index, u16 value) u16 req, u16 index, u16 value)
{ {
int ret; int ret;
struct usb_device *dev = gspca_dev->dev;
ret = usb_control_msg(dev, ret = usb_control_msg(dev,
usb_sndctrlpipe(dev, 0), usb_sndctrlpipe(dev, 0),
...@@ -584,11 +585,11 @@ static int reg_read(struct gspca_dev *gspca_dev, ...@@ -584,11 +585,11 @@ static int reg_read(struct gspca_dev *gspca_dev,
static int write_vector(struct gspca_dev *gspca_dev, static int write_vector(struct gspca_dev *gspca_dev,
const u8 data[][3]) const u8 data[][3])
{ {
struct usb_device *dev = gspca_dev->dev;
int ret, i = 0; int ret, i = 0;
while (data[i][0] != 0) { while (data[i][0] != 0) {
ret = reg_write(dev, data[i][0], data[i][2], data[i][1]); ret = reg_write(gspca_dev, data[i][0], data[i][2],
data[i][1]);
if (ret < 0) if (ret < 0)
return ret; return ret;
i++; i++;
...@@ -629,14 +630,13 @@ static int sd_init(struct gspca_dev *gspca_dev) ...@@ -629,14 +630,13 @@ static int sd_init(struct gspca_dev *gspca_dev)
static void setbrightness(struct gspca_dev *gspca_dev, s32 brightness) static void setbrightness(struct gspca_dev *gspca_dev, s32 brightness)
{ {
reg_write(gspca_dev->dev, 0x05, 0x00, (255 - brightness) >> 6); reg_write(gspca_dev, 0x05, 0x00, (255 - brightness) >> 6);
reg_write(gspca_dev->dev, 0x05, 0x01, (255 - brightness) << 2); reg_write(gspca_dev, 0x05, 0x01, (255 - brightness) << 2);
} }
static int sd_start(struct gspca_dev *gspca_dev) static int sd_start(struct gspca_dev *gspca_dev)
{ {
struct sd *sd = (struct sd *) gspca_dev; struct sd *sd = (struct sd *) gspca_dev;
struct usb_device *dev = gspca_dev->dev;
int ret, mode; int ret, mode;
static u8 mode_tb[][3] = { static u8 mode_tb[][3] = {
/* r00 r06 r07 */ /* r00 r06 r07 */
...@@ -654,9 +654,7 @@ static int sd_start(struct gspca_dev *gspca_dev) ...@@ -654,9 +654,7 @@ static int sd_start(struct gspca_dev *gspca_dev)
ret = reg_read(gspca_dev, 0x06, 0x16); ret = reg_read(gspca_dev, 0x06, 0x16);
if (ret < 0) { if (ret < 0) {
PDEBUG(D_ERR|D_CONF, PERR("register read failed err: %d", ret);
"register read failed err: %d",
ret);
return ret; return ret;
} }
if (ret != 0x0101) { if (ret != 0x0101) {
...@@ -664,22 +662,22 @@ static int sd_start(struct gspca_dev *gspca_dev) ...@@ -664,22 +662,22 @@ static int sd_start(struct gspca_dev *gspca_dev)
ret); ret);
} }
ret = reg_write(gspca_dev->dev, 0x06, 0x16, 0x0a); ret = reg_write(gspca_dev, 0x06, 0x16, 0x0a);
if (ret < 0) if (ret < 0)
return ret; return ret;
reg_write(gspca_dev->dev, 0x05, 0xc2, 0x12); reg_write(gspca_dev, 0x05, 0xc2, 0x12);
/* necessary because without it we can see stream /* necessary because without it we can see stream
* only once after loading module */ * only once after loading module */
/* stopping usb registers Tomasz change */ /* stopping usb registers Tomasz change */
reg_write(dev, 0x02, 0x00, 0x00); reg_write(gspca_dev, 0x02, 0x00, 0x00);
mode = gspca_dev->cam.cam_mode[(int) gspca_dev->curr_mode].priv; mode = gspca_dev->cam.cam_mode[(int) gspca_dev->curr_mode].priv;
reg_write(dev, SPCA50X_REG_COMPRESS, 0x00, mode_tb[mode][0]); reg_write(gspca_dev, SPCA50X_REG_COMPRESS, 0x00, mode_tb[mode][0]);
reg_write(dev, SPCA50X_REG_COMPRESS, 0x06, mode_tb[mode][1]); reg_write(gspca_dev, SPCA50X_REG_COMPRESS, 0x06, mode_tb[mode][1]);
reg_write(dev, SPCA50X_REG_COMPRESS, 0x07, mode_tb[mode][2]); reg_write(gspca_dev, SPCA50X_REG_COMPRESS, 0x07, mode_tb[mode][2]);
return reg_write(dev, SPCA50X_REG_USB, return reg_write(gspca_dev, SPCA50X_REG_USB,
SPCA50X_USB_CTRL, SPCA50X_USB_CTRL,
SPCA50X_CUSB_ENABLE); SPCA50X_CUSB_ENABLE);
} }
...@@ -687,7 +685,7 @@ static int sd_start(struct gspca_dev *gspca_dev) ...@@ -687,7 +685,7 @@ static int sd_start(struct gspca_dev *gspca_dev)
static void sd_stopN(struct gspca_dev *gspca_dev) static void sd_stopN(struct gspca_dev *gspca_dev)
{ {
/* Disable ISO packet machine */ /* Disable ISO packet machine */
reg_write(gspca_dev->dev, 0x02, 0x00, 0x00); reg_write(gspca_dev, 0x02, 0x00, 0x00);
} }
/* called on streamoff with alt 0 and on disconnect */ /* called on streamoff with alt 0 and on disconnect */
...@@ -697,11 +695,11 @@ static void sd_stop0(struct gspca_dev *gspca_dev) ...@@ -697,11 +695,11 @@ static void sd_stop0(struct gspca_dev *gspca_dev)
return; return;
/* This maybe reset or power control */ /* This maybe reset or power control */
reg_write(gspca_dev->dev, 0x03, 0x03, 0x20); reg_write(gspca_dev, 0x03, 0x03, 0x20);
reg_write(gspca_dev->dev, 0x03, 0x01, 0x00); reg_write(gspca_dev, 0x03, 0x01, 0x00);
reg_write(gspca_dev->dev, 0x03, 0x00, 0x01); reg_write(gspca_dev, 0x03, 0x00, 0x01);
reg_write(gspca_dev->dev, 0x05, 0x10, 0x01); reg_write(gspca_dev, 0x05, 0x10, 0x01);
reg_write(gspca_dev->dev, 0x05, 0x11, 0x0f); reg_write(gspca_dev, 0x05, 0x11, 0x0f);
} }
static void sd_pkt_scan(struct gspca_dev *gspca_dev, static void sd_pkt_scan(struct gspca_dev *gspca_dev,
......
...@@ -1241,10 +1241,10 @@ static const u16 spca508_vista_init_data[][2] = { ...@@ -1241,10 +1241,10 @@ static const u16 spca508_vista_init_data[][2] = {
{} {}
}; };
static int reg_write(struct usb_device *dev, static int reg_write(struct gspca_dev *gspca_dev, u16 index, u16 value)
u16 index, u16 value)
{ {
int ret; int ret;
struct usb_device *dev = gspca_dev->dev;
ret = usb_control_msg(dev, ret = usb_control_msg(dev,
usb_sndctrlpipe(dev, 0), usb_sndctrlpipe(dev, 0),
...@@ -1286,22 +1286,21 @@ static int reg_read(struct gspca_dev *gspca_dev, ...@@ -1286,22 +1286,21 @@ static int reg_read(struct gspca_dev *gspca_dev,
static int ssi_w(struct gspca_dev *gspca_dev, static int ssi_w(struct gspca_dev *gspca_dev,
u16 reg, u16 val) u16 reg, u16 val)
{ {
struct usb_device *dev = gspca_dev->dev;
int ret, retry; int ret, retry;
ret = reg_write(dev, 0x8802, reg >> 8); ret = reg_write(gspca_dev, 0x8802, reg >> 8);
if (ret < 0) if (ret < 0)
goto out; goto out;
ret = reg_write(dev, 0x8801, reg & 0x00ff); ret = reg_write(gspca_dev, 0x8801, reg & 0x00ff);
if (ret < 0) if (ret < 0)
goto out; goto out;
if ((reg & 0xff00) == 0x1000) { /* if 2 bytes */ if ((reg & 0xff00) == 0x1000) { /* if 2 bytes */
ret = reg_write(dev, 0x8805, val & 0x00ff); ret = reg_write(gspca_dev, 0x8805, val & 0x00ff);
if (ret < 0) if (ret < 0)
goto out; goto out;
val >>= 8; val >>= 8;
} }
ret = reg_write(dev, 0x8800, val); ret = reg_write(gspca_dev, 0x8800, val);
if (ret < 0) if (ret < 0)
goto out; goto out;
...@@ -1314,8 +1313,7 @@ static int ssi_w(struct gspca_dev *gspca_dev, ...@@ -1314,8 +1313,7 @@ static int ssi_w(struct gspca_dev *gspca_dev,
if (gspca_dev->usb_buf[0] == 0) if (gspca_dev->usb_buf[0] == 0)
break; break;
if (--retry <= 0) { if (--retry <= 0) {
PDEBUG(D_ERR, "ssi_w busy %02x", PERR("ssi_w busy %02x", gspca_dev->usb_buf[0]);
gspca_dev->usb_buf[0]);
ret = -1; ret = -1;
break; break;
} }
...@@ -1329,7 +1327,6 @@ static int ssi_w(struct gspca_dev *gspca_dev, ...@@ -1329,7 +1327,6 @@ static int ssi_w(struct gspca_dev *gspca_dev,
static int write_vector(struct gspca_dev *gspca_dev, static int write_vector(struct gspca_dev *gspca_dev,
const u16 (*data)[2]) const u16 (*data)[2])
{ {
struct usb_device *dev = gspca_dev->dev;
int ret = 0; int ret = 0;
while ((*data)[1] != 0) { while ((*data)[1] != 0) {
...@@ -1337,7 +1334,8 @@ static int write_vector(struct gspca_dev *gspca_dev, ...@@ -1337,7 +1334,8 @@ static int write_vector(struct gspca_dev *gspca_dev,
if ((*data)[1] == 0xdd00) /* delay */ if ((*data)[1] == 0xdd00) /* delay */
msleep((*data)[0]); msleep((*data)[0]);
else else
ret = reg_write(dev, (*data)[1], (*data)[0]); ret = reg_write(gspca_dev, (*data)[1],
(*data)[0]);
} else { } else {
ret = ssi_w(gspca_dev, (*data)[1], (*data)[0]); ret = ssi_w(gspca_dev, (*data)[1], (*data)[0]);
} }
...@@ -1363,8 +1361,6 @@ static int sd_config(struct gspca_dev *gspca_dev, ...@@ -1363,8 +1361,6 @@ static int sd_config(struct gspca_dev *gspca_dev,
spca508cs110_init_data, /* MicroInnovationIC200 4 */ spca508cs110_init_data, /* MicroInnovationIC200 4 */
spca508_init_data, /* ViewQuestVQ110 5 */ spca508_init_data, /* ViewQuestVQ110 5 */
}; };
#ifdef GSPCA_DEBUG
int data1, data2; int data1, data2;
/* Read from global register the USB product and vendor IDs, just to /* Read from global register the USB product and vendor IDs, just to
...@@ -1381,7 +1377,6 @@ static int sd_config(struct gspca_dev *gspca_dev, ...@@ -1381,7 +1377,6 @@ static int sd_config(struct gspca_dev *gspca_dev,
data1 = reg_read(gspca_dev, 0x8621); data1 = reg_read(gspca_dev, 0x8621);
PDEBUG(D_PROBE, "Window 1 average luminance: %d", data1); PDEBUG(D_PROBE, "Window 1 average luminance: %d", data1);
#endif
cam = &gspca_dev->cam; cam = &gspca_dev->cam;
cam->cam_mode = sif_mode; cam->cam_mode = sif_mode;
...@@ -1404,26 +1399,26 @@ static int sd_start(struct gspca_dev *gspca_dev) ...@@ -1404,26 +1399,26 @@ static int sd_start(struct gspca_dev *gspca_dev)
int mode; int mode;
mode = gspca_dev->cam.cam_mode[gspca_dev->curr_mode].priv; mode = gspca_dev->cam.cam_mode[gspca_dev->curr_mode].priv;
reg_write(gspca_dev->dev, 0x8500, mode); reg_write(gspca_dev, 0x8500, mode);
switch (mode) { switch (mode) {
case 0: case 0:
case 1: case 1:
reg_write(gspca_dev->dev, 0x8700, 0x28); /* clock */ reg_write(gspca_dev, 0x8700, 0x28); /* clock */
break; break;
default: default:
/* case 2: */ /* case 2: */
/* case 3: */ /* case 3: */
reg_write(gspca_dev->dev, 0x8700, 0x23); /* clock */ reg_write(gspca_dev, 0x8700, 0x23); /* clock */
break; break;
} }
reg_write(gspca_dev->dev, 0x8112, 0x10 | 0x20); reg_write(gspca_dev, 0x8112, 0x10 | 0x20);
return 0; return 0;
} }
static void sd_stopN(struct gspca_dev *gspca_dev) static void sd_stopN(struct gspca_dev *gspca_dev)
{ {
/* Video ISO disable, Video Drop Packet enable: */ /* Video ISO disable, Video Drop Packet enable: */
reg_write(gspca_dev->dev, 0x8112, 0x20); reg_write(gspca_dev, 0x8112, 0x20);
} }
static void sd_pkt_scan(struct gspca_dev *gspca_dev, static void sd_pkt_scan(struct gspca_dev *gspca_dev,
...@@ -1450,10 +1445,10 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev, ...@@ -1450,10 +1445,10 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
static void setbrightness(struct gspca_dev *gspca_dev, s32 brightness) static void setbrightness(struct gspca_dev *gspca_dev, s32 brightness)
{ {
/* MX seem contrast */ /* MX seem contrast */
reg_write(gspca_dev->dev, 0x8651, brightness); reg_write(gspca_dev, 0x8651, brightness);
reg_write(gspca_dev->dev, 0x8652, brightness); reg_write(gspca_dev, 0x8652, brightness);
reg_write(gspca_dev->dev, 0x8653, brightness); reg_write(gspca_dev, 0x8653, brightness);
reg_write(gspca_dev->dev, 0x8654, brightness); reg_write(gspca_dev, 0x8654, brightness);
} }
static int sd_s_ctrl(struct v4l2_ctrl *ctrl) static int sd_s_ctrl(struct v4l2_ctrl *ctrl)
......
...@@ -285,9 +285,10 @@ static const __u16 spca561_161rev12A_data2[][2] = { ...@@ -285,9 +285,10 @@ static const __u16 spca561_161rev12A_data2[][2] = {
{} {}
}; };
static void reg_w_val(struct usb_device *dev, __u16 index, __u8 value) static void reg_w_val(struct gspca_dev *gspca_dev, __u16 index, __u8 value)
{ {
int ret; int ret;
struct usb_device *dev = gspca_dev->dev;
ret = usb_control_msg(dev, usb_sndctrlpipe(dev, 0), ret = usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
0, /* request */ 0, /* request */
...@@ -301,12 +302,11 @@ static void reg_w_val(struct usb_device *dev, __u16 index, __u8 value) ...@@ -301,12 +302,11 @@ static void reg_w_val(struct usb_device *dev, __u16 index, __u8 value)
static void write_vector(struct gspca_dev *gspca_dev, static void write_vector(struct gspca_dev *gspca_dev,
const __u16 data[][2]) const __u16 data[][2])
{ {
struct usb_device *dev = gspca_dev->dev;
int i; int i;
i = 0; i = 0;
while (data[i][1] != 0) { while (data[i][1] != 0) {
reg_w_val(dev, data[i][1], data[i][0]); reg_w_val(gspca_dev, data[i][1], data[i][0]);
i++; i++;
} }
} }
...@@ -339,9 +339,9 @@ static void i2c_write(struct gspca_dev *gspca_dev, __u16 value, __u16 reg) ...@@ -339,9 +339,9 @@ static void i2c_write(struct gspca_dev *gspca_dev, __u16 value, __u16 reg)
{ {
int retry = 60; int retry = 60;
reg_w_val(gspca_dev->dev, 0x8801, reg); reg_w_val(gspca_dev, 0x8801, reg);
reg_w_val(gspca_dev->dev, 0x8805, value); reg_w_val(gspca_dev, 0x8805, value);
reg_w_val(gspca_dev->dev, 0x8800, value >> 8); reg_w_val(gspca_dev, 0x8800, value >> 8);
do { do {
reg_r(gspca_dev, 0x8803, 1); reg_r(gspca_dev, 0x8803, 1);
if (!gspca_dev->usb_buf[0]) if (!gspca_dev->usb_buf[0])
...@@ -355,9 +355,9 @@ static int i2c_read(struct gspca_dev *gspca_dev, __u16 reg, __u8 mode) ...@@ -355,9 +355,9 @@ static int i2c_read(struct gspca_dev *gspca_dev, __u16 reg, __u8 mode)
int retry = 60; int retry = 60;
__u8 value; __u8 value;
reg_w_val(gspca_dev->dev, 0x8804, 0x92); reg_w_val(gspca_dev, 0x8804, 0x92);
reg_w_val(gspca_dev->dev, 0x8801, reg); reg_w_val(gspca_dev, 0x8801, reg);
reg_w_val(gspca_dev->dev, 0x8802, mode | 0x01); reg_w_val(gspca_dev, 0x8802, mode | 0x01);
do { do {
reg_r(gspca_dev, 0x8803, 1); reg_r(gspca_dev, 0x8803, 1);
if (!gspca_dev->usb_buf[0]) { if (!gspca_dev->usb_buf[0]) {
...@@ -459,14 +459,13 @@ static int sd_init_72a(struct gspca_dev *gspca_dev) ...@@ -459,14 +459,13 @@ static int sd_init_72a(struct gspca_dev *gspca_dev)
write_sensor_72a(gspca_dev, rev72a_init_sensor1); write_sensor_72a(gspca_dev, rev72a_init_sensor1);
write_vector(gspca_dev, rev72a_init_data2); write_vector(gspca_dev, rev72a_init_data2);
write_sensor_72a(gspca_dev, rev72a_init_sensor2); write_sensor_72a(gspca_dev, rev72a_init_sensor2);
reg_w_val(gspca_dev->dev, 0x8112, 0x30); reg_w_val(gspca_dev, 0x8112, 0x30);
return 0; return 0;
} }
static void setbrightness(struct gspca_dev *gspca_dev, s32 val) static void setbrightness(struct gspca_dev *gspca_dev, s32 val)
{ {
struct sd *sd = (struct sd *) gspca_dev; struct sd *sd = (struct sd *) gspca_dev;
struct usb_device *dev = gspca_dev->dev;
__u16 reg; __u16 reg;
if (sd->chip_revision == Rev012A) if (sd->chip_revision == Rev012A)
...@@ -474,16 +473,15 @@ static void setbrightness(struct gspca_dev *gspca_dev, s32 val) ...@@ -474,16 +473,15 @@ static void setbrightness(struct gspca_dev *gspca_dev, s32 val)
else else
reg = 0x8611; reg = 0x8611;
reg_w_val(dev, reg + 0, val); /* R */ reg_w_val(gspca_dev, reg + 0, val); /* R */
reg_w_val(dev, reg + 1, val); /* Gr */ reg_w_val(gspca_dev, reg + 1, val); /* Gr */
reg_w_val(dev, reg + 2, val); /* B */ reg_w_val(gspca_dev, reg + 2, val); /* B */
reg_w_val(dev, reg + 3, val); /* Gb */ reg_w_val(gspca_dev, reg + 3, val); /* Gb */
} }
static void setwhite(struct gspca_dev *gspca_dev, s32 white, s32 contrast) static void setwhite(struct gspca_dev *gspca_dev, s32 white, s32 contrast)
{ {
struct sd *sd = (struct sd *) gspca_dev; struct sd *sd = (struct sd *) gspca_dev;
struct usb_device *dev = gspca_dev->dev;
__u8 blue, red; __u8 blue, red;
__u16 reg; __u16 reg;
...@@ -496,11 +494,11 @@ static void setwhite(struct gspca_dev *gspca_dev, s32 white, s32 contrast) ...@@ -496,11 +494,11 @@ static void setwhite(struct gspca_dev *gspca_dev, s32 white, s32 contrast)
reg = 0x8651; reg = 0x8651;
red += contrast - 0x20; red += contrast - 0x20;
blue += contrast - 0x20; blue += contrast - 0x20;
reg_w_val(dev, 0x8652, contrast + 0x20); /* Gr */ reg_w_val(gspca_dev, 0x8652, contrast + 0x20); /* Gr */
reg_w_val(dev, 0x8654, contrast + 0x20); /* Gb */ reg_w_val(gspca_dev, 0x8654, contrast + 0x20); /* Gb */
} }
reg_w_val(dev, reg, red); reg_w_val(gspca_dev, reg, red);
reg_w_val(dev, reg + 2, blue); reg_w_val(gspca_dev, reg + 2, blue);
} }
/* rev 12a only */ /* rev 12a only */
...@@ -570,7 +568,6 @@ static void setautogain(struct gspca_dev *gspca_dev, s32 val) ...@@ -570,7 +568,6 @@ static void setautogain(struct gspca_dev *gspca_dev, s32 val)
static int sd_start_12a(struct gspca_dev *gspca_dev) static int sd_start_12a(struct gspca_dev *gspca_dev)
{ {
struct usb_device *dev = gspca_dev->dev;
int mode; int mode;
static const __u8 Reg8391[8] = static const __u8 Reg8391[8] =
{0x92, 0x30, 0x20, 0x00, 0x0c, 0x00, 0x00, 0x00}; {0x92, 0x30, 0x20, 0x00, 0x0c, 0x00, 0x00, 0x00};
...@@ -578,34 +575,33 @@ static int sd_start_12a(struct gspca_dev *gspca_dev) ...@@ -578,34 +575,33 @@ static int sd_start_12a(struct gspca_dev *gspca_dev)
mode = gspca_dev->cam.cam_mode[(int) gspca_dev->curr_mode].priv; mode = gspca_dev->cam.cam_mode[(int) gspca_dev->curr_mode].priv;
if (mode <= 1) { if (mode <= 1) {
/* Use compression on 320x240 and above */ /* Use compression on 320x240 and above */
reg_w_val(dev, 0x8500, 0x10 | mode); reg_w_val(gspca_dev, 0x8500, 0x10 | mode);
} else { } else {
/* I couldn't get the compression to work below 320x240 /* I couldn't get the compression to work below 320x240
* Fortunately at these resolutions the bandwidth * Fortunately at these resolutions the bandwidth
* is sufficient to push raw frames at ~20fps */ * is sufficient to push raw frames at ~20fps */
reg_w_val(dev, 0x8500, mode); reg_w_val(gspca_dev, 0x8500, mode);
} /* -- qq@kuku.eu.org */ } /* -- qq@kuku.eu.org */
gspca_dev->usb_buf[0] = 0xaa; gspca_dev->usb_buf[0] = 0xaa;
gspca_dev->usb_buf[1] = 0x00; gspca_dev->usb_buf[1] = 0x00;
reg_w_buf(gspca_dev, 0x8307, 2); reg_w_buf(gspca_dev, 0x8307, 2);
/* clock - lower 0x8X values lead to fps > 30 */ /* clock - lower 0x8X values lead to fps > 30 */
reg_w_val(gspca_dev->dev, 0x8700, 0x8a); reg_w_val(gspca_dev, 0x8700, 0x8a);
/* 0x8f 0x85 0x27 clock */ /* 0x8f 0x85 0x27 clock */
reg_w_val(gspca_dev->dev, 0x8112, 0x1e | 0x20); reg_w_val(gspca_dev, 0x8112, 0x1e | 0x20);
reg_w_val(gspca_dev->dev, 0x850b, 0x03); reg_w_val(gspca_dev, 0x850b, 0x03);
memcpy(gspca_dev->usb_buf, Reg8391, 8); memcpy(gspca_dev->usb_buf, Reg8391, 8);
reg_w_buf(gspca_dev, 0x8391, 8); reg_w_buf(gspca_dev, 0x8391, 8);
reg_w_buf(gspca_dev, 0x8390, 8); reg_w_buf(gspca_dev, 0x8390, 8);
/* Led ON (bit 3 -> 0 */ /* Led ON (bit 3 -> 0 */
reg_w_val(gspca_dev->dev, 0x8114, 0x00); reg_w_val(gspca_dev, 0x8114, 0x00);
return 0; return 0;
} }
static int sd_start_72a(struct gspca_dev *gspca_dev) static int sd_start_72a(struct gspca_dev *gspca_dev)
{ {
struct sd *sd = (struct sd *) gspca_dev; struct sd *sd = (struct sd *) gspca_dev;
struct usb_device *dev = gspca_dev->dev;
int Clck; int Clck;
int mode; int mode;
...@@ -630,15 +626,15 @@ static int sd_start_72a(struct gspca_dev *gspca_dev) ...@@ -630,15 +626,15 @@ static int sd_start_72a(struct gspca_dev *gspca_dev)
Clck = 0x21; Clck = 0x21;
break; break;
} }
reg_w_val(dev, 0x8700, Clck); /* 0x27 clock */ reg_w_val(gspca_dev, 0x8700, Clck); /* 0x27 clock */
reg_w_val(dev, 0x8702, 0x81); reg_w_val(gspca_dev, 0x8702, 0x81);
reg_w_val(dev, 0x8500, mode); /* mode */ reg_w_val(gspca_dev, 0x8500, mode); /* mode */
write_sensor_72a(gspca_dev, rev72a_init_sensor2); write_sensor_72a(gspca_dev, rev72a_init_sensor2);
setwhite(gspca_dev, v4l2_ctrl_g_ctrl(sd->hue), setwhite(gspca_dev, v4l2_ctrl_g_ctrl(sd->hue),
v4l2_ctrl_g_ctrl(sd->contrast)); v4l2_ctrl_g_ctrl(sd->contrast));
/* setbrightness(gspca_dev); * fixme: bad values */ /* setbrightness(gspca_dev); * fixme: bad values */
setautogain(gspca_dev, v4l2_ctrl_g_ctrl(sd->autogain)); setautogain(gspca_dev, v4l2_ctrl_g_ctrl(sd->autogain));
reg_w_val(dev, 0x8112, 0x10 | 0x20); reg_w_val(gspca_dev, 0x8112, 0x10 | 0x20);
return 0; return 0;
} }
...@@ -647,12 +643,12 @@ static void sd_stopN(struct gspca_dev *gspca_dev) ...@@ -647,12 +643,12 @@ static void sd_stopN(struct gspca_dev *gspca_dev)
struct sd *sd = (struct sd *) gspca_dev; struct sd *sd = (struct sd *) gspca_dev;
if (sd->chip_revision == Rev012A) { if (sd->chip_revision == Rev012A) {
reg_w_val(gspca_dev->dev, 0x8112, 0x0e); reg_w_val(gspca_dev, 0x8112, 0x0e);
/* Led Off (bit 3 -> 1 */ /* Led Off (bit 3 -> 1 */
reg_w_val(gspca_dev->dev, 0x8114, 0x08); reg_w_val(gspca_dev, 0x8114, 0x08);
} else { } else {
reg_w_val(gspca_dev->dev, 0x8112, 0x20); reg_w_val(gspca_dev, 0x8112, 0x20);
/* reg_w_val(gspca_dev->dev, 0x8102, 0x00); ?? */ /* reg_w_val(gspca_dev, 0x8102, 0x00); ?? */
} }
} }
...@@ -736,7 +732,7 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev, ...@@ -736,7 +732,7 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
/* This should never happen */ /* This should never happen */
if (len < 2) { if (len < 2) {
PDEBUG(D_ERR, "Short SOF packet, ignoring"); PERR("Short SOF packet, ignoring");
gspca_dev->last_packet_type = DISCARD_PACKET; gspca_dev->last_packet_type = DISCARD_PACKET;
return; return;
} }
......
...@@ -387,7 +387,7 @@ static int sd_start(struct gspca_dev *gspca_dev) ...@@ -387,7 +387,7 @@ static int sd_start(struct gspca_dev *gspca_dev)
} }
if (ret < 0) { if (ret < 0) {
PDEBUG(D_ERR, "Start streaming command failed"); PERR("Start streaming command failed");
return ret; return ret;
} }
/* Start the workqueue function to do the streaming */ /* Start the workqueue function to do the streaming */
......
...@@ -215,13 +215,13 @@ static int sd_config(struct gspca_dev *gspca_dev, ...@@ -215,13 +215,13 @@ static int sd_config(struct gspca_dev *gspca_dev,
ret = sq905c_command(gspca_dev, SQ905C_GET_ID, 0); ret = sq905c_command(gspca_dev, SQ905C_GET_ID, 0);
if (ret < 0) { if (ret < 0) {
PDEBUG(D_ERR, "Get version command failed"); PERR("Get version command failed");
return ret; return ret;
} }
ret = sq905c_read(gspca_dev, 0xf5, 0, 20); ret = sq905c_read(gspca_dev, 0xf5, 0, 20);
if (ret < 0) { if (ret < 0) {
PDEBUG(D_ERR, "Reading version command failed"); PERR("Reading version command failed");
return ret; return ret;
} }
/* Note we leave out the usb id and the manufacturing date */ /* Note we leave out the usb id and the manufacturing date */
...@@ -286,7 +286,7 @@ static int sd_start(struct gspca_dev *gspca_dev) ...@@ -286,7 +286,7 @@ static int sd_start(struct gspca_dev *gspca_dev)
} }
if (ret < 0) { if (ret < 0) {
PDEBUG(D_ERR, "Start streaming command failed"); PERR("Start streaming command failed");
return ret; return ret;
} }
/* Start the workqueue function to do the streaming */ /* Start the workqueue function to do the streaming */
......
...@@ -541,13 +541,11 @@ static void ucbus_write(struct gspca_dev *gspca_dev, ...@@ -541,13 +541,11 @@ static void ucbus_write(struct gspca_dev *gspca_dev,
if (gspca_dev->usb_err < 0) if (gspca_dev->usb_err < 0)
return; return;
#ifdef GSPCA_DEBUG
if ((batchsize - 1) * 3 > USB_BUF_SZ) { if ((batchsize - 1) * 3 > USB_BUF_SZ) {
pr_err("Bug: usb_buf overflow\n"); PERR("Bug: usb_buf overflow\n");
gspca_dev->usb_err = -ENOMEM; gspca_dev->usb_err = -ENOMEM;
return; return;
} }
#endif
for (;;) { for (;;) {
len = ncmds; len = ncmds;
......
...@@ -86,7 +86,7 @@ static int stv_sndctrl(struct gspca_dev *gspca_dev, int set, u8 req, u16 val, ...@@ -86,7 +86,7 @@ static int stv_sndctrl(struct gspca_dev *gspca_dev, int set, u8 req, u16 val,
static int stv0680_handle_error(struct gspca_dev *gspca_dev, int ret) static int stv0680_handle_error(struct gspca_dev *gspca_dev, int ret)
{ {
stv_sndctrl(gspca_dev, 0, 0x80, 0, 0x02); /* Get Last Error */ stv_sndctrl(gspca_dev, 0, 0x80, 0, 0x02); /* Get Last Error */
PDEBUG(D_ERR, "last error: %i, command = 0x%x", PERR("last error: %i, command = 0x%x",
gspca_dev->usb_buf[0], gspca_dev->usb_buf[1]); gspca_dev->usb_buf[0], gspca_dev->usb_buf[1]);
return ret; return ret;
} }
...@@ -98,7 +98,7 @@ static int stv0680_get_video_mode(struct gspca_dev *gspca_dev) ...@@ -98,7 +98,7 @@ static int stv0680_get_video_mode(struct gspca_dev *gspca_dev)
gspca_dev->usb_buf[0] = 0x0f; gspca_dev->usb_buf[0] = 0x0f;
if (stv_sndctrl(gspca_dev, 0, 0x87, 0, 0x08) != 0x08) { if (stv_sndctrl(gspca_dev, 0, 0x87, 0, 0x08) != 0x08) {
PDEBUG(D_ERR, "Get_Camera_Mode failed"); PERR("Get_Camera_Mode failed");
return stv0680_handle_error(gspca_dev, -EIO); return stv0680_handle_error(gspca_dev, -EIO);
} }
...@@ -116,13 +116,13 @@ static int stv0680_set_video_mode(struct gspca_dev *gspca_dev, u8 mode) ...@@ -116,13 +116,13 @@ static int stv0680_set_video_mode(struct gspca_dev *gspca_dev, u8 mode)
gspca_dev->usb_buf[0] = mode; gspca_dev->usb_buf[0] = mode;
if (stv_sndctrl(gspca_dev, 3, 0x07, 0x0100, 0x08) != 0x08) { if (stv_sndctrl(gspca_dev, 3, 0x07, 0x0100, 0x08) != 0x08) {
PDEBUG(D_ERR, "Set_Camera_Mode failed"); PERR("Set_Camera_Mode failed");
return stv0680_handle_error(gspca_dev, -EIO); return stv0680_handle_error(gspca_dev, -EIO);
} }
/* Verify we got what we've asked for */ /* Verify we got what we've asked for */
if (stv0680_get_video_mode(gspca_dev) != mode) { if (stv0680_get_video_mode(gspca_dev) != mode) {
PDEBUG(D_ERR, "Error setting camera video mode!"); PERR("Error setting camera video mode!");
return -EIO; return -EIO;
} }
...@@ -146,7 +146,7 @@ static int sd_config(struct gspca_dev *gspca_dev, ...@@ -146,7 +146,7 @@ static int sd_config(struct gspca_dev *gspca_dev,
/* ping camera to be sure STV0680 is present */ /* ping camera to be sure STV0680 is present */
if (stv_sndctrl(gspca_dev, 0, 0x88, 0x5678, 0x02) != 0x02 || if (stv_sndctrl(gspca_dev, 0, 0x88, 0x5678, 0x02) != 0x02 ||
gspca_dev->usb_buf[0] != 0x56 || gspca_dev->usb_buf[1] != 0x78) { gspca_dev->usb_buf[0] != 0x56 || gspca_dev->usb_buf[1] != 0x78) {
PDEBUG(D_ERR, "STV(e): camera ping failed!!"); PERR("STV(e): camera ping failed!!");
return stv0680_handle_error(gspca_dev, -ENODEV); return stv0680_handle_error(gspca_dev, -ENODEV);
} }
...@@ -156,7 +156,7 @@ static int sd_config(struct gspca_dev *gspca_dev, ...@@ -156,7 +156,7 @@ static int sd_config(struct gspca_dev *gspca_dev,
if (stv_sndctrl(gspca_dev, 2, 0x06, 0x0200, 0x22) != 0x22 || if (stv_sndctrl(gspca_dev, 2, 0x06, 0x0200, 0x22) != 0x22 ||
gspca_dev->usb_buf[7] != 0xa0 || gspca_dev->usb_buf[8] != 0x23) { gspca_dev->usb_buf[7] != 0xa0 || gspca_dev->usb_buf[8] != 0x23) {
PDEBUG(D_ERR, "Could not get descriptor 0200."); PERR("Could not get descriptor 0200.");
return stv0680_handle_error(gspca_dev, -ENODEV); return stv0680_handle_error(gspca_dev, -ENODEV);
} }
if (stv_sndctrl(gspca_dev, 0, 0x8a, 0, 0x02) != 0x02) if (stv_sndctrl(gspca_dev, 0, 0x8a, 0, 0x02) != 0x02)
...@@ -167,7 +167,7 @@ static int sd_config(struct gspca_dev *gspca_dev, ...@@ -167,7 +167,7 @@ static int sd_config(struct gspca_dev *gspca_dev,
return stv0680_handle_error(gspca_dev, -ENODEV); return stv0680_handle_error(gspca_dev, -ENODEV);
if (!(gspca_dev->usb_buf[7] & 0x09)) { if (!(gspca_dev->usb_buf[7] & 0x09)) {
PDEBUG(D_ERR, "Camera supports neither CIF nor QVGA mode"); PERR("Camera supports neither CIF nor QVGA mode");
return -ENODEV; return -ENODEV;
} }
if (gspca_dev->usb_buf[7] & 0x01) if (gspca_dev->usb_buf[7] & 0x01)
......
...@@ -42,8 +42,10 @@ static bool dump_sensor; ...@@ -42,8 +42,10 @@ static bool dump_sensor;
int stv06xx_write_bridge(struct sd *sd, u16 address, u16 i2c_data) int stv06xx_write_bridge(struct sd *sd, u16 address, u16 i2c_data)
{ {
int err; int err;
struct gspca_dev *gspca_dev = (struct gspca_dev *)sd;
struct usb_device *udev = sd->gspca_dev.dev; struct usb_device *udev = sd->gspca_dev.dev;
__u8 *buf = sd->gspca_dev.usb_buf; __u8 *buf = sd->gspca_dev.usb_buf;
u8 len = (i2c_data > 0xff) ? 2 : 1; u8 len = (i2c_data > 0xff) ? 2 : 1;
buf[0] = i2c_data & 0xff; buf[0] = i2c_data & 0xff;
...@@ -62,6 +64,7 @@ int stv06xx_write_bridge(struct sd *sd, u16 address, u16 i2c_data) ...@@ -62,6 +64,7 @@ int stv06xx_write_bridge(struct sd *sd, u16 address, u16 i2c_data)
int stv06xx_read_bridge(struct sd *sd, u16 address, u8 *i2c_data) int stv06xx_read_bridge(struct sd *sd, u16 address, u8 *i2c_data)
{ {
int err; int err;
struct gspca_dev *gspca_dev = (struct gspca_dev *)sd;
struct usb_device *udev = sd->gspca_dev.dev; struct usb_device *udev = sd->gspca_dev.dev;
__u8 *buf = sd->gspca_dev.usb_buf; __u8 *buf = sd->gspca_dev.usb_buf;
...@@ -110,6 +113,7 @@ static int stv06xx_write_sensor_finish(struct sd *sd) ...@@ -110,6 +113,7 @@ static int stv06xx_write_sensor_finish(struct sd *sd)
int stv06xx_write_sensor_bytes(struct sd *sd, const u8 *data, u8 len) int stv06xx_write_sensor_bytes(struct sd *sd, const u8 *data, u8 len)
{ {
int err, i, j; int err, i, j;
struct gspca_dev *gspca_dev = (struct gspca_dev *)sd;
struct usb_device *udev = sd->gspca_dev.dev; struct usb_device *udev = sd->gspca_dev.dev;
__u8 *buf = sd->gspca_dev.usb_buf; __u8 *buf = sd->gspca_dev.usb_buf;
...@@ -139,6 +143,7 @@ int stv06xx_write_sensor_bytes(struct sd *sd, const u8 *data, u8 len) ...@@ -139,6 +143,7 @@ int stv06xx_write_sensor_bytes(struct sd *sd, const u8 *data, u8 len)
int stv06xx_write_sensor_words(struct sd *sd, const u16 *data, u8 len) int stv06xx_write_sensor_words(struct sd *sd, const u16 *data, u8 len)
{ {
int err, i, j; int err, i, j;
struct gspca_dev *gspca_dev = (struct gspca_dev *)sd;
struct usb_device *udev = sd->gspca_dev.dev; struct usb_device *udev = sd->gspca_dev.dev;
__u8 *buf = sd->gspca_dev.usb_buf; __u8 *buf = sd->gspca_dev.usb_buf;
...@@ -170,6 +175,7 @@ int stv06xx_write_sensor_words(struct sd *sd, const u16 *data, u8 len) ...@@ -170,6 +175,7 @@ int stv06xx_write_sensor_words(struct sd *sd, const u16 *data, u8 len)
int stv06xx_read_sensor(struct sd *sd, const u8 address, u16 *value) int stv06xx_read_sensor(struct sd *sd, const u8 address, u16 *value)
{ {
int err; int err;
struct gspca_dev *gspca_dev = (struct gspca_dev *)sd;
struct usb_device *udev = sd->gspca_dev.dev; struct usb_device *udev = sd->gspca_dev.dev;
__u8 *buf = sd->gspca_dev.usb_buf; __u8 *buf = sd->gspca_dev.usb_buf;
...@@ -283,7 +289,7 @@ static int stv06xx_start(struct gspca_dev *gspca_dev) ...@@ -283,7 +289,7 @@ static int stv06xx_start(struct gspca_dev *gspca_dev)
intf = usb_ifnum_to_if(sd->gspca_dev.dev, sd->gspca_dev.iface); intf = usb_ifnum_to_if(sd->gspca_dev.dev, sd->gspca_dev.iface);
alt = usb_altnum_to_altsetting(intf, sd->gspca_dev.alt); alt = usb_altnum_to_altsetting(intf, sd->gspca_dev.alt);
if (!alt) { if (!alt) {
PDEBUG(D_ERR, "Couldn't get altsetting"); PERR("Couldn't get altsetting");
return -EIO; return -EIO;
} }
...@@ -341,7 +347,7 @@ static int stv06xx_isoc_nego(struct gspca_dev *gspca_dev) ...@@ -341,7 +347,7 @@ static int stv06xx_isoc_nego(struct gspca_dev *gspca_dev)
ret = usb_set_interface(gspca_dev->dev, gspca_dev->iface, 1); ret = usb_set_interface(gspca_dev->dev, gspca_dev->iface, 1);
if (ret < 0) if (ret < 0)
PDEBUG(D_ERR|D_STREAM, "set alt 1 err %d", ret); PERR("set alt 1 err %d", ret);
return ret; return ret;
} }
...@@ -406,7 +412,7 @@ static void stv06xx_pkt_scan(struct gspca_dev *gspca_dev, ...@@ -406,7 +412,7 @@ static void stv06xx_pkt_scan(struct gspca_dev *gspca_dev,
len -= 4; len -= 4;
if (len < chunk_len) { if (len < chunk_len) {
PDEBUG(D_ERR, "URB packet length is smaller" PERR("URB packet length is smaller"
" than the specified chunk length"); " than the specified chunk length");
gspca_dev->last_packet_type = DISCARD_PACKET; gspca_dev->last_packet_type = DISCARD_PACKET;
return; return;
...@@ -449,7 +455,7 @@ static void stv06xx_pkt_scan(struct gspca_dev *gspca_dev, ...@@ -449,7 +455,7 @@ static void stv06xx_pkt_scan(struct gspca_dev *gspca_dev,
sd->to_skip = gspca_dev->width * 4; sd->to_skip = gspca_dev->width * 4;
if (chunk_len) if (chunk_len)
PDEBUG(D_ERR, "Chunk length is " PERR("Chunk length is "
"non-zero on a SOF"); "non-zero on a SOF");
break; break;
...@@ -463,7 +469,7 @@ static void stv06xx_pkt_scan(struct gspca_dev *gspca_dev, ...@@ -463,7 +469,7 @@ static void stv06xx_pkt_scan(struct gspca_dev *gspca_dev,
NULL, 0); NULL, 0);
if (chunk_len) if (chunk_len)
PDEBUG(D_ERR, "Chunk length is " PERR("Chunk length is "
"non-zero on a EOF"); "non-zero on a EOF");
break; break;
...@@ -596,7 +602,6 @@ MODULE_DEVICE_TABLE(usb, device_table); ...@@ -596,7 +602,6 @@ MODULE_DEVICE_TABLE(usb, device_table);
static int sd_probe(struct usb_interface *intf, static int sd_probe(struct usb_interface *intf,
const struct usb_device_id *id) const struct usb_device_id *id)
{ {
PDEBUG(D_PROBE, "Probing for a stv06xx device");
return gspca_dev_probe(intf, id, &sd_desc, sizeof(struct sd), return gspca_dev_probe(intf, id, &sd_desc, sizeof(struct sd),
THIS_MODULE); THIS_MODULE);
} }
......
...@@ -255,7 +255,7 @@ static int hdcs_set_exposure(struct gspca_dev *gspca_dev, __s32 val) ...@@ -255,7 +255,7 @@ static int hdcs_set_exposure(struct gspca_dev *gspca_dev, __s32 val)
if (err < 0) if (err < 0)
return err; return err;
} }
PDEBUG(D_V4L2, "Writing exposure %d, rowexp %d, srowexp %d", PDEBUG(D_CONF, "Writing exposure %d, rowexp %d, srowexp %d",
val, rowexp, srowexp); val, rowexp, srowexp);
return err; return err;
} }
...@@ -280,7 +280,7 @@ static int hdcs_set_gains(struct sd *sd, u8 g) ...@@ -280,7 +280,7 @@ static int hdcs_set_gains(struct sd *sd, u8 g)
static int hdcs_set_gain(struct gspca_dev *gspca_dev, __s32 val) static int hdcs_set_gain(struct gspca_dev *gspca_dev, __s32 val)
{ {
PDEBUG(D_V4L2, "Writing gain %d", val); PDEBUG(D_CONF, "Writing gain %d", val);
return hdcs_set_gains((struct sd *) gspca_dev, return hdcs_set_gains((struct sd *) gspca_dev,
val & 0xff); val & 0xff);
} }
...@@ -467,6 +467,8 @@ static int hdcs_probe_1020(struct sd *sd) ...@@ -467,6 +467,8 @@ static int hdcs_probe_1020(struct sd *sd)
static int hdcs_start(struct sd *sd) static int hdcs_start(struct sd *sd)
{ {
struct gspca_dev *gspca_dev = (struct gspca_dev *)sd;
PDEBUG(D_STREAM, "Starting stream"); PDEBUG(D_STREAM, "Starting stream");
return hdcs_set_state(sd, HDCS_STATE_RUN); return hdcs_set_state(sd, HDCS_STATE_RUN);
...@@ -474,6 +476,8 @@ static int hdcs_start(struct sd *sd) ...@@ -474,6 +476,8 @@ static int hdcs_start(struct sd *sd)
static int hdcs_stop(struct sd *sd) static int hdcs_stop(struct sd *sd)
{ {
struct gspca_dev *gspca_dev = (struct gspca_dev *)sd;
PDEBUG(D_STREAM, "Halting stream"); PDEBUG(D_STREAM, "Halting stream");
return hdcs_set_state(sd, HDCS_STATE_SLEEP); return hdcs_set_state(sd, HDCS_STATE_SLEEP);
......
...@@ -190,6 +190,7 @@ static int pb0100_start(struct sd *sd) ...@@ -190,6 +190,7 @@ static int pb0100_start(struct sd *sd)
int err, packet_size, max_packet_size; int err, packet_size, max_packet_size;
struct usb_host_interface *alt; struct usb_host_interface *alt;
struct usb_interface *intf; struct usb_interface *intf;
struct gspca_dev *gspca_dev = (struct gspca_dev *)sd;
struct cam *cam = &sd->gspca_dev.cam; struct cam *cam = &sd->gspca_dev.cam;
u32 mode = cam->cam_mode[sd->gspca_dev.curr_mode].priv; u32 mode = cam->cam_mode[sd->gspca_dev.curr_mode].priv;
...@@ -239,6 +240,7 @@ static int pb0100_start(struct sd *sd) ...@@ -239,6 +240,7 @@ static int pb0100_start(struct sd *sd)
static int pb0100_stop(struct sd *sd) static int pb0100_stop(struct sd *sd)
{ {
struct gspca_dev *gspca_dev = (struct gspca_dev *)sd;
int err; int err;
err = stv06xx_write_sensor(sd, PB_ABORTFRAME, 1); err = stv06xx_write_sensor(sd, PB_ABORTFRAME, 1);
...@@ -334,7 +336,7 @@ static int pb0100_set_gain(struct gspca_dev *gspca_dev, __s32 val) ...@@ -334,7 +336,7 @@ static int pb0100_set_gain(struct gspca_dev *gspca_dev, __s32 val)
err = stv06xx_write_sensor(sd, PB_G1GAIN, val); err = stv06xx_write_sensor(sd, PB_G1GAIN, val);
if (!err) if (!err)
err = stv06xx_write_sensor(sd, PB_G2GAIN, val); err = stv06xx_write_sensor(sd, PB_G2GAIN, val);
PDEBUG(D_V4L2, "Set green gain to %d, status: %d", val, err); PDEBUG(D_CONF, "Set green gain to %d, status: %d", val, err);
if (!err) if (!err)
err = pb0100_set_red_balance(gspca_dev, ctrls->red->val); err = pb0100_set_red_balance(gspca_dev, ctrls->red->val);
...@@ -357,7 +359,7 @@ static int pb0100_set_red_balance(struct gspca_dev *gspca_dev, __s32 val) ...@@ -357,7 +359,7 @@ static int pb0100_set_red_balance(struct gspca_dev *gspca_dev, __s32 val)
val = 255; val = 255;
err = stv06xx_write_sensor(sd, PB_RGAIN, val); err = stv06xx_write_sensor(sd, PB_RGAIN, val);
PDEBUG(D_V4L2, "Set red gain to %d, status: %d", val, err); PDEBUG(D_CONF, "Set red gain to %d, status: %d", val, err);
return err; return err;
} }
...@@ -375,7 +377,7 @@ static int pb0100_set_blue_balance(struct gspca_dev *gspca_dev, __s32 val) ...@@ -375,7 +377,7 @@ static int pb0100_set_blue_balance(struct gspca_dev *gspca_dev, __s32 val)
val = 255; val = 255;
err = stv06xx_write_sensor(sd, PB_BGAIN, val); err = stv06xx_write_sensor(sd, PB_BGAIN, val);
PDEBUG(D_V4L2, "Set blue gain to %d, status: %d", val, err); PDEBUG(D_CONF, "Set blue gain to %d, status: %d", val, err);
return err; return err;
} }
...@@ -386,7 +388,7 @@ static int pb0100_set_exposure(struct gspca_dev *gspca_dev, __s32 val) ...@@ -386,7 +388,7 @@ static int pb0100_set_exposure(struct gspca_dev *gspca_dev, __s32 val)
int err; int err;
err = stv06xx_write_sensor(sd, PB_RINTTIME, val); err = stv06xx_write_sensor(sd, PB_RINTTIME, val);
PDEBUG(D_V4L2, "Set exposure to %d, status: %d", val, err); PDEBUG(D_CONF, "Set exposure to %d, status: %d", val, err);
return err; return err;
} }
...@@ -406,7 +408,7 @@ static int pb0100_set_autogain(struct gspca_dev *gspca_dev, __s32 val) ...@@ -406,7 +408,7 @@ static int pb0100_set_autogain(struct gspca_dev *gspca_dev, __s32 val)
val = 0; val = 0;
err = stv06xx_write_sensor(sd, PB_EXPGAIN, val); err = stv06xx_write_sensor(sd, PB_EXPGAIN, val);
PDEBUG(D_V4L2, "Set autogain to %d (natural: %d), status: %d", PDEBUG(D_CONF, "Set autogain to %d (natural: %d), status: %d",
val, ctrls->natural->val, err); val, ctrls->natural->val, err);
return err; return err;
...@@ -428,7 +430,7 @@ static int pb0100_set_autogain_target(struct gspca_dev *gspca_dev, __s32 val) ...@@ -428,7 +430,7 @@ static int pb0100_set_autogain_target(struct gspca_dev *gspca_dev, __s32 val)
if (!err) if (!err)
err = stv06xx_write_sensor(sd, PB_R22, darkpixels); err = stv06xx_write_sensor(sd, PB_R22, darkpixels);
PDEBUG(D_V4L2, "Set autogain target to %d, status: %d", val, err); PDEBUG(D_CONF, "Set autogain target to %d, status: %d", val, err);
return err; return err;
} }
...@@ -279,6 +279,8 @@ static int st6422_start(struct sd *sd) ...@@ -279,6 +279,8 @@ static int st6422_start(struct sd *sd)
static int st6422_stop(struct sd *sd) static int st6422_stop(struct sd *sd)
{ {
struct gspca_dev *gspca_dev = (struct gspca_dev *)sd;
PDEBUG(D_STREAM, "Halting stream"); PDEBUG(D_STREAM, "Halting stream");
return 0; return 0;
......
...@@ -131,6 +131,7 @@ static int vv6410_init(struct sd *sd) ...@@ -131,6 +131,7 @@ static int vv6410_init(struct sd *sd)
static int vv6410_start(struct sd *sd) static int vv6410_start(struct sd *sd)
{ {
int err; int err;
struct gspca_dev *gspca_dev = (struct gspca_dev *)sd;
struct cam *cam = &sd->gspca_dev.cam; struct cam *cam = &sd->gspca_dev.cam;
u32 priv = cam->cam_mode[sd->gspca_dev.curr_mode].priv; u32 priv = cam->cam_mode[sd->gspca_dev.curr_mode].priv;
...@@ -163,6 +164,7 @@ static int vv6410_start(struct sd *sd) ...@@ -163,6 +164,7 @@ static int vv6410_start(struct sd *sd)
static int vv6410_stop(struct sd *sd) static int vv6410_stop(struct sd *sd)
{ {
struct gspca_dev *gspca_dev = (struct gspca_dev *)sd;
int err; int err;
/* Turn off LED */ /* Turn off LED */
...@@ -208,7 +210,7 @@ static int vv6410_set_hflip(struct gspca_dev *gspca_dev, __s32 val) ...@@ -208,7 +210,7 @@ static int vv6410_set_hflip(struct gspca_dev *gspca_dev, __s32 val)
else else
i2c_data &= ~VV6410_HFLIP; i2c_data &= ~VV6410_HFLIP;
PDEBUG(D_V4L2, "Set horizontal flip to %d", val); PDEBUG(D_CONF, "Set horizontal flip to %d", val);
err = stv06xx_write_sensor(sd, VV6410_DATAFORMAT, i2c_data); err = stv06xx_write_sensor(sd, VV6410_DATAFORMAT, i2c_data);
return (err < 0) ? err : 0; return (err < 0) ? err : 0;
...@@ -229,7 +231,7 @@ static int vv6410_set_vflip(struct gspca_dev *gspca_dev, __s32 val) ...@@ -229,7 +231,7 @@ static int vv6410_set_vflip(struct gspca_dev *gspca_dev, __s32 val)
else else
i2c_data &= ~VV6410_VFLIP; i2c_data &= ~VV6410_VFLIP;
PDEBUG(D_V4L2, "Set vertical flip to %d", val); PDEBUG(D_CONF, "Set vertical flip to %d", val);
err = stv06xx_write_sensor(sd, VV6410_DATAFORMAT, i2c_data); err = stv06xx_write_sensor(sd, VV6410_DATAFORMAT, i2c_data);
return (err < 0) ? err : 0; return (err < 0) ? err : 0;
...@@ -240,7 +242,7 @@ static int vv6410_set_analog_gain(struct gspca_dev *gspca_dev, __s32 val) ...@@ -240,7 +242,7 @@ static int vv6410_set_analog_gain(struct gspca_dev *gspca_dev, __s32 val)
int err; int err;
struct sd *sd = (struct sd *) gspca_dev; struct sd *sd = (struct sd *) gspca_dev;
PDEBUG(D_V4L2, "Set analog gain to %d", val); PDEBUG(D_CONF, "Set analog gain to %d", val);
err = stv06xx_write_sensor(sd, VV6410_ANALOGGAIN, 0xf0 | (val & 0xf)); err = stv06xx_write_sensor(sd, VV6410_ANALOGGAIN, 0xf0 | (val & 0xf));
return (err < 0) ? err : 0; return (err < 0) ? err : 0;
...@@ -257,7 +259,7 @@ static int vv6410_set_exposure(struct gspca_dev *gspca_dev, __s32 val) ...@@ -257,7 +259,7 @@ static int vv6410_set_exposure(struct gspca_dev *gspca_dev, __s32 val)
fine = val % VV6410_CIF_LINELENGTH; fine = val % VV6410_CIF_LINELENGTH;
coarse = min(512, val / VV6410_CIF_LINELENGTH); coarse = min(512, val / VV6410_CIF_LINELENGTH);
PDEBUG(D_V4L2, "Set coarse exposure to %d, fine expsure to %d", PDEBUG(D_CONF, "Set coarse exposure to %d, fine expsure to %d",
coarse, fine); coarse, fine);
err = stv06xx_write_sensor(sd, VV6410_FINEH, fine >> 8); err = stv06xx_write_sensor(sd, VV6410_FINEH, fine >> 8);
......
...@@ -251,12 +251,10 @@ static void reg_r(struct gspca_dev *gspca_dev, ...@@ -251,12 +251,10 @@ static void reg_r(struct gspca_dev *gspca_dev,
{ {
int ret; int ret;
#ifdef GSPCA_DEBUG
if (len > USB_BUF_SZ) { if (len > USB_BUF_SZ) {
pr_err("reg_r: buffer overflow\n"); PERR("reg_r: buffer overflow\n");
return; return;
} }
#endif
if (gspca_dev->usb_err < 0) if (gspca_dev->usb_err < 0)
return; return;
ret = usb_control_msg(gspca_dev->dev, ret = usb_control_msg(gspca_dev->dev,
...@@ -357,12 +355,14 @@ static void spca504_acknowledged_command(struct gspca_dev *gspca_dev, ...@@ -357,12 +355,14 @@ static void spca504_acknowledged_command(struct gspca_dev *gspca_dev,
PDEBUG(D_FRAM, "after wait 0x%04x", gspca_dev->usb_buf[0]); PDEBUG(D_FRAM, "after wait 0x%04x", gspca_dev->usb_buf[0]);
} }
#ifdef GSPCA_DEBUG
static void spca504_read_info(struct gspca_dev *gspca_dev) static void spca504_read_info(struct gspca_dev *gspca_dev)
{ {
int i; int i;
u8 info[6]; u8 info[6];
if (gspca_debug < D_STREAM)
return;
for (i = 0; i < 6; i++) { for (i = 0; i < 6; i++) {
reg_r(gspca_dev, 0, i, 1); reg_r(gspca_dev, 0, i, 1);
info[i] = gspca_dev->usb_buf[0]; info[i] = gspca_dev->usb_buf[0];
...@@ -373,7 +373,6 @@ static void spca504_read_info(struct gspca_dev *gspca_dev) ...@@ -373,7 +373,6 @@ static void spca504_read_info(struct gspca_dev *gspca_dev)
info[0], info[1], info[2], info[0], info[1], info[2],
info[3], info[4], info[5]); info[3], info[4], info[5]);
} }
#endif
static void spca504A_acknowledged_command(struct gspca_dev *gspca_dev, static void spca504A_acknowledged_command(struct gspca_dev *gspca_dev,
u8 req, u8 req,
...@@ -432,11 +431,13 @@ static void spca504B_WaitCmdStatus(struct gspca_dev *gspca_dev) ...@@ -432,11 +431,13 @@ static void spca504B_WaitCmdStatus(struct gspca_dev *gspca_dev)
} }
} }
#ifdef GSPCA_DEBUG
static void spca50x_GetFirmware(struct gspca_dev *gspca_dev) static void spca50x_GetFirmware(struct gspca_dev *gspca_dev)
{ {
u8 *data; u8 *data;
if (gspca_debug < D_STREAM)
return;
data = gspca_dev->usb_buf; data = gspca_dev->usb_buf;
reg_r(gspca_dev, 0x20, 0, 5); reg_r(gspca_dev, 0x20, 0, 5);
PDEBUG(D_STREAM, "FirmWare: %d %d %d %d %d", PDEBUG(D_STREAM, "FirmWare: %d %d %d %d %d",
...@@ -444,7 +445,6 @@ static void spca50x_GetFirmware(struct gspca_dev *gspca_dev) ...@@ -444,7 +445,6 @@ static void spca50x_GetFirmware(struct gspca_dev *gspca_dev)
reg_r(gspca_dev, 0x23, 0, 64); reg_r(gspca_dev, 0x23, 0, 64);
reg_r(gspca_dev, 0x23, 1, 64); reg_r(gspca_dev, 0x23, 1, 64);
} }
#endif
static void spca504B_SetSizeType(struct gspca_dev *gspca_dev) static void spca504B_SetSizeType(struct gspca_dev *gspca_dev)
{ {
...@@ -457,9 +457,8 @@ static void spca504B_SetSizeType(struct gspca_dev *gspca_dev) ...@@ -457,9 +457,8 @@ static void spca504B_SetSizeType(struct gspca_dev *gspca_dev)
reg_w_riv(gspca_dev, 0x31, 0, 0); reg_w_riv(gspca_dev, 0x31, 0, 0);
spca504B_WaitCmdStatus(gspca_dev); spca504B_WaitCmdStatus(gspca_dev);
spca504B_PollingDataReady(gspca_dev); spca504B_PollingDataReady(gspca_dev);
#ifdef GSPCA_DEBUG
spca50x_GetFirmware(gspca_dev); spca50x_GetFirmware(gspca_dev);
#endif
reg_w_1(gspca_dev, 0x24, 0, 8, 2); /* type */ reg_w_1(gspca_dev, 0x24, 0, 8, 2); /* type */
reg_r(gspca_dev, 0x24, 8, 1); reg_r(gspca_dev, 0x24, 8, 1);
...@@ -645,14 +644,10 @@ static int sd_init(struct gspca_dev *gspca_dev) ...@@ -645,14 +644,10 @@ static int sd_init(struct gspca_dev *gspca_dev)
/* fall thru */ /* fall thru */
case BRIDGE_SPCA533: case BRIDGE_SPCA533:
spca504B_PollingDataReady(gspca_dev); spca504B_PollingDataReady(gspca_dev);
#ifdef GSPCA_DEBUG
spca50x_GetFirmware(gspca_dev); spca50x_GetFirmware(gspca_dev);
#endif
break; break;
case BRIDGE_SPCA536: case BRIDGE_SPCA536:
#ifdef GSPCA_DEBUG
spca50x_GetFirmware(gspca_dev); spca50x_GetFirmware(gspca_dev);
#endif
reg_r(gspca_dev, 0x00, 0x5002, 1); reg_r(gspca_dev, 0x00, 0x5002, 1);
reg_w_1(gspca_dev, 0x24, 0, 0, 0); reg_w_1(gspca_dev, 0x24, 0, 0, 0);
reg_r(gspca_dev, 0x24, 0, 1); reg_r(gspca_dev, 0x24, 0, 1);
...@@ -678,9 +673,7 @@ static int sd_init(struct gspca_dev *gspca_dev) ...@@ -678,9 +673,7 @@ static int sd_init(struct gspca_dev *gspca_dev)
/* case BRIDGE_SPCA504: */ /* case BRIDGE_SPCA504: */
PDEBUG(D_STREAM, "Opening SPCA504"); PDEBUG(D_STREAM, "Opening SPCA504");
if (sd->subtype == AiptekMiniPenCam13) { if (sd->subtype == AiptekMiniPenCam13) {
#ifdef GSPCA_DEBUG
spca504_read_info(gspca_dev); spca504_read_info(gspca_dev);
#endif
/* Set AE AWB Banding Type 3-> 50Hz 2-> 60Hz */ /* Set AE AWB Banding Type 3-> 50Hz 2-> 60Hz */
spca504A_acknowledged_command(gspca_dev, 0x24, spca504A_acknowledged_command(gspca_dev, 0x24,
...@@ -752,9 +745,7 @@ static int sd_start(struct gspca_dev *gspca_dev) ...@@ -752,9 +745,7 @@ static int sd_start(struct gspca_dev *gspca_dev)
break; break;
case BRIDGE_SPCA504: case BRIDGE_SPCA504:
if (sd->subtype == AiptekMiniPenCam13) { if (sd->subtype == AiptekMiniPenCam13) {
#ifdef GSPCA_DEBUG
spca504_read_info(gspca_dev); spca504_read_info(gspca_dev);
#endif
/* Set AE AWB Banding Type 3-> 50Hz 2-> 60Hz */ /* Set AE AWB Banding Type 3-> 50Hz 2-> 60Hz */
spca504A_acknowledged_command(gspca_dev, 0x24, spca504A_acknowledged_command(gspca_dev, 0x24,
...@@ -766,9 +757,7 @@ static int sd_start(struct gspca_dev *gspca_dev) ...@@ -766,9 +757,7 @@ static int sd_start(struct gspca_dev *gspca_dev)
0, 0, 0x9d, 1); 0, 0, 0x9d, 1);
} else { } else {
spca504_acknowledged_command(gspca_dev, 0x24, 8, 3); spca504_acknowledged_command(gspca_dev, 0x24, 8, 3);
#ifdef GSPCA_DEBUG
spca504_read_info(gspca_dev); spca504_read_info(gspca_dev);
#endif
spca504_acknowledged_command(gspca_dev, 0x24, 8, 3); spca504_acknowledged_command(gspca_dev, 0x24, 8, 3);
spca504_acknowledged_command(gspca_dev, 0x24, 0, 0); spca504_acknowledged_command(gspca_dev, 0x24, 0, 0);
} }
......
...@@ -2927,7 +2927,6 @@ static void reg_r(struct gspca_dev *gspca_dev, ...@@ -2927,7 +2927,6 @@ static void reg_r(struct gspca_dev *gspca_dev,
u16 len) u16 len)
{ {
reg_r_i(gspca_dev, req, index, len); reg_r_i(gspca_dev, req, index, len);
#ifdef GSPCA_DEBUG
if (gspca_dev->usb_err < 0) if (gspca_dev->usb_err < 0)
return; return;
if (len == 1) if (len == 1)
...@@ -2936,7 +2935,6 @@ static void reg_r(struct gspca_dev *gspca_dev, ...@@ -2936,7 +2935,6 @@ static void reg_r(struct gspca_dev *gspca_dev,
else else
PDEBUG(D_USBI, "GET %02x 0001 %04x %*ph", PDEBUG(D_USBI, "GET %02x 0001 %04x %*ph",
req, index, 3, gspca_dev->usb_buf); req, index, 3, gspca_dev->usb_buf);
#endif
} }
static void reg_w_i(struct gspca_dev *gspca_dev, static void reg_w_i(struct gspca_dev *gspca_dev,
...@@ -2964,11 +2962,9 @@ static void reg_w(struct gspca_dev *gspca_dev, ...@@ -2964,11 +2962,9 @@ static void reg_w(struct gspca_dev *gspca_dev,
u16 value, u16 value,
u16 index) u16 index)
{ {
#ifdef GSPCA_DEBUG
if (gspca_dev->usb_err < 0) if (gspca_dev->usb_err < 0)
return; return;
PDEBUG(D_USBO, "SET %02x %04x %04x", req, value, index); PDEBUG(D_USBO, "SET %02x %04x %04x", req, value, index);
#endif
reg_w_i(gspca_dev, req, value, index); reg_w_i(gspca_dev, req, value, index);
} }
...@@ -3044,8 +3040,7 @@ static int vc032x_probe_sensor(struct gspca_dev *gspca_dev) ...@@ -3044,8 +3040,7 @@ static int vc032x_probe_sensor(struct gspca_dev *gspca_dev)
if (value == 0 && ptsensor_info->IdAdd == 0x82) if (value == 0 && ptsensor_info->IdAdd == 0x82)
value = read_sensor_register(gspca_dev, 0x83); value = read_sensor_register(gspca_dev, 0x83);
if (value != 0) { if (value != 0) {
PDEBUG(D_ERR|D_PROBE, "Sensor ID %04x (%d)", PDEBUG(D_PROBE, "Sensor ID %04x (%d)", value, i);
value, i);
if (value == ptsensor_info->VpId) if (value == ptsensor_info->VpId)
return ptsensor_info->sensorId; return ptsensor_info->sensorId;
...@@ -3069,14 +3064,12 @@ static void i2c_write(struct gspca_dev *gspca_dev, ...@@ -3069,14 +3064,12 @@ static void i2c_write(struct gspca_dev *gspca_dev,
{ {
int retry; int retry;
#ifdef GSPCA_DEBUG
if (gspca_dev->usb_err < 0) if (gspca_dev->usb_err < 0)
return; return;
if (size == 1) if (size == 1)
PDEBUG(D_USBO, "i2c_w %02x %02x", reg, *val); PDEBUG(D_USBO, "i2c_w %02x %02x", reg, *val);
else else
PDEBUG(D_USBO, "i2c_w %02x %02x%02x", reg, *val, val[1]); PDEBUG(D_USBO, "i2c_w %02x %02x%02x", reg, *val, val[1]);
#endif
reg_r_i(gspca_dev, 0xa1, 0xb33f, 1); reg_r_i(gspca_dev, 0xa1, 0xb33f, 1);
/*fixme:should check if (!(gspca_dev->usb_buf[0] & 0x02)) error*/ /*fixme:should check if (!(gspca_dev->usb_buf[0] & 0x02)) error*/
reg_w_i(gspca_dev, 0xa0, size, 0xb334); reg_w_i(gspca_dev, 0xa0, size, 0xb334);
......
...@@ -232,6 +232,7 @@ static void w9968cf_smbus_write_nack(struct sd *sd) ...@@ -232,6 +232,7 @@ static void w9968cf_smbus_write_nack(struct sd *sd)
static void w9968cf_smbus_read_ack(struct sd *sd) static void w9968cf_smbus_read_ack(struct sd *sd)
{ {
struct gspca_dev *gspca_dev = (struct gspca_dev *)sd;
int sda; int sda;
/* Ensure SDA is high before raising clock to avoid a spurious stop */ /* Ensure SDA is high before raising clock to avoid a spurious stop */
...@@ -248,6 +249,7 @@ static void w9968cf_smbus_read_ack(struct sd *sd) ...@@ -248,6 +249,7 @@ static void w9968cf_smbus_read_ack(struct sd *sd)
/* SMBus protocol: S Addr Wr [A] Subaddr [A] Value [A] P */ /* SMBus protocol: S Addr Wr [A] Subaddr [A] Value [A] P */
static void w9968cf_i2c_w(struct sd *sd, u8 reg, u8 value) static void w9968cf_i2c_w(struct sd *sd, u8 reg, u8 value)
{ {
struct gspca_dev *gspca_dev = (struct gspca_dev *)sd;
u16* data = (u16 *)sd->gspca_dev.usb_buf; u16* data = (u16 *)sd->gspca_dev.usb_buf;
data[0] = 0x082f | ((sd->sensor_addr & 0x80) ? 0x1500 : 0x0); data[0] = 0x082f | ((sd->sensor_addr & 0x80) ? 0x1500 : 0x0);
...@@ -297,6 +299,7 @@ static void w9968cf_i2c_w(struct sd *sd, u8 reg, u8 value) ...@@ -297,6 +299,7 @@ static void w9968cf_i2c_w(struct sd *sd, u8 reg, u8 value)
/* SMBus protocol: S Addr Wr [A] Subaddr [A] P S Addr+1 Rd [A] [Value] NA P */ /* SMBus protocol: S Addr Wr [A] Subaddr [A] P S Addr+1 Rd [A] [Value] NA P */
static int w9968cf_i2c_r(struct sd *sd, u8 reg) static int w9968cf_i2c_r(struct sd *sd, u8 reg)
{ {
struct gspca_dev *gspca_dev = (struct gspca_dev *)sd;
int ret = 0; int ret = 0;
u8 value; u8 value;
...@@ -326,7 +329,7 @@ static int w9968cf_i2c_r(struct sd *sd, u8 reg) ...@@ -326,7 +329,7 @@ static int w9968cf_i2c_r(struct sd *sd, u8 reg)
ret = value; ret = value;
PDEBUG(D_USBI, "i2c [0x%02X] -> 0x%02X", reg, value); PDEBUG(D_USBI, "i2c [0x%02X] -> 0x%02X", reg, value);
} else } else
PDEBUG(D_ERR, "i2c read [0x%02x] failed", reg); PERR("i2c read [0x%02x] failed", reg);
return ret; return ret;
} }
......
...@@ -6259,12 +6259,11 @@ static int vga_3wr_probe(struct gspca_dev *gspca_dev) ...@@ -6259,12 +6259,11 @@ static int vga_3wr_probe(struct gspca_dev *gspca_dev)
retword |= i2c_read(gspca_dev, 0x01); /* ID 1 */ retword |= i2c_read(gspca_dev, 0x01); /* ID 1 */
PDEBUG(D_PROBE, "probe 3wr vga 2 0x%04x", retword); PDEBUG(D_PROBE, "probe 3wr vga 2 0x%04x", retword);
if (retword == 0x2030) { if (retword == 0x2030) {
#ifdef GSPCA_DEBUG
u8 retbyte; u8 retbyte;
retbyte = i2c_read(gspca_dev, 0x02); /* revision number */ retbyte = i2c_read(gspca_dev, 0x02); /* revision number */
PDEBUG(D_PROBE, "sensor PO2030 rev 0x%02x", retbyte); PDEBUG(D_PROBE, "sensor PO2030 rev 0x%02x", retbyte);
#endif
send_unknown(gspca_dev, SENSOR_PO2030); send_unknown(gspca_dev, SENSOR_PO2030);
return retword; return retword;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册