mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Maurizio Casciano <mauriziocasciano7@gmail.com>
To: linux-media@vger.kernel.org
Cc: Mauro Carvalho Chehab <mchehab@kernel.org>,
	Sakari Ailus <sakari.ailus@linux.intel.com>,
	Bingbu Cao <bingbu.cao@amd.com>,
	Jacopo Mondi <jacopo.mondi@ideasonboard.com>,
	Nicholas Roth <nicholas@rothemail.net>,
	Andy Shevchenko <andy@kernel.org>,
	Andy Shevchenko <andriy.shevchenko@intel.com>,
	Hans de Goede <hansg@kernel.org>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Jose Maria Martin <jmmartinf@hotmail.com>,
	Uwe Kleine-Koenig <ukleinek@kernel.org>,
	linux-staging@lists.linux.dev, linux-kernel@vger.kernel.org,
	Maurizio Casciano <mauriziocasciano7@gmail.com>
Subject: [PATCH v4 00/15] media: Add Lenovo Yoga Book YB1-X91 camera support
Date: Fri, 28 Aug 2026 18:14:42 +0200	[thread overview]
Message-ID: <cover.1787933456.git.mauriziocasciano7@gmail.com> (raw)

The Lenovo Yoga Book YB1-X91L exposes an OV2740 front sensor and an
OV8858 rear sensor through the Cherry Trail AtomISP. Its firmware does
not provide enough information for the existing sensor and IPU bridge
drivers to construct the complete camera links.

Add the ACPI IDs and bridge data, describe both AtomISP camera links,
support the Yoga Book sensor clocks and modes, expose raw Bayer capture,
add per-channel white-balance controls, and add the WV517S rear-camera
lens actuator.

Raw capture is selected through the normal V4L2 raw pixel formats. There
is no module parameter or separate private ABI. Raw formats expose the
complete sensor transport frame required by the ISP2401 copy pipeline;
selecting a smaller crop remains a userspace decision.

Changes since v3:

- use ACPI_PTR() for the new OV8858 ACPI match table;
- split the Yoga Book OV2740 link support into sensor, IPU bridge,
  AtomISP timing and device-specific frequency patches;
- reuse the existing OV2740 1932x1092 mode register list and SGRBG10
  Bayer order for the 288 MHz link frequency;
- carry per-sensor link frequencies through the IPU bridge and use
  v4l2_get_link_freq() with s64 arithmetic for AtomISP D-PHY timing;
- remove the sensor-specific kernel padding override: raw capture exposes
  the full transport frame and userspace owns the centered crop;
- keep struct v4l2_area for the existing AtomISP padding interface without
  adding per-sensor padding state; and
- add review links to the commits that address the requested changes.

v3:
https://lore.kernel.org/linux-media/cover.1787872237.git.mauriziocasciano7@gmail.com/

The tablet DSDT contains the sensor objects requested during review:

    Device (CA11)
    {
        Name (_HID, "INT3477")
        Name (_CID, "OVTI8858")
        Name (_DDN, "OV8858")
    }

    Device (CA01)
    {
        Name (_HID, "OVTI2740")
        Name (_CID, "OVTI2740")
        Name (_DDN, "OV2740")
    }

Pahole reports struct ov2740_mode as 64 bytes, exactly one cacheline,
with no holes or padding. Struct ov8858 is 792 bytes, naturally aligned
to 8 bytes, with 4 bytes of tail padding. Struct ipu_sensor is 2096 bytes
in v4, reduced from 2104 bytes during review.

All fifteen patches pass strict checkpatch. The touched Media objects at
the exact v4 tip pass W=1 and sparse v0.6.5-rc1. A clean 20-job full
kernel package build containing the patch-equivalent v4 series completed
successfully.

Runtime testing used a Lenovo Yoga Book YB1-X91L booted with
7.2.0-yogabook-20260828-163827 from integration commit
907805589733fd2e9112118314ac811361afdcd2. Both sensors, AtomISP and
WV517S bound. The OV2740 exposed its full 1932x1092 SGRBG10 transport and
completed three consecutive direct raw captures at approximately 30 fps.
The camera userspace consumed that interface with a centered 1920x1080
crop, and the rear OV8858 preview consumed its SBGGR10 transport.

The 1280x720 YUYV rear endpoint completed a bounded 90-frame capture,
then switched automatically to a bounded 150-frame front capture. Both
physical camera images and front/rear switching were tested successfully
in Cheese. Speakers, microphone, Halo keyboard haptics and pen mode were
also retested on the same integrated kernel without regressions.

With Best Regards,
Maurizio Casciano

