Received: by 2002:a05:6a10:af89:0:0:0:0 with SMTP id iu9csp2099562pxb; Sat, 22 Jan 2022 16:14:52 -0800 (PST) X-Google-Smtp-Source: ABdhPJxujCQFW287uWzKZLzQ4i2welxKJYTTfR9V7dama4ebydHcF/3XcOMj24jDqqQ9fo00PgNt X-Received: by 2002:a17:90b:4c4e:: with SMTP id np14mr389583pjb.173.1642896892411; Sat, 22 Jan 2022 16:14:52 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1642896892; cv=none; d=google.com; s=arc-20160816; b=0bkm9OoCMMq6TOTggE2r7LACR3l8i83za8SjKPyXHfTWFY8Qd2Q2ZnfqHjmVppUYFa p/IPn8jCAYkmm2kS16JdLYs6urkKWggkOYmUVtDWEKKuu2bQZbvPH9SPvDFXO/g81/qU 3KmdK43coMCP9rt82MWEk8lR1N/jMSFMYWH+mgKpCrAP0mftHa2dvBijCnEHwPKJjHEP OW7IHdkuu8CH20Ww53WL58X9YJGXx8E8Pz3kUybPz0aCCzfLndncq3XmvTUbNxYTX8Hp yKwA5xCIHatfUJdie40/UKNIfdcsCri+G+AFQBPx5FzI/y9W07kPc0R2hDxR4LNWQm9y Rz6Q== 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 :message-id:date:subject:cc:to:from; bh=+rE5MFU68cUPXJSLdMAWC9PwrtT0ZSuubfMsxsbTI+U=; b=dA2HDTls8qFEIGPYivhvJAK1+iKlm9ma/wgngdgC5+j5k4r1zwtp0adBvrsWEgrWDN 30VE/PtFwebdU6y2YFKW89qpwYHGSoZTKRbMHmQ6XBdLN/X7wGFdBHh8Yrt+n4sEdOnD ZwaIhQjmyvfS7XMC7Qe2Wif6zgnoGN6qTkyNLzk03OgnqFZ+TLkUFF6dmdoP0nUOLa8P ey+bQPgUGhqgFH9gy5t5t9ovbzlenbr4yRfnOb6ioS0VtmJwG73Kfxo14OzP28qVbDDy dmCfEOqRRBnwUgU6G5z0ipNMZ4ss+IrpWP+xAr3PXOd3uyituoECfX4W/a7ghHJTboHt Ynhw== ARC-Authentication-Results: i=1; mx.google.com; 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id r25si10458038pge.741.2022.01.22.16.14.40; Sat, 22 Jan 2022 16:14:52 -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; 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232350AbiAVDx0 (ORCPT + 99 others); Fri, 21 Jan 2022 22:53:26 -0500 Received: from mailgw01.mediatek.com ([60.244.123.138]:57762 "EHLO mailgw01.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S229453AbiAVDxZ (ORCPT ); Fri, 21 Jan 2022 22:53:25 -0500 X-UUID: a95d656e13ed48c3909cec4a7f640fca-20220122 X-UUID: a95d656e13ed48c3909cec4a7f640fca-20220122 Received: from mtkcas10.mediatek.inc [(172.21.101.39)] by mailgw01.mediatek.com (envelope-from ) (Generic MTA with TLSv1.2 ECDHE-RSA-AES256-SHA384 256/256) with ESMTP id 1784651416; Sat, 22 Jan 2022 11:53:20 +0800 Received: from mtkcas11.mediatek.inc (172.21.101.40) by mtkmbs07n2.mediatek.inc (172.21.101.141) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Sat, 22 Jan 2022 11:53:19 +0800 Received: from localhost.localdomain (10.17.3.154) by mtkcas11.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Sat, 22 Jan 2022 11:53:17 +0800 From: Yunfei Dong To: Yunfei Dong , Alexandre Courbot , Hans Verkuil , Tzung-Bi Shih , Tiffany Lin , Andrew-CT Chen , Mauro Carvalho Chehab , Rob Herring , Matthias Brugger , Tomasz Figa CC: George Sun , Xiaoyong Lu , Hsin-Yi Wang , Fritz Koenig , Dafna Hirschfeld , Benjamin Gaignard , Daniel Vetter , dri-devel , Irui Wang , AngeloGioacchino Del Regno , Steve Cho , , , , , , , Subject: [PATCH v6, 00/15] media: mtk-vcodec: support for MT8192 decoder Date: Sat, 22 Jan 2022 11:53:01 +0800 Message-ID: <20220122035316.18179-1-yunfei.dong@mediatek.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Content-Transfer-Encoding: 7BIT Content-Type: text/plain; charset=US-ASCII X-MTK: N Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This series adds support for mt8192 h264/vp8/vp9 decoder drivers. Firstly, refactor power/clock/interrupt interfaces for mt8192 is lat and core architecture. Secondly, add new functions to get frame buffer size and resolution according to decoder capability from scp side. Then add callback function to get/put capture buffer in order to enable lat and core decoder in parallel. Then add to support MT21C compressed mode and fix v4l2-compliance fail. Next, extract H264 request api driver to let mt8183 and mt8192 use the same code, and adds mt8192 frame based h264 driver for stateless decoder. Lastly, add vp8 and vp9 stateless decoder drivers. Patches 1 refactor power/clock/interrupt interface. Patches 2~4 get frame buffer size and resolution according to decoder capability. Patches 5~6 enable lat and core decode in parallel. Patch 7~10 add to support MT21C compressed mode and fix v4l2-compliance fail. patch 11 record capture queue format type. Patch 12~13 extract h264 driver and add mt8192 frame based driver for h264 decoder. Patch 14~15 add vp8 and vp9 stateless decoder drivers. --- changes compared with v5: - fix vp9 comments for patch 15 - fix vp8 comments for patch 14. - fix comments for patch 12. - fix build errors. changes compared with v4: - fix checkpatch.pl fail. - fix kernel-doc fail. - rebase to the latest media codec driver. changes compared with v3: - remove enum mtk_chip for patch 2. - add vp8 stateless decoder drivers for patch 14. - add vp9 stateless decoder drivers for patch 15. changes compared with v2: - add new patch 11 to record capture queue format type. - separate patch 4 according to tzung-bi's suggestion. - re-write commit message for patch 5 according to tzung-bi's suggestion. changes compared with v1: - rewrite commit message for patch 12. - rewrite cover-letter message. --- Yunfei Dong (15): media: mtk-vcodec: Add vdec enable/disable hardware helpers media: mtk-vcodec: Using firmware type to separate different firmware architecture media: mtk-vcodec: get capture queue buffer size from scp media: mtk-vcodec: Read max resolution from dec_capability media: mtk-vcodec: Call v4l2_m2m_set_dst_buffered() set capture buffer buffered media: mtk-vcodec: Refactor get and put capture buffer flow media: mtk-vcodec: Refactor supported vdec formats and framesizes media: mtk-vcodec: Add format to support MT21C media: mtk-vcodec: disable vp8 4K capability media: mtk-vcodec: Fix v4l2-compliance fail media: mtk-vcodec: record capture queue format type media: mtk-vcodec: Extract H264 common code media: mtk-vcodec: support stateless H.264 decoding for mt8192 media: mtk-vcodec: support stateless VP8 decoding media: mtk-vcodec: support stateless VP9 decoding drivers/media/platform/mtk-vcodec/Makefile | 4 + .../platform/mtk-vcodec/mtk_vcodec_dec.c | 47 +- .../platform/mtk-vcodec/mtk_vcodec_dec_drv.c | 5 - .../platform/mtk-vcodec/mtk_vcodec_dec_pm.c | 168 +- .../platform/mtk-vcodec/mtk_vcodec_dec_pm.h | 6 +- .../mtk-vcodec/mtk_vcodec_dec_stateful.c | 14 +- .../mtk-vcodec/mtk_vcodec_dec_stateless.c | 282 ++- .../platform/mtk-vcodec/mtk_vcodec_drv.h | 40 +- .../platform/mtk-vcodec/mtk_vcodec_enc_drv.c | 5 - .../media/platform/mtk-vcodec/mtk_vcodec_fw.c | 6 + .../media/platform/mtk-vcodec/mtk_vcodec_fw.h | 1 + .../mtk-vcodec/vdec/vdec_h264_req_common.c | 310 +++ .../mtk-vcodec/vdec/vdec_h264_req_common.h | 253 +++ .../mtk-vcodec/vdec/vdec_h264_req_if.c | 440 +--- .../mtk-vcodec/vdec/vdec_h264_req_multi_if.c | 614 +++++ .../mtk-vcodec/vdec/vdec_vp8_req_if.c | 445 ++++ .../mtk-vcodec/vdec/vdec_vp9_req_lat_if.c | 1971 +++++++++++++++++ .../media/platform/mtk-vcodec/vdec_drv_if.c | 36 +- .../media/platform/mtk-vcodec/vdec_drv_if.h | 3 + .../media/platform/mtk-vcodec/vdec_ipi_msg.h | 36 + .../platform/mtk-vcodec/vdec_msg_queue.c | 2 + .../media/platform/mtk-vcodec/vdec_vpu_if.c | 53 +- .../media/platform/mtk-vcodec/vdec_vpu_if.h | 15 + .../media/platform/mtk-vcodec/venc_vpu_if.c | 2 +- include/linux/remoteproc/mtk_scp.h | 2 + 25 files changed, 4174 insertions(+), 586 deletions(-) create mode 100644 drivers/media/platform/mtk-vcodec/vdec/vdec_h264_req_common.c create mode 100644 drivers/media/platform/mtk-vcodec/vdec/vdec_h264_req_common.h create mode 100644 drivers/media/platform/mtk-vcodec/vdec/vdec_h264_req_multi_if.c create mode 100644 drivers/media/platform/mtk-vcodec/vdec/vdec_vp8_req_if.c create mode 100644 drivers/media/platform/mtk-vcodec/vdec/vdec_vp9_req_lat_if.c -- 2.25.1