NAK: [PATCH 0/7][SRU][OEM-5.10] Add Intel IPU6 driver

You-Sheng Yang vicamo.yang at canonical.com
Tue Apr 6 10:52:59 UTC 2021


To be revised with Intel's latest WW14 release.

On 3/26/21 2:44 PM, You-Sheng Yang wrote:
> BugLink: https://bugs.launchpad.net/bugs/1921345
> 
> [Impact]
> 
> There are new platforms with MIPI camera based on Intel IPU6(Imaging
> Processing Unit version 6) currently unsupported in Ubuntu.
> 
> [Fix]
> 
> Intel IPU6 can be enabled by integration of following kernel driver,
> firmware, userspace HAL libraries as well as a GStreamer source element:
> 
>   * https://github.com/intel/ipu6-drivers
>   * https://github.com/intel/ipu6-camera-bins
>   * https://github.com/intel/ipu6-camera-hal
>   * https://github.com/intel/icamerasrc
> 
> This patchset took kernel patches from intel/ipu6-drivers.
> 
> [Test Case]
> 
> With kernel/firmware properly installed, the hardware should be ready for
> further development:
> 
>   $ dmesg | grep ipu
>   intel-ipu6 intel-ipu: enabling device (0000 -> 0002)
>   intel-ipu6 intel-ipu: Device 0x9a19 (rev: 0x1)
>   intel-ipu6 intel-ipu: physical base address 0x6054000000
>   intel-ipu6 intel-ipu: mapped as: 0x0000000097793328
>   intel-ipu6 intel-ipu: IPU in secure mode
>   intel-ipu6 intel-ipu: IPC reset done
>   intel-ipu6 intel-ipu: cpd file name: intel/ipu6_fw.bin
>   intel-ipu6 intel-ipu: FW version: 20201222
>   intel-ipu6 intel-ipu: Sending BOOT_LOAD to CSE
>   intel-ipu6 intel-ipu: Sending AUTHENTICATE_RUN to CSE
>   intel-ipu6 intel-ipu: CSE authenticate_run done
>   intel-ipu6 intel-ipu: IPU driver version 1.0
>   intel-ipu6-psys intel-ipu6-psys0: pkg_dir entry count:8
>   intel-ipu6-psys intel-ipu6-psys0: psys probe minor: 0
>   intel-ipu6-isys intel-ipu6-isys0: bind ov01a1s 20-0036 nlanes is 1
> port is 1
>   intel-ipu6-isys intel-ipu6-isys0: All sensor registration completed.
>   intel-ipu6-isys intel-ipu6-isys0: stream on ov01a1s 20-0036
> 
> There should be nearly 24 video4linux devices created under /dev.
> 
> [Where problems could occur]
> 
> MIPI camera through Intel IPU6 takes also firmware blobs loaded in
> runtime from user space, addtional softwares are also required to
> fully enable it for oridinary use. The exposed video devices are hidden
> from general users and a relay daemon+v4l2loopback is used to enable
> use from existing applications.
> 
> From kernel's point of view, there is still a known issue that it takes
> root priviledge to access these devices.
> 
> [Other Info]
> 
> So far Intel has no plan to commit this driver to upstream yet, so it's
> only nominated for oem-5.10. It will only be nominated to generic
> kernels when the plan/requirements have changed.
> 
> The original driver Kconfig would disable VIDEO_IPU3_CIO2, but that's
> reverted to avoid unnecessary changes to existing users.
> 
> Wang Yating (6):
>   intel ipu drivers first release
>   IPU driver release WW48
>   IPU driver release WW48 with MCU
>   IPU driver release WW52
>   IPU driver release WW04
>   UBUNTU: SAUCE: integrate IPU6 builds
> 
> You-Sheng Yang (1):
>   UBUNTU: [Config] updateconfigs for IPU6 driver
> 
>  debian.oem/config/config.common.ubuntu        |    6 +
>  drivers/media/i2c/Kconfig                     |   33 +
>  drivers/media/i2c/Makefile                    |    4 +
>  drivers/media/i2c/hm11b1.c                    | 1366 +++++++++++++
>  drivers/media/i2c/ov01a1s.c                   |  935 +++++++++
>  drivers/media/i2c/pmic_dsc1.c                 |  158 ++
>  drivers/media/i2c/pmic_dsc1.h                 |   33 +
>  drivers/media/pci/Kconfig                     |    2 +-
>  drivers/media/pci/intel/Kconfig               |   32 +
>  drivers/media/pci/intel/Makefile              |   11 +-
>  drivers/media/pci/intel/ipu-bus.c             |  255 +++
>  drivers/media/pci/intel/ipu-bus.h             |   67 +
>  drivers/media/pci/intel/ipu-buttress.c        | 1399 +++++++++++++
>  drivers/media/pci/intel/ipu-buttress.h        |  129 ++
>  drivers/media/pci/intel/ipu-cpd.c             |  465 +++++
>  drivers/media/pci/intel/ipu-cpd.h             |  110 +
>  drivers/media/pci/intel/ipu-dma.c             |  409 ++++
>  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         |  700 +++++++
>  drivers/media/pci/intel/ipu-fw-isys.h         |  826 ++++++++
>  drivers/media/pci/intel/ipu-fw-psys.c         |  433 ++++
>  drivers/media/pci/intel/ipu-fw-psys.h         |  394 ++++
>  .../media/pci/intel/ipu-isys-csi2-be-soc.c    |  293 +++
>  drivers/media/pci/intel/ipu-isys-csi2-be.c    |  325 +++
>  drivers/media/pci/intel/ipu-isys-csi2-be.h    |   66 +
>  drivers/media/pci/intel/ipu-isys-csi2.c       |  662 ++++++
>  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      | 1062 ++++++++++
>  drivers/media/pci/intel/ipu-isys-queue.h      |  142 ++
>  drivers/media/pci/intel/ipu-isys-subdev.c     |  657 ++++++
>  drivers/media/pci/intel/ipu-isys-subdev.h     |  153 ++
>  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      | 1768 +++++++++++++++++
>  drivers/media/pci/intel/ipu-isys-video.h      |  181 ++
>  drivers/media/pci/intel/ipu-isys.c            | 1473 ++++++++++++++
>  drivers/media/pci/intel/ipu-isys.h            |  237 +++
>  drivers/media/pci/intel/ipu-mmu.c             |  787 ++++++++
>  drivers/media/pci/intel/ipu-mmu.h             |   67 +
>  drivers/media/pci/intel/ipu-pdata.h           |  255 +++
>  drivers/media/pci/intel/ipu-psys-compat32.c   |  226 +++
>  drivers/media/pci/intel/ipu-psys.c            | 1617 +++++++++++++++
>  drivers/media/pci/intel/ipu-psys.h            |  218 ++
>  drivers/media/pci/intel/ipu-trace.c           |  882 ++++++++
>  drivers/media/pci/intel/ipu-trace.h           |  312 +++
>  drivers/media/pci/intel/ipu.c                 |  813 ++++++++
>  drivers/media/pci/intel/ipu.h                 |  106 +
>  drivers/media/pci/intel/ipu6/Makefile         |   62 +
>  .../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   |  102 +
>  drivers/media/pci/intel/ipu6/ipu-platform.h   |   33 +
>  drivers/media/pci/intel/ipu6/ipu-resources.c  |  861 ++++++++
>  .../media/pci/intel/ipu6/ipu6-fw-resources.c  |  582 ++++++
>  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  |  205 ++
>  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      |  322 +++
>  .../media/pci/intel/ipu6/ipu6-l-scheduler.c   |  611 ++++++
>  .../pci/intel/ipu6/ipu6-platform-resources.h  |  197 ++
>  drivers/media/pci/intel/ipu6/ipu6-ppg.c       |  559 ++++++
>  drivers/media/pci/intel/ipu6/ipu6-ppg.h       |   38 +
>  drivers/media/pci/intel/ipu6/ipu6-psys-gpc.c  |  212 ++
>  drivers/media/pci/intel/ipu6/ipu6-psys.c      | 1056 ++++++++++
>  drivers/media/pci/intel/ipu6/ipu6.c           |  368 ++++
>  .../pci/intel/ipu6/ipu6se-fw-resources.c      |  352 ++++
>  .../intel/ipu6/ipu6se-platform-resources.h    |  127 ++
>  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/media/ipu-isys.h                      |   44 +
>  include/uapi/linux/ipu-isys.h                 |   15 +
>  include/uapi/linux/ipu-psys.h                 |  121 ++
>  96 files changed, 32040 insertions(+), 2 deletions(-)
>  create mode 100644 drivers/media/i2c/hm11b1.c
>  create mode 100644 drivers/media/i2c/ov01a1s.c
>  create mode 100644 drivers/media/i2c/pmic_dsc1.c
>  create mode 100644 drivers/media/i2c/pmic_dsc1.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/ipu6se-fw-resources.c
>  create mode 100644 drivers/media/pci/intel/ipu6/ipu6se-platform-resources.h
>  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/media/ipu-isys.h
>  create mode 100644 include/uapi/linux/ipu-isys.h
>  create mode 100644 include/uapi/linux/ipu-psys.h
> 



More information about the kernel-team mailing list