aboutsummaryrefslogtreecommitdiffstats
path: root/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/cam/0053-mt9t112-Fix-null-pointer-kernel-bug.patch
blob: d03795f59a5687425ba347fc9a13f4df9b51d8c0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
From 0f6b697fb422f8eb8df539f82df49f0f6f976bc3 Mon Sep 17 00:00:00 2001
From: Sergio Aguirre <saaguirre@ti.com>
Date: Thu, 1 Jul 2010 09:12:37 -0500
Subject: [PATCH 53/75] mt9t112: Fix null pointer kernel bug

We were trying to access a null pointer (info) which we weren't
initializing anywhere.

Fix this.

Signed-off-by: Sergio Aguirre <saaguirre@ti.com>
---
 drivers/media/video/mt9t112.c |   34 +++++++++++++++++++++++-----------
 1 files changed, 23 insertions(+), 11 deletions(-)

diff --git a/drivers/media/video/mt9t112.c b/drivers/media/video/mt9t112.c
index 6f54394..98a4ea9 100644
--- a/drivers/media/video/mt9t112.c
+++ b/drivers/media/video/mt9t112.c
@@ -92,7 +92,7 @@ struct mt9t112_frame_size {
 struct mt9t112_priv {
 	struct mt9t112_platform_data	*pdata;
 	struct v4l2_int_device		*v4l2_int_device;
-	struct mt9t112_camera_info	*info;
+	struct mt9t112_camera_info	info;
 	struct i2c_client		*client;
 	struct v4l2_pix_format		 pix;
 	int				 model;
@@ -463,15 +463,15 @@ static int mt9t112_init_pll(const struct i2c_client *client)
 
 	/* Replace these registers when new timing parameters are generated */
 	mt9t112_set_pll_dividers(client,
-				 priv->info->divider.m,
-				 priv->info->divider.n,
-				 priv->info->divider.p1,
-				 priv->info->divider.p2,
-				 priv->info->divider.p3,
-				 priv->info->divider.p4,
-				 priv->info->divider.p5,
-				 priv->info->divider.p6,
-				 priv->info->divider.p7);
+				 priv->info.divider.m,
+				 priv->info.divider.n,
+				 priv->info.divider.p1,
+				 priv->info.divider.p2,
+				 priv->info.divider.p3,
+				 priv->info.divider.p4,
+				 priv->info.divider.p5,
+				 priv->info.divider.p6,
+				 priv->info.divider.p7);
 
 	/*
 	 * TEST_BYPASS  on
@@ -1015,7 +1015,7 @@ static int mt9t112_v4l2_int_s_power(struct v4l2_int_device *s,
 		}
 		if (!(priv->flags & INIT_DONE)) {
 			u16 param = (MT9T112_FLAG_PCLK_RISING_EDGE &
-				     priv->info->flags) ? 0x0001 : 0x0000;
+				     priv->info.flags) ? 0x0001 : 0x0000;
 
 			ECHECKER(ret, mt9t112_detect(client));
 			ECHECKER(ret, mt9t112_init_camera(client));
@@ -1195,6 +1195,18 @@ static int mt9t112_probe(struct i2c_client *client,
 	priv->client = client;
 	priv->pdata = client->dev.platform_data;
 
+	/* Revisit: Init Sensor info settings */
+	priv->info.divider.m = 25;
+	priv->info.divider.n = 2;
+	priv->info.divider.p1 = 0;
+	priv->info.divider.p2 = 9;
+	priv->info.divider.p3 = 0;
+	priv->info.divider.p4 = 13;
+	priv->info.divider.p5 = 13;
+	priv->info.divider.p6 = 9;
+	priv->info.divider.p7 = 0;
+	priv->info.flags = MT9T112_FLAG_PCLK_RISING_EDGE;
+
 	i2c_set_clientdata(client, priv);
 
 	//ret = mt9t112_detect(client);
-- 
1.6.6.1