|
|
Log in / Subscribe / Register

Add Sony IMX471 camera sensor driver

From:  Kate Hsuan <hpa-AT-redhat.com>
To:  Mauro Carvalho Chehab <mchehab-AT-kernel.org>, Hans de Goede <johannes.goede-AT-oss.qualcomm.com>, Hans Verkuil <hverkuil+cisco-AT-kernel.org>, Sakari Ailus <sakari.ailus-AT-linux.intel.com>, Serin Yeh <serin.yeh-AT-intel.com>
Subject:  [PATCH v3 0/3] Add Sony IMX471 camera sensor driver
Date:  Fri, 22 May 2026 11:11:18 +0800
Message-ID:  <20260522031121.11968-1-hpa@redhat.com>
Cc:  linux-media-AT-vger.kernel.org, linux-kernel-AT-vger.kernel.org, Kate Hsuan <hpa-AT-redhat.com>
Archive-link:  Article

This patchset adds the Sony IMX471 camera sensor driver to the Linux
kernel and resolves the IPU7 camera can't work issueon Lenovo X9
laptops [1].

The patchset contains two patches:
1. Add DMI information of Lenovo X9 to the image upside-down list
2. Add Sony IMX471 image sensor driver

The IMX471 driver can be found in the Intel ipu6-drivers repository [2].
To comply with the sensor driver implementation, the clean-up work
includes:

1. Use CCI register helpers.

2. Enable and disable streams using enable_streams and disable_streams
   functions in struct v4l2_subdev_pad_ops. Invoke
   v4l2_subdev_s_stream_helper() to manage the streaming state.

3. Get rotation information from fwnode properties using
   v4l2_fwnode_device_parse().

4. Finalizes the initialization of the subdev, including allocation of
   the active state using v4l2_subdev_init_finalize().

5. Add the IMX471 driver to the Makefile and Kconfig file.

6. The mutex lock is managed by the V4l2 core.

7. Replace the supported link frequency with v4l2_link_freq_to_bitmap().

8. Drop unused codes.

[1] https://bugzilla.redhat.com/show_bug.cgi?id=2454119
[2] https://github.com/intel/ipu6-drivers/commits/master/driv...

Changes in v3:
1. Naming the register addresses and set up the value with the correct value length.
2. Implement the .get_selection().
3. Drop "identified" field from struct imx471.
4. Drop "streaming" field from struct imx471 and use the __v4l2_ctrl_grab() instead.
5. Moreover, The naming for the register can be found in a seperated patch. If we
   agree with the patch, I will squash it into one patch.

Changes in v2:
1. Change the Bayer format setting according to the vertical and horizontal flip settings.
2. Replace the self-owned mutex with the v4l2 subdev state.
3. Rework the flip control.
4. Manage the regulators using devm_regulator_bulk_get|disable|enbale API
5. Invoke devm_v4l2_sensor_clk_get to get clock-frequency


Kate Hsuan (3):
  media: ipu-bridge: Add DMI information of Lenovo X9 to the image
    upside-down list
  media: i2c: imx471: Add Sony IMX471 image sensor driver
  media: i2c: imx471: Naming the register

 MAINTAINERS                          |    6 +
 drivers/media/i2c/Kconfig            |   10 +
 drivers/media/i2c/Makefile           |    1 +
 drivers/media/i2c/imx471.c           | 1010 ++++++++++++++++++++++++++
 drivers/media/pci/intel/ipu-bridge.c |   14 +
 5 files changed, 1041 insertions(+)
 create mode 100644 drivers/media/i2c/imx471.c

-- 
2.54.0




Copyright © 2026, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds