Hi Sakari sorry, I missed this one! On Tue, Mar 28, 2023 at 05:52:48PM +0300, Sakari Ailus wrote: > Document how rotation and orientation should be taken into account in > writing camera sensor drivers. > > Signed-off-by: Sakari Ailus <sakari.ailus@xxxxxxxxxxxxxxx> > --- > since v1: > > Use speclial double quotes around functions to use non-proportional font for > them. > > Documentation/driver-api/media/camera-sensor.rst | 11 +++++++++++ > .../userspace-api/media/v4l/ext-ctrls-camera.rst | 1 + > 2 files changed, 12 insertions(+) > > diff --git a/Documentation/driver-api/media/camera-sensor.rst b/Documentation/driver-api/media/camera-sensor.rst > index c7d4891bd24e..2618a91b0d85 100644 > --- a/Documentation/driver-api/media/camera-sensor.rst > +++ b/Documentation/driver-api/media/camera-sensor.rst > @@ -151,3 +151,14 @@ used to obtain device's power state after the power state transition: > The function returns a non-zero value if it succeeded getting the power count or > runtime PM was disabled, in either of which cases the driver may proceed to > access the device. > + > +Rotation and orientation > +------------------------ > + > +Some systems have been implemented so that the camera sensor has been mounted > +upside down compared to its natural mounting rotation. In such a case, the > +:ref:`V4L2_CID_CAMERA_SENSOR_ROTATION <v4l2-camera-sensor-rotation>` control > +shall indicate the mounting rotation. I would put it in imperative form for driver developers "Some systems have been implemented so that the camera sensor has been mounted upside down compared to its natural mounting rotation. In such a case, drivers should register the :ref:`V4L2_CID_CAMERA_SENSOR_ROTATION <v4l2-camera-sensor-rotation>` control to report the information to userspace." I would also specify how drivers should initialize their flip controls "Mode-based sensor driver implementations that have any vertical or horizontal flips embedded in the register programming sequences should initialize the V4L2_CID_HFLIP and V4L2_CID_VFLIP controls with the values programmed by the register sequences. Drivers which implement writable flip controls could automatically compensate for the sensor's mounting rotation and shall reflect that in the V4L2_CID_HFLIP and V4L2_CID_VFLIP controls initial and default values." > + > +Use ``v4l2_fwnode_device_parse()`` to obtain this information and > +``v4l2_ctrl_new_fwnode_properties()`` to generate the appropriate controls. I would also mention the orientation control before introducing v4l2_fwnode_device_parse. "Sensor drivers should also report their mounting orientation with the :ref:`V4L2_CID_CAMERA_SENSOR_ORIENTATION <v4l2-camera-sensor-orientation>`. Both controls can be registered by using the ``v4l2_fwnode_device_parse()`` function to obtain this information from the firmware interface and ``v4l2_ctrl_new_fwnode_properties()`` to generate the appropriate controls." How does this work for you ? > diff --git a/Documentation/userspace-api/media/v4l/ext-ctrls-camera.rst b/Documentation/userspace-api/media/v4l/ext-ctrls-camera.rst > index daa4f40869f8..29fe22da52a2 100644 > --- a/Documentation/userspace-api/media/v4l/ext-ctrls-camera.rst > +++ b/Documentation/userspace-api/media/v4l/ext-ctrls-camera.rst > @@ -536,6 +536,7 @@ enum v4l2_scene_mode - > - The camera is not directly attached to the device and is freely movable. > > > +.. _v4l2-camera-sensor-rotation: > > ``V4L2_CID_CAMERA_SENSOR_ROTATION (integer)`` > This read-only control describes the rotation correction in degrees in the > -- > 2.30.2 >