From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-18.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING,SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 30F94C388F9 for ; Sun, 22 Nov 2020 01:02:51 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id E8B3820867 for ; Sun, 22 Nov 2020 01:02:50 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=vanguardiasur-com-ar.20150623.gappssmtp.com header.i=@vanguardiasur-com-ar.20150623.gappssmtp.com header.b="gl5hVqbv" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726693AbgKVBC3 (ORCPT ); Sat, 21 Nov 2020 20:02:29 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40234 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726431AbgKVBC3 (ORCPT ); Sat, 21 Nov 2020 20:02:29 -0500 Received: from mail-ej1-x643.google.com (mail-ej1-x643.google.com [IPv6:2a00:1450:4864:20::643]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CD6C5C0613CF for ; Sat, 21 Nov 2020 17:02:28 -0800 (PST) Received: by mail-ej1-x643.google.com with SMTP id f20so18258849ejz.4 for ; Sat, 21 Nov 2020 17:02:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vanguardiasur-com-ar.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=K9oj1jZNjwyubHbEqnynv/Se7vgMAMWMdAYmcz95zz4=; b=gl5hVqbvJq6lGDv65VLLiqYwVVAm7B6II0IjXvMyOIrz+3IEyepw7gAW8PJjwh6EWH rAE63Vkk5piYgj1aF6EuSNhUVZXT5367JFsQm1+XuX3FOUPZ8xTZUUSbncx0M33JRfDU vQfKgKTc9ApnZ5kGFQLD/ICX8UYq+LRLSQd2rS+fXDXSGZtnb4uOsPNUVpjX51E2O9hC ooCOZi9K4UnJ1OjYY19DRHqQ/vEG5E/+juICcTKi5ay5uDX1rQPX+eeAYtiWxWcBGIOY J89iSrgf0gTCXFVtNYfyKzueS5eslYawQ5k538XhMAHXdZ3fTi0nu9dn1VJA9dGEyyJC aOTw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=K9oj1jZNjwyubHbEqnynv/Se7vgMAMWMdAYmcz95zz4=; b=sdGYGCN2MahmGHcn9nAPQdAbofvpOrzSk8oSdE9sRE3F1kSPzMNOqVVZ+mdvPdvmfU 02IvVDFL1AT2/SFhAi9DNARecXYCF3mpWvDWVa9fgm1x7jFTBFn74No3dkcebpn14cbq DyhVCtYh9433oPWcybnzqKHWKMMkKhwg11AXXlZgiNZ9QYgDQp97R0dsODEYVXDVHTIv 0G9r620re5Hsd0wwbh+iYP+8vpuccR1q6D6des6ll7H0jF1LjcwkjtNLgGjsR4+BjBA4 44WhvfgSpAGsT2cEDyaqQchyfAk+S4rRioiizGF5rlcKYnNDmPbrCF2mUAlBZ+ZYm2Gz XWhw== X-Gm-Message-State: AOAM532H9TS30EtZmf/Ij8Rcq41rpgiotR6RvBi+ol5F9vSZj1gqfF6O nd2BA+BH6JgAt6Q5hptW3K21dEmKFe9bglPrrHI+JA== X-Google-Smtp-Source: ABdhPJwtHhPutwaLggyGRigreNs+Yh/IGc/u3dvhTaCjpSNNitrzRtnUzEaROcW0wXLe6/ECG/ujJxHoUFAXGP6U7ok= X-Received: by 2002:a17:906:1945:: with SMTP id b5mr38468149eje.388.1606006947375; Sat, 21 Nov 2020 17:02:27 -0800 (PST) MIME-Version: 1.0 References: <3d565db80f8dccafd14224924305243b37b75a07.1513038011.git.digetx@gmail.com> In-Reply-To: <3d565db80f8dccafd14224924305243b37b75a07.1513038011.git.digetx@gmail.com> From: Ezequiel Garcia Date: Sat, 21 Nov 2020 22:02:15 -0300 Message-ID: Subject: Re: [PATCH v5 2/4] staging: media: Introduce NVIDIA Tegra video decoder driver To: Dmitry Osipenko Cc: Thierry Reding , Jonathan Hunter , Stephen Warren , Greg Kroah-Hartman , Mauro Carvalho Chehab , Hans Verkuil , Vladimir Zapolskiy , Rob Herring , Dan Carpenter , linux-media , devel@driverdev.osuosl.org, devicetree , linux-tegra@vger.kernel.org, Linux Kernel Mailing List Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org Hi Dmitry, On Mon, 11 Dec 2017 at 21:27, Dmitry Osipenko wrote: > > NVIDIA Tegra20/30/114/124/132 SoC's have video decoder engine that > supports standard set of video formats like H.264 / MPEG-4 / WMV / VC1. > > Signed-off-by: Dmitry Osipenko > --- > MAINTAINERS | 9 + > drivers/staging/media/Kconfig | 2 + > drivers/staging/media/Makefile | 1 + > drivers/staging/media/tegra-vde/Kconfig | 7 + > drivers/staging/media/tegra-vde/Makefile | 1 + > drivers/staging/media/tegra-vde/TODO | 4 + > drivers/staging/media/tegra-vde/tegra-vde.c | 1213 +++++++++++++++++++++++++++ > drivers/staging/media/tegra-vde/uapi.h | 78 ++ > 8 files changed, 1315 insertions(+) > create mode 100644 drivers/staging/media/tegra-vde/Kconfig > create mode 100644 drivers/staging/media/tegra-vde/Makefile > create mode 100644 drivers/staging/media/tegra-vde/TODO > create mode 100644 drivers/staging/media/tegra-vde/tegra-vde.c > create mode 100644 drivers/staging/media/tegra-vde/uapi.h > > diff --git a/MAINTAINERS b/MAINTAINERS > index 7d195739f892..7f7c24949a06 100644 > --- a/MAINTAINERS > +++ b/MAINTAINERS > @@ -8706,6 +8706,15 @@ T: git git://linuxtv.org/media_tree.git > S: Maintained > F: drivers/media/dvb-frontends/stv6111* > > +MEDIA DRIVERS FOR NVIDIA TEGRA - VDE > +M: Dmitry Osipenko > +L: linux-media@vger.kernel.org > +L: linux-tegra@vger.kernel.org > +T: git git://linuxtv.org/media_tree.git > +S: Maintained > +F: Documentation/devicetree/bindings/media/nvidia,tegra-vde.txt > +F: drivers/staging/media/tegra-vde/ > + > MEDIA INPUT INFRASTRUCTURE (V4L/DVB) > M: Mauro Carvalho Chehab > M: Mauro Carvalho Chehab > diff --git a/drivers/staging/media/Kconfig b/drivers/staging/media/Kconfig > index 3a09140700e6..227437f22acf 100644 > --- a/drivers/staging/media/Kconfig > +++ b/drivers/staging/media/Kconfig > @@ -31,4 +31,6 @@ source "drivers/staging/media/imx/Kconfig" > > source "drivers/staging/media/omap4iss/Kconfig" > > +source "drivers/staging/media/tegra-vde/Kconfig" > + > endif > diff --git a/drivers/staging/media/Makefile b/drivers/staging/media/Makefile > index f25327163c67..59a47f69884f 100644 > --- a/drivers/staging/media/Makefile > +++ b/drivers/staging/media/Makefile > @@ -5,3 +5,4 @@ obj-$(CONFIG_VIDEO_IMX_MEDIA) += imx/ > obj-$(CONFIG_VIDEO_DM365_VPFE) += davinci_vpfe/ > obj-$(CONFIG_VIDEO_OMAP4) += omap4iss/ > obj-$(CONFIG_INTEL_ATOMISP) += atomisp/ > +obj-$(CONFIG_TEGRA_VDE) += tegra-vde/ > diff --git a/drivers/staging/media/tegra-vde/Kconfig b/drivers/staging/media/tegra-vde/Kconfig > new file mode 100644 > index 000000000000..ec3ddddebdaa > --- /dev/null > +++ b/drivers/staging/media/tegra-vde/Kconfig > @@ -0,0 +1,7 @@ > +config TEGRA_VDE > + tristate "NVIDIA Tegra Video Decoder Engine driver" > + depends on ARCH_TEGRA || COMPILE_TEST > + select SRAM > + help > + Say Y here to enable support for the NVIDIA Tegra video decoder > + driver. > diff --git a/drivers/staging/media/tegra-vde/Makefile b/drivers/staging/media/tegra-vde/Makefile > new file mode 100644 > index 000000000000..444c1d62daa1 > --- /dev/null > +++ b/drivers/staging/media/tegra-vde/Makefile > @@ -0,0 +1 @@ > +obj-$(CONFIG_TEGRA_VDE) += tegra-vde.o > diff --git a/drivers/staging/media/tegra-vde/TODO b/drivers/staging/media/tegra-vde/TODO > new file mode 100644 > index 000000000000..31aaa3e66d80 > --- /dev/null > +++ b/drivers/staging/media/tegra-vde/TODO > @@ -0,0 +1,4 @@ > +TODO: > + - Implement V4L2 API once it gains support for stateless decoders. > + > +Contact: Dmitry Osipenko The API for H264 stateless decoding is ready. See https://lkml.org/lkml/2020/11/18/795. One minor comment below. > diff --git a/drivers/staging/media/tegra-vde/uapi.h b/drivers/staging/media/tegra-vde/uapi.h > new file mode 100644 > index 000000000000..a50c7bcae057 > --- /dev/null > +++ b/drivers/staging/media/tegra-vde/uapi.h > @@ -0,0 +1,78 @@ > +/* > + * Copyright (C) 2016-2017 Dmitry Osipenko > + * > + * This program is free software; you can redistribute it and/or > + * modify it under the terms of the GNU General Public License > + * as published by the Free Software Foundation; either version > + * 2 of the License, or (at your option) any later version. > + */ > + > +#ifndef _UAPI_TEGRA_VDE_H_ > +#define _UAPI_TEGRA_VDE_H_ > + > +#include > +#include > + > +#define FLAG_B_FRAME (1 << 0) > +#define FLAG_REFERENCE (1 << 1) > + > +struct tegra_vde_h264_frame { > + __s32 y_fd; > + __s32 cb_fd; > + __s32 cr_fd; > + __s32 aux_fd; > + __u32 y_offset; > + __u32 cb_offset; > + __u32 cr_offset; > + __u32 aux_offset; > + __u32 frame_num; > + __u32 flags; > + > + __u32 reserved; > +} __attribute__((packed)); > + > +struct tegra_vde_h264_decoder_ctx { > + __s32 bitstream_data_fd; > + __u32 bitstream_data_offset; > + > + __u64 dpb_frames_ptr; > + __u8 dpb_frames_nb; > + __u8 dpb_ref_frames_with_earlier_poc_nb; > + > + // SPS > + __u8 baseline_profile; > + __u8 level_idc; > + __u8 log2_max_pic_order_cnt_lsb; > + __u8 log2_max_frame_num; > + __u8 pic_order_cnt_type; > + __u8 direct_8x8_inference_flag; > + __u8 pic_width_in_mbs; > + __u8 pic_height_in_mbs; > + > + // PPS > + __u8 pic_init_qp; > + __u8 deblocking_filter_control_present_flag; > + __u8 constrained_intra_pred_flag; > + __u8 chroma_qp_index_offset; > + __u8 pic_order_present_flag; > + This seems to be bottom_field_pic_order_in_frame_present_flag, as there is no "pic_order_present_flag" syntax element. Thanks, Ezequiel