[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAHNYxRx7WsCyZBLTfBTcxYtf1z68YkXgMdYq+8OFMpjq6y9TfA@mail.gmail.com>
Date: Wed, 5 Jul 2023 10:45:07 -0400
From: Alexandru M Stan <amstan@...omium.org>
To: Paweł Anikiel <pan@...ihalf.com>
Cc: devicetree@...r.kernel.org, linux-kernel@...r.kernel.org,
linux-media@...r.kernel.org, dinguyen@...nel.org,
robh+dt@...nel.org, krzysztof.kozlowski+dt@...aro.org,
conor+dt@...nel.org, mchehab@...nel.org, upstream@...ihalf.com,
ribalda@...omium.org
Subject: Re: [RFC PATCH 0/3] Google Chameleon v3 video driver
On Fri, Jun 30, 2023 at 10:40 AM Paweł Anikiel <pan@...ihalf.com> wrote:
>
> The Google Chameleon v3 is a testing device for external displays. It
> is based on an Arria 10 SoCFPGA. This patch adds a V4L2 driver for the
> video system. The video system consists of:
> * Six video interfaces (DMA ping pong buffers) in the FPGA, called
> "framebuffers".
> * Two Intel DisplayPort DPRX IP cores in the FPGA, one MST x4, one SST
> * IT68051 chip, handled by EC firmware
>
> The driver is implemented as a single device driver, because the video
> interface devices need to talk to the DisplayPort IP core devices
> (e.g. to configure the EDID). This has the effect of the DPRX driver
> being in the chameleonv3 directory even though it's an Intel IP.
>
> The DPRX code handles all the AUX communication (DPCD, sideband messages,
> message transfers). There is similarity to what's already present in
> the DRM subsystem, but I found it hard to reuse that code effectively.
>
> My main concern is with the overall structure of the driver - how it's
> divided into parts, the interfaces and APIs used, etc. Any feedback is
> greately appreciated.
>
> Paweł Anikiel (3):
> media: Add 10, 12, and 16 bit RGB formats
> media: Add Google Chameleon v3 video driver
> ARM: dts: Add Chameleon v3 video node
>
> .../socfpga/socfpga_arria10_chameleonv3.dts | 54 ++
> drivers/media/platform/Kconfig | 1 +
> drivers/media/platform/Makefile | 1 +
> drivers/media/platform/google/Kconfig | 4 +
> drivers/media/platform/google/Makefile | 2 +
> .../media/platform/google/chameleonv3/Kconfig | 9 +
> .../platform/google/chameleonv3/Makefile | 15 +
> .../platform/google/chameleonv3/chv3-core.c | 292 ++++++++++
> .../platform/google/chameleonv3/chv3-core.h | 17 +
> .../platform/google/chameleonv3/chv3-fb.c | 539 ++++++++++++++++++
> .../platform/google/chameleonv3/chv3-fb.h | 34 ++
> .../platform/google/chameleonv3/dprx-aux.c | 77 +++
> .../platform/google/chameleonv3/dprx-dp.c | 82 +++
> .../platform/google/chameleonv3/dprx-dpcd.c | 424 ++++++++++++++
> .../platform/google/chameleonv3/dprx-dprx.c | 262 +++++++++
> .../platform/google/chameleonv3/dprx-edid.c | 39 ++
> .../platform/google/chameleonv3/dprx-i2c.c | 41 ++
> .../platform/google/chameleonv3/dprx-mt.c | 184 ++++++
> .../platform/google/chameleonv3/dprx-sbmsg.c | 162 ++++++
> .../media/platform/google/chameleonv3/dprx.h | 128 +++++
> drivers/media/v4l2-core/v4l2-ioctl.c | 5 +
> include/uapi/linux/videodev2.h | 5 +
> 22 files changed, 2377 insertions(+)
> create mode 100644 drivers/media/platform/google/Kconfig
> create mode 100644 drivers/media/platform/google/Makefile
> create mode 100644 drivers/media/platform/google/chameleonv3/Kconfig
> create mode 100644 drivers/media/platform/google/chameleonv3/Makefile
> create mode 100644 drivers/media/platform/google/chameleonv3/chv3-core.c
> create mode 100644 drivers/media/platform/google/chameleonv3/chv3-core.h
> create mode 100644 drivers/media/platform/google/chameleonv3/chv3-fb.c
> create mode 100644 drivers/media/platform/google/chameleonv3/chv3-fb.h
> create mode 100644 drivers/media/platform/google/chameleonv3/dprx-aux.c
> create mode 100644 drivers/media/platform/google/chameleonv3/dprx-dp.c
> create mode 100644 drivers/media/platform/google/chameleonv3/dprx-dpcd.c
> create mode 100644 drivers/media/platform/google/chameleonv3/dprx-dprx.c
> create mode 100644 drivers/media/platform/google/chameleonv3/dprx-edid.c
> create mode 100644 drivers/media/platform/google/chameleonv3/dprx-i2c.c
> create mode 100644 drivers/media/platform/google/chameleonv3/dprx-mt.c
> create mode 100644 drivers/media/platform/google/chameleonv3/dprx-sbmsg.c
> create mode 100644 drivers/media/platform/google/chameleonv3/dprx.h
>
> --
> 2.41.0.255.g8b1d071c50-goog
>
Thank you Pawel for sending this.
To generate more interest in this device/driver I wanted to share that
the FPGA implementation (the registers/hw this driver talks to) is
also open source [1]. This is to show that this is not some throw away
driver for some proprietary thing.
The previous Chameleon device has been useful for testing drivers
using the Intel Graphics Test [2] which can exercise a lot of the DRM
video output kernel drivers on many devices, v3 is also compatible
with the same RPC protocol.
[1] https://chromium.googlesource.com/chromiumos/platform/chameleon/+/refs/heads/main/v3/fpga/
[2] https://drm.pages.freedesktop.org/igt-gpu-tools/igt-gpu-tools-Chamelium.html
Alexandru Stan (amstan)
Powered by blists - more mailing lists