diff options
author | Hans de Goede <hdegoede@redhat.com> | 2010-01-31 10:54:29 -0500 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2010-02-26 13:11:08 -0500 |
commit | 9712a8be6b842ba9ffbd1b74a8d9b04c785b8ac1 (patch) | |
tree | f9702e41155935b33711a8fa8ff38a9772ca5ee2 /drivers/media | |
parent | f65e93d60050ae4cf281b55b59864e7e7a08eb58 (diff) |
V4L/DVB: gspca_sonixj: Add camera button support
gspca_sonixj: Add camera button support
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media')
-rw-r--r-- | drivers/media/video/gspca/sonixj.c | 33 |
1 files changed, 30 insertions, 3 deletions
diff --git a/drivers/media/video/gspca/sonixj.c b/drivers/media/video/gspca/sonixj.c index 2ccddcd710f2..83d5773d4629 100644 --- a/drivers/media/video/gspca/sonixj.c +++ b/drivers/media/video/gspca/sonixj.c | |||
@@ -21,6 +21,7 @@ | |||
21 | 21 | ||
22 | #define MODULE_NAME "sonixj" | 22 | #define MODULE_NAME "sonixj" |
23 | 23 | ||
24 | #include <linux/input.h> | ||
24 | #include "gspca.h" | 25 | #include "gspca.h" |
25 | #include "jpeg.h" | 26 | #include "jpeg.h" |
26 | 27 | ||
@@ -1344,7 +1345,8 @@ static void bridge_init(struct gspca_dev *gspca_dev, | |||
1344 | {0x00, 0x40, 0x38, 0x30, 0x00, 0x20}; | 1345 | {0x00, 0x40, 0x38, 0x30, 0x00, 0x20}; |
1345 | static const u8 regd4[] = {0x60, 0x00, 0x00}; | 1346 | static const u8 regd4[] = {0x60, 0x00, 0x00}; |
1346 | 1347 | ||
1347 | reg_w1(gspca_dev, 0xf1, 0x00); | 1348 | /* sensor clock already enabled in sd_init */ |
1349 | /* reg_w1(gspca_dev, 0xf1, 0x00); */ | ||
1348 | reg_w1(gspca_dev, 0x01, sn9c1xx[1]); | 1350 | reg_w1(gspca_dev, 0x01, sn9c1xx[1]); |
1349 | 1351 | ||
1350 | /* configure gpio */ | 1352 | /* configure gpio */ |
@@ -1536,7 +1538,9 @@ static int sd_init(struct gspca_dev *gspca_dev) | |||
1536 | break; | 1538 | break; |
1537 | } | 1539 | } |
1538 | 1540 | ||
1539 | reg_w1(gspca_dev, 0xf1, 0x01); | 1541 | /* Note we do not disable the sensor clock here (power saving mode), |
1542 | as that also disables the button on the cam. */ | ||
1543 | reg_w1(gspca_dev, 0xf1, 0x00); | ||
1540 | 1544 | ||
1541 | /* set the i2c address */ | 1545 | /* set the i2c address */ |
1542 | sn9c1xx = sn_tb[sd->sensor]; | 1546 | sn9c1xx = sn_tb[sd->sensor]; |
@@ -2197,7 +2201,8 @@ static void sd_stopN(struct gspca_dev *gspca_dev) | |||
2197 | reg_w1(gspca_dev, 0x17, sn9c1xx[0x17]); | 2201 | reg_w1(gspca_dev, 0x17, sn9c1xx[0x17]); |
2198 | reg_w1(gspca_dev, 0x01, sn9c1xx[1]); | 2202 | reg_w1(gspca_dev, 0x01, sn9c1xx[1]); |
2199 | reg_w1(gspca_dev, 0x01, data); | 2203 | reg_w1(gspca_dev, 0x01, data); |
2200 | reg_w1(gspca_dev, 0xf1, 0x00); | 2204 | /* Don't disable sensor clock as that disables the button on the cam */ |
2205 | /* reg_w1(gspca_dev, 0xf1, 0x01); */ | ||
2201 | } | 2206 | } |
2202 | 2207 | ||
2203 | static void sd_stop0(struct gspca_dev *gspca_dev) | 2208 | static void sd_stop0(struct gspca_dev *gspca_dev) |
@@ -2550,6 +2555,25 @@ static int sd_querymenu(struct gspca_dev *gspca_dev, | |||
2550 | return -EINVAL; | 2555 | return -EINVAL; |
2551 | } | 2556 | } |
2552 | 2557 | ||
2558 | #ifdef CONFIG_INPUT | ||
2559 | static int sd_int_pkt_scan(struct gspca_dev *gspca_dev, | ||
2560 | u8 *data, /* interrupt packet data */ | ||
2561 | int len) /* interrupt packet length */ | ||
2562 | { | ||
2563 | int ret = -EINVAL; | ||
2564 | |||
2565 | if (len == 1 && data[0] == 1) { | ||
2566 | input_report_key(gspca_dev->input_dev, KEY_CAMERA, 1); | ||
2567 | input_sync(gspca_dev->input_dev); | ||
2568 | input_report_key(gspca_dev->input_dev, KEY_CAMERA, 0); | ||
2569 | input_sync(gspca_dev->input_dev); | ||
2570 | ret = 0; | ||
2571 | } | ||
2572 | |||
2573 | return ret; | ||
2574 | } | ||
2575 | #endif | ||
2576 | |||
2553 | /* sub-driver description */ | 2577 | /* sub-driver description */ |
2554 | static const struct sd_desc sd_desc = { | 2578 | static const struct sd_desc sd_desc = { |
2555 | .name = MODULE_NAME, | 2579 | .name = MODULE_NAME, |
@@ -2565,6 +2589,9 @@ static const struct sd_desc sd_desc = { | |||
2565 | .get_jcomp = sd_get_jcomp, | 2589 | .get_jcomp = sd_get_jcomp, |
2566 | .set_jcomp = sd_set_jcomp, | 2590 | .set_jcomp = sd_set_jcomp, |
2567 | .querymenu = sd_querymenu, | 2591 | .querymenu = sd_querymenu, |
2592 | #ifdef CONFIG_INPUT | ||
2593 | .int_pkt_scan = sd_int_pkt_scan, | ||
2594 | #endif | ||
2568 | }; | 2595 | }; |
2569 | 2596 | ||
2570 | /* -- module initialisation -- */ | 2597 | /* -- module initialisation -- */ |