Source: linux
Version: 7.1.12-1
Severity: wishlist
X-Debbugs-Cc: [email protected]
User: [email protected]
Usertags: amd64

Dear Maintainer,

The built-in camera of the MSI Prestige 13 AI+ Evo A2VMG (Lunar Lake; Intel
IPU7 + OmniVision OV5675 sensor behind a TI TPS68470 PMIC) does not work with
the Debian amd64 kernel, because four Kconfig symbols the platform needs are
not enabled on amd64:

  # CONFIG_VIDEO_OV5675 is not set
  # CONFIG_GPIO_TPS68470 is not set
  # CONFIG_REGULATOR_TPS68470 is not set
  # CONFIG_COMMON_CLK_TPS68470 is not set

CONFIG_VIDEO_OV5675 is already enabled on arm64
(debian/config/arm64/config:1146: CONFIG_VIDEO_OV5675=m), so for that symbol
this is only an amd64 gap - and amd64 is where the sensor is actually used, by
Intel IPU6/IPU7 laptops.

All four are tristate and their dependencies are already met by the existing
amd64 config (CONFIG_INTEL_SKL_INT3472=m, CONFIG_I2C=y), so they can be
enabled as modules with no further changes:

  drivers/gpio/Kconfig       config GPIO_TPS68470        depends on 
INTEL_SKL_INT3472
  drivers/regulator/Kconfig  config REGULATOR_TPS68470   depends on 
INTEL_SKL_INT3472 || COMPILE_TEST
  drivers/clk/Kconfig        config COMMON_CLK_TPS68470  depends on I2C
                                                         depends on 
INTEL_SKL_INT3472 || COMPILE_TEST

This is the same class of request as #1109814 (CONFIG_VIDEO_OV02C10) and
#1087004 (CONFIG_VIDEO_OV01A10), both of which were accepted.

Symptoms with the stock 7.1.8-2 amd64 kernel
--------------------------------------------

  intel-ipu7 0000:00:05.0: Found supported sensor OVTI5675:00
  intel-ipu7 0000:00:05.0: Connected 1 cameras
  int3472-tps68470 i2c-INT3472:06: TPS68470 REVID: 0x21
  int3472-tps68470 i2c-INT3472:06: error -ENODEV: No board-data found for this 
model

The PMIC is found but cannot be set up, its MFD cells (tps68470-clk,
tps68470-regulator, tps68470-gpio) have no drivers to bind to, so
acpi_gpiochip_add() never runs and never clears the _DEP that OVTI5675:00 has
on INT3472:06. As a result no i2c client is created for the sensor and no
/dev/v4l-subdev* appears; userspace sees only the bare IPU7 ISYS capture nodes
and no camera.

Verification
------------

I rebuilt the following out of tree against linux-headers-7.1.8+deb14.1-amd64,
from unmodified v7.1.8 sources (no patch in debian/patches/ touches these
files):

  drivers/media/i2c/ov5675.c             -> ov5675.ko
  drivers/gpio/gpio-tps68470.c           -> gpio-tps68470.ko
  drivers/regulator/tps68470-regulator.c -> tps68470-regulator.ko
  drivers/clk/clk-tps68470.c             -> clk-tps68470.ko

plus a backport of the upstream DMI entry for this machine (see below). With
those five modules in /lib/modules/$(uname -r)/updates/, the camera works
after a normal boot:

  intel-ipu7 0000:00:05.0: CSE authenticate_run done
  int3472-tps68470 i2c-INT3472:06: TPS68470 REVID: 0x21
  intel_ipu7_isys.isys intel_ipu7.isys.40: bind ov5675 1-0036 nlanes is 2 port 
is 0
  intel_ipu7_isys.isys intel_ipu7.isys.40: All sensor registration completed.

  $ cam -l
  Available cameras:
  1: Internal front camera (\_SB_.LNK0)

  $ cam -c1 --capture=300 --file=/tmp/cap#.bin
  ... 2584x1944 at 29.95 fps, 300 frames, real images

PipeWire exposes it as node "libcamera_input.__SB_.LNK0" / "Built-in Front
Camera". libcamera 0.7 supports IPU7 through the Simple pipeline handler with
the (GPU-accelerated) SoftISP, so no out-of-tree userspace such as the Intel
camera HAL is needed - the kernel config is the only thing missing.

Secondary note: INT3472 board data for this model
-------------------------------------------------

Independently of the config question, 7.1 only carries the DMI entry for the
"Prestige 14 AI+ Evo C2VMG". The entries for the other two models were added
upstream after 7.1 was cut:

  ae04f36  platform/x86: int3472: Match MSI laptop board name
  621e4f7  platform/x86: int3472: Add more MSI AI evo laptops

They add "Prestige 13 AI+ Evo A2VMG" (MS-13Q3) and "Prestige 16 AI+ Evo
B2VMG" (MS-15A3), both reusing the existing msi_prestige_ai_evo_* data, and
they are in 7.2. This resolves itself once forky moves to 7.2. I mention it
only because enabling the four config symbols alone is not sufficient while
the archive is on 7.1; a cherry-pick of those two commits would make the
camera work on 7.1 as well, if the team considers that worthwhile.

System information
------------------

  Vendor:  Micro-Star International Co., Ltd.
  Product: Prestige 13 AI+ Evo A2VMG
  Board:   MS-13Q3
  BIOS:    E13Q3IMS.112, 12/22/2025
  Kernel:  7.1.8+deb14.1-amd64 (linux-image-amd64 7.1.8-2)
  Camera:  OVTI5675:00 (OV5675) on Intel IPU7, PMIC INT3472:06 (TPS68470)

-- 
This investigation was carried out with the assistance of Claude Code. Every
statement above was verified on the machine in question.


-- System Information:
Debian Release: forky/sid
  APT prefers stable-updates
  APT policy: (500, 'stable-updates'), (500, 'stable-security'), (500, 
'testing'), (500, 'stable')
Architecture: amd64 (x86_64)

Kernel: Linux 7.1.8+deb14.1-amd64 (SMP w/8 CPU threads; PREEMPT)
Kernel taint flags: TAINT_CRAP, TAINT_OOT_MODULE, TAINT_UNSIGNED_MODULE
Locale: LANG=C.UTF-8, LC_CTYPE=ja_JP.utf8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

Reply via email to