Missing MIPI IPU6 camera driver for Intel Alder Lake laptops

From: Paul Menzel
Date: Thu Aug 11 2022 - 04:23:37 EST


[Cc: folks from IPU6 external driver, IPU3 maintainers, Dell, Lenovo, Chromium, Canonical/Ubuntu, Red Hat]

Dear Greg,


I am writing you, because I remember you – at least – were active several years ago in getting good upstream driver support into the Linux kernel.

It looks like the driver for the MIPI IPU6 camera of Intel Alder Lake based laptops, for example, Lenovo ThinkPad X1 Carbon and Dell XPS 13 9315/9320, is not in the upstream Linux kernel.

With Ubuntu’s OEM image pre-installed by Dell, and on Google Chromebooks the camera is supposedly working [1]. There is a GitHub project with a repository for the Linux kernel patches [2], but the patches – as expected, and known from other external drivers, and Android drivers – do not build against all Linux kernel versions [3]. A request to upstream the drivers was opened at the end of March [4], and got the reply below in July:

Intel is not ready yet to provide technical support to various Linux
distro and all OEM devices at this moment with Intel IPU6 github.

Intel is supporting Dell laptop and their MIPI camera functionality
on Ubuntu with release/integration support from Canonical. If you are
using Dell devices, please refer to the devices listed in this link.
(https://wiki.ubuntu.com/Dell) You can learn the latest updates from
the installation guide.
The patches were integrated into ChromiumOS’ Linux kernel tree – for specific version, like 5.15 [5], and the same for Ubuntu 22.04 with Linux 5.15 – only in June [6]. A lot of that (redundant) work seems to be done by the Intel developers involved also in the GitHub project.

In the last seven or so years Linux upstream driver support worked well for me – especially with Intel hardware –, so I wanted to make you (and others) aware of the situation, and hope, that you could do something about the situation. With the current situation I can only recommend to FLOSS users to *not* buy these devices.


Kind regards,

Paul


PS: The proprietary firmware is also not in the linux-firmware repository [7], and the user space packages [8] are also not packaged yet for some distributions like Debian.

PPS: VA-API support also does not work [9].

[1]: https://ubuntu.com/certified/202203-30070
[2]: https://github.com/intel/ipu6-drivers
[3]: https://github.com/intel/ipu6-drivers/issues/13
[4]: https://github.com/intel/ipu6-drivers/issues/22
[5]: https://chromium-review.googlesource.com/c/chromiumos/third_party/kernel/+/3034663
[6]: https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/jammy/log/drivers/media/pci/intel
[7]: https://bugs.launchpad.net/ubuntu/+source/linux-firmware/+bug/1955383
[8]: https://launchpad.net/~oem-solutions-group/+archive/ubuntu/intel-ipu6/+packages
[9]: https://github.com/intel/media-driver/issues/1371$ lspci -nn
00:00.0 Host bridge [0600]: Intel Corporation Device [8086:4602] (rev 06)
00:02.0 VGA compatible controller [0300]: Intel Corporation Alder Lake-UP4 GT2 [Iris Xe Graphics] [8086:46aa] (rev 0c)
00:04.0 Signal processing controller [1180]: Intel Corporation Alder Lake Innovation Platform Framework Processor Participant [8086:461d] (rev 06)
00:05.0 Multimedia controller [0480]: Intel Corporation Device [8086:465d] (rev 06)
00:06.0 PCI bridge [0604]: Intel Corporation 12th Gen Core Processor PCI Express x4 Controller #0 [8086:464d] (rev 06)
00:07.0 PCI bridge [0604]: Intel Corporation Alder Lake-P Thunderbolt 4 PCI Express Root Port #0 [8086:466e] (rev 06)
00:07.1 PCI bridge [0604]: Intel Corporation Alder Lake-P Thunderbolt 4 PCI Express Root Port #1 [8086:463f] (rev 06)
00:08.0 System peripheral [0880]: Intel Corporation 12th Gen Core Processor Gaussian & Neural Accelerator [8086:464f] (rev 06)
00:0d.0 USB controller [0c03]: Intel Corporation Alder Lake-P Thunderbolt 4 USB Controller [8086:461e] (rev 06)
00:0d.2 USB controller [0c03]: Intel Corporation Alder Lake-P Thunderbolt 4 NHI #0 [8086:463e] (rev 06)
00:12.0 Serial controller [0700]: Intel Corporation Device [8086:51fc] (rev 01)
00:14.0 USB controller [0c03]: Intel Corporation Alder Lake PCH USB 3.2 xHCI Host Controller [8086:51ed] (rev 01)
00:14.2 RAM memory [0500]: Intel Corporation Alder Lake PCH Shared SRAM [8086:51ef] (rev 01)
00:14.3 Network controller [0280]: Intel Corporation Alder Lake-P PCH CNVi WiFi [8086:51f0] (rev 01)
00:15.0 Serial bus controller [0c80]: Intel Corporation Alder Lake PCH Serial IO I2C Controller #0 [8086:51e8] (rev 01)
00:15.1 Serial bus controller [0c80]: Intel Corporation Alder Lake PCH Serial IO I2C Controller #1 [8086:51e9] (rev 01)
00:16.0 Communication controller [0780]: Intel Corporation Alder Lake PCH HECI Controller [8086:51e0] (rev 01)
00:1e.0 Communication controller [0780]: Intel Corporation Alder Lake PCH UART #0 [8086:51a8] (rev 01)
00:1e.2 Serial bus controller [0c80]: Intel Corporation Device [8086:51aa] (rev 01)
00:1e.3 Serial bus controller [0c80]: Intel Corporation Device [8086:51ab] (rev 01)
00:1f.0 ISA bridge [0601]: Intel Corporation Device [8086:5187] (rev 01)
00:1f.3 Multimedia audio controller [0401]: Intel Corporation Device [8086:51cc] (rev 01)
00:1f.4 SMBus [0c05]: Intel Corporation Alder Lake PCH-P SMBus Host Controller [8086:51a3] (rev 01)
00:1f.5 Serial bus controller [0c80]: Intel Corporation Alder Lake-P PCH SPI Controller [8086:51a4] (rev 01)
01:00.0 Non-Volatile memory controller [0108]: Phison Electronics Corporation Device [1987:5019] (rev 01)