Message ID | 20221202152727.1010207-5-dave.stevenson@raspberrypi.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Ensure sensor drivers set V4L2_CTRL_FLAG_MODIFY_LAYOUT for flips | expand |
Hi Dave, I love your patch! Yet something to improve: [auto build test ERROR on media-tree/master] [also build test ERROR on sailus-media-tree/streams linus/master v6.1-rc7 next-20221202] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Dave-Stevenson/Ensure-sensor-drivers-set-V4L2_CTRL_FLAG_MODIFY_LAYOUT-for-flips/20221202-233038 base: git://linuxtv.org/media_tree.git master patch link: https://lore.kernel.org/r/20221202152727.1010207-5-dave.stevenson%40raspberrypi.com patch subject: [PATCH 4/5] media: i2c: imx355: Set V4L2_CTRL_FLAG_MODIFY_LAYOUT on flips config: i386-randconfig-a001 compiler: gcc-11 (Debian 11.3.0-8) 11.3.0 reproduce (this is a W=1 build): # https://github.com/intel-lab-lkp/linux/commit/3d6eb61d35f205d799bbe3475b66f94262a4b52a git remote add linux-review https://github.com/intel-lab-lkp/linux git fetch --no-tags linux-review Dave-Stevenson/Ensure-sensor-drivers-set-V4L2_CTRL_FLAG_MODIFY_LAYOUT-for-flips/20221202-233038 git checkout 3d6eb61d35f205d799bbe3475b66f94262a4b52a # save the config file mkdir build_dir && cp config build_dir/.config make W=1 O=build_dir ARCH=i386 SHELL=/bin/bash If you fix the issue, kindly add following tag where applicable | Reported-by: kernel test robot <lkp@intel.com> All errors (new ones prefixed by >>): drivers/media/i2c/imx355.c: In function 'imx355_init_controls': >> drivers/media/i2c/imx355.c:1625:17: error: 'ctrls' undeclared (first use in this function) 1625 | ctrls->vflip->flags |= V4L2_CTRL_FLAG_MODIFY_LAYOUT; | ^~~~~ drivers/media/i2c/imx355.c:1625:17: note: each undeclared identifier is reported only once for each function it appears in vim +/ctrls +1625 drivers/media/i2c/imx355.c 1558 1559 /* Initialize control handlers */ 1560 static int imx355_init_controls(struct imx355 *imx355) 1561 { 1562 struct i2c_client *client = v4l2_get_subdevdata(&imx355->sd); 1563 struct v4l2_ctrl_handler *ctrl_hdlr; 1564 s64 exposure_max; 1565 s64 vblank_def; 1566 s64 vblank_min; 1567 s64 hblank; 1568 u64 pixel_rate; 1569 const struct imx355_mode *mode; 1570 u32 max; 1571 int ret; 1572 1573 ctrl_hdlr = &imx355->ctrl_handler; 1574 ret = v4l2_ctrl_handler_init(ctrl_hdlr, 10); 1575 if (ret) 1576 return ret; 1577 1578 ctrl_hdlr->lock = &imx355->mutex; 1579 max = ARRAY_SIZE(link_freq_menu_items) - 1; 1580 imx355->link_freq = v4l2_ctrl_new_int_menu(ctrl_hdlr, &imx355_ctrl_ops, 1581 V4L2_CID_LINK_FREQ, max, 0, 1582 link_freq_menu_items); 1583 if (imx355->link_freq) 1584 imx355->link_freq->flags |= V4L2_CTRL_FLAG_READ_ONLY; 1585 1586 /* pixel_rate = link_freq * 2 * nr_of_lanes / bits_per_sample */ 1587 pixel_rate = imx355->link_def_freq * 2 * 4; 1588 do_div(pixel_rate, 10); 1589 /* By default, PIXEL_RATE is read only */ 1590 imx355->pixel_rate = v4l2_ctrl_new_std(ctrl_hdlr, &imx355_ctrl_ops, 1591 V4L2_CID_PIXEL_RATE, pixel_rate, 1592 pixel_rate, 1, pixel_rate); 1593 1594 /* Initialize vblank/hblank/exposure parameters based on current mode */ 1595 mode = imx355->cur_mode; 1596 vblank_def = mode->fll_def - mode->height; 1597 vblank_min = mode->fll_min - mode->height; 1598 imx355->vblank = v4l2_ctrl_new_std(ctrl_hdlr, &imx355_ctrl_ops, 1599 V4L2_CID_VBLANK, vblank_min, 1600 IMX355_FLL_MAX - mode->height, 1601 1, vblank_def); 1602 1603 hblank = mode->llp - mode->width; 1604 imx355->hblank = v4l2_ctrl_new_std(ctrl_hdlr, &imx355_ctrl_ops, 1605 V4L2_CID_HBLANK, hblank, hblank, 1606 1, hblank); 1607 if (imx355->hblank) 1608 imx355->hblank->flags |= V4L2_CTRL_FLAG_READ_ONLY; 1609 1610 /* fll >= exposure time + adjust parameter (default value is 10) */ 1611 exposure_max = mode->fll_def - 10; 1612 imx355->exposure = v4l2_ctrl_new_std(ctrl_hdlr, &imx355_ctrl_ops, 1613 V4L2_CID_EXPOSURE, 1614 IMX355_EXPOSURE_MIN, exposure_max, 1615 IMX355_EXPOSURE_STEP, 1616 IMX355_EXPOSURE_DEFAULT); 1617 1618 imx355->hflip = v4l2_ctrl_new_std(ctrl_hdlr, &imx355_ctrl_ops, 1619 V4L2_CID_HFLIP, 0, 1, 1, 0); 1620 if (imx355->hflip) 1621 imx355->hflip->flags |= V4L2_CTRL_FLAG_MODIFY_LAYOUT; 1622 imx355->vflip = v4l2_ctrl_new_std(ctrl_hdlr, &imx355_ctrl_ops, 1623 V4L2_CID_VFLIP, 0, 1, 1, 0); 1624 if (imx355->vflip) > 1625 ctrls->vflip->flags |= V4L2_CTRL_FLAG_MODIFY_LAYOUT; 1626 1627 v4l2_ctrl_new_std(ctrl_hdlr, &imx355_ctrl_ops, V4L2_CID_ANALOGUE_GAIN, 1628 IMX355_ANA_GAIN_MIN, IMX355_ANA_GAIN_MAX, 1629 IMX355_ANA_GAIN_STEP, IMX355_ANA_GAIN_DEFAULT); 1630 1631 /* Digital gain */ 1632 v4l2_ctrl_new_std(ctrl_hdlr, &imx355_ctrl_ops, V4L2_CID_DIGITAL_GAIN, 1633 IMX355_DGTL_GAIN_MIN, IMX355_DGTL_GAIN_MAX, 1634 IMX355_DGTL_GAIN_STEP, IMX355_DGTL_GAIN_DEFAULT); 1635 1636 v4l2_ctrl_new_std_menu_items(ctrl_hdlr, &imx355_ctrl_ops, 1637 V4L2_CID_TEST_PATTERN, 1638 ARRAY_SIZE(imx355_test_pattern_menu) - 1, 1639 0, 0, imx355_test_pattern_menu); 1640 if (ctrl_hdlr->error) { 1641 ret = ctrl_hdlr->error; 1642 dev_err(&client->dev, "control init failed: %d", ret); 1643 goto error; 1644 } 1645 1646 imx355->sd.ctrl_handler = ctrl_hdlr; 1647 1648 return 0; 1649 1650 error: 1651 v4l2_ctrl_handler_free(ctrl_hdlr); 1652 1653 return ret; 1654 } 1655
diff --git a/drivers/media/i2c/imx355.c b/drivers/media/i2c/imx355.c index b46178681c05..f515cf1e52e7 100644 --- a/drivers/media/i2c/imx355.c +++ b/drivers/media/i2c/imx355.c @@ -1617,8 +1617,12 @@ static int imx355_init_controls(struct imx355 *imx355) imx355->hflip = v4l2_ctrl_new_std(ctrl_hdlr, &imx355_ctrl_ops, V4L2_CID_HFLIP, 0, 1, 1, 0); + if (imx355->hflip) + imx355->hflip->flags |= V4L2_CTRL_FLAG_MODIFY_LAYOUT; imx355->vflip = v4l2_ctrl_new_std(ctrl_hdlr, &imx355_ctrl_ops, V4L2_CID_VFLIP, 0, 1, 1, 0); + if (imx355->vflip) + ctrls->vflip->flags |= V4L2_CTRL_FLAG_MODIFY_LAYOUT; v4l2_ctrl_new_std(ctrl_hdlr, &imx355_ctrl_ops, V4L2_CID_ANALOGUE_GAIN, IMX355_ANA_GAIN_MIN, IMX355_ANA_GAIN_MAX,
The driver changes the Bayer order based on the flips, but does not define the control correctly with the V4L2_CTRL_FLAG_MODIFY_LAYOUT flag. Add the V4L2_CTRL_FLAG_MODIFY_LAYOUT flag. Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com> --- drivers/media/i2c/imx355.c | 4 ++++ 1 file changed, 4 insertions(+)