[PATCH 00/30][SRU][Jammy] Support Intel IPU6 MIPI camera on Alder Lake platforms
You-Sheng Yang
vicamo.yang at canonical.com
Mon Jan 17 15:18:58 UTC 2022
BugLink: https://bugs.launchpad.net/bugs/1955383
[Impact]
To support Intel IPU6 MIPI camera on Alder Lake platforms.
[Fix]
Initial support for Intel IPU6 MIPI camera on Tiger Lake platforms has
been addressed by bug 1921345 and 1939539. They are backported from
https://github.com/intel/ipu6-drivers.
Further works to enable IPU6 camera on Alder Lake platforms depend on a
few more fixes from same ipu6-drivers repository, as well as an extra
https://github.com/intel/ivsc-driver for Intel Vision Sensing
Controller(IVSC).
[Test Case]
This depends on an integral of enablement components inclusive of the
kernel drivers that are being proposed, firmware, updates for the
userspace camera hardware abstration layer library and a gstreamer
element as what we have for Tiger Lake platforms.
[Where problems could occur]
It's confirmed Intel IPU6 MIPI camera doesn't support suspend at
streaming.
On Jammy, while intel_iommu is turned on in bug 1951440, it breaks
current IPU6 driver implementation and can be worked-around with
intel_iommu=off temporarily. A follow-up bug 1958004 has been filed.
Besides, since UBSAN is also on since Ubuntu 5.15 kernels, multiple
warnings have been detected and filed as bug 1958006. No function
impact observed so far.
[Other Info]
Before this, we did not submit IPU6 driver for generic kernel due to
the lack of a solid commitment from the vendor to upstream this
before kernel camera API is out. There is still no such commitment,
but during the process we've been able to address version migration
issues and we would continue to do so. We're getting to have the
confidence that it's possible to maintain and share the support for
generic Ubuntu users.
Fixes for oem-5.14 have been merged, so here we nominate for Jammy
only. This patchset is almost identical to that for oem-5.14 except
one additioanl fix for 5.15 kernel API change in "UBUNTU: SAUCE: Fix
build error for kernel 5.15".
Hao Yao (1):
UBUNTU: SAUCE: IPU6 driver release for kernel 5.14 on 2021-11-01
Ignacio Hernandez (1):
UBUNTU: SAUCE: Fix build error for kernel 5.15
Wang Yating (14):
UBUNTU: SAUCE: intel ipu drivers first release
UBUNTU: SAUCE: IPU driver release WW48
UBUNTU: SAUCE: IPU driver release WW48 with MCU
UBUNTU: SAUCE: IPU driver release WW52
UBUNTU: SAUCE: IPU driver release WW04
UBUNTU: SAUCE: IPU driver release WW14
UBUNTU: SAUCE: Fix ov01a1s output mirror issue
UBUNTU: SAUCE: integrate IPU6 builds
UBUNTU: SAUCE: Fix ov01a1s IQ issues
UBUNTU: SAUCE: intel/ipu6: Remove unnecessary video devices
UBUNTU: SAUCE: change power control driver to acpi driver
UBUNTU: SAUCE: IPU6 driver release for kernel 5.13
UBUNTU: SAUCE: sensor HM11b1 brightness bugfix
UBUNTU: SAUCE: Fix build error on Kernel 5.13
Wentong Wu (4):
UBUNTU: SAUCE: intel visual sensing controller(VSC) driver first
release
UBUNTU: SAUCE: ivsc: return error when device not ready
UBUNTU: SAUCE: ivsc: add soft dependencies for intel_vsc module
UBUNTU: SAUCE: ivsc: add delay for acquire camera to wait firmware
ready
Ye Xiang (7):
UBUNTU: SAUCE: ljca: switch wait event to uninterruptible
UBUNTU: SAUCE: mei-vsc: switch wait event to uninterruptible
UBUNTU: SAUCE: mei_vsc: add ACPI HID for ADL
UBUNTU: SAUCE: ljca: add multi ACPI HID support
UBUNTU: SAUCE: mei_vsc: distinguish platform with different camera
sensor
UBUNTU: SAUCE: i2c-ljca: fix a potential issue
UBUNTU: SAUCE: ljca: disable autosuspend by default
You-Sheng Yang (3):
UBUNTU: [Config] updateconfigs for IPU6 driver
UBUNTU: [Config] IPU6: enable OV01A10 sensor
UBUNTU: [Config] ivsc: enable Intel VSC drivers
.../config/amd64/config.common.amd64 | 6 +
.../config/arm64/config.common.arm64 | 6 +
.../config/armhf/config.common.armhf | 5 +
debian.master/config/config.common.ubuntu | 10 +
.../config/ppc64el/config.common.ppc64el | 5 +
.../config/s390x/config.common.s390x | 3 +
drivers/gpio/Kconfig | 11 +
drivers/gpio/Makefile | 1 +
drivers/gpio/gpio-ljca.c | 468 +++++
drivers/i2c/busses/Kconfig | 10 +
drivers/i2c/busses/Makefile | 1 +
drivers/i2c/busses/i2c-ljca.c | 422 ++++
drivers/media/i2c/Kconfig | 55 +
drivers/media/i2c/Makefile | 5 +
drivers/media/i2c/hm11b1.c | 1102 +++++++++++
drivers/media/i2c/ov01a10.c | 934 +++++++++
drivers/media/i2c/ov01a1s.c | 949 +++++++++
drivers/media/i2c/power_ctrl_logic.c | 147 ++
drivers/media/i2c/power_ctrl_logic.h | 9 +
drivers/media/pci/Kconfig | 2 +-
drivers/media/pci/intel/Kconfig | 20 +
drivers/media/pci/intel/Makefile | 11 +-
drivers/media/pci/intel/ipu-bus.c | 254 +++
drivers/media/pci/intel/ipu-bus.h | 67 +
drivers/media/pci/intel/ipu-buttress.c | 1372 +++++++++++++
drivers/media/pci/intel/ipu-buttress.h | 128 ++
drivers/media/pci/intel/ipu-cpd.c | 465 +++++
drivers/media/pci/intel/ipu-cpd.h | 110 ++
drivers/media/pci/intel/ipu-dma.c | 406 ++++
drivers/media/pci/intel/ipu-dma.h | 19 +
drivers/media/pci/intel/ipu-fw-com.c | 496 +++++
drivers/media/pci/intel/ipu-fw-com.h | 48 +
drivers/media/pci/intel/ipu-fw-isys.c | 600 ++++++
drivers/media/pci/intel/ipu-fw-isys.h | 816 ++++++++
drivers/media/pci/intel/ipu-fw-psys.c | 430 ++++
drivers/media/pci/intel/ipu-fw-psys.h | 382 ++++
.../media/pci/intel/ipu-isys-csi2-be-soc.c | 341 ++++
drivers/media/pci/intel/ipu-isys-csi2-be.c | 325 +++
drivers/media/pci/intel/ipu-isys-csi2-be.h | 63 +
drivers/media/pci/intel/ipu-isys-csi2.c | 655 ++++++
drivers/media/pci/intel/ipu-isys-csi2.h | 164 ++
drivers/media/pci/intel/ipu-isys-media.h | 77 +
drivers/media/pci/intel/ipu-isys-queue.c | 1063 ++++++++++
drivers/media/pci/intel/ipu-isys-queue.h | 142 ++
drivers/media/pci/intel/ipu-isys-subdev.c | 650 ++++++
drivers/media/pci/intel/ipu-isys-subdev.h | 152 ++
drivers/media/pci/intel/ipu-isys-tpg.c | 311 +++
drivers/media/pci/intel/ipu-isys-tpg.h | 99 +
drivers/media/pci/intel/ipu-isys-video.c | 1748 +++++++++++++++++
drivers/media/pci/intel/ipu-isys-video.h | 178 ++
drivers/media/pci/intel/ipu-isys.c | 1355 +++++++++++++
drivers/media/pci/intel/ipu-isys.h | 227 +++
drivers/media/pci/intel/ipu-mmu.c | 858 ++++++++
drivers/media/pci/intel/ipu-mmu.h | 76 +
drivers/media/pci/intel/ipu-pdata.h | 242 +++
drivers/media/pci/intel/ipu-psys-compat32.c | 225 +++
drivers/media/pci/intel/ipu-psys.c | 1618 +++++++++++++++
drivers/media/pci/intel/ipu-psys.h | 217 ++
drivers/media/pci/intel/ipu-trace.c | 869 ++++++++
drivers/media/pci/intel/ipu-trace.h | 146 ++
drivers/media/pci/intel/ipu.c | 823 ++++++++
drivers/media/pci/intel/ipu.h | 109 +
drivers/media/pci/intel/ipu6/Makefile | 58 +
.../media/pci/intel/ipu6/ipu-fw-resources.c | 103 +
.../intel/ipu6/ipu-platform-buttress-regs.h | 317 +++
.../intel/ipu6/ipu-platform-isys-csi2-reg.h | 277 +++
.../media/pci/intel/ipu6/ipu-platform-isys.h | 26 +
.../media/pci/intel/ipu6/ipu-platform-psys.h | 78 +
.../media/pci/intel/ipu6/ipu-platform-regs.h | 333 ++++
.../pci/intel/ipu6/ipu-platform-resources.h | 103 +
drivers/media/pci/intel/ipu6/ipu-platform.h | 34 +
drivers/media/pci/intel/ipu6/ipu-resources.c | 851 ++++++++
.../media/pci/intel/ipu6/ipu6-fw-resources.c | 608 ++++++
drivers/media/pci/intel/ipu6/ipu6-isys-csi2.c | 513 +++++
drivers/media/pci/intel/ipu6/ipu6-isys-csi2.h | 14 +
drivers/media/pci/intel/ipu6/ipu6-isys-gpc.c | 203 ++
drivers/media/pci/intel/ipu6/ipu6-isys-phy.c | 595 ++++++
drivers/media/pci/intel/ipu6/ipu6-isys-phy.h | 159 ++
drivers/media/pci/intel/ipu6/ipu6-isys.c | 174 ++
.../media/pci/intel/ipu6/ipu6-l-scheduler.c | 615 ++++++
.../pci/intel/ipu6/ipu6-platform-resources.h | 196 ++
drivers/media/pci/intel/ipu6/ipu6-ppg.c | 560 ++++++
drivers/media/pci/intel/ipu6/ipu6-ppg.h | 38 +
drivers/media/pci/intel/ipu6/ipu6-psys-gpc.c | 210 ++
drivers/media/pci/intel/ipu6/ipu6-psys.c | 1032 ++++++++++
drivers/media/pci/intel/ipu6/ipu6.c | 333 ++++
.../pci/intel/ipu6/ipu6ep-fw-resources.c | 393 ++++
.../intel/ipu6/ipu6ep-platform-resources.h | 42 +
.../pci/intel/ipu6/ipu6se-fw-resources.c | 194 ++
.../intel/ipu6/ipu6se-platform-resources.h | 103 +
drivers/mfd/Kconfig | 10 +
drivers/mfd/Makefile | 2 +
drivers/mfd/ljca.c | 1191 +++++++++++
drivers/misc/Kconfig | 1 +
drivers/misc/Makefile | 1 +
drivers/misc/ivsc/Kconfig | 40 +
drivers/misc/ivsc/Makefile | 9 +
drivers/misc/ivsc/intel_vsc.c | 250 +++
drivers/misc/ivsc/intel_vsc.h | 177 ++
drivers/misc/ivsc/mei_ace.c | 589 ++++++
drivers/misc/ivsc/mei_ace_debug.c | 696 +++++++
drivers/misc/ivsc/mei_csi.c | 456 +++++
drivers/misc/ivsc/mei_pse.c | 944 +++++++++
drivers/misc/mei/Kconfig | 7 +
drivers/misc/mei/Makefile | 4 +
drivers/misc/mei/hw-vsc.c | 1637 +++++++++++++++
drivers/misc/mei/hw-vsc.h | 378 ++++
drivers/misc/mei/spi-vsc.c | 293 +++
drivers/spi/Kconfig | 10 +
drivers/spi/Makefile | 1 +
drivers/spi/spi-ljca.c | 328 ++++
drivers/usb/Kconfig | 2 +
drivers/usb/Makefile | 2 +
drivers/usb/intel_ulpss/Kconfig | 11 +
drivers/usb/intel_ulpss/Makefile | 3 +
drivers/usb/intel_ulpss/diag_stub.c | 116 ++
drivers/usb/intel_ulpss/diag_stub.h | 19 +
drivers/usb/intel_ulpss/gpio_stub.c | 459 +++++
drivers/usb/intel_ulpss/gpio_stub.h | 13 +
drivers/usb/intel_ulpss/i2c_stub.c | 456 +++++
drivers/usb/intel_ulpss/i2c_stub.h | 21 +
drivers/usb/intel_ulpss/mng_stub.c | 244 +++
drivers/usb/intel_ulpss/mng_stub.h | 18 +
.../usb/intel_ulpss/protocol_intel_ulpss.h | 173 ++
drivers/usb/intel_ulpss/ulpss_bridge.c | 529 +++++
drivers/usb/intel_ulpss/ulpss_bridge.h | 77 +
drivers/usb/intel_ulpss/usb_stub.c | 285 +++
drivers/usb/intel_ulpss/usb_stub.h | 49 +
include/linux/mfd/ljca.h | 47 +
include/linux/vsc.h | 83 +
include/media/ipu-isys.h | 44 +
include/uapi/linux/ipu-isys.h | 15 +
include/uapi/linux/ipu-psys.h | 121 ++
133 files changed, 40479 insertions(+), 2 deletions(-)
create mode 100644 drivers/gpio/gpio-ljca.c
create mode 100644 drivers/i2c/busses/i2c-ljca.c
create mode 100644 drivers/media/i2c/hm11b1.c
create mode 100644 drivers/media/i2c/ov01a10.c
create mode 100644 drivers/media/i2c/ov01a1s.c
create mode 100644 drivers/media/i2c/power_ctrl_logic.c
create mode 100644 drivers/media/i2c/power_ctrl_logic.h
create mode 100644 drivers/media/pci/intel/Kconfig
create mode 100644 drivers/media/pci/intel/ipu-bus.c
create mode 100644 drivers/media/pci/intel/ipu-bus.h
create mode 100644 drivers/media/pci/intel/ipu-buttress.c
create mode 100644 drivers/media/pci/intel/ipu-buttress.h
create mode 100644 drivers/media/pci/intel/ipu-cpd.c
create mode 100644 drivers/media/pci/intel/ipu-cpd.h
create mode 100644 drivers/media/pci/intel/ipu-dma.c
create mode 100644 drivers/media/pci/intel/ipu-dma.h
create mode 100644 drivers/media/pci/intel/ipu-fw-com.c
create mode 100644 drivers/media/pci/intel/ipu-fw-com.h
create mode 100644 drivers/media/pci/intel/ipu-fw-isys.c
create mode 100644 drivers/media/pci/intel/ipu-fw-isys.h
create mode 100644 drivers/media/pci/intel/ipu-fw-psys.c
create mode 100644 drivers/media/pci/intel/ipu-fw-psys.h
create mode 100644 drivers/media/pci/intel/ipu-isys-csi2-be-soc.c
create mode 100644 drivers/media/pci/intel/ipu-isys-csi2-be.c
create mode 100644 drivers/media/pci/intel/ipu-isys-csi2-be.h
create mode 100644 drivers/media/pci/intel/ipu-isys-csi2.c
create mode 100644 drivers/media/pci/intel/ipu-isys-csi2.h
create mode 100644 drivers/media/pci/intel/ipu-isys-media.h
create mode 100644 drivers/media/pci/intel/ipu-isys-queue.c
create mode 100644 drivers/media/pci/intel/ipu-isys-queue.h
create mode 100644 drivers/media/pci/intel/ipu-isys-subdev.c
create mode 100644 drivers/media/pci/intel/ipu-isys-subdev.h
create mode 100644 drivers/media/pci/intel/ipu-isys-tpg.c
create mode 100644 drivers/media/pci/intel/ipu-isys-tpg.h
create mode 100644 drivers/media/pci/intel/ipu-isys-video.c
create mode 100644 drivers/media/pci/intel/ipu-isys-video.h
create mode 100644 drivers/media/pci/intel/ipu-isys.c
create mode 100644 drivers/media/pci/intel/ipu-isys.h
create mode 100644 drivers/media/pci/intel/ipu-mmu.c
create mode 100644 drivers/media/pci/intel/ipu-mmu.h
create mode 100644 drivers/media/pci/intel/ipu-pdata.h
create mode 100644 drivers/media/pci/intel/ipu-psys-compat32.c
create mode 100644 drivers/media/pci/intel/ipu-psys.c
create mode 100644 drivers/media/pci/intel/ipu-psys.h
create mode 100644 drivers/media/pci/intel/ipu-trace.c
create mode 100644 drivers/media/pci/intel/ipu-trace.h
create mode 100644 drivers/media/pci/intel/ipu.c
create mode 100644 drivers/media/pci/intel/ipu.h
create mode 100644 drivers/media/pci/intel/ipu6/Makefile
create mode 100644 drivers/media/pci/intel/ipu6/ipu-fw-resources.c
create mode 100644 drivers/media/pci/intel/ipu6/ipu-platform-buttress-regs.h
create mode 100644 drivers/media/pci/intel/ipu6/ipu-platform-isys-csi2-reg.h
create mode 100644 drivers/media/pci/intel/ipu6/ipu-platform-isys.h
create mode 100644 drivers/media/pci/intel/ipu6/ipu-platform-psys.h
create mode 100644 drivers/media/pci/intel/ipu6/ipu-platform-regs.h
create mode 100644 drivers/media/pci/intel/ipu6/ipu-platform-resources.h
create mode 100644 drivers/media/pci/intel/ipu6/ipu-platform.h
create mode 100644 drivers/media/pci/intel/ipu6/ipu-resources.c
create mode 100644 drivers/media/pci/intel/ipu6/ipu6-fw-resources.c
create mode 100644 drivers/media/pci/intel/ipu6/ipu6-isys-csi2.c
create mode 100644 drivers/media/pci/intel/ipu6/ipu6-isys-csi2.h
create mode 100644 drivers/media/pci/intel/ipu6/ipu6-isys-gpc.c
create mode 100644 drivers/media/pci/intel/ipu6/ipu6-isys-phy.c
create mode 100644 drivers/media/pci/intel/ipu6/ipu6-isys-phy.h
create mode 100644 drivers/media/pci/intel/ipu6/ipu6-isys.c
create mode 100644 drivers/media/pci/intel/ipu6/ipu6-l-scheduler.c
create mode 100644 drivers/media/pci/intel/ipu6/ipu6-platform-resources.h
create mode 100644 drivers/media/pci/intel/ipu6/ipu6-ppg.c
create mode 100644 drivers/media/pci/intel/ipu6/ipu6-ppg.h
create mode 100644 drivers/media/pci/intel/ipu6/ipu6-psys-gpc.c
create mode 100644 drivers/media/pci/intel/ipu6/ipu6-psys.c
create mode 100644 drivers/media/pci/intel/ipu6/ipu6.c
create mode 100644 drivers/media/pci/intel/ipu6/ipu6ep-fw-resources.c
create mode 100644 drivers/media/pci/intel/ipu6/ipu6ep-platform-resources.h
create mode 100644 drivers/media/pci/intel/ipu6/ipu6se-fw-resources.c
create mode 100644 drivers/media/pci/intel/ipu6/ipu6se-platform-resources.h
create mode 100644 drivers/mfd/ljca.c
create mode 100644 drivers/misc/ivsc/Kconfig
create mode 100644 drivers/misc/ivsc/Makefile
create mode 100644 drivers/misc/ivsc/intel_vsc.c
create mode 100644 drivers/misc/ivsc/intel_vsc.h
create mode 100644 drivers/misc/ivsc/mei_ace.c
create mode 100644 drivers/misc/ivsc/mei_ace_debug.c
create mode 100644 drivers/misc/ivsc/mei_csi.c
create mode 100644 drivers/misc/ivsc/mei_pse.c
create mode 100644 drivers/misc/mei/hw-vsc.c
create mode 100644 drivers/misc/mei/hw-vsc.h
create mode 100644 drivers/misc/mei/spi-vsc.c
create mode 100644 drivers/spi/spi-ljca.c
create mode 100644 drivers/usb/intel_ulpss/Kconfig
create mode 100644 drivers/usb/intel_ulpss/Makefile
create mode 100644 drivers/usb/intel_ulpss/diag_stub.c
create mode 100644 drivers/usb/intel_ulpss/diag_stub.h
create mode 100644 drivers/usb/intel_ulpss/gpio_stub.c
create mode 100644 drivers/usb/intel_ulpss/gpio_stub.h
create mode 100644 drivers/usb/intel_ulpss/i2c_stub.c
create mode 100644 drivers/usb/intel_ulpss/i2c_stub.h
create mode 100644 drivers/usb/intel_ulpss/mng_stub.c
create mode 100644 drivers/usb/intel_ulpss/mng_stub.h
create mode 100644 drivers/usb/intel_ulpss/protocol_intel_ulpss.h
create mode 100644 drivers/usb/intel_ulpss/ulpss_bridge.c
create mode 100644 drivers/usb/intel_ulpss/ulpss_bridge.h
create mode 100644 drivers/usb/intel_ulpss/usb_stub.c
create mode 100644 drivers/usb/intel_ulpss/usb_stub.h
create mode 100644 include/linux/mfd/ljca.h
create mode 100644 include/linux/vsc.h
create mode 100644 include/media/ipu-isys.h
create mode 100644 include/uapi/linux/ipu-isys.h
create mode 100644 include/uapi/linux/ipu-psys.h
--
2.33.1
More information about the kernel-team
mailing list