Hi Umang, Kieram, On Fri, Mar 08, 2024 at 02:03:08PM +0530, Umang Jain wrote: > From: Kieran Bingham <kieran.bingham@xxxxxxxxxxxxxxxx> > > Call the V4L2 fwnode device parser to handle controls that are > standardised by the framework. > > Signed-off-by: Kieran Bingham <kieran.bingham@xxxxxxxxxxxxxxxx> > Signed-off-by: Umang Jain <umang.jain@xxxxxxxxxxxxxxxx> > --- > drivers/media/i2c/imx335.c | 13 ++++++++++++- > 1 file changed, 12 insertions(+), 1 deletion(-) > > diff --git a/drivers/media/i2c/imx335.c b/drivers/media/i2c/imx335.c > index 7162b0a3cef3..819ab3a6c5fc 100644 > --- a/drivers/media/i2c/imx335.c > +++ b/drivers/media/i2c/imx335.c > @@ -1225,10 +1225,12 @@ static int imx335_init_controls(struct imx335 *imx335) > { > struct v4l2_ctrl_handler *ctrl_hdlr = &imx335->ctrl_handler; > const struct imx335_mode *mode = imx335->cur_mode; > + struct v4l2_fwnode_device_properties props; > u32 lpfr; > int ret; > > - ret = v4l2_ctrl_handler_init(ctrl_hdlr, 7); > + /* v4l2_fwnode_device_properties can add two more controls */ > + ret = v4l2_ctrl_handler_init(ctrl_hdlr, 9); > if (ret) > return ret; > > @@ -1300,6 +1302,15 @@ static int imx335_init_controls(struct imx335 *imx335) > return ctrl_hdlr->error; > } > > + ret = v4l2_fwnode_device_parse(imx335->dev, &props); > + if (ret) > + return ret; > + > + ret = v4l2_ctrl_new_fwnode_properties(ctrl_hdlr, &imx335_ctrl_ops, > + &props); > + if (ret) > + return ret; > + > imx335->sd.ctrl_handler = ctrl_hdlr; > > return 0; Just a doubt on my side. We don't need an error path to free ctrl_hdlr? Or I'm missing something? Something similar: ret = v4l2_fwnode_device_parse(imx335->dev, &props); if (ret) goto free_ctrls; ret = v4l2_ctrl_new_fwnode_properties(ctrl_hdlr, &imx335_ctrl_ops, &props); if (ret) return ret; free_ctrls: v4l2_ctrl_handler_free(hdl); return ret; Thanks & Regards, Tommaso > -- > 2.43.0 > >