diff options
Diffstat (limited to 'extras/recipes-kernel/linux/linux-omap-psp-2.6.32/cam/0073-mt9v113-Fix-State-variable-handling.patch')
-rw-r--r-- | extras/recipes-kernel/linux/linux-omap-psp-2.6.32/cam/0073-mt9v113-Fix-State-variable-handling.patch | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/cam/0073-mt9v113-Fix-State-variable-handling.patch b/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/cam/0073-mt9v113-Fix-State-variable-handling.patch new file mode 100644 index 00000000..9bd006e1 --- /dev/null +++ b/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/cam/0073-mt9v113-Fix-State-variable-handling.patch | |||
@@ -0,0 +1,68 @@ | |||
1 | From e3d5c3eb67e2ef91e08b0fcd26778b8505268a8a Mon Sep 17 00:00:00 2001 | ||
2 | From: Sergio Aguirre <saaguirre@ti.com> | ||
3 | Date: Thu, 22 Jul 2010 13:29:16 -0500 | ||
4 | Subject: [PATCH 73/75] mt9v113: Fix State variable handling | ||
5 | |||
6 | State variable was misused, and was running detection all the | ||
7 | time the sensor was powered back on. | ||
8 | |||
9 | Reason? power off code was putting it to "not detected" always. | ||
10 | |||
11 | Signed-off-by: Sergio Aguirre <saaguirre@ti.com> | ||
12 | --- | ||
13 | drivers/media/video/mt9v113.c | 23 ++++++++++++++--------- | ||
14 | 1 files changed, 14 insertions(+), 9 deletions(-) | ||
15 | |||
16 | diff --git a/drivers/media/video/mt9v113.c b/drivers/media/video/mt9v113.c | ||
17 | index 6714240..37e3e19 100644 | ||
18 | --- a/drivers/media/video/mt9v113.c | ||
19 | +++ b/drivers/media/video/mt9v113.c | ||
20 | @@ -1251,7 +1251,6 @@ static int ioctl_s_power(struct v4l2_int_device *s, enum v4l2_power on) | ||
21 | /* Disable mux for mt9v113 data path */ | ||
22 | if (decoder->pdata->power_set) | ||
23 | err |= decoder->pdata->power_set(s, on); | ||
24 | - decoder->state = STATE_NOT_DETECTED; | ||
25 | break; | ||
26 | |||
27 | case V4L2_POWER_STANDBY: | ||
28 | @@ -1260,23 +1259,29 @@ static int ioctl_s_power(struct v4l2_int_device *s, enum v4l2_power on) | ||
29 | break; | ||
30 | |||
31 | case V4L2_POWER_ON: | ||
32 | - /* Enable mux for mt9v113 data path */ | ||
33 | - if (decoder->state == STATE_NOT_DETECTED) { | ||
34 | - | ||
35 | - if (decoder->pdata->power_set) | ||
36 | - err = decoder->pdata->power_set(s, on); | ||
37 | + if (decoder->pdata->power_set) { | ||
38 | + err = decoder->pdata->power_set(s, on); | ||
39 | + if (err) | ||
40 | + return err; | ||
41 | + } | ||
42 | |||
43 | + if (decoder->state == STATE_NOT_DETECTED) { | ||
44 | /* Detect the sensor is not already detected */ | ||
45 | - err |= mt9v113_detect(decoder); | ||
46 | + err = mt9v113_detect(decoder); | ||
47 | if (err) { | ||
48 | v4l_err(decoder->client, | ||
49 | "Unable to detect decoder\n"); | ||
50 | + WARN_ON(1); | ||
51 | return err; | ||
52 | } | ||
53 | } | ||
54 | /* Only VGA mode for now */ | ||
55 | - err |= mt9v113_configure(decoder); | ||
56 | - err |= mt9v113_vga_mode(decoder); | ||
57 | + err = mt9v113_configure(decoder); | ||
58 | + if (err) | ||
59 | + return err; | ||
60 | + err = mt9v113_vga_mode(decoder); | ||
61 | + if (err) | ||
62 | + return err; | ||
63 | break; | ||
64 | |||
65 | default: | ||
66 | -- | ||
67 | 1.6.6.1 | ||
68 | |||