media: i2c: imx214: Read orientation and rotation from system firmware
authorAndré Apitzsch <git@apitzsch.eu>
Wed, 6 Dec 2023 22:33:57 +0000 (23:33 +0100)
committerHans Verkuil <hverkuil-cisco@xs4all.nl>
Wed, 13 Dec 2023 12:21:21 +0000 (13:21 +0100)
Obtain rotation and orientation information from system firmware and
register the appropriate controls. While at it, update number of
pre-allocated control slots.

Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
Reviewed-by: Ricardo Ribalda <ribalda@chromium.org>
Signed-off-by: André Apitzsch <git@apitzsch.eu>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
drivers/media/i2c/imx214.c

index 7a1f78564a87e3f1bd3dabbf7848f8b5cfb38771..6f492728b0d5f146bf7314db09db0c3c61a5925e 100644 (file)
@@ -704,11 +704,16 @@ static int imx214_ctrls_init(struct imx214 *imx214)
                .width = 1120,
                .height = 1120,
        };
+       struct v4l2_fwnode_device_properties props;
        struct v4l2_ctrl_handler *ctrl_hdlr;
        int ret;
 
+       ret = v4l2_fwnode_device_parse(imx214->dev, &props);
+       if (ret < 0)
+               return ret;
+
        ctrl_hdlr = &imx214->ctrls;
-       ret = v4l2_ctrl_handler_init(&imx214->ctrls, 3);
+       ret = v4l2_ctrl_handler_init(&imx214->ctrls, 6);
        if (ret)
                return ret;
 
@@ -746,6 +751,8 @@ static int imx214_ctrls_init(struct imx214 *imx214)
                                V4L2_CID_UNIT_CELL_SIZE,
                                v4l2_ctrl_ptr_create((void *)&unit_size));
 
+       v4l2_ctrl_new_fwnode_properties(ctrl_hdlr, &imx214_ctrl_ops, &props);
+
        ret = ctrl_hdlr->error;
        if (ret) {
                v4l2_ctrl_handler_free(ctrl_hdlr);