[v2,09/13] media: imx274: get rid of mode_index

Message ID 1524558258-530-10-git-send-email-luca@lucaceresoli.net (mailing list archive)
State Superseded, archived
Delegated to: Sakari Ailus
Headers

Commit Message

Luca Ceresoli April 24, 2018, 8:24 a.m. UTC
  After restructuring struct imx274_frmfmt, the mode_index field is
still in use only for two dev_dbg() calls in imx274_s_stream(). Let's
remove it and avoid duplicated information.

Replacing the first usage requires a some rather annoying but trivial
pointer math. The other one can be removed entirely since it would
print the same value anyway.

Signed-off-by: Luca Ceresoli <luca@lucaceresoli.net>

---
Changed v1 -> v2:
 - add "media: " prefix to commit message
 - fix dev_dbg() format mismatch warning
   ("warning: format ‘%ld’ expects argument of type ‘long int’, but argument 6 has type ‘int’")
 - slightly improve commit message
---
 drivers/media/i2c/imx274.c | 13 ++++---------
 1 file changed, 4 insertions(+), 9 deletions(-)
  

Comments

kernel test robot April 24, 2018, 5:27 p.m. UTC | #1
Hi Luca,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on linuxtv-media/master]
[also build test WARNING on v4.17-rc2 next-20180424]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/Luca-Ceresoli/media-imx274-cleanups-improvements-and-SELECTION-API-support/20180424-220137
base:   git://linuxtv.org/media_tree.git master
config: sparc64-allmodconfig (attached as .config)
compiler: sparc64-linux-gnu-gcc (Debian 7.2.0-11) 7.2.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        make.cross ARCH=sparc64 

All warnings (new ones prefixed by >>):

   In file included from include/linux/printk.h:332:0,
                    from include/linux/kernel.h:14,
                    from include/linux/clk.h:16,
                    from drivers/media//i2c/imx274.c:22:
   drivers/media//i2c/imx274.c: In function 'imx274_s_stream':
