| From: |
| bingbu.cao-AT-intel.com |
| To: |
| linux-media-AT-vger.kernel.org, sakari.ailus-AT-linux.intel.com, laurent.pinchart-AT-ideasonboard.com |
| Subject: |
| [PATCH v2 00/15] Intel IPU6 and IPU6 input system drivers |
| Date: |
| Tue, 24 Oct 2023 19:29:09 +0800 |
| Message-ID: |
| <20231024112924.3934228-1-bingbu.cao@intel.com> |
| Cc: |
| andriy.shevchenko-AT-linux.intel.com, hdegoede-AT-redhat.com, ilpo.jarvinen-AT-linux.intel.com, andreaskleist-AT-gmail.com, claus.stovgaard-AT-gmail.com, tfiga-AT-chromium.org, senozhatsky-AT-chromium.org, tomi.valkeinen-AT-ideasonboard.com, bingbu.cao-AT-intel.com, bingbu.cao-AT-linux.intel.com, tian.shu.qiu-AT-intel.com, hongju.wang-AT-intel.com |
| Archive-link: |
| Article |
From: Bingbu Cao <bingbu.cao@intel.com>
This patch series adds a driver for Intel IPU6 input system.
IPU6 is the sixth generation of Imaging Processing Unit, it is a PCI
device which can be found in some Intel Client Platforms. User can use
IPU6 to capture images from MIPI camera sensors.
IPU6 has its own firmware which exposes ABIs to driver, and communicates
with CSE to do firmware authentication. IPU6 has its MMU hardware, so
the driver sets up a page table to allow IPU6 DMA to access the system
memory.
IPU6 input system driver uses MC and V4L2 sub-device APIs besides V4L2.
---
v1 -> v2:
- Add support with latest v4l2 async API
- Add support for latest bridge and Intel ivsc driver
- Fix lots of coding style issues not covered by checkpatch.pl
- Fix several bugs
- Fix several code issues found by Sparse and cppcheck
RFC -> v1:
- Add multiplexed streams support
- Use auxiliary bus to register IPU6 devices
- Add IPU6 hardware and driver overview documentation
- Updata IPU6 admin-guide documentation
- Update number of source pads and video nodes to support
multiplexed streams
Bingbu Cao (15):
media: intel/ipu6: add Intel IPU6 PCI device driver
media: intel/ipu6: add IPU auxiliary devices
media: intel/ipu6: add IPU6 buttress interface driver
media: intel/ipu6: CPD parsing for get firmware components
media: intel/ipu6: add IPU6 DMA mapping API and MMU table
media: intel/ipu6: add syscom interfaces between firmware and driver
media: intel/ipu6: input system ABI between firmware and driver
media: intel/ipu6: add IPU6 CSI2 receiver v4l2 sub-device
media: intel/ipu6: add the CSI2 DPHY implementation
media: intel/ipu6: add input system driver
media: intel/ipu6: input system video capture nodes
media: add Kconfig and Makefile for IPU6
MAINTAINERS: add maintainers for Intel IPU6 input system driver
Documentation: add Intel IPU6 ISYS driver admin-guide doc
Documentation: add documentation of Intel IPU6 driver and hardware
overview
Documentation/admin-guide/media/ipu6-isys.rst | 159 ++
.../admin-guide/media/ipu6_isys_graph.svg | 338 +++++
.../admin-guide/media/ipu6_isys_multi.svg | 1124 ++++++++++++++
.../admin-guide/media/v4l-drivers.rst | 1 +
.../driver-api/media/drivers/index.rst | 1 +
.../driver-api/media/drivers/ipu6.rst | 205 +++
MAINTAINERS | 10 +
drivers/media/pci/intel/Kconfig | 1 +
drivers/media/pci/intel/Makefile | 1 +
drivers/media/pci/intel/ipu6/Kconfig | 17 +
drivers/media/pci/intel/ipu6/Makefile | 23 +
drivers/media/pci/intel/ipu6/ipu6-bus.c | 157 ++
drivers/media/pci/intel/ipu6/ipu6-bus.h | 50 +
drivers/media/pci/intel/ipu6/ipu6-buttress.c | 900 +++++++++++
drivers/media/pci/intel/ipu6/ipu6-buttress.h | 107 ++
drivers/media/pci/intel/ipu6/ipu6-cpd.c | 355 +++++
drivers/media/pci/intel/ipu6/ipu6-cpd.h | 104 ++
drivers/media/pci/intel/ipu6/ipu6-dma.c | 491 ++++++
drivers/media/pci/intel/ipu6/ipu6-dma.h | 20 +
drivers/media/pci/intel/ipu6/ipu6-fw-com.c | 411 +++++
drivers/media/pci/intel/ipu6/ipu6-fw-com.h | 47 +
drivers/media/pci/intel/ipu6/ipu6-fw-isys.c | 484 ++++++
drivers/media/pci/intel/ipu6/ipu6-fw-isys.h | 570 +++++++
drivers/media/pci/intel/ipu6/ipu6-isys-csi2.c | 654 ++++++++
drivers/media/pci/intel/ipu6/ipu6-isys-csi2.h | 81 +
.../media/pci/intel/ipu6/ipu6-isys-dwc-phy.c | 533 +++++++
.../media/pci/intel/ipu6/ipu6-isys-jsl-phy.c | 237 +++
.../media/pci/intel/ipu6/ipu6-isys-mcd-phy.c | 712 +++++++++
.../media/pci/intel/ipu6/ipu6-isys-queue.c | 846 +++++++++++
.../media/pci/intel/ipu6/ipu6-isys-queue.h | 94 ++
.../media/pci/intel/ipu6/ipu6-isys-subdev.c | 379 +++++
.../media/pci/intel/ipu6/ipu6-isys-subdev.h | 58 +
.../media/pci/intel/ipu6/ipu6-isys-video.c | 1239 +++++++++++++++
.../media/pci/intel/ipu6/ipu6-isys-video.h | 129 ++
drivers/media/pci/intel/ipu6/ipu6-isys.c | 1345 +++++++++++++++++
drivers/media/pci/intel/ipu6/ipu6-isys.h | 201 +++
drivers/media/pci/intel/ipu6/ipu6-mmu.c | 828 ++++++++++
drivers/media/pci/intel/ipu6/ipu6-mmu.h | 67 +
.../intel/ipu6/ipu6-platform-buttress-regs.h | 230 +++
.../intel/ipu6/ipu6-platform-isys-csi2-reg.h | 187 +++
.../media/pci/intel/ipu6/ipu6-platform-regs.h | 179 +++
drivers/media/pci/intel/ipu6/ipu6.c | 955 ++++++++++++
drivers/media/pci/intel/ipu6/ipu6.h | 352 +++++
43 files changed, 14882 insertions(+)
create mode 100644 Documentation/admin-guide/media/ipu6-isys.rst
create mode 100644 Documentation/admin-guide/media/ipu6_isys_graph.svg
create mode 100644 Documentation/admin-guide/media/ipu6_isys_multi.svg
create mode 100644 Documentation/driver-api/media/drivers/ipu6.rst
create mode 100644 drivers/media/pci/intel/ipu6/Kconfig
create mode 100644 drivers/media/pci/intel/ipu6/Makefile
create mode 100644 drivers/media/pci/intel/ipu6/ipu6-bus.c
create mode 100644 drivers/media/pci/intel/ipu6/ipu6-bus.h
create mode 100644 drivers/media/pci/intel/ipu6/ipu6-buttress.c
create mode 100644 drivers/media/pci/intel/ipu6/ipu6-buttress.h
create mode 100644 drivers/media/pci/intel/ipu6/ipu6-cpd.c
create mode 100644 drivers/media/pci/intel/ipu6/ipu6-cpd.h
create mode 100644 drivers/media/pci/intel/ipu6/ipu6-dma.c
create mode 100644 drivers/media/pci/intel/ipu6/ipu6-dma.h
create mode 100644 drivers/media/pci/intel/ipu6/ipu6-fw-com.c
create mode 100644 drivers/media/pci/intel/ipu6/ipu6-fw-com.h
create mode 100644 drivers/media/pci/intel/ipu6/ipu6-fw-isys.c
create mode 100644 drivers/media/pci/intel/ipu6/ipu6-fw-isys.h
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-dwc-phy.c
create mode 100644 drivers/media/pci/intel/ipu6/ipu6-isys-jsl-phy.c
create mode 100644 drivers/media/pci/intel/ipu6/ipu6-isys-mcd-phy.c
create mode 100644 drivers/media/pci/intel/ipu6/ipu6-isys-queue.c
create mode 100644 drivers/media/pci/intel/ipu6/ipu6-isys-queue.h
create mode 100644 drivers/media/pci/intel/ipu6/ipu6-isys-subdev.c
create mode 100644 drivers/media/pci/intel/ipu6/ipu6-isys-subdev.h
create mode 100644 drivers/media/pci/intel/ipu6/ipu6-isys-video.c
create mode 100644 drivers/media/pci/intel/ipu6/ipu6-isys-video.h
create mode 100644 drivers/media/pci/intel/ipu6/ipu6-isys.c
create mode 100644 drivers/media/pci/intel/ipu6/ipu6-isys.h
create mode 100644 drivers/media/pci/intel/ipu6/ipu6-mmu.c
create mode 100644 drivers/media/pci/intel/ipu6/ipu6-mmu.h
create mode 100644 drivers/media/pci/intel/ipu6/ipu6-platform-buttress-regs.h
create mode 100644 drivers/media/pci/intel/ipu6/ipu6-platform-isys-csi2-reg.h
create mode 100644 drivers/media/pci/intel/ipu6/ipu6-platform-regs.h
create mode 100644 drivers/media/pci/intel/ipu6/ipu6.c
create mode 100644 drivers/media/pci/intel/ipu6/ipu6.h
--
2.42.0