Commit 012d6b02 authored by Jean-Francois Moine's avatar Jean-Francois Moine Committed by Mauro Carvalho Chehab

V4L/DVB (8822): gspca: Change some subdriver functions for suspend/resume.

- new function 'init' called on probe and resume
- remove the functions 'open' and 'closed'
- 'stopN' and 'stop0' are optional
Signed-off-by: default avatarJean-Francois Moine <moinejf@free.fr>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 66e4124f
...@@ -826,8 +826,8 @@ static int sd_config(struct gspca_dev *gspca_dev, ...@@ -826,8 +826,8 @@ static int sd_config(struct gspca_dev *gspca_dev,
return 0; return 0;
} }
/* this function is called at open time */ /* this function is called at probe and resume time */
static int sd_open(struct gspca_dev *gspca_dev) static int sd_init(struct gspca_dev *gspca_dev)
{ {
cx11646_init1(gspca_dev); cx11646_init1(gspca_dev);
cx11646_initsize(gspca_dev); cx11646_initsize(gspca_dev);
...@@ -845,10 +845,6 @@ static void sd_start(struct gspca_dev *gspca_dev) ...@@ -845,10 +845,6 @@ static void sd_start(struct gspca_dev *gspca_dev)
cx11646_jpeg(gspca_dev); cx11646_jpeg(gspca_dev);
} }
static void sd_stopN(struct gspca_dev *gspca_dev)
{
}
static void sd_stop0(struct gspca_dev *gspca_dev) static void sd_stop0(struct gspca_dev *gspca_dev)
{ {
int retry = 50; int retry = 50;
...@@ -871,10 +867,6 @@ static void sd_stop0(struct gspca_dev *gspca_dev) ...@@ -871,10 +867,6 @@ static void sd_stop0(struct gspca_dev *gspca_dev)
reg_w_val(gspca_dev, 0x00fc, 0xe0); reg_w_val(gspca_dev, 0x00fc, 0xe0);
} }
static void sd_close(struct gspca_dev *gspca_dev)
{
}
static void sd_pkt_scan(struct gspca_dev *gspca_dev, static void sd_pkt_scan(struct gspca_dev *gspca_dev,
struct gspca_frame *frame, /* target */ struct gspca_frame *frame, /* target */
__u8 *data, /* isoc packet */ __u8 *data, /* isoc packet */
...@@ -998,11 +990,9 @@ static struct sd_desc sd_desc = { ...@@ -998,11 +990,9 @@ static struct sd_desc sd_desc = {
.ctrls = sd_ctrls, .ctrls = sd_ctrls,
.nctrls = ARRAY_SIZE(sd_ctrls), .nctrls = ARRAY_SIZE(sd_ctrls),
.config = sd_config, .config = sd_config,
.open = sd_open, .init = sd_init,
.start = sd_start, .start = sd_start,
.stopN = sd_stopN,
.stop0 = sd_stop0, .stop0 = sd_stop0,
.close = sd_close,
.pkt_scan = sd_pkt_scan, .pkt_scan = sd_pkt_scan,
}; };
......
...@@ -676,8 +676,8 @@ static int sd_config(struct gspca_dev *gspca_dev, ...@@ -676,8 +676,8 @@ static int sd_config(struct gspca_dev *gspca_dev,
return 0; return 0;
} }
/* this function is called at open time */ /* this function is called at probe and resume time */
static int sd_open(struct gspca_dev *gspca_dev) static int sd_init(struct gspca_dev *gspca_dev)
{ {
struct sd *sd = (struct sd *) gspca_dev; struct sd *sd = (struct sd *) gspca_dev;
...@@ -711,14 +711,6 @@ static void sd_stopN(struct gspca_dev *gspca_dev) ...@@ -711,14 +711,6 @@ static void sd_stopN(struct gspca_dev *gspca_dev)
et_video(gspca_dev, 0); /* video off */ et_video(gspca_dev, 0); /* video off */
} }
static void sd_stop0(struct gspca_dev *gspca_dev)
{
}
static void sd_close(struct gspca_dev *gspca_dev)
{
}
static __u8 Et_getgainG(struct gspca_dev *gspca_dev) static __u8 Et_getgainG(struct gspca_dev *gspca_dev)
{ {
struct sd *sd = (struct sd *) gspca_dev; struct sd *sd = (struct sd *) gspca_dev;
...@@ -895,11 +887,9 @@ static struct sd_desc sd_desc = { ...@@ -895,11 +887,9 @@ static struct sd_desc sd_desc = {
.ctrls = sd_ctrls, .ctrls = sd_ctrls,
.nctrls = ARRAY_SIZE(sd_ctrls), .nctrls = ARRAY_SIZE(sd_ctrls),
.config = sd_config, .config = sd_config,
.open = sd_open, .init = sd_init,
.start = sd_start, .start = sd_start,
.stopN = sd_stopN, .stopN = sd_stopN,
.stop0 = sd_stop0,
.close = sd_close,
.pkt_scan = sd_pkt_scan, .pkt_scan = sd_pkt_scan,
.dq_callback = do_autogain, .dq_callback = do_autogain,
}; };
......
...@@ -558,10 +558,12 @@ static void gspca_stream_off(struct gspca_dev *gspca_dev) ...@@ -558,10 +558,12 @@ static void gspca_stream_off(struct gspca_dev *gspca_dev)
gspca_dev->streaming = 0; gspca_dev->streaming = 0;
atomic_set(&gspca_dev->nevent, 0); atomic_set(&gspca_dev->nevent, 0);
if (gspca_dev->present) { if (gspca_dev->present) {
gspca_dev->sd_desc->stopN(gspca_dev); if (gspca_dev->sd_desc->stopN)
gspca_dev->sd_desc->stopN(gspca_dev);
destroy_urbs(gspca_dev); destroy_urbs(gspca_dev);
gspca_set_alt0(gspca_dev); gspca_set_alt0(gspca_dev);
gspca_dev->sd_desc->stop0(gspca_dev); if (gspca_dev->sd_desc->stop0)
gspca_dev->sd_desc->stop0(gspca_dev);
PDEBUG(D_STREAM, "stream off OK"); PDEBUG(D_STREAM, "stream off OK");
} }
} }
...@@ -770,19 +772,7 @@ static int dev_open(struct inode *inode, struct file *file) ...@@ -770,19 +772,7 @@ static int dev_open(struct inode *inode, struct file *file)
goto out; goto out;
} }
/* if not done yet, initialize the sensor */ if (gspca_dev->users > 4) { /* (arbitrary value) */
if (gspca_dev->users == 0) {
if (mutex_lock_interruptible(&gspca_dev->usb_lock)) {
ret = -ERESTARTSYS;
goto out;
}
ret = gspca_dev->sd_desc->open(gspca_dev);
mutex_unlock(&gspca_dev->usb_lock);
if (ret != 0) {
PDEBUG(D_ERR|D_CONF, "init device failed %d", ret);
goto out;
}
} else if (gspca_dev->users > 4) { /* (arbitrary value) */
ret = -EBUSY; ret = -EBUSY;
goto out; goto out;
} }
...@@ -795,6 +785,7 @@ static int dev_open(struct inode *inode, struct file *file) ...@@ -795,6 +785,7 @@ static int dev_open(struct inode *inode, struct file *file)
else else
gspca_dev->vdev.debug &= ~3; gspca_dev->vdev.debug &= ~3;
#endif #endif
ret = 0;
out: out:
mutex_unlock(&gspca_dev->queue_lock); mutex_unlock(&gspca_dev->queue_lock);
if (ret != 0) if (ret != 0)
...@@ -815,11 +806,6 @@ static int dev_close(struct inode *inode, struct file *file) ...@@ -815,11 +806,6 @@ static int dev_close(struct inode *inode, struct file *file)
/* if the file did the capture, free the streaming resources */ /* if the file did the capture, free the streaming resources */
if (gspca_dev->capt_file == file) { if (gspca_dev->capt_file == file) {
mutex_lock(&gspca_dev->usb_lock);
if (gspca_dev->streaming)
gspca_stream_off(gspca_dev);
gspca_dev->sd_desc->close(gspca_dev);
mutex_unlock(&gspca_dev->usb_lock);
frame_free(gspca_dev); frame_free(gspca_dev);
gspca_dev->capt_file = NULL; gspca_dev->capt_file = NULL;
gspca_dev->memory = GSPCA_MEMORY_NO; gspca_dev->memory = GSPCA_MEMORY_NO;
...@@ -1747,8 +1733,11 @@ int gspca_dev_probe(struct usb_interface *intf, ...@@ -1747,8 +1733,11 @@ int gspca_dev_probe(struct usb_interface *intf,
/* gspca_dev->users = 0; (done by kzalloc) */ /* gspca_dev->users = 0; (done by kzalloc) */
gspca_dev->nbufread = 2; gspca_dev->nbufread = 2;
/* configure the subdriver */ /* configure the subdriver and initialize the USB device */
ret = gspca_dev->sd_desc->config(gspca_dev, id); ret = gspca_dev->sd_desc->config(gspca_dev, id);
if (ret < 0)
goto out;
ret = gspca_dev->sd_desc->init(gspca_dev);
if (ret < 0) if (ret < 0)
goto out; goto out;
ret = gspca_set_alt0(gspca_dev); ret = gspca_set_alt0(gspca_dev);
...@@ -1825,10 +1814,12 @@ int gspca_suspend(struct usb_interface *intf, pm_message_t message) ...@@ -1825,10 +1814,12 @@ int gspca_suspend(struct usb_interface *intf, pm_message_t message)
if (!gspca_dev->streaming) if (!gspca_dev->streaming)
return 0; return 0;
gspca_dev->frozen = 1; /* avoid urb error messages */ gspca_dev->frozen = 1; /* avoid urb error messages */
gspca_dev->sd_desc->stopN(gspca_dev); if (gspca_dev->sd_desc->stopN)
gspca_dev->sd_desc->stopN(gspca_dev);
destroy_urbs(gspca_dev); destroy_urbs(gspca_dev);
gspca_set_alt0(gspca_dev); gspca_set_alt0(gspca_dev);
gspca_dev->sd_desc->stop0(gspca_dev); if (gspca_dev->sd_desc->stop0)
gspca_dev->sd_desc->stop0(gspca_dev);
return 0; return 0;
} }
EXPORT_SYMBOL(gspca_suspend); EXPORT_SYMBOL(gspca_suspend);
...@@ -1838,11 +1829,9 @@ int gspca_resume(struct usb_interface *intf) ...@@ -1838,11 +1829,9 @@ int gspca_resume(struct usb_interface *intf)
struct gspca_dev *gspca_dev = usb_get_intfdata(intf); struct gspca_dev *gspca_dev = usb_get_intfdata(intf);
gspca_dev->frozen = 0; gspca_dev->frozen = 0;
if (gspca_dev->users != 0) { gspca_dev->sd_desc->init(gspca_dev);
gspca_dev->sd_desc->open(gspca_dev); if (gspca_dev->streaming)
if (gspca_dev->streaming) return gspca_init_transfer(gspca_dev);
return gspca_init_transfer(gspca_dev);
}
return 0; return 0;
} }
EXPORT_SYMBOL(gspca_resume); EXPORT_SYMBOL(gspca_resume);
......
...@@ -90,15 +90,14 @@ struct sd_desc { ...@@ -90,15 +90,14 @@ struct sd_desc {
/* controls */ /* controls */
const struct ctrl *ctrls; const struct ctrl *ctrls;
int nctrls; int nctrls;
/* operations */ /* mandatory operations */
cam_cf_op config; /* called on probe */ cam_cf_op config; /* called on probe */
cam_op open; /* called on open */ cam_op init; /* called on probe and resume */
cam_v_op start; /* called on stream on */ cam_v_op start; /* called on stream on */
cam_v_op stopN; /* called on stream off - main alt */
cam_v_op stop0; /* called on stream off - alt 0 */
cam_v_op close; /* called on close */
cam_pkt_op pkt_scan; cam_pkt_op pkt_scan;
/* optional operations */ /* optional operations */
cam_v_op stopN; /* called on stream off - main alt */
cam_v_op stop0; /* called on stream off - alt 0 */
cam_v_op dq_callback; /* called when a frame has been dequeued */ cam_v_op dq_callback; /* called when a frame has been dequeued */
cam_jpg_op get_jcomp; cam_jpg_op get_jcomp;
cam_jpg_op set_jcomp; cam_jpg_op set_jcomp;
......
...@@ -144,8 +144,8 @@ static int sd_config(struct gspca_dev *gspca_dev, ...@@ -144,8 +144,8 @@ static int sd_config(struct gspca_dev *gspca_dev,
return 0; return 0;
} }
/* this function is called at open time */ /* this function is called at probe and resume time */
static int sd_open(struct gspca_dev *gspca_dev) static int sd_init(struct gspca_dev *gspca_dev)
{ {
return 0; return 0;
} }
...@@ -358,14 +358,6 @@ static void sd_stopN(struct gspca_dev *gspca_dev) ...@@ -358,14 +358,6 @@ static void sd_stopN(struct gspca_dev *gspca_dev)
PDEBUG(D_ERR, "Camera Stop failed"); PDEBUG(D_ERR, "Camera Stop failed");
} }
static void sd_stop0(struct gspca_dev *gspca_dev)
{
}
static void sd_close(struct gspca_dev *gspca_dev)
{
}
static void sd_pkt_scan(struct gspca_dev *gspca_dev, static void sd_pkt_scan(struct gspca_dev *gspca_dev,
struct gspca_frame *frame, /* target */ struct gspca_frame *frame, /* target */
__u8 *data, /* isoc packet */ __u8 *data, /* isoc packet */
...@@ -411,11 +403,9 @@ static const struct sd_desc sd_desc = { ...@@ -411,11 +403,9 @@ static const struct sd_desc sd_desc = {
.ctrls = sd_ctrls, .ctrls = sd_ctrls,
.nctrls = ARRAY_SIZE(sd_ctrls), .nctrls = ARRAY_SIZE(sd_ctrls),
.config = sd_config, .config = sd_config,
.open = sd_open, .init = sd_init,
.start = sd_start, .start = sd_start,
.stopN = sd_stopN, .stopN = sd_stopN,
.stop0 = sd_stop0,
.close = sd_close,
.pkt_scan = sd_pkt_scan, .pkt_scan = sd_pkt_scan,
}; };
......
...@@ -1376,8 +1376,8 @@ static int sd_config(struct gspca_dev *gspca_dev, ...@@ -1376,8 +1376,8 @@ static int sd_config(struct gspca_dev *gspca_dev,
return -EBUSY; return -EBUSY;
} }
/* this function is called at open time */ /* this function is called at probe and resume time */
static int sd_open(struct gspca_dev *gspca_dev) static int sd_init(struct gspca_dev *gspca_dev)
{ {
struct sd *sd = (struct sd *) gspca_dev; struct sd *sd = (struct sd *) gspca_dev;
...@@ -1877,14 +1877,6 @@ static void sd_stopN(struct gspca_dev *gspca_dev) ...@@ -1877,14 +1877,6 @@ static void sd_stopN(struct gspca_dev *gspca_dev)
ov51x_led_control((struct sd *) gspca_dev, 0); ov51x_led_control((struct sd *) gspca_dev, 0);
} }
static void sd_stop0(struct gspca_dev *gspca_dev)
{
}
static void sd_close(struct gspca_dev *gspca_dev)
{
}
static void sd_pkt_scan(struct gspca_dev *gspca_dev, static void sd_pkt_scan(struct gspca_dev *gspca_dev,
struct gspca_frame *frame, /* target */ struct gspca_frame *frame, /* target */
__u8 *data, /* isoc packet */ __u8 *data, /* isoc packet */
...@@ -2141,11 +2133,9 @@ static const struct sd_desc sd_desc = { ...@@ -2141,11 +2133,9 @@ static const struct sd_desc sd_desc = {
.ctrls = sd_ctrls, .ctrls = sd_ctrls,
.nctrls = ARRAY_SIZE(sd_ctrls), .nctrls = ARRAY_SIZE(sd_ctrls),
.config = sd_config, .config = sd_config,
.open = sd_open, .init = sd_init,
.start = sd_start, .start = sd_start,
.stopN = sd_stopN, .stopN = sd_stopN,
.stop0 = sd_stop0,
.close = sd_close,
.pkt_scan = sd_pkt_scan, .pkt_scan = sd_pkt_scan,
}; };
......
...@@ -273,8 +273,8 @@ static int sd_config(struct gspca_dev *gspca_dev, ...@@ -273,8 +273,8 @@ static int sd_config(struct gspca_dev *gspca_dev,
return 0; return 0;
} }
/* this function is called at open time */ /* this function is called at probe and resume time */
static int sd_open(struct gspca_dev *gspca_dev) static int sd_init(struct gspca_dev *gspca_dev)
{ {
pac207_write_reg(gspca_dev, 0x41, 0x00); pac207_write_reg(gspca_dev, 0x41, 0x00);
/* Bit_0=Image Format, /* Bit_0=Image Format,
...@@ -338,15 +338,6 @@ static void sd_stopN(struct gspca_dev *gspca_dev) ...@@ -338,15 +338,6 @@ static void sd_stopN(struct gspca_dev *gspca_dev)
pac207_write_reg(gspca_dev, 0x0f, 0x00); /* Power Control */ pac207_write_reg(gspca_dev, 0x0f, 0x00); /* Power Control */
} }
static void sd_stop0(struct gspca_dev *gspca_dev)
{
}
/* this function is called at close time */
static void sd_close(struct gspca_dev *gspca_dev)
{
}
static void pac207_do_auto_gain(struct gspca_dev *gspca_dev) static void pac207_do_auto_gain(struct gspca_dev *gspca_dev)
{ {
struct sd *sd = (struct sd *) gspca_dev; struct sd *sd = (struct sd *) gspca_dev;
...@@ -532,11 +523,9 @@ static const struct sd_desc sd_desc = { ...@@ -532,11 +523,9 @@ static const struct sd_desc sd_desc = {
.ctrls = sd_ctrls, .ctrls = sd_ctrls,
.nctrls = ARRAY_SIZE(sd_ctrls), .nctrls = ARRAY_SIZE(sd_ctrls),
.config = sd_config, .config = sd_config,
.open = sd_open, .init = sd_init,
.start = sd_start, .start = sd_start,
.stopN = sd_stopN, .stopN = sd_stopN,
.stop0 = sd_stop0,
.close = sd_close,
.dq_callback = pac207_do_auto_gain, .dq_callback = pac207_do_auto_gain,
.pkt_scan = sd_pkt_scan, .pkt_scan = sd_pkt_scan,
}; };
......
...@@ -590,8 +590,8 @@ static void sethvflip(struct gspca_dev *gspca_dev) ...@@ -590,8 +590,8 @@ static void sethvflip(struct gspca_dev *gspca_dev)
reg_w(gspca_dev, 0x11, 0x01); reg_w(gspca_dev, 0x11, 0x01);
} }
/* this function is called at open time */ /* this function is called at probe and resume time */
static int sd_open(struct gspca_dev *gspca_dev) static int sd_init(struct gspca_dev *gspca_dev)
{ {
return 0; return 0;
} }
...@@ -691,11 +691,6 @@ static void sd_stop0(struct gspca_dev *gspca_dev) ...@@ -691,11 +691,6 @@ static void sd_stop0(struct gspca_dev *gspca_dev)
} }
} }
/* this function is called at close time */
static void sd_close(struct gspca_dev *gspca_dev)
{
}
static void do_autogain(struct gspca_dev *gspca_dev) static void do_autogain(struct gspca_dev *gspca_dev)
{ {
} }
...@@ -902,11 +897,10 @@ static struct sd_desc sd_desc = { ...@@ -902,11 +897,10 @@ static struct sd_desc sd_desc = {
.ctrls = sd_ctrls, .ctrls = sd_ctrls,
.nctrls = ARRAY_SIZE(sd_ctrls), .nctrls = ARRAY_SIZE(sd_ctrls),
.config = sd_config, .config = sd_config,
.open = sd_open, .init = sd_init,
.start = sd_start, .start = sd_start,
.stopN = sd_stopN, .stopN = sd_stopN,
.stop0 = sd_stop0, .stop0 = sd_stop0,
.close = sd_close,
.pkt_scan = sd_pkt_scan, .pkt_scan = sd_pkt_scan,
.dq_callback = do_autogain, .dq_callback = do_autogain,
}; };
......
...@@ -799,8 +799,8 @@ static int sd_config(struct gspca_dev *gspca_dev, ...@@ -799,8 +799,8 @@ static int sd_config(struct gspca_dev *gspca_dev,
return 0; return 0;
} }
/* this function is called at open time */ /* this function is called at probe and resume time */
static int sd_open(struct gspca_dev *gspca_dev) static int sd_init(struct gspca_dev *gspca_dev)
{ {
return 0; return 0;
} }
...@@ -963,14 +963,6 @@ static void sd_stopN(struct gspca_dev *gspca_dev) ...@@ -963,14 +963,6 @@ static void sd_stopN(struct gspca_dev *gspca_dev)
reg_w(gspca_dev, 0x01, &ByteSend, 1); reg_w(gspca_dev, 0x01, &ByteSend, 1);
} }
static void sd_stop0(struct gspca_dev *gspca_dev)
{
}
static void sd_close(struct gspca_dev *gspca_dev)
{
}
static void sd_pkt_scan(struct gspca_dev *gspca_dev, static void sd_pkt_scan(struct gspca_dev *gspca_dev,
struct gspca_frame *frame, /* target */ struct gspca_frame *frame, /* target */
unsigned char *data, /* isoc packet */ unsigned char *data, /* isoc packet */
...@@ -1162,11 +1154,9 @@ static const struct sd_desc sd_desc = { ...@@ -1162,11 +1154,9 @@ static const struct sd_desc sd_desc = {
.ctrls = sd_ctrls, .ctrls = sd_ctrls,
.nctrls = ARRAY_SIZE(sd_ctrls), .nctrls = ARRAY_SIZE(sd_ctrls),
.config = sd_config, .config = sd_config,
.open = sd_open, .init = sd_init,
.start = sd_start, .start = sd_start,
.stopN = sd_stopN, .stopN = sd_stopN,
.stop0 = sd_stop0,
.close = sd_close,
.pkt_scan = sd_pkt_scan, .pkt_scan = sd_pkt_scan,
.querymenu = sd_querymenu, .querymenu = sd_querymenu,
.dq_callback = do_autogain, .dq_callback = do_autogain,
......
...@@ -948,8 +948,8 @@ static int sd_config(struct gspca_dev *gspca_dev, ...@@ -948,8 +948,8 @@ static int sd_config(struct gspca_dev *gspca_dev,
return 0; return 0;
} }
/* this function is called at open time */ /* this function is called at probe and resume time */
static int sd_open(struct gspca_dev *gspca_dev) static int sd_init(struct gspca_dev *gspca_dev)
{ {
struct sd *sd = (struct sd *) gspca_dev; struct sd *sd = (struct sd *) gspca_dev;
/* const __u8 *sn9c1xx; */ /* const __u8 *sn9c1xx; */
...@@ -1353,14 +1353,6 @@ static void sd_stopN(struct gspca_dev *gspca_dev) ...@@ -1353,14 +1353,6 @@ static void sd_stopN(struct gspca_dev *gspca_dev)
reg_w1(gspca_dev, 0xf1, 0x00); reg_w1(gspca_dev, 0xf1, 0x00);
} }
static void sd_stop0(struct gspca_dev *gspca_dev)
{
}
static void sd_close(struct gspca_dev *gspca_dev)
{
}
static void do_autogain(struct gspca_dev *gspca_dev) static void do_autogain(struct gspca_dev *gspca_dev)
{ {
struct sd *sd = (struct sd *) gspca_dev; struct sd *sd = (struct sd *) gspca_dev;
...@@ -1548,11 +1540,9 @@ static const struct sd_desc sd_desc = { ...@@ -1548,11 +1540,9 @@ static const struct sd_desc sd_desc = {
.ctrls = sd_ctrls, .ctrls = sd_ctrls,
.nctrls = ARRAY_SIZE(sd_ctrls), .nctrls = ARRAY_SIZE(sd_ctrls),
.config = sd_config, .config = sd_config,
.open = sd_open, .init = sd_init,
.start = sd_start, .start = sd_start,
.stopN = sd_stopN, .stopN = sd_stopN,
.stop0 = sd_stop0,
.close = sd_close,
.pkt_scan = sd_pkt_scan, .pkt_scan = sd_pkt_scan,
.dq_callback = do_autogain, .dq_callback = do_autogain,
}; };
......
...@@ -645,8 +645,8 @@ static int sd_config(struct gspca_dev *gspca_dev, ...@@ -645,8 +645,8 @@ static int sd_config(struct gspca_dev *gspca_dev,
return 0; return 0;
} }
/* this function is called at open time */ /* this function is called at probe and resume time */
static int sd_open(struct gspca_dev *gspca_dev) static int sd_init(struct gspca_dev *gspca_dev)
{ {
struct sd *sd = (struct sd *) gspca_dev; struct sd *sd = (struct sd *) gspca_dev;
...@@ -880,14 +880,6 @@ static void sd_stopN(struct gspca_dev *gspca_dev) ...@@ -880,14 +880,6 @@ static void sd_stopN(struct gspca_dev *gspca_dev)
gspca_dev->usb_buf[0]); gspca_dev->usb_buf[0]);
} }
static void sd_stop0(struct gspca_dev *gspca_dev)
{
}
static void sd_close(struct gspca_dev *gspca_dev)
{
}
static void sd_pkt_scan(struct gspca_dev *gspca_dev, static void sd_pkt_scan(struct gspca_dev *gspca_dev,
struct gspca_frame *frame, /* target */ struct gspca_frame *frame, /* target */
__u8 *data, /* isoc packet */ __u8 *data, /* isoc packet */
...@@ -1051,11 +1043,9 @@ static struct sd_desc sd_desc = { ...@@ -1051,11 +1043,9 @@ static struct sd_desc sd_desc = {
.ctrls = sd_ctrls, .ctrls = sd_ctrls,
.nctrls = ARRAY_SIZE(sd_ctrls), .nctrls = ARRAY_SIZE(sd_ctrls),
.config = sd_config, .config = sd_config,
.open = sd_open, .init = sd_init,
.start = sd_start, .start = sd_start,
.stopN = sd_stopN, .stopN = sd_stopN,
.stop0 = sd_stop0,
.close = sd_close,
.pkt_scan = sd_pkt_scan, .pkt_scan = sd_pkt_scan,
}; };
......
...@@ -1953,8 +1953,8 @@ static int sd_config(struct gspca_dev *gspca_dev, ...@@ -1953,8 +1953,8 @@ static int sd_config(struct gspca_dev *gspca_dev,
return -EINVAL; return -EINVAL;
} }
/* this function is called at open time */ /* this function is called at probe and resume time */
static int sd_open(struct gspca_dev *gspca_dev) static int sd_init(struct gspca_dev *gspca_dev)
{ {
struct sd *sd = (struct sd *) gspca_dev; struct sd *sd = (struct sd *) gspca_dev;
...@@ -2022,11 +2022,6 @@ static void sd_stopN(struct gspca_dev *gspca_dev) ...@@ -2022,11 +2022,6 @@ static void sd_stopN(struct gspca_dev *gspca_dev)
} }
static void sd_stop0(struct gspca_dev *gspca_dev) static void sd_stop0(struct gspca_dev *gspca_dev)
{
}
/* this function is called at close time */
static void sd_close(struct gspca_dev *gspca_dev)
{ {
reg_write(gspca_dev->dev, SPCA501_REG_CTLRL, 0x05, 0x00); reg_write(gspca_dev->dev, SPCA501_REG_CTLRL, 0x05, 0x00);
} }
...@@ -2120,11 +2115,10 @@ static const struct sd_desc sd_desc = { ...@@ -2120,11 +2115,10 @@ static const struct sd_desc sd_desc = {
.ctrls = sd_ctrls, .ctrls = sd_ctrls,
.nctrls = ARRAY_SIZE(sd_ctrls), .nctrls = ARRAY_SIZE(sd_ctrls),
.config = sd_config, .config = sd_config,
.open = sd_open, .init = sd_init,
.start = sd_start, .start = sd_start,
.stopN = sd_stopN, .stopN = sd_stopN,
.stop0 = sd_stop0, .stop0 = sd_stop0,
.close = sd_close,
.pkt_scan = sd_pkt_scan, .pkt_scan = sd_pkt_scan,
}; };
......
...@@ -655,8 +655,8 @@ static int sd_config(struct gspca_dev *gspca_dev, ...@@ -655,8 +655,8 @@ static int sd_config(struct gspca_dev *gspca_dev,
return 0; return 0;
} }
/* this function is called at open time */ /* this function is called at probe and resume time */
static int sd_open(struct gspca_dev *gspca_dev) static int sd_init(struct gspca_dev *gspca_dev)
{ {
struct sd *sd = (struct sd *) gspca_dev; struct sd *sd = (struct sd *) gspca_dev;
int ret; int ret;
...@@ -742,11 +742,6 @@ static void sd_stopN(struct gspca_dev *gspca_dev) ...@@ -742,11 +742,6 @@ static void sd_stopN(struct gspca_dev *gspca_dev)
} }
static void sd_stop0(struct gspca_dev *gspca_dev) static void sd_stop0(struct gspca_dev *gspca_dev)
{
}
/* this function is called at close time */
static void sd_close(struct gspca_dev *gspca_dev)
{ {
/* This maybe reset or power control */ /* This maybe reset or power control */
reg_write(gspca_dev->dev, 0x03, 0x03, 0x20); reg_write(gspca_dev->dev, 0x03, 0x03, 0x20);
...@@ -825,11 +820,10 @@ static const struct sd_desc sd_desc = { ...@@ -825,11 +820,10 @@ static const struct sd_desc sd_desc = {
.ctrls = sd_ctrls, .ctrls = sd_ctrls,
.nctrls = ARRAY_SIZE(sd_ctrls), .nctrls = ARRAY_SIZE(sd_ctrls),
.config = sd_config, .config = sd_config,
.open = sd_open, .init = sd_init,
.start = sd_start, .start = sd_start,
.stopN = sd_stopN, .stopN = sd_stopN,
.stop0 = sd_stop0, .stop0 = sd_stop0,
.close = sd_close,
.pkt_scan = sd_pkt_scan, .pkt_scan = sd_pkt_scan,
}; };
......
...@@ -313,8 +313,8 @@ static int sd_config(struct gspca_dev *gspca_dev, ...@@ -313,8 +313,8 @@ static int sd_config(struct gspca_dev *gspca_dev,
return 0; return 0;
} }
/* this function is called at open time */ /* this function is called at probe and resume time */
static int sd_open(struct gspca_dev *gspca_dev) static int sd_init(struct gspca_dev *gspca_dev)
{ {
struct usb_device *dev = gspca_dev->dev; struct usb_device *dev = gspca_dev->dev;
...@@ -560,14 +560,6 @@ static void sd_stopN(struct gspca_dev *gspca_dev) ...@@ -560,14 +560,6 @@ static void sd_stopN(struct gspca_dev *gspca_dev)
reg_w(dev, 0x03, 0x00, 0x0003); reg_w(dev, 0x03, 0x00, 0x0003);
} }
static void sd_stop0(struct gspca_dev *gspca_dev)
{
}
static void sd_close(struct gspca_dev *gspca_dev)
{
}
static void sd_pkt_scan(struct gspca_dev *gspca_dev, static void sd_pkt_scan(struct gspca_dev *gspca_dev,
struct gspca_frame *frame, /* target */ struct gspca_frame *frame, /* target */
__u8 *data, /* isoc packet */ __u8 *data, /* isoc packet */
...@@ -740,11 +732,9 @@ static struct sd_desc sd_desc = { ...@@ -740,11 +732,9 @@ static struct sd_desc sd_desc = {
.ctrls = sd_ctrls, .ctrls = sd_ctrls,
.nctrls = ARRAY_SIZE(sd_ctrls), .nctrls = ARRAY_SIZE(sd_ctrls),
.config = sd_config, .config = sd_config,
.open = sd_open, .init = sd_init,
.start = sd_start, .start = sd_start,
.stopN = sd_stopN, .stopN = sd_stopN,
.stop0 = sd_stop0,
.close = sd_close,
.pkt_scan = sd_pkt_scan, .pkt_scan = sd_pkt_scan,
}; };
......
...@@ -1521,8 +1521,8 @@ static int sd_config(struct gspca_dev *gspca_dev, ...@@ -1521,8 +1521,8 @@ static int sd_config(struct gspca_dev *gspca_dev,
return 0; /* success */ return 0; /* success */
} }
/* this function is called at open time */ /* this function is called at probe and resume time */
static int sd_open(struct gspca_dev *gspca_dev) static int sd_init(struct gspca_dev *gspca_dev)
{ {
/* write_vector(gspca_dev, spca508_open_data); */ /* write_vector(gspca_dev, spca508_open_data); */
return 0; return 0;
...@@ -1554,15 +1554,6 @@ static void sd_stopN(struct gspca_dev *gspca_dev) ...@@ -1554,15 +1554,6 @@ static void sd_stopN(struct gspca_dev *gspca_dev)
reg_write(gspca_dev->dev, 0x8112, 0x20); reg_write(gspca_dev->dev, 0x8112, 0x20);
} }
static void sd_stop0(struct gspca_dev *gspca_dev)
{
}
/* this function is called at close time */
static void sd_close(struct gspca_dev *gspca_dev)
{
}
static void sd_pkt_scan(struct gspca_dev *gspca_dev, static void sd_pkt_scan(struct gspca_dev *gspca_dev,
struct gspca_frame *frame, /* target */ struct gspca_frame *frame, /* target */
__u8 *data, /* isoc packet */ __u8 *data, /* isoc packet */
...@@ -1633,11 +1624,9 @@ static const struct sd_desc sd_desc = { ...@@ -1633,11 +1624,9 @@ static const struct sd_desc sd_desc = {
.ctrls = sd_ctrls, .ctrls = sd_ctrls,
.nctrls = ARRAY_SIZE(sd_ctrls), .nctrls = ARRAY_SIZE(sd_ctrls),
.config = sd_config, .config = sd_config,
.open = sd_open, .init = sd_init,
.start = sd_start, .start = sd_start,
.stopN = sd_stopN, .stopN = sd_stopN,
.stop0 = sd_stop0,
.close = sd_close,
.pkt_scan = sd_pkt_scan, .pkt_scan = sd_pkt_scan,
}; };
......
...@@ -560,14 +560,14 @@ static int sd_config(struct gspca_dev *gspca_dev, ...@@ -560,14 +560,14 @@ static int sd_config(struct gspca_dev *gspca_dev,
return 0; return 0;
} }
/* this function is called at open time */ /* this function is called at probe and resume time */
static int sd_open_12a(struct gspca_dev *gspca_dev) static int sd_init_12a(struct gspca_dev *gspca_dev)
{ {
PDEBUG(D_STREAM, "Chip revision: 012a"); PDEBUG(D_STREAM, "Chip revision: 012a");
init_161rev12A(gspca_dev); init_161rev12A(gspca_dev);
return 0; return 0;
} }
static int sd_open_72a(struct gspca_dev *gspca_dev) static int sd_init_72a(struct gspca_dev *gspca_dev)
{ {
PDEBUG(D_STREAM, "Chip revision: 072a"); PDEBUG(D_STREAM, "Chip revision: 072a");
write_vector(gspca_dev, spca561_init_data); write_vector(gspca_dev, spca561_init_data);
...@@ -733,12 +733,7 @@ static void sd_stop0(struct gspca_dev *gspca_dev) ...@@ -733,12 +733,7 @@ static void sd_stop0(struct gspca_dev *gspca_dev)
reg_w_val(gspca_dev->dev, 0x8118, 0x29); reg_w_val(gspca_dev->dev, 0x8118, 0x29);
reg_w_val(gspca_dev->dev, 0x8114, 0x08); reg_w_val(gspca_dev->dev, 0x8114, 0x08);
} }
} /* reg_w_val(gspca_dev->dev, 0x8114, 0); */
/* this function is called at close time */
static void sd_close(struct gspca_dev *gspca_dev)
{
reg_w_val(gspca_dev->dev, 0x8114, 0);
} }
static void do_autogain(struct gspca_dev *gspca_dev) static void do_autogain(struct gspca_dev *gspca_dev)
...@@ -1121,11 +1116,10 @@ static const struct sd_desc sd_desc_12a = { ...@@ -1121,11 +1116,10 @@ static const struct sd_desc sd_desc_12a = {
.ctrls = sd_ctrls_12a, .ctrls = sd_ctrls_12a,
.nctrls = ARRAY_SIZE(sd_ctrls_12a), .nctrls = ARRAY_SIZE(sd_ctrls_12a),
.config = sd_config, .config = sd_config,
.open = sd_open_12a, .init = sd_init_12a,
.start = sd_start_12a, .start = sd_start_12a,
.stopN = sd_stopN, .stopN = sd_stopN,
.stop0 = sd_stop0, .stop0 = sd_stop0,
.close = sd_close,
.pkt_scan = sd_pkt_scan, .pkt_scan = sd_pkt_scan,
/* .dq_callback = do_autogain, * fixme */ /* .dq_callback = do_autogain, * fixme */
}; };
...@@ -1134,11 +1128,10 @@ static const struct sd_desc sd_desc_72a = { ...@@ -1134,11 +1128,10 @@ static const struct sd_desc sd_desc_72a = {
.ctrls = sd_ctrls_72a, .ctrls = sd_ctrls_72a,
.nctrls = ARRAY_SIZE(sd_ctrls_72a), .nctrls = ARRAY_SIZE(sd_ctrls_72a),
.config = sd_config, .config = sd_config,
.open = sd_open_72a, .init = sd_init_72a,
.start = sd_start_72a, .start = sd_start_72a,
.stopN = sd_stopN, .stopN = sd_stopN,
.stop0 = sd_stop0, .stop0 = sd_stop0,
.close = sd_close,
.pkt_scan = sd_pkt_scan, .pkt_scan = sd_pkt_scan,
.dq_callback = do_autogain, .dq_callback = do_autogain,
}; };
......
...@@ -306,8 +306,8 @@ static int sd_config(struct gspca_dev *gspca_dev, ...@@ -306,8 +306,8 @@ static int sd_config(struct gspca_dev *gspca_dev,
return 0; return 0;
} }
/* this function is called at open time */ /* this function is called at probe and resume time */
static int sd_open(struct gspca_dev *gspca_dev) static int sd_init(struct gspca_dev *gspca_dev)
{ {
int ret; int ret;
...@@ -398,14 +398,6 @@ static void sd_stopN(struct gspca_dev *gspca_dev) ...@@ -398,14 +398,6 @@ static void sd_stopN(struct gspca_dev *gspca_dev)
PDEBUG(D_STREAM, "camera stopped"); PDEBUG(D_STREAM, "camera stopped");
} }
static void sd_stop0(struct gspca_dev *gspca_dev)
{
}
static void sd_close(struct gspca_dev *gspca_dev)
{
}
static void sd_pkt_scan(struct gspca_dev *gspca_dev, static void sd_pkt_scan(struct gspca_dev *gspca_dev,
struct gspca_frame *frame, /* target */ struct gspca_frame *frame, /* target */
__u8 *data, /* isoc packet */ __u8 *data, /* isoc packet */
...@@ -535,11 +527,9 @@ static const struct sd_desc sd_desc = { ...@@ -535,11 +527,9 @@ static const struct sd_desc sd_desc = {
.ctrls = sd_ctrls, .ctrls = sd_ctrls,
.nctrls = ARRAY_SIZE(sd_ctrls), .nctrls = ARRAY_SIZE(sd_ctrls),
.config = sd_config, .config = sd_config,
.open = sd_open, .init = sd_init,
.start = sd_start, .start = sd_start,
.stopN = sd_stopN, .stopN = sd_stopN,
.stop0 = sd_stop0,
.close = sd_close,
.pkt_scan = sd_pkt_scan, .pkt_scan = sd_pkt_scan,
.querymenu = sd_querymenu, .querymenu = sd_querymenu,
}; };
......
...@@ -848,8 +848,8 @@ static int sd_config(struct gspca_dev *gspca_dev, ...@@ -848,8 +848,8 @@ static int sd_config(struct gspca_dev *gspca_dev,
return 0; return 0;
} }
/* this function is called at open time */ /* this function is called at probe and resume time */
static int sd_open(struct gspca_dev *gspca_dev) static int sd_init(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; struct usb_device *dev = gspca_dev->dev;
...@@ -1069,14 +1069,6 @@ static void sd_stopN(struct gspca_dev *gspca_dev) ...@@ -1069,14 +1069,6 @@ static void sd_stopN(struct gspca_dev *gspca_dev)
} }
} }
static void sd_stop0(struct gspca_dev *gspca_dev)
{
}
static void sd_close(struct gspca_dev *gspca_dev)
{
}
static void sd_pkt_scan(struct gspca_dev *gspca_dev, static void sd_pkt_scan(struct gspca_dev *gspca_dev,
struct gspca_frame *frame, /* target */ struct gspca_frame *frame, /* target */
__u8 *data, /* isoc packet */ __u8 *data, /* isoc packet */
...@@ -1369,11 +1361,9 @@ static const struct sd_desc sd_desc = { ...@@ -1369,11 +1361,9 @@ static const struct sd_desc sd_desc = {
.ctrls = sd_ctrls, .ctrls = sd_ctrls,
.nctrls = ARRAY_SIZE(sd_ctrls), .nctrls = ARRAY_SIZE(sd_ctrls),
.config = sd_config, .config = sd_config,
.open = sd_open, .init = sd_init,
.start = sd_start, .start = sd_start,
.stopN = sd_stopN, .stopN = sd_stopN,
.stop0 = sd_stop0,
.close = sd_close,
.pkt_scan = sd_pkt_scan, .pkt_scan = sd_pkt_scan,
}; };
......
...@@ -552,6 +552,13 @@ static int init_default_parameters(struct gspca_dev *gspca_dev) ...@@ -552,6 +552,13 @@ static int init_default_parameters(struct gspca_dev *gspca_dev)
return 0; return 0;
} }
/* this function is called at probe and resume time */
static int sd_init(struct gspca_dev *gspca_dev)
{
init_default_parameters(gspca_dev);
return 0;
}
static void setbrightness(struct gspca_dev *gspca_dev) static void setbrightness(struct gspca_dev *gspca_dev)
{ {
struct sd *sd = (struct sd *) gspca_dev; struct sd *sd = (struct sd *) gspca_dev;
...@@ -893,18 +900,6 @@ static void sd_start(struct gspca_dev *gspca_dev) ...@@ -893,18 +900,6 @@ static void sd_start(struct gspca_dev *gspca_dev)
setcolors(gspca_dev); setcolors(gspca_dev);
} }
static void sd_stopN(struct gspca_dev *gspca_dev)
{
}
static void sd_stop0(struct gspca_dev *gspca_dev)
{
}
static void sd_close(struct gspca_dev *gspca_dev)
{
}
static void sd_pkt_scan(struct gspca_dev *gspca_dev, static void sd_pkt_scan(struct gspca_dev *gspca_dev,
struct gspca_frame *frame, /* target */ struct gspca_frame *frame, /* target */
__u8 *data, /* isoc packet */ __u8 *data, /* isoc packet */
...@@ -972,24 +967,14 @@ static int sd_querymenu(struct gspca_dev *gspca_dev, ...@@ -972,24 +967,14 @@ static int sd_querymenu(struct gspca_dev *gspca_dev,
return -EINVAL; return -EINVAL;
} }
/* this function is called at open time */
static int sd_open(struct gspca_dev *gspca_dev)
{
init_default_parameters(gspca_dev);
return 0;
}
/* sub-driver description */ /* sub-driver description */
static const struct sd_desc sd_desc = { static const struct sd_desc sd_desc = {
.name = MODULE_NAME, .name = MODULE_NAME,
.ctrls = sd_ctrls, .ctrls = sd_ctrls,
.nctrls = ARRAY_SIZE(sd_ctrls), .nctrls = ARRAY_SIZE(sd_ctrls),
.config = sd_config, .config = sd_config,
.open = sd_open, .init = sd_init,
.start = sd_start, .start = sd_start,
.stopN = sd_stopN,
.stop0 = sd_stop0,
.close = sd_close,
.pkt_scan = sd_pkt_scan, .pkt_scan = sd_pkt_scan,
.querymenu = sd_querymenu, .querymenu = sd_querymenu,
}; };
......
...@@ -331,8 +331,8 @@ static void tv_8532_PollReg(struct gspca_dev *gspca_dev) ...@@ -331,8 +331,8 @@ static void tv_8532_PollReg(struct gspca_dev *gspca_dev)
} }
} }
/* this function is called at open time */ /* this function is called at probe and resume time */
static int sd_open(struct gspca_dev *gspca_dev) static int sd_init(struct gspca_dev *gspca_dev)
{ {
reg_w_1(gspca_dev, TV8532_AD_SLOPE, 0x32); reg_w_1(gspca_dev, TV8532_AD_SLOPE, 0x32);
reg_w_1(gspca_dev, TV8532_AD_BITCTRL, 0x00); reg_w_1(gspca_dev, TV8532_AD_BITCTRL, 0x00);
...@@ -450,14 +450,6 @@ static void sd_stopN(struct gspca_dev *gspca_dev) ...@@ -450,14 +450,6 @@ static void sd_stopN(struct gspca_dev *gspca_dev)
reg_w_1(gspca_dev, TV8532_GPIO_OE, 0x0b); reg_w_1(gspca_dev, TV8532_GPIO_OE, 0x0b);
} }
static void sd_stop0(struct gspca_dev *gspca_dev)
{
}
static void sd_close(struct gspca_dev *gspca_dev)
{
}
static void tv8532_preprocess(struct gspca_dev *gspca_dev) static void tv8532_preprocess(struct gspca_dev *gspca_dev)
{ {
struct sd *sd = (struct sd *) gspca_dev; struct sd *sd = (struct sd *) gspca_dev;
...@@ -611,11 +603,9 @@ static const struct sd_desc sd_desc = { ...@@ -611,11 +603,9 @@ static const struct sd_desc sd_desc = {
.ctrls = sd_ctrls, .ctrls = sd_ctrls,
.nctrls = ARRAY_SIZE(sd_ctrls), .nctrls = ARRAY_SIZE(sd_ctrls),
.config = sd_config, .config = sd_config,
.open = sd_open, .init = sd_init,
.start = sd_start, .start = sd_start,
.stopN = sd_stopN, .stopN = sd_stopN,
.stop0 = sd_stop0,
.close = sd_close,
.pkt_scan = sd_pkt_scan, .pkt_scan = sd_pkt_scan,
}; };
......
...@@ -1477,8 +1477,8 @@ static int sd_config(struct gspca_dev *gspca_dev, ...@@ -1477,8 +1477,8 @@ static int sd_config(struct gspca_dev *gspca_dev,
return 0; return 0;
} }
/* this function is called at open time */ /* this function is called at probe and time */
static int sd_open(struct gspca_dev *gspca_dev) static int sd_init(struct gspca_dev *gspca_dev)
{ {
return 0; return 0;
} }
...@@ -1640,19 +1640,6 @@ static void sd_stop0(struct gspca_dev *gspca_dev) ...@@ -1640,19 +1640,6 @@ static void sd_stop0(struct gspca_dev *gspca_dev)
reg_w(dev, 0x89, 0xffff, 0xffff); reg_w(dev, 0x89, 0xffff, 0xffff);
} }
/* this function is called at close time */
static void sd_close(struct gspca_dev *gspca_dev)
{
/* struct usb_device *dev = gspca_dev->dev;
__u8 buffread;
reg_w(dev, 0x89, 0xffff, 0xffff);
reg_w(dev, 0xa0, 0x01, 0xb301);
reg_w(dev, 0xa0, 0x09, 0xb303);
reg_w(dev, 0x89, 0xffff, 0xffff);
*/
}
static void sd_pkt_scan(struct gspca_dev *gspca_dev, static void sd_pkt_scan(struct gspca_dev *gspca_dev,
struct gspca_frame *frame, /* target */ struct gspca_frame *frame, /* target */
__u8 *data, /* isoc packet */ __u8 *data, /* isoc packet */
...@@ -1741,11 +1728,10 @@ static const struct sd_desc sd_desc = { ...@@ -1741,11 +1728,10 @@ static const struct sd_desc sd_desc = {
.ctrls = sd_ctrls, .ctrls = sd_ctrls,
.nctrls = ARRAY_SIZE(sd_ctrls), .nctrls = ARRAY_SIZE(sd_ctrls),
.config = sd_config, .config = sd_config,
.open = sd_open, .init = sd_init,
.start = sd_start, .start = sd_start,
.stopN = sd_stopN, .stopN = sd_stopN,
.stop0 = sd_stop0, .stop0 = sd_stop0,
.close = sd_close,
.pkt_scan = sd_pkt_scan, .pkt_scan = sd_pkt_scan,
.querymenu = sd_querymenu, .querymenu = sd_querymenu,
}; };
......
...@@ -7171,8 +7171,8 @@ static int sd_config(struct gspca_dev *gspca_dev, ...@@ -7171,8 +7171,8 @@ static int sd_config(struct gspca_dev *gspca_dev,
return 0; return 0;
} }
/* this function is called at open time */ /* this function is called at probe and resume time */
static int sd_open(struct gspca_dev *gspca_dev) static int sd_init(struct gspca_dev *gspca_dev)
{ {
reg_w(gspca_dev->dev, 0x01, 0x0000); reg_w(gspca_dev->dev, 0x01, 0x0000);
return 0; return 0;
...@@ -7333,10 +7333,6 @@ static void sd_start(struct gspca_dev *gspca_dev) ...@@ -7333,10 +7333,6 @@ static void sd_start(struct gspca_dev *gspca_dev)
} }
} }
static void sd_stopN(struct gspca_dev *gspca_dev)
{
}
static void sd_stop0(struct gspca_dev *gspca_dev) static void sd_stop0(struct gspca_dev *gspca_dev)
{ {
struct sd *sd = (struct sd *) gspca_dev; struct sd *sd = (struct sd *) gspca_dev;
...@@ -7344,11 +7340,6 @@ static void sd_stop0(struct gspca_dev *gspca_dev) ...@@ -7344,11 +7340,6 @@ static void sd_stop0(struct gspca_dev *gspca_dev)
send_unknown(gspca_dev->dev, sd->sensor); send_unknown(gspca_dev->dev, sd->sensor);
} }
/* this function is called at close time */
static void sd_close(struct gspca_dev *gspca_dev)
{
}
static void sd_pkt_scan(struct gspca_dev *gspca_dev, static void sd_pkt_scan(struct gspca_dev *gspca_dev,
struct gspca_frame *frame, struct gspca_frame *frame,
__u8 *data, __u8 *data,
...@@ -7508,11 +7499,9 @@ static const struct sd_desc sd_desc = { ...@@ -7508,11 +7499,9 @@ static const struct sd_desc sd_desc = {
.ctrls = sd_ctrls, .ctrls = sd_ctrls,
.nctrls = sizeof sd_ctrls / sizeof sd_ctrls[0], .nctrls = sizeof sd_ctrls / sizeof sd_ctrls[0],
.config = sd_config, .config = sd_config,
.open = sd_open, .init = sd_init,
.start = sd_start, .start = sd_start,
.stopN = sd_stopN,
.stop0 = sd_stop0, .stop0 = sd_stop0,
.close = sd_close,
.pkt_scan = sd_pkt_scan, .pkt_scan = sd_pkt_scan,
.querymenu = sd_querymenu, .querymenu = sd_querymenu,
}; };
......
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