Received: by 2002:a05:6a10:f347:0:0:0:0 with SMTP id d7csp3318310pxu; Tue, 8 Dec 2020 08:57:32 -0800 (PST) X-Google-Smtp-Source: ABdhPJyWqDAHmsZG4yAKepSLNSJvkyJVO9TiI9GEFcmI6l7z6GqbQzvebNJEmmGQfHWbRhY0gYOn X-Received: by 2002:a17:906:1e0c:: with SMTP id g12mr24440332ejj.115.1607446651934; Tue, 08 Dec 2020 08:57:31 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1607446651; cv=none; d=google.com; s=arc-20160816; b=eKGQawdrXPjVeQd2mFCTzOPi3AnVJr7iA024MEHrV+Qw1P9kqBy/YITbJKnm3zldM/ 6Tdec+JGK+DeB/o5RnO5jAOdFIy/omwUukZpYrRH6XAHS90Tm6hqnPlwZLdQIPcTktS3 lVMtrnXueQyP7hFiYAmpF8NKmJmr704SuIgMbmJDEOIXQ/CZF5QWAPP3l2smGtQj0Jqt aU8kVDg5YQcw7q+Habl/4wWNGMMrkwNNhj3wH1xu6TMo9SB9PH9g8ZtVjEs24HoYWIbF FdNziaqC6Gek4UN7fPwNbwQfGgi5XMGv1dlzIAW7KSlkjcT9Sxji5bFecrzPEIKkYnyo 8EkA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:date:cc:to:from:subject :message-id:dkim-signature; bh=Li9FNCs+r58sHgUOn9VW6RK53rMll07O7ewT2tY4odA=; b=xNHmIMEHDo6Owfx1V8y3Q1qM0aueU7iJnWA3Fxu5R30cKG5XYiCVHwK/AnKlQWgx47 Nwju50s6MgO+YWMxVnoICGRY7Rmy1goj5jnlsx1kIRT8Qi0l3SDIZNDwGO1iLKGdI2cL FIqHw646t61YF7CEHW5MrFrgfNebGZOkG5tYkCwfhcdXDvtLtN+Hj8SzrqQGYOmgqw/P yXog3pRtmCw6MIbex8l/6f5Mw2sPCkqwxP/wmNxtv6gjJIVVgHqKbvB5ixHORdLU5sSu KzMaUjaKEKlqYRpzpyhYlxmEk6Lx2JgqVXW2hvh1HsHm3PTl8+smWJ9Q/GUia/XnjhOn zZzA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@ndufresne-ca.20150623.gappssmtp.com header.s=20150623 header.b=Fn4TFkg8; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id o19si10155023edw.119.2020.12.08.08.57.06; Tue, 08 Dec 2020 08:57:31 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@ndufresne-ca.20150623.gappssmtp.com header.s=20150623 header.b=Fn4TFkg8; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730216AbgLHQys (ORCPT + 99 others); Tue, 8 Dec 2020 11:54:48 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60144 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726810AbgLHQyr (ORCPT ); Tue, 8 Dec 2020 11:54:47 -0500 Received: from mail-qt1-x844.google.com (mail-qt1-x844.google.com [IPv6:2607:f8b0:4864:20::844]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6DD31C06179C for ; Tue, 8 Dec 2020 08:54:07 -0800 (PST) Received: by mail-qt1-x844.google.com with SMTP id c14so2778670qtn.0 for ; Tue, 08 Dec 2020 08:54:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ndufresne-ca.20150623.gappssmtp.com; s=20150623; h=message-id:subject:from:to:cc:date:in-reply-to:references :user-agent:mime-version:content-transfer-encoding; bh=Li9FNCs+r58sHgUOn9VW6RK53rMll07O7ewT2tY4odA=; b=Fn4TFkg8LVUpkF3uZWMrIIVrR9qv9K0uaOsxdLqirCT+GuhPpBkfyqJKKmc2MzNXA1 CRsNfWYertDeSU9pI/MquqCbO8CajOsm/tX2jbcUFfGy1TNFzrKDx3sO+0qJvCRQN6It KtZCzqktmOs+rauKpG+D/8qrzev7UP5cRcFfSqwULKcchhYq28uB38TTglkuOKZoDltL kxJKdECY1Prl+vhlg1wC5vt2ppSsHViN5lVT9PcZZUH8P1J+7StadDEAAHDfTa0Uj/tk 6B+Rkoiv3pUmvePjwvEyF8SgAxltomKubLQuTu9IRUWl/fbpNnYxRAyeRxLCpZqJbLHk T2/w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:message-id:subject:from:to:cc:date:in-reply-to :references:user-agent:mime-version:content-transfer-encoding; bh=Li9FNCs+r58sHgUOn9VW6RK53rMll07O7ewT2tY4odA=; b=S0KtccHyh53bjbXDsJrqZqDHgE1d8/ZjgRPlxQS3CzikrDyCKld2m7JKfDuSpbNxAZ WMhX8pr2vcFuThx3kNvL7sYKtH1qfp5sHXg57282d8cwGdtIKvFWQPYnfm7X+e32RB8K OIEH1IQkoxY3SEQ63OG8qoYiihod4dqryAhYtLCpfDIIXaWeZXcQaUxWbiur5KWpdbAf sQ+380r5uSVRgE3DTz8nLr2djSN61YtbkFFstw+o/hrV4iq4GToU1lZFrHGVi0nptgfn /WgmTKSXo5+vR5yXrwoKQlKyb/44VKw34KoVMvyJPgjt4DB2Q8hCKkah/tbMfOVbdvuL Rx+A== X-Gm-Message-State: AOAM532ZJAmv4YFY56WTmfJ7kdCV9yHbWpKh48xtWL22n6wHZZo1/sPJ 5xd0q50DP/L8isyoLfXEw253Fg== X-Received: by 2002:ac8:59d5:: with SMTP id f21mr31218834qtf.2.1607446446643; Tue, 08 Dec 2020 08:54:06 -0800 (PST) Received: from nicolas-tpx395.lan (173-246-12-168.qc.cable.ebox.net. [173.246.12.168]) by smtp.gmail.com with ESMTPSA id z78sm3374497qkb.0.2020.12.08.08.54.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Dec 2020 08:54:05 -0800 (PST) Message-ID: Subject: Re: [PATCH v3 0/4] media: meson: Add support for the Amlogic GE2D Accelerator Unit From: Nicolas Dufresne To: Neil Armstrong , hverkuil@xs4all.nl Cc: linux-amlogic@lists.infradead.org, linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org Date: Tue, 08 Dec 2020 11:54:04 -0500 In-Reply-To: <20201117084440.578540-1-narmstrong@baylibre.com> References: <20201117084440.578540-1-narmstrong@baylibre.com> Content-Type: text/plain; charset="UTF-8" User-Agent: Evolution 3.38.1 (3.38.1-1.fc33) MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Le mardi 17 novembre 2020 à 09:44 +0100, Neil Armstrong a écrit : > The GE2D is a 2D accelerator with various features like configurable blitter > with alpha blending, frame rotation, scaling, format conversion and colorspace > conversion. > > The driver implements a Memory2Memory VB2 V4L2 streaming device permitting: > - 0, 90, 180, 270deg rotation > - horizontal/vertical flipping > - source cropping > - destination compositing > - 32bit/24bit/16bit format conversion > > This adds the support for the GE2D version found in the AXG SoCs Family. > > The missing features are: > - Source scaling > - Colorspace conversion > - Advanced alpha blending & blitting options Is there some Open Source software using this driver ? GStreamer got some support, but it's mostly focused on CSC and Scaling (flipping should work, but rotation is not implemented). But I'm not aware of anything else, hence asking. > > Dependencies: > - Patches 1-3: None > - Patch 4: > https://lkml.kernel.org/r/20200915124553.8056-1-narmstrong@baylibre.com (appli > ed for 5.11) > > Changes since v2: > - removed error check in and after get_frame() > - moved the v4l2_file_operations lower in the code to avoid adding > vidioc_setup_cap_fmt on top > - removed all memcpy of pix_fmt > - simplified & fixed ge2d_start_streaming > - added local buffer type check in vidioc_g_selection instead of using > get_frame error > - removed impossible <0 rectangle check, fixed error string > - added comment on condition after V4L2_CID_ROTATE > > Changes since v1: > - Rebased on v5.10-rc1 > > / # v4l2-compliance -s > v4l2-compliance SHA: ea16a7ef13a902793a5c2626b0cefc4d956147f3, 64 bits, 64-bit > time_t > > Compliance test for meson-ge2d device /dev/video0: > > Driver Info: >         Driver name      : meson-ge2d >         Card type        : meson-ge2d >         Bus info         : platform:meson-ge2d >         Driver version   : 5.9.0 >         Capabilities     : 0x84208000 >                 Video Memory-to-Memory >                 Streaming >                 Extended Pix Format >                 Device Capabilities >         Device Caps      : 0x04208000 >                 Video Memory-to-Memory >                 Streaming >                 Extended Pix Format > > Required ioctls: >         test VIDIOC_QUERYCAP: OK > > Allow for multiple opens: >         test second /dev/video0 open: OK >         test VIDIOC_QUERYCAP: OK >         test VIDIOC_G/S_PRIORITY: OK >         test for unlimited opens: OK > >         test invalid ioctls: OK > Debug ioctls: >         test VIDIOC_DBG_G/S_REGISTER: OK >         test VIDIOC_LOG_STATUS: OK (Not Supported) > > Input ioctls: >         test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported) >         test VIDIOC_G/S_FREQUENCY: OK (Not Supported) >         test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported) >         test VIDIOC_ENUMAUDIO: OK (Not Supported) >         test VIDIOC_G/S/ENUMINPUT: OK (Not Supported) >         test VIDIOC_G/S_AUDIO: OK (Not Supported) >         Inputs: 0 Audio Inputs: 0 Tuners: 0 > > Output ioctls: >         test VIDIOC_G/S_MODULATOR: OK (Not Supported) >         test VIDIOC_G/S_FREQUENCY: OK (Not Supported) >         test VIDIOC_ENUMAUDOUT: OK (Not Supported) >         test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported) >         test VIDIOC_G/S_AUDOUT: OK (Not Supported) >         Outputs: 0 Audio Outputs: 0 Modulators: 0 > > Input/Output configuration ioctls: >         test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported) >         test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported) >         test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported) >         test VIDIOC_G/S_EDID: OK (Not Supported) > > Control ioctls: >         test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK >         test VIDIOC_QUERYCTRL: OK >         test VIDIOC_G/S_CTRL: OK >         test VIDIOC_G/S/TRY_EXT_CTRLS: OK >         test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK >         test VIDIOC_G/S_JPEGCOMP: OK (Not Supported) >         Standard Controls: 4 Private Controls: 0 > > Format ioctls: >         test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK >         test VIDIOC_G/S_PARM: OK (Not Supported) >         test VIDIOC_G_FBUF: OK (Not Supported) >         test VIDIOC_G_FMT: OK >         test VIDIOC_TRY_FMT: OK >         test VIDIOC_S_FMT: OK >         test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported) >         test Cropping: OK >         test Composing: OK >         test Scaling: OK (Not Supported) > > Codec ioctls: >         test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported) >         test VIDIOC_G_ENC_INDEX: OK (Not Supported) >         test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported) > > Buffer ioctls: >         test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK >         test VIDIOC_EXPBUF: OK >         test Requests: OK (Not Supported) > > Test input 0: > > Streaming ioctls: >         test read/write: OK (Not Supported) >         test blocking wait: OK >         Video Capture: Captured 58 buffers                >         test MMAP (no poll): OK >         Video Capture: Captured 58 buffers                >         test MMAP (select): OK >         Video Capture: Captured 58 buffers                >         test MMAP (epoll): OK >         test USERPTR (no poll): OK (Not Supported) >         test USERPTR (select): OK (Not Supported) >         test DMABUF: Cannot test, specify --expbuf-device > > Total for meson-ge2d device /dev/video0: 52, Succeeded: 52, Failed: 0, > Warnings: 0 > > Neil Armstrong (4): >   dt-bindings: media: Add bindings for the Amlogic GE2D Accelerator Unit >   media: meson: Add M2M driver for the Amlogic GE2D Accelerator Unit >   MAINTAINERS: Add myself as maintainer of the Amlogic GE2D driver >   arm64: dts: meson-axg: add GE2D node > >  .../bindings/media/amlogic,axg-ge2d.yaml      |   47 + >  MAINTAINERS                                   |    9 + >  arch/arm64/boot/dts/amlogic/meson-axg.dtsi    |    9 + >  drivers/media/platform/Kconfig                |   13 + >  drivers/media/platform/Makefile               |    2 + >  drivers/media/platform/meson/ge2d/Makefile    |    3 + >  drivers/media/platform/meson/ge2d/ge2d-regs.h |  360 ++++++ >  drivers/media/platform/meson/ge2d/ge2d.c      | 1091 +++++++++++++++++ >  8 files changed, 1534 insertions(+) >  create mode 100644 Documentation/devicetree/bindings/media/amlogic,axg- > ge2d.yaml >  create mode 100644 drivers/media/platform/meson/ge2d/Makefile >  create mode 100644 drivers/media/platform/meson/ge2d/ge2d-regs.h >  create mode 100644 drivers/media/platform/meson/ge2d/ge2d.c >