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

V4L/DVB: gspca_spca561: Fix LED on rev12a cameras

Fix LED control on rev12a cameras and remove the unneeded
sd_stop0 callback function.
Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent cc2a8335
...@@ -249,9 +249,9 @@ static const __u16 Pb100_2map8300[][2] = { ...@@ -249,9 +249,9 @@ static const __u16 Pb100_2map8300[][2] = {
}; };
static const __u16 spca561_161rev12A_data1[][2] = { static const __u16 spca561_161rev12A_data1[][2] = {
{0x29, 0x8118}, /* white balance - was 21 */ {0x29, 0x8118}, /* Control register (various enable bits) */
{0x08, 0x8114}, /* white balance - was 01 */ {0x08, 0x8114}, /* GPIO: Led off */
{0x0e, 0x8112}, /* white balance - was 00 */ {0x0e, 0x8112}, /* 0x0e stream off 0x3e stream on */
{0x00, 0x8102}, /* white balance - new */ {0x00, 0x8102}, /* white balance - new */
{0x92, 0x8804}, {0x92, 0x8804},
{0x04, 0x8802}, /* windows uses 08 */ {0x04, 0x8802}, /* windows uses 08 */
...@@ -263,15 +263,11 @@ static const __u16 spca561_161rev12A_data2[][2] = { ...@@ -263,15 +263,11 @@ static const __u16 spca561_161rev12A_data2[][2] = {
{0x07, 0x8601}, {0x07, 0x8601},
{0x07, 0x8602}, {0x07, 0x8602},
{0x04, 0x8501}, {0x04, 0x8501},
{0x21, 0x8118},
{0x07, 0x8201}, /* windows uses 02 */ {0x07, 0x8201}, /* windows uses 02 */
{0x08, 0x8200}, {0x08, 0x8200},
{0x01, 0x8200}, {0x01, 0x8200},
{0x00, 0x8114},
{0x01, 0x8114}, /* windows uses 00 */
{0x90, 0x8604}, {0x90, 0x8604},
{0x00, 0x8605}, {0x00, 0x8605},
{0xb0, 0x8603}, {0xb0, 0x8603},
...@@ -302,6 +298,9 @@ static const __u16 spca561_161rev12A_data2[][2] = { ...@@ -302,6 +298,9 @@ static const __u16 spca561_161rev12A_data2[][2] = {
{0xf0, 0x8505}, {0xf0, 0x8505},
{0x32, 0x850a}, {0x32, 0x850a},
/* {0x99, 0x8700}, * - white balance - new (removed) */ /* {0x99, 0x8700}, * - white balance - new (removed) */
/* HDG we used to do this in stop0, making the init state and the state
after a start / stop different, so do this here instead. */
{0x29, 0x8118},
{} {}
}; };
...@@ -645,6 +644,9 @@ static int sd_start_12a(struct gspca_dev *gspca_dev) ...@@ -645,6 +644,9 @@ static int sd_start_12a(struct gspca_dev *gspca_dev)
setwhite(gspca_dev); setwhite(gspca_dev);
setgain(gspca_dev); setgain(gspca_dev);
setexposure(gspca_dev); setexposure(gspca_dev);
/* Led ON (bit 3 -> 0 */
reg_w_val(gspca_dev->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)
...@@ -691,26 +693,14 @@ static void sd_stopN(struct gspca_dev *gspca_dev) ...@@ -691,26 +693,14 @@ static void sd_stopN(struct gspca_dev *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->dev, 0x8112, 0x0e);
/* Led Off (bit 3 -> 1 */
reg_w_val(gspca_dev->dev, 0x8114, 0x08);
} else { } else {
reg_w_val(gspca_dev->dev, 0x8112, 0x20); reg_w_val(gspca_dev->dev, 0x8112, 0x20);
/* reg_w_val(gspca_dev->dev, 0x8102, 0x00); ?? */ /* reg_w_val(gspca_dev->dev, 0x8102, 0x00); ?? */
} }
} }
/* called on streamoff with alt 0 and on disconnect */
static void sd_stop0(struct gspca_dev *gspca_dev)
{
struct sd *sd = (struct sd *) gspca_dev;
if (!gspca_dev->present)
return;
if (sd->chip_revision == Rev012A) {
reg_w_val(gspca_dev->dev, 0x8118, 0x29);
reg_w_val(gspca_dev->dev, 0x8114, 0x08);
}
/* 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)
{ {
struct sd *sd = (struct sd *) gspca_dev; struct sd *sd = (struct sd *) gspca_dev;
...@@ -1028,7 +1018,6 @@ static const struct sd_desc sd_desc_12a = { ...@@ -1028,7 +1018,6 @@ static const struct sd_desc sd_desc_12a = {
.init = sd_init_12a, .init = sd_init_12a,
.start = sd_start_12a, .start = sd_start_12a,
.stopN = sd_stopN, .stopN = sd_stopN,
.stop0 = sd_stop0,
.pkt_scan = sd_pkt_scan, .pkt_scan = sd_pkt_scan,
}; };
static const struct sd_desc sd_desc_72a = { static const struct sd_desc sd_desc_72a = {
...@@ -1039,7 +1028,6 @@ static const struct sd_desc sd_desc_72a = { ...@@ -1039,7 +1028,6 @@ static const struct sd_desc sd_desc_72a = {
.init = sd_init_72a, .init = sd_init_72a,
.start = sd_start_72a, .start = sd_start_72a,
.stopN = sd_stopN, .stopN = sd_stopN,
.stop0 = sd_stop0,
.pkt_scan = sd_pkt_scan, .pkt_scan = sd_pkt_scan,
.dq_callback = do_autogain, .dq_callback = do_autogain,
}; };
......
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