accel/ivpu: Introduce a new DRM driver for Intel VPU
authorJacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com>
Tue, 17 Jan 2023 09:27:17 +0000 (10:27 +0100)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Thu, 19 Jan 2023 10:07:01 +0000 (11:07 +0100)
commit35b137630f08d913fc2e33df33ccc2570dff3f7d
treefcd8da6b5ba0bff2dfcc40045a9bad7b61faefc1
parent6f84981772535e670e4e2df051a672af229b6694
accel/ivpu: Introduce a new DRM driver for Intel VPU

VPU stands for Versatile Processing Unit and it's a CPU-integrated
inference accelerator for Computer Vision and Deep Learning
applications.

The VPU device consist of following components:
  - Buttress - provides CPU to VPU integration, interrupt, frequency and
    power management.
  - Memory Management Unit (based on ARM MMU-600) - translates VPU to
    host DMA addresses, isolates user workloads.
  - RISC based microcontroller - executes firmware that provides job
    execution API for the kernel-mode driver
  - Neural Compute Subsystem (NCS) - does the actual work, provides
    Compute and Copy engines.
  - Network on Chip (NoC) - network fabric connecting all the components

This driver supports VPU IP v2.7 integrated into Intel Meteor Lake
client CPUs (14th generation).

Module sources are at drivers/accel/ivpu and module name is
"intel_vpu.ko".

This patch includes only very besic functionality:
  - module, PCI device and IRQ initialization
  - register definitions and low level register manipulation functions
  - SET/GET_PARAM ioctls
  - power up without firmware

Co-developed-by: Krystian Pradzynski <krystian.pradzynski@linux.intel.com>
Signed-off-by: Krystian Pradzynski <krystian.pradzynski@linux.intel.com>
Signed-off-by: Jacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com>
Reviewed-by: Oded Gabbay <ogabbay@kernel.org>
Reviewed-by: Jeffrey Hugo <quic_jhugo@quicinc.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: https://patchwork.freedesktop.org/patch/msgid/20230117092723.60441-2-jacek.lawrynowicz@linux.intel.com
14 files changed:
MAINTAINERS
drivers/Makefile
drivers/accel/Kconfig
drivers/accel/Makefile [new file with mode: 0644]
drivers/accel/ivpu/Kconfig [new file with mode: 0644]
drivers/accel/ivpu/Makefile [new file with mode: 0644]
drivers/accel/ivpu/TODO [new file with mode: 0644]
drivers/accel/ivpu/ivpu_drv.c [new file with mode: 0644]
drivers/accel/ivpu/ivpu_drv.h [new file with mode: 0644]
drivers/accel/ivpu/ivpu_hw.h [new file with mode: 0644]
drivers/accel/ivpu/ivpu_hw_mtl.c [new file with mode: 0644]
drivers/accel/ivpu/ivpu_hw_mtl_reg.h [new file with mode: 0644]
drivers/accel/ivpu/ivpu_hw_reg_io.h [new file with mode: 0644]
include/uapi/drm/ivpu_accel.h [new file with mode: 0644]