Commit cb0988cb authored by Hans de Goede's avatar Hans de Goede Committed by Mauro Carvalho Chehab

[media] gscpa_pac207: use usb_err for error handling

Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent a8a47860
...@@ -167,39 +167,44 @@ static const __u8 pac207_sensor_init[][8] = { ...@@ -167,39 +167,44 @@ static const __u8 pac207_sensor_init[][8] = {
{0x32, 0x00, 0x96, 0x00, 0xa2, 0x02, 0xaf, 0x00}, {0x32, 0x00, 0x96, 0x00, 0xa2, 0x02, 0xaf, 0x00},
}; };
static int pac207_write_regs(struct gspca_dev *gspca_dev, u16 index, static void pac207_write_regs(struct gspca_dev *gspca_dev, u16 index,
const u8 *buffer, u16 length) const u8 *buffer, u16 length)
{ {
struct usb_device *udev = gspca_dev->dev; struct usb_device *udev = gspca_dev->dev;
int err; int err;
if (gspca_dev->usb_err < 0)
return;
memcpy(gspca_dev->usb_buf, buffer, length); memcpy(gspca_dev->usb_buf, buffer, length);
err = usb_control_msg(udev, usb_sndctrlpipe(udev, 0), 0x01, err = usb_control_msg(udev, usb_sndctrlpipe(udev, 0), 0x01,
USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_INTERFACE, USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_INTERFACE,
0x00, index, 0x00, index,
gspca_dev->usb_buf, length, PAC207_CTRL_TIMEOUT); gspca_dev->usb_buf, length, PAC207_CTRL_TIMEOUT);
if (err < 0) if (err < 0) {
pr_err("Failed to write registers to index 0x%04X, error %d\n", pr_err("Failed to write registers to index 0x%04X, error %d\n",
index, err); index, err);
gspca_dev->usb_err = err;
return err; }
} }
static void pac207_write_reg(struct gspca_dev *gspca_dev, u16 index, u16 value)
static int pac207_write_reg(struct gspca_dev *gspca_dev, u16 index, u16 value)
{ {
struct usb_device *udev = gspca_dev->dev; struct usb_device *udev = gspca_dev->dev;
int err; int err;
if (gspca_dev->usb_err < 0)
return;
err = usb_control_msg(udev, usb_sndctrlpipe(udev, 0), 0x00, err = usb_control_msg(udev, usb_sndctrlpipe(udev, 0), 0x00,
USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_INTERFACE, USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_INTERFACE,
value, index, NULL, 0, PAC207_CTRL_TIMEOUT); value, index, NULL, 0, PAC207_CTRL_TIMEOUT);
if (err) if (err) {
pr_err("Failed to write a register (index 0x%04X, value 0x%02X, error %d)\n", pr_err("Failed to write a register (index 0x%04X, value 0x%02X, error %d)\n",
index, value, err); index, value, err);
gspca_dev->usb_err = err;
return err; }
} }
static int pac207_read_reg(struct gspca_dev *gspca_dev, u16 index) static int pac207_read_reg(struct gspca_dev *gspca_dev, u16 index)
...@@ -207,6 +212,9 @@ static int pac207_read_reg(struct gspca_dev *gspca_dev, u16 index) ...@@ -207,6 +212,9 @@ static int pac207_read_reg(struct gspca_dev *gspca_dev, u16 index)
struct usb_device *udev = gspca_dev->dev; struct usb_device *udev = gspca_dev->dev;
int res; int res;
if (gspca_dev->usb_err < 0)
return 0;
res = usb_control_msg(udev, usb_rcvctrlpipe(udev, 0), 0x00, res = usb_control_msg(udev, usb_rcvctrlpipe(udev, 0), 0x00,
USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_INTERFACE, USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_INTERFACE,
0x00, index, 0x00, index,
...@@ -214,7 +222,8 @@ static int pac207_read_reg(struct gspca_dev *gspca_dev, u16 index) ...@@ -214,7 +222,8 @@ static int pac207_read_reg(struct gspca_dev *gspca_dev, u16 index)
if (res < 0) { if (res < 0) {
pr_err("Failed to read a register (index 0x%04X, error %d)\n", pr_err("Failed to read a register (index 0x%04X, error %d)\n",
index, res); index, res);
return res; gspca_dev->usb_err = res;
return 0;
} }
return gspca_dev->usb_buf[0]; return gspca_dev->usb_buf[0];
...@@ -264,7 +273,7 @@ static int sd_init(struct gspca_dev *gspca_dev) ...@@ -264,7 +273,7 @@ static int sd_init(struct gspca_dev *gspca_dev)
* Bit_2=Compression test mode enable */ * Bit_2=Compression test mode enable */
pac207_write_reg(gspca_dev, 0x0f, 0x00); /* Power Control */ pac207_write_reg(gspca_dev, 0x0f, 0x00); /* Power Control */
return 0; return gspca_dev->usb_err;
} }
/* -- start the camera -- */ /* -- start the camera -- */
...@@ -308,7 +317,7 @@ static int sd_start(struct gspca_dev *gspca_dev) ...@@ -308,7 +317,7 @@ static int sd_start(struct gspca_dev *gspca_dev)
sd->sof_read = 0; sd->sof_read = 0;
sd->autogain_ignore_frames = 0; sd->autogain_ignore_frames = 0;
atomic_set(&sd->avg_lum, -1); atomic_set(&sd->avg_lum, -1);
return 0; return gspca_dev->usb_err;
} }
static void sd_stopN(struct gspca_dev *gspca_dev) static void sd_stopN(struct gspca_dev *gspca_dev)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment