|
|
Log in / Subscribe / Register

Add a DRM driver to support AI Processing Unit (APU)

From:  Alexandre Bailon <abailon-AT-baylibre.com>
To:  airlied-AT-linux.ie, daniel-AT-ffwll.ch, robh+dt-AT-kernel.org, matthias.bgg-AT-gmail.com, maarten.lankhorst-AT-linux.intel.com, mripard-AT-kernel.org, tzimmermann-AT-suse.de, ohad-AT-wizery.com, bjorn.andersson-AT-linaro.org, mathieu.poirier-AT-linaro.org, sumit.semwal-AT-linaro.org
Subject:  [RFC PATCH 0/4] Add a DRM driver to support AI Processing Unit (APU)
Date:  Fri, 17 Sep 2021 14:59:41 +0200
Message-ID:  <20210917125945.620097-1-abailon@baylibre.com>
Cc:  christian.koenig-AT-amd.com, dri-devel-AT-lists.freedesktop.org, devicetree-AT-vger.kernel.org, linux-arm-kernel-AT-lists.infradead.org, linux-mediatek-AT-lists.infradead.org, linux-kernel-AT-vger.kernel.org, linux-remoteproc-AT-vger.kernel.org, linux-media-AT-vger.kernel.org, linaro-mm-sig-AT-lists.linaro.org, khilman-AT-baylibre.com, gpain-AT-baylibre.com, Alexandre Bailon <abailon-AT-baylibre.com>
Archive-link:  Article

This adds a DRM driver that implements communication between the CPU and an
APU.
This uses VirtIO buffer to exchange messages.
For the data, we allocate a GEM object and map it using IOMMU to make it
available to the APU.
The driver is relatively generic, and should work with any SoC implementing
hardware accelerator for AI if they use support remoteproc and VirtIO.

For the people interested by the firmware or userspace library,
the sources are available here:
https://github.com/BayLibre/open-amp/tree/v2020.01-mtk/ap...

This RFC is a rewrite of a previous RFC that was not using DRM:
https://patchwork.kernel.org/project/linux-remoteproc/cov...

Alexandre Bailon (4):
  dt-bindings: Add bidings for mtk,apu-drm
  DRM: Add support of AI Processor Unit (APU)
  rpmsg: Add support of AI Processor Unit (APU)
  ARM64: mt8183-pumpkin: Add the APU DRM device

 .../devicetree/bindings/gpu/mtk,apu-drm.yaml  |  38 ++
 .../boot/dts/mediatek/mt8183-pumpkin.dts      |   6 +
 drivers/gpu/drm/Kconfig                       |   2 +
 drivers/gpu/drm/Makefile                      |   1 +
 drivers/gpu/drm/apu/Kconfig                   |  10 +
 drivers/gpu/drm/apu/Makefile                  |   7 +
 drivers/gpu/drm/apu/apu_drm_drv.c             | 238 +++++++
 drivers/gpu/drm/apu/apu_gem.c                 | 232 +++++++
 drivers/gpu/drm/apu/apu_internal.h            |  89 +++
 drivers/gpu/drm/apu/apu_sched.c               | 634 ++++++++++++++++++
 drivers/rpmsg/Kconfig                         |  10 +
 drivers/rpmsg/Makefile                        |   1 +
 drivers/rpmsg/apu_rpmsg.c                     | 184 +++++
 include/drm/apu_drm.h                         |  59 ++
 include/uapi/drm/apu_drm.h                    | 106 +++
 15 files changed, 1617 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/gpu/mtk,apu-drm.yaml
 create mode 100644 drivers/gpu/drm/apu/Kconfig
 create mode 100644 drivers/gpu/drm/apu/Makefile
 create mode 100644 drivers/gpu/drm/apu/apu_drm_drv.c
 create mode 100644 drivers/gpu/drm/apu/apu_gem.c
 create mode 100644 drivers/gpu/drm/apu/apu_internal.h
 create mode 100644 drivers/gpu/drm/apu/apu_sched.c
 create mode 100644 drivers/rpmsg/apu_rpmsg.c
 create mode 100644 include/drm/apu_drm.h
 create mode 100644 include/uapi/drm/apu_drm.h

-- 
2.31.1



Copyright © 2021, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds