[Meego-kernel] [patch] mrstov5640: use linux debug print mechanism #9826

He, Yong M yong.m.he at intel.com
Mon Jun 20 18:21:14 PDT 2011


Hi Kristen,

You've added the debug print patch for 9740(front sensor), here's the one for 5640(back sensor), please help to review, Thanks.

-- Yong
Phone (+86) 21-61166334
Lab (+86) 21-61167881


-----Original Message-----
From: He, Yong M 
Sent: Monday, June 20, 2011 11:40 AM
To: 'Arjan van de Ven'
Cc: meego-kernel at meego.com; Kristen Carlson Accardi
Subject: RE: [patch] mrstov5640: use linux debug print mechanism #9826


Hi Arjan/Kristen,

I made some modifications on the patch (use 'sd->v4l2_dev->dev' rather than '&c->adapter->dev ' ) And, also merged it based on the latest version (0.95). Please review.

From: Yong He <yong.m.he at intel.com>
Subject: [patch] mrstov5640: use linux debug print mechanism #9826

Bug 9826 - camera driver is very noisy.

Signed-off-by: He, Yong <yong.m.he at intel.com>

----
Index: linux-2.6.37/drivers/staging/mrstci/mrstov5640/mrstov5640.c
===================================================================
--- linux-2.6.37/drivers/staging/mrstci/mrstov5640/mrstov5640.c	(revision 105)
+++ linux-2.6.37/drivers/staging/mrstci/mrstov5640/mrstov5640.c	(working copy)
@@ -24,6 +24,8 @@
  * Yong He <yong.m.he at intel.com>
  */
 
+#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
 #include <linux/module.h>
 #include <linux/types.h>
 #include <linux/kernel.h>
@@ -50,10 +52,6 @@
 
 #define DRIVER_VERSION "0.95"
 
-static int mrstov5640_debug = 3;
-module_param(mrstov5640_debug, int, 0644); -MODULE_PARM_DESC(mrstov5640_debug, "Debug level (0-1)");
-
 #define GPIO_FLASH 45
 static int ov5640_flash=0;
 
@@ -61,20 +59,9 @@
 #define V4L2_CID_FLASH_STROBE                   (V4L2_CID_CAMERA_CLASS_BASE+17) 
 #endif
 
-#define dprintk(level, fmt, arg...) do {			\
-	if (mrstov5640_debug >= level) 					\
-		printk(KERN_DEBUG "ov5640@%s: " fmt "\n", \
-		       __func__, ## arg); } \
-	while (0)
+#define DBG_entering	pr_debug("entering %s\n", __func__);
+#define DBG_leaving	pr_debug("leaving %s\n", __func__);
 
-#define eprintk(fmt, arg...)	\
-	printk(KERN_ERR "ov5640@%s: line %d: " fmt "\n",	\
-	       __func__, __LINE__, ## arg);
-
-#define DBG_entering	dprintk(2, "entering");
-#define DBG_leaving	dprintk(2, "leaving");
-#define DBG_line	dprintk(2, " line: %d", __LINE__);
-
 static inline struct ci_sensor_config *to_sensor_config(struct v4l2_subdev *sd)  {
 	return container_of(sd, struct ci_sensor_config, sd); @@ -272,7 +259,6 @@
 	*value = ret_val;
 
 	ret = (ret == 2) ? 0 : -1;
-	dprintk( 4, " && ov5640_read  \t\t\t(0x%04x) ------> 0x%02x",reg,*value);
 	return ret;
 }
 
@@ -300,7 +286,6 @@
 	if (reg == 0x3008 && (value & 0x80))
 		msleep(3);
 	ret = (ret == 1) ? 0 : -1;
-	dprintk( 4, "&& ov5640_write \t\t\t(0x%04x) <------ 0x%02x",reg,value);
 	return ret;
 }
 
@@ -357,7 +342,8 @@
 static int ov5640_set_aec_agc(struct i2c_client *c, int on)  {
 	int ret = 0;
-	dprintk(3, "ov5640_set_aec_agc: (%d)", on);
+	struct v4l2_subdev *sd = i2c_get_clientdata(c);
+	dev_dbg(sd->v4l2_dev->dev, "ov5640_set_aec_agc: (%d)", on);
 
 	if (on)
 		ret = ov5640_write(c, 0x3503, 0x00);
@@ -399,19 +385,21 @@
 		unsigned int x, unsigned int y)
 {
 	int ret = 0;
+	struct v4l2_subdev *sd = i2c_get_clientdata(c);
 	DBG_entering;
 
 	if (x > OV5640_FOCUS_NORMALIZED_W) {
-		dprintk(1, "Error focus point x = %d\n", x);
+		dev_dbg(sd->v4l2_dev->dev, "Error focus point x = %d\n", x);
 		return -1;
 	}
 
 	if (y > OV5640_FOCUS_NORMALIZED_H) {
-		dprintk(1, "Error focus point y = %d\n", y);
+		dev_dbg(sd->v4l2_dev->dev, "Error focus point y = %d\n", y);
 		return -1;
 	}
 
-	dprintk(3, "ov5640_af_change_pos x = %d, y = %d\n", x, y);
+	dev_dbg(sd->v4l2_dev->dev,
+			"ov5640_af_change_pos x = %d, y = %d\n", x, y);
 
 	ret += ov5640_write(c, 0x3024, x);
 	ret += ov5640_write(c, 0x3025, y);
@@ -477,6 +465,7 @@
 {
 	int ret;
 	u8 val;
+	struct v4l2_subdev *sd = i2c_get_clientdata(c);
 	DBG_entering;
 
 	if (ov5640_status.fw_inited !=  OV5640_FW_RESET) { @@ -488,7 +477,7 @@
 
 	ret = ov5640_write_array(c, ov5640_reg_fw);
 	if (ret > OV5640_FW_LOAD_EXPECTED_MAX_MISMATCH) {
-		dprintk(1, "AF Load FW Failed = %d!!\n", ret);
+		dev_dbg(sd->v4l2_dev->dev, "AF Load FW Failed = %d!!\n", ret);
 		goto __ov5640_af_init_exit;
 	} else {
 		/* firmware start */
@@ -500,7 +489,7 @@
 	/* check if firmware started */
 	ov5640_read(c, 0x3029, &val);
 	if (val == 0xff) {
-		dprintk(1, "AF FW is not running!\n");
+		dev_dbg(sd->v4l2_dev->dev, "AF FW is not running!\n");
 		ret = -1;
 		goto __ov5640_af_init_exit;
 	}
@@ -518,6 +507,7 @@
 {
 	int ret;
 	unsigned long flags;
+	struct v4l2_subdev *sd = i2c_get_clientdata(c);
 	DBG_entering;
 
 	spin_lock_irqsave(&ov5640_status.state_lock, flags); @@ -534,7 +524,8 @@
 
 	/* Set registers into default config value */
 	ret = ov5640_write_array(c, ov5640_def_reg);
-	dprintk( 1, "[ov5640-wr-reg] <----------- load ov5640 default settings\n");
+	dev_dbg(sd->v4l2_dev->dev, "[ov5640-wr-reg] <-----------"
+			" load ov5640 default settings\n");
 	ret += ov5640_set_aec_agc(c, 1);
 	ov5640_set_data_pin_in(c);
 
@@ -567,19 +558,20 @@
 		spin_unlock_irqrestore(&ov5640_status.state_lock, flags);
 	}
 
-	dprintk(1, "PM: ov5640 standby called\n");
+	printk(KERN_INFO "PM: ov5640 standby called\n");
 }
 
 static void ov5640_wakeup(struct v4l2_subdev *sd, int hw_reinit)  {
 	unsigned long flags;
-	dprintk(1, "PM: ov5640 wakeup called\n");
+
+	printk(KERN_INFO "PM: ov5640 wakeup called\n");
 	spin_lock_irqsave(&ov5640_status.state_lock, flags);
 
 	if (ov5640_status.power == OV5640_POWER_OFF) {
 		ov5640_status.power = OV5640_POWER_ON;
 		spin_unlock_irqrestore(&ov5640_status.state_lock, flags);
-		dprintk(1, "PM: ov5640 switch OFF to ON.\n");
+		printk(KERN_INFO "PM: ov5640 switch OFF to ON.\n");
 		gpio_set_value(GPIO_STDBY_PIN, 0);
 	} else {
 		spin_unlock_irqrestore(&ov5640_status.state_lock, flags); @@ -666,7 +658,7 @@
 	struct ov5640_res_struct *res_index, *p = NULL;
 	int dis, last_dis = ov5640_res->width + ov5640_res->height;
 
-	dprintk(1, "&&&&&  before %dx%d", *w, *h);
+	pr_debug("&&&&&  before %dx%d", *w, *h);
 	for (res_index = ov5640_res;
 	     res_index < ov5640_res + N_RES;
 	     res_index++) {
@@ -699,7 +691,7 @@
 	*w = res_index->width;
 	*h = res_index->height;
 
-	dprintk(1, "&&&&&  after %dx%d", *w, *h);
+	pr_debug("&&&&&  after %dx%d", *w, *h);
 	return 0;
 }
 
@@ -724,11 +716,11 @@
 {
 	int ret = 0;
 	DBG_entering;
-	dprintk(1, "&&&&&  before %dx%d", fmt->width,
-		fmt->height);
+	dev_dbg(sd->v4l2_dev->dev, "&&&&&  before %dx%d",
+			fmt->width,	fmt->height);
 	ret = ov5640_try_res(&fmt->width, &fmt->height);
-	dprintk(1, "&&&&&  after %dx%d", fmt->width,
-		fmt->height);
+	dev_dbg(sd->v4l2_dev->dev, "&&&&&  after %dx%d",
+			fmt->width,	fmt->height);
 	DBG_leaving;
 	return ret;
 }
@@ -865,10 +857,12 @@
 	val = ov5640_setting_ext[idx].REG_3a0d;
 	ret += ov5640_write(c, 0x3a0d, val);
 
-	dprintk(3, "ov5640_set_b_filter: ov5640_setting_ext[%d]."
+	dev_dbg(sd->v4l2_dev->dev,
+			"ov5640_set_b_filter: ov5640_setting_ext[%d]."
 			"REG_3a08w  <- 0x%x", idx,
 			ov5640_setting_ext[idx].REG_3a08w);
-	dprintk(3, "ov5640_set_b_filter: ov5640_setting_ext[%d]."
+	dev_dbg(sd->v4l2_dev->dev,
+			"ov5640_set_b_filter: ov5640_setting_ext[%d]."
 			"REG_3a0aw  <- 0x%x", idx,
 			ov5640_setting_ext[idx].REG_3a0aw);
 
@@ -910,13 +904,13 @@
 	else
 		ov5640_status.expo.lightfreq = 60;
 
-	dprintk(3, "ov5640_save_expo_val: "
+	dev_dbg(sd->v4l2_dev->dev, "ov5640_save_expo_val: "
 			"ov5640_status.preview.gain16	 -> 0x%x",
 			ov5640_status.preview.gain16);
-	dprintk(3, "ov5640_save_expo_val: "
+	dev_dbg(sd->v4l2_dev->dev, "ov5640_save_expo_val: "
 			"ov5640_status.preview.shutter16  -> 0x%x",
 			ov5640_status.preview.shutter16);
-	dprintk(3, "ov5640_save_expo_val: "
+	dev_dbg(sd->v4l2_dev->dev, "ov5640_save_expo_val: "
 			"ov5640_status.expo.lightfreq -> 0x%x",
 			ov5640_status.expo.lightfreq);
 
@@ -940,7 +934,7 @@
 	ret += ov5640_write(c, 0x350B, val);
 	val = (ov5640_status.snapshot.gain16>>8);
 	ret += ov5640_write(c, 0x350A, val);
-	dprintk(3, "ov5640_set_gain: ov5640_status.snapshot"
+	dev_dbg(sd->v4l2_dev->dev, "ov5640_set_gain: ov5640_status.snapshot"
 			".gain16 <- 0x%x", ov5640_status.snapshot.gain16);
 
 	return ret;
@@ -973,8 +967,10 @@
 	x *= (ov5640_status.preview.shutter16/16);
 
 	y = ov5640_setting_ext[cap_idx].REG_380cw;
-	dprintk(3, "ov5640_restore_expo: x = 0x%Lx,  y = 0x%Lx", x, y);
-	dprintk(3, "ov5640_setting_ext[pre_idx].REG_380cw = 0x%x,"
+	dev_dbg(sd->v4l2_dev->dev,
+			"ov5640_restore_expo: x = 0x%Lx,  y = 0x%Lx", x, y);
+	dev_dbg(sd->v4l2_dev->dev,
+			"ov5640_setting_ext[pre_idx].REG_380cw = 0x%x,"
 			"ov5640_status.preview.gain16 = 0x%x,"
 			"ov5640_status.preview.shutter16 = 0x%x",
 			ov5640_setting_ext[pre_idx].REG_380cw,
@@ -984,10 +980,12 @@
 	x =  (x*ov5640_setting_ext[cap_idx].sysclk + 8)>>4;
 	y =  (y*ov5640_setting_ext[pre_idx].sysclk + 8)>>4;
 
-	dprintk(3, "ov5640_restore_expo: x2 = 0x%Lx,  y2 = 0x%Lx", x, y);
+	dev_dbg(sd->v4l2_dev->dev,
+		"ov5640_restore_expo: x2 = 0x%Lx,  y2 = 0x%Lx", x, y);
 	exposure = do_div(x, y);
 	exposure = x;
-	dprintk(3, "ov5640_restore_expo: exposure = 0x%Lx", exposure);
+	dev_dbg(sd->v4l2_dev->dev,
+		"ov5640_restore_expo: exposure = 0x%Lx", exposure);
 
 	maxgain16 = 0x01fc; /* 32x */
 
@@ -1065,10 +1063,10 @@
 	val = ((ov5640_status.snapshot.shutter16>>16)&0x0F);
 	ov5640_write(c, 0x3500, val);
 
-	dprintk(3, "ov5640_restore_expo: "
+	dev_dbg(sd->v4l2_dev->dev, "ov5640_restore_expo: "
 			"frmshuttermax               <- 0x%x",
 			frmshuttermax);
-	dprintk(3, "ov5640_restore_expo: "
+	dev_dbg(sd->v4l2_dev->dev, "ov5640_restore_expo: "
 			"ov5640_status.preview.shutter16  <- 0x%x",
 			ov5640_status.snapshot.shutter16);
 
@@ -1108,11 +1106,13 @@
 			ov5640_status.current_res_i = target_res_index;
 			spin_unlock_irqrestore(
 					&ov5640_status.state_lock, flags);
-			dprintk(3, "[ov5640-wr-reg] <----------- "
+			dev_dbg(sd->v4l2_dev->dev,
+					"[ov5640-wr-reg] <----------- "
 					"changing res from index-%d to index-%d (%dx%d)",
 					previous_res_i,
 					target_res_index, width, height);
-			dprintk(3, "[ov5640-wr-reg] <----------- "
+			dev_dbg(sd->v4l2_dev->dev,
+					"[ov5640-wr-reg] <----------- "
 					"Set resolutiojn Configs");
 			ov5640_save_hw_status(client);
 			ret += ov5640_write_array(client, res_index->regs); @@ -1126,7 +1126,10 @@
 		} else {
 			spin_unlock_irqrestore(
 					&ov5640_status.state_lock, flags);
-			dprintk(3, "[ov5640-wr-reg] <----------- same res index-%d (%dx%d)", target_res_index,width, height);
+			dev_dbg(sd->v4l2_dev->dev,
+					"[ov5640-wr-reg] <----------- "
+					"same res index-%d (%dx%d)",
+					target_res_index, width, height);
 		}
 
 		/* Marked current sensor res as being "used" */ @@ -1140,7 +1143,8 @@
 		}
 
 		for (index = 0; index < N_RES; index++)
-			dprintk(2, "index = %d, used = %d\n", index,
+			dev_dbg(sd->v4l2_dev->dev,
+				"index = %d, used = %d\n", index,
 				ov5640_res[index].used);
 
 	}
@@ -1614,19 +1618,22 @@
 	struct i2c_client *client = v4l2_get_subdevdata(sd);
 	DBG_entering;
 
-	dprintk( 1, "[ov5640-wr-reg] <----------- ov5640: s_stream %d \n",enable);
+	dev_dbg(sd->v4l2_dev->dev, "[ov5640-wr-reg]"
+			" <----------- ov5640: s_stream %d\n", enable);
 
 	if (enable) {
 		unsigned char v;
 		int af_fw_status;
 		ov5640_read(client, 0x3008, &v);
 		if ((v & 0xff) != 0x02) {
-			dprintk( 1, "[ov5640-wr-reg] <----------- set stream on, sleep 300 ms for sensor adjusting...\n");
+			dev_dbg(sd->v4l2_dev->dev, "[ov5640-wr-reg]"
+					" <----------- set stream on, sleep 300 ms"
+					" for sensor adjusting...\n");
 			ov5640_write(client, 0x3008, 0x02);
 			ov5640_set_aec_agc(client, 1);
 			af_fw_status = ov5640_af_init(client);
 			if (af_fw_status != 0) {
-				dprintk(1, "ov5640_af_init error - (%d)\n",
+				dev_dbg(sd->v4l2_dev->dev, "ov5640_af_init error - (%d)\n",
 						af_fw_status);
 			}
 			msleep(300);
@@ -1670,7 +1677,8 @@
 	DBG_entering;
 
 	res_index = find_OV5640_res_index(fival->width, fival->height);
-	dprintk( 1, "find res index %d (%dx%d)\n",res_index,fival->width, fival->height);
+	dev_dbg(sd->v4l2_dev->dev, "find res index %d (%dx%d)\n",
+			res_index, fival->width, fival->height);
 
 	if (res_index >= N_RES)
 		return -EINVAL;
@@ -1693,7 +1701,8 @@
 	fival->type = V4L2_FRMIVAL_TYPE_DISCRETE;
 	fival->discrete.numerator = 1;
 	fival->discrete.denominator = ov5640_res[res_index].fps[index];
-	dprintk( 1, "find FPS index-%d (%d)\n",index,fival->discrete.denominator);
+	dev_dbg(sd->v4l2_dev->dev, "find FPS index-%d (%d)\n",
+			index, fival->discrete.denominator);
 
 	DBG_leaving;
 
@@ -1714,7 +1723,8 @@
 			if (target_fps == ov5640_res[ov5640_status.current_res_i].fps[fps_i]) {
 				/* found the target fps*/
 				u8 val;
-				dprintk( 1, "set sensor FPS to %d\n", target_fps);
+				dev_dbg(sd->v4l2_dev->dev,
+					"set sensor FPS to %d\n", target_fps);
 				ov5640_read(client, 0x3008, &val);
 				if (val == 0x02) ov5640_s_stream(sd, 0);
 
@@ -1727,12 +1737,16 @@
 			}
 		}
 		if (fps_i >= OV5640_N_FPS) {
-			dprintk( 1, "Warning!! target FPS %d/%d is not found in sensor supported table.\n",
-					param->parm.capture.timeperframe.denominator, param->parm.capture.timeperframe.numerator);
+			dev_dbg(sd->v4l2_dev->dev,
+				"Warning!! target FPS %d/%d is not found"
+				" in sensor supported table.\n",
+				param->parm.capture.timeperframe.denominator,
+				param->parm.capture.timeperframe.numerator);
 			return -EINVAL;
 		}
 	} else {
-		dprintk( 1, "Warning!! current_res (%d) is not used??\n",
+		dev_dbg(sd->v4l2_dev->dev,
+				"Warning!! current_res (%d) is not used??\n",
 				ov5640_status.current_res_i);
 	}
 
@@ -1770,8 +1784,6 @@
 {
 	struct i2c_client *client = v4l2_get_subdevdata(sd);
 
-	dprintk( 1, "[ov5640-wr-reg] <----------- ov5640_s_register 0x%04x (0x%02x)\n",
-			(unsigned int)(reg->reg & 0xffff),(unsigned int)(reg->val & 0xff));
 	ov5640_write(client, reg->reg & 0xffff, reg->val & 0xff);
 	return 0;
 }
-- Yong
Phone (+86) 21-61166334
Lab (+86) 21-61167881





-------------- next part --------------
A non-text attachment was scrubbed...
Name: linux-2.6.37-camera-debug-printk-ov5640.patch
Type: application/octet-stream
Size: 13122 bytes
Desc: linux-2.6.37-camera-debug-printk-ov5640.patch
URL: <http://lists.meego.com/pipermail/meego-kernel/attachments/20110621/310b093d/attachment-0001.obj>


More information about the MeeGo-kernel mailing list