[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