Maurizio Casciano (15):
  media: ov8858: Extract digital gain programming
  media: ov8858: support 19.2 MHz clock and CHT gain setup
  media: ov2740: Use C99 initializers for ACPI IDs
  media: ov2740: Add OVTI2740 ACPI ID
  media: ov8858: Add INT3477 ACPI ID
  media: intel: ipu-bridge: Add Yoga Book camera sensors
  media: atomisp: Add Yoga Book camera configuration
  media: ov2740: support 288 MHz link frequency
  media: intel: ipu-bridge: allow sensor-specific link frequencies
  media: atomisp: derive CSI-2 timing from sensor link frequency
  media: atomisp: provide Yoga Book OV2740 link frequency
  media: ov2740: add manual white balance controls
  media: atomisp: Use struct v4l2_area for padding
  media: atomisp: allow raw Bayer capture
  media: i2c: Add WV517S lens actuator driver

 MAINTAINERS                                   |   1 +
 drivers/media/i2c/Kconfig                     |  11 +
 drivers/media/i2c/Makefile                    |   1 +
 drivers/media/i2c/ov2740.c                    | 116 +++++++---
 drivers/media/i2c/ov8858.c                    | 167 ++++++++++++--
 drivers/media/i2c/wv517s.c                    | 206 ++++++++++++++++++
 drivers/media/pci/intel/ipu-bridge.c          |  19 +-
 .../staging/media/atomisp/pci/atomisp_cmd.c   |  64 ++++--
 .../staging/media/atomisp/pci/atomisp_cmd.h   |   6 +-
 .../staging/media/atomisp/pci/atomisp_csi2.c  |  20 +-
 .../media/atomisp/pci/atomisp_csi2_bridge.c   |  30 ++-
 .../staging/media/atomisp/pci/atomisp_ioctl.c |  33 ++-
 include/media/ipu-bridge.h                    |   2 +
 13 files changed, 578 insertions(+), 98 deletions(-)
 create mode 100644 drivers/media/i2c/wv517s.c

base-commit: 73e3f0710014fe6d4ed98cfc02292f6121db7558
-- 
2.53.0

             reply	other threads:[~2026-08-28 16:15 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-28 16:14 Maurizio Casciano [this message]
2026-08-28 16:14 ` [PATCH v4 01/15] media: ov8858: Extract digital gain programming Maurizio Casciano
2026-08-28 16:14 ` [PATCH v4 02/15] media: ov8858: support 19.2 MHz clock and CHT gain setup Maurizio Casciano
2026-08-28 16:14 ` [PATCH v4 03/15] media: ov2740: Use C99 initializers for ACPI IDs Maurizio Casciano
2026-08-28 16:14 ` [PATCH v4 04/15] media: ov2740: Add OVTI2740 ACPI ID Maurizio Casciano
2026-08-28 16:14 ` [PATCH v4 05/15] media: ov8858: Add INT3477 " Maurizio Casciano
2026-08-28 16:14 ` [PATCH v4 06/15] media: intel: ipu-bridge: Add Yoga Book camera sensors Maurizio Casciano
2026-08-28 16:14 ` [PATCH v4 07/15] media: atomisp: Add Yoga Book camera configuration Maurizio Casciano
2026-08-28 16:14 ` [PATCH v4 08/15] media: ov2740: support 288 MHz link frequency Maurizio Casciano
2026-08-28 16:14 ` [PATCH v4 09/15] media: intel: ipu-bridge: allow sensor-specific link frequencies Maurizio Casciano
2026-08-28 16:14 ` [PATCH v4 10/15] media: atomisp: derive CSI-2 timing from sensor link frequency Maurizio Casciano
2026-08-28 16:14 ` [PATCH v4 11/15] media: atomisp: provide Yoga Book OV2740 " Maurizio Casciano
2026-08-28 16:14 ` [PATCH v4 12/15] media: ov2740: add manual white balance controls Maurizio Casciano
2026-08-28 16:14 ` [PATCH v4 13/15] media: atomisp: Use struct v4l2_area for padding Maurizio Casciano
2026-08-28 16:14 ` [PATCH v4 14/15] media: atomisp: allow raw Bayer capture Maurizio Casciano
2026-08-28 16:14 ` [PATCH v4 15/15] media: i2c: Add WV517S lens actuator driver Maurizio Casciano

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=cover.1787933456.git.mauriziocasciano7@gmail.com \
    --to=mauriziocasciano7@gmail.com \
    --cc=andriy.shevchenko@intel.com \
    --cc=andy@kernel.org \
    --cc=bingbu.cao@amd.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=hansg@kernel.org \
    --cc=jacopo.mondi@ideasonboard.com \
    --cc=jmmartinf@hotmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=linux-staging@lists.linux.dev \
    --cc=mchehab@kernel.org \
    --cc=nicholas@rothemail.net \
    --cc=sakari.ailus@linux.intel.com \
    --cc=ukleinek@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®