>> drivers/media//i2c/imx274.c:1027:32: warning: format '%d' expects argument of type 'int', but argument 6 has type 'long int' [-Wformat=]
     dev_dbg(&imx274->client->dev, "%s : %s, mode index = %d\n", __func__,
                                   ^
   drivers/media//i2c/imx274.c:1029:3:
      imx274->mode - &imx274_formats[0]);
      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/dynamic_debug.h:135:39: note: in definition of macro 'dynamic_dev_dbg'
      __dynamic_dev_dbg(&descriptor, dev, fmt, \
                                          ^~~
   drivers/media//i2c/imx274.c:1027:2: note: in expansion of macro 'dev_dbg'
     dev_dbg(&imx274->client->dev, "%s : %s, mode index = %d\n", __func__,
     ^~~~~~~

vim +1027 drivers/media//i2c/imx274.c

0985dd30 Leon Luo      2017-10-05  1011  
0985dd30 Leon Luo      2017-10-05  1012  /**
0985dd30 Leon Luo      2017-10-05  1013   * imx274_s_stream - It is used to start/stop the streaming.
0985dd30 Leon Luo      2017-10-05  1014   * @sd: V4L2 Sub device
0985dd30 Leon Luo      2017-10-05  1015   * @on: Flag (True / False)
0985dd30 Leon Luo      2017-10-05  1016   *
0985dd30 Leon Luo      2017-10-05  1017   * This function controls the start or stop of streaming for the
0985dd30 Leon Luo      2017-10-05  1018   * imx274 sensor.
0985dd30 Leon Luo      2017-10-05  1019   *
0985dd30 Leon Luo      2017-10-05  1020   * Return: 0 on success, errors otherwise
0985dd30 Leon Luo      2017-10-05  1021   */
0985dd30 Leon Luo      2017-10-05  1022  static int imx274_s_stream(struct v4l2_subdev *sd, int on)
0985dd30 Leon Luo      2017-10-05  1023  {
0985dd30 Leon Luo      2017-10-05  1024  	struct stimx274 *imx274 = to_imx274(sd);
0985dd30 Leon Luo      2017-10-05  1025  	int ret = 0;
0985dd30 Leon Luo      2017-10-05  1026  
0985dd30 Leon Luo      2017-10-05 @1027  	dev_dbg(&imx274->client->dev, "%s : %s, mode index = %d\n", __func__,
f5180bf1 Luca Ceresoli 2018-04-24  1028  		on ? "Stream Start" : "Stream Stop",
f5180bf1 Luca Ceresoli 2018-04-24  1029  		imx274->mode - &imx274_formats[0]);
0985dd30 Leon Luo      2017-10-05  1030  
0985dd30 Leon Luo      2017-10-05  1031  	mutex_lock(&imx274->lock);
0985dd30 Leon Luo      2017-10-05  1032  
0985dd30 Leon Luo      2017-10-05  1033  	if (on) {
0985dd30 Leon Luo      2017-10-05  1034  		/* load mode registers */
da5bbae7 Luca Ceresoli 2018-04-24  1035  		ret = imx274_mode_regs(imx274);
0985dd30 Leon Luo      2017-10-05  1036  		if (ret)
0985dd30 Leon Luo      2017-10-05  1037  			goto fail;
0985dd30 Leon Luo      2017-10-05  1038  
0985dd30 Leon Luo      2017-10-05  1039  		/*
0985dd30 Leon Luo      2017-10-05  1040  		 * update frame rate & expsoure. if the last mode is different,
0985dd30 Leon Luo      2017-10-05  1041  		 * HMAX could be changed. As the result, frame rate & exposure
0985dd30 Leon Luo      2017-10-05  1042  		 * are changed.
0985dd30 Leon Luo      2017-10-05  1043  		 * gain is not affected.
0985dd30 Leon Luo      2017-10-05  1044  		 */
0985dd30 Leon Luo      2017-10-05  1045  		ret = imx274_set_frame_interval(imx274,
0985dd30 Leon Luo      2017-10-05  1046  						imx274->frame_interval);
0985dd30 Leon Luo      2017-10-05  1047  		if (ret)
0985dd30 Leon Luo      2017-10-05  1048  			goto fail;
0985dd30 Leon Luo      2017-10-05  1049  
0985dd30 Leon Luo      2017-10-05  1050  		/* update exposure time */
0985dd30 Leon Luo      2017-10-05  1051  		ret = __v4l2_ctrl_s_ctrl(imx274->ctrls.exposure,
0985dd30 Leon Luo      2017-10-05  1052  					 imx274->ctrls.exposure->val);
0985dd30 Leon Luo      2017-10-05  1053  		if (ret)
0985dd30 Leon Luo      2017-10-05  1054  			goto fail;
0985dd30 Leon Luo      2017-10-05  1055  
0985dd30 Leon Luo      2017-10-05  1056  		/* start stream */
0985dd30 Leon Luo      2017-10-05  1057  		ret = imx274_start_stream(imx274);
0985dd30 Leon Luo      2017-10-05  1058  		if (ret)
0985dd30 Leon Luo      2017-10-05  1059  			goto fail;
0985dd30 Leon Luo      2017-10-05  1060  	} else {
0985dd30 Leon Luo      2017-10-05  1061  		/* stop stream */
cf2a54e2 Luca Ceresoli 2018-04-24  1062  		ret = imx274_write_table(imx274, imx274_stop);
0985dd30 Leon Luo      2017-10-05  1063  		if (ret)
0985dd30 Leon Luo      2017-10-05  1064  			goto fail;
0985dd30 Leon Luo      2017-10-05  1065  	}
0985dd30 Leon Luo      2017-10-05  1066  
0985dd30 Leon Luo      2017-10-05  1067  	mutex_unlock(&imx274->lock);
f5180bf1 Luca Ceresoli 2018-04-24  1068  	dev_dbg(&imx274->client->dev, "%s : Done\n", __func__);
0985dd30 Leon Luo      2017-10-05  1069  	return 0;
0985dd30 Leon Luo      2017-10-05  1070  
0985dd30 Leon Luo      2017-10-05  1071  fail:
0985dd30 Leon Luo      2017-10-05  1072  	mutex_unlock(&imx274->lock);
0985dd30 Leon Luo      2017-10-05  1073  	dev_err(&imx274->client->dev, "s_stream failed\n");
0985dd30 Leon Luo      2017-10-05  1074  	return ret;
0985dd30 Leon Luo      2017-10-05  1075  }
0985dd30 Leon Luo      2017-10-05  1076  

:::::: The code at line 1027 was first introduced by commit
:::::: 0985dd306f727df6c0e71cd8a8eda93e8fa5206e media: imx274: V4l2 driver for Sony imx274 CMOS sensor

:::::: TO: Leon Luo <leonl@leopardimaging.com>
:::::: CC: Mauro Carvalho Chehab <mchehab@osg.samsung.com>

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation
  

Patch

diff --git a/drivers/media/i2c/imx274.c b/drivers/media/i2c/imx274.c
index 2ec31ae4e60d..69fdc82d4214 100644
--- a/drivers/media/i2c/imx274.c
+++ b/drivers/media/i2c/imx274.c
@@ -553,8 +553,6 @@  struct imx274_ctrls {
  * @reset_gpio: Pointer to reset gpio
  * @lock: Mutex structure
  * @mode: Parameters for the selected readout mode
- *        (points to imx274_formats[mode_index])
- * @mode_index: Resolution mode index
  */
 struct stimx274 {
 	struct v4l2_subdev sd;
@@ -567,7 +565,6 @@  struct stimx274 {
 	struct gpio_desc *reset_gpio;
 	struct mutex lock; /* mutex lock for operations */
 	const struct imx274_frmfmt *mode;
-	u32 mode_index;
 };
 
 /*
@@ -880,7 +877,6 @@  static int imx274_set_fmt(struct v4l2_subdev *sd,
 		index = 0;
 	}
 
-	imx274->mode_index = index;
 	imx274->mode = &imx274_formats[index];
 
 	if (fmt->width > IMX274_MAX_WIDTH)
@@ -1029,7 +1025,8 @@  static int imx274_s_stream(struct v4l2_subdev *sd, int on)
 	int ret = 0;
 
 	dev_dbg(&imx274->client->dev, "%s : %s, mode index = %d\n", __func__,
-		on ? "Stream Start" : "Stream Stop", imx274->mode_index);
+		on ? "Stream Start" : "Stream Stop",
+		imx274->mode - &imx274_formats[0]);
 
 	mutex_lock(&imx274->lock);
 
@@ -1068,8 +1065,7 @@  static int imx274_s_stream(struct v4l2_subdev *sd, int on)
 	}
 
 	mutex_unlock(&imx274->lock);
-	dev_dbg(&imx274->client->dev,
-		"%s : Done: mode = %d\n", __func__, imx274->mode_index);
+	dev_dbg(&imx274->client->dev, "%s : Done\n", __func__);
 	return 0;
 
 fail:
@@ -1625,8 +1621,7 @@  static int imx274_probe(struct i2c_client *client,
 	mutex_init(&imx274->lock);
 
 	/* initialize format */
-	imx274->mode_index = IMX274_MODE_3840X2160;
-	imx274->mode = &imx274_formats[imx274->mode_index];
+	imx274->mode = &imx274_formats[IMX274_MODE_3840X2160];
 	imx274->format.width = imx274->mode->size.width;
 	imx274->format.height = imx274->mode->size.height;
 	imx274->format.field = V4L2_FIELD_NONE;