[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