Commit 1de1ddf3 authored by Jean-Francois Moine's avatar Jean-Francois Moine Committed by Mauro Carvalho Chehab
Browse files

V4L/DVB (10387): gspca - spca505: Move some sequences from probe to streamon.



The webcams worked only one time after connection.

Signed-off-by: default avatarJean-Francois Moine <moinejf@free.fr>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent a5df5c14
Loading
Loading
Loading
Loading
+24 −25
Original line number Diff line number Diff line
@@ -650,31 +650,6 @@ static int sd_config(struct gspca_dev *gspca_dev,
/* this function is called at probe and resume time */
static int sd_init(struct gspca_dev *gspca_dev)
{
	struct sd *sd = (struct sd *) gspca_dev;
	int ret;

	if (sd->subtype == Nxultra)
		write_vector(gspca_dev, spca505b_open_data_ccd);
	else
		write_vector(gspca_dev, spca505_open_data_ccd);
	ret = reg_read(gspca_dev, 0x06, 0x16);

	if (ret < 0) {
		PDEBUG(D_ERR|D_CONF,
		       "register read failed err: %d",
		       ret);
		return ret;
	}
	if (ret != 0x0101) {
		PDEBUG(D_ERR|D_CONF,
			"After vector read returns 0x%04x should be 0x0101",
			ret);
	}

	ret = reg_write(gspca_dev->dev, 0x06, 0x16, 0x0a);
	if (ret < 0)
		return ret;
	reg_write(gspca_dev->dev, 0x05, 0xc2, 0x12);
	return 0;
}

@@ -689,6 +664,7 @@ static void setbrightness(struct gspca_dev *gspca_dev)

static int sd_start(struct gspca_dev *gspca_dev)
{
	struct sd *sd = (struct sd *) gspca_dev;
	struct usb_device *dev = gspca_dev->dev;
	int ret, mode;
	static u8 mode_tb[][3] = {
@@ -700,6 +676,29 @@ static int sd_start(struct gspca_dev *gspca_dev)
		{0x05, 0x40, 0x40}	/* 160x120 */
	};

	if (sd->subtype == Nxultra)
		write_vector(gspca_dev, spca505b_open_data_ccd);
	else
		write_vector(gspca_dev, spca505_open_data_ccd);
	ret = reg_read(gspca_dev, 0x06, 0x16);

	if (ret < 0) {
		PDEBUG(D_ERR|D_CONF,
		       "register read failed err: %d",
		       ret);
		return ret;
	}
	if (ret != 0x0101) {
		PDEBUG(D_ERR|D_CONF,
			"After vector read returns 0x%04x should be 0x0101",
			ret);
	}

	ret = reg_write(gspca_dev->dev, 0x06, 0x16, 0x0a);
	if (ret < 0)
		return ret;
	reg_write(gspca_dev->dev, 0x05, 0xc2, 0x12);

	/* necessary because without it we can see stream
	 * only once after loading module */
	/* stopping usb registers Tomasz change */