Received: by 2002:a05:7412:8521:b0:e2:908c:2ebd with SMTP id t33csp1808301rdf; Sun, 5 Nov 2023 15:37:09 -0800 (PST) X-Google-Smtp-Source: AGHT+IGB9JhIRZkHJNDkMM02gZrAK6rE6Amp1uPti8OqUB5TX2YrV8hU+DA4PsJikaSsExhN3ZF3 X-Received: by 2002:a9d:7499:0:b0:6b9:1917:b2f3 with SMTP id t25-20020a9d7499000000b006b91917b2f3mr27347600otk.33.1699227429646; Sun, 05 Nov 2023 15:37:09 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1699227429; cv=none; d=google.com; s=arc-20160816; b=pn9gNxG26ZDpG0ci8XcddInPkf5E/0ouOcYYI8FczvpsonFUl8YKvzCHjS1H3B846H YNGN6P7agxrwt7z83gEpG1zpW40d14lQuQOiTrWBsduOryXA/IQMW2Q25wzfhZwUs3Ec 6G+n4crjAW23gqpOTY8+A8yIeTIU1TsijpjJf2Z0kPaPKbritXZ4PmcCSlSUcj6FBVV3 wxocrYw4horLLOXt3M3R8HgXCbCym6afiuLCtynlSaUwazcB+1y7OutlHLIpa1scPgPn +FecIMaisAzbvSqjYPQKk9muaS63/gtqjqOM+Hhzo+H24cUUSTGPsFbNvtpDnwR8Dn7x Gbmw== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=BC/o7NVv2ms3W3hOMNL4HECxSEB8gFpPZJJfV/rOs8U=; fh=pTNxZ/e/8zxMviiX6D6YTIaumOzzEIf4YzSSeiXUsg8=; b=DKyYYmDCy2sWB84pfZahAOQgGF5uvmMuIyiclD7EoRuqt1YKe0HysFF2OJgl1P0RMw CJBgQ881RVccpqt34mZckKPfIQWdvfwDwvwcTO2nkxlVay3f6cWhnMe9qFqFAxpoAPYp D8loANGF5zQR5pfN63a4BF7b5YIN25zvorqw2CsNKnQP0ual8FUydU0IXNiU7NTyqfs2 NaOWk2r72mtHnsXbISOiNo2rdtphqJiHBnMjV8qBcg6yJYRZ8079kozeEkZS8tAI2F9Y lsMH631s2+D3afsEjSFWMooHM9Q4mvdb2WhhKq6UvvXgF2QWwNMioV3TaYvWG8eHo2h/ abng== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kwiboo.se header.s=fe-e1b5cab7be header.b=bloL5d0D; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kwiboo.se Return-Path: Received: from snail.vger.email (snail.vger.email. [23.128.96.37]) by mx.google.com with ESMTPS id y7-20020a056a001c8700b0068e405d9217si7029166pfw.302.2023.11.05.15.37.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Nov 2023 15:37:09 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) client-ip=23.128.96.37; Authentication-Results: mx.google.com; dkim=pass header.i=@kwiboo.se header.s=fe-e1b5cab7be header.b=bloL5d0D; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kwiboo.se Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id A44DA80C5FA8; Sun, 5 Nov 2023 15:37:08 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230024AbjKEXhF (ORCPT + 99 others); Sun, 5 Nov 2023 18:37:05 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35940 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229485AbjKEXhE (ORCPT ); Sun, 5 Nov 2023 18:37:04 -0500 Received: from smtp.forwardemail.net (smtp.forwardemail.net [149.28.215.223]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E1D77100; Sun, 5 Nov 2023 15:37:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kwiboo.se; h=Content-Transfer-Encoding: MIME-Version: References: In-Reply-To: Message-ID: Date: Subject: Cc: To: From; q=dns/txt; s=fe-e1b5cab7be; t=1699227416; bh=BC/o7NVv2ms3W3hOMNL4HECxSEB8gFpPZJJfV/rOs8U=; b=bloL5d0DNLnha3nWmU1yoFjnmv5z11FLbbMWD9G1BQP3kZM03tNHAFRTZuSJoiJcvxoubA6Sx vToHA/SxM/wwG8VifFzaVGDaMULX1KDQSgkAX1MyfGyzQN4DsS8+zmY7v9xT3X+QLsLAeTkRFdY qUPY3pG9N1AQf/hT3f6M1bxh8I6ubevy8CKkQ1D681Ad3eYDMGvYMvyYTk7Q4lqG2o4s+4D9sTI uoMpfiNXa0+eHUDqxvJGHqNnZkjuwOykrwzMiIemnIzNXVV+fDW45h+agKDeQnsfRjMC4hg93gq pYUMzcbNkXsRfyKhfIEj5CuLMCMKsR3reM/j9oB5kiqQ== From: Jonas Karlman To: Ezequiel Garcia , Mauro Carvalho Chehab , Hans Verkuil , "Greg Kroah-Hartman" Cc: Alex Bee , Nicolas Dufresne , Sebastian Fricke , Benjamin Gaignard , Christopher Obbard , linux-media@vger.kernel.org, linux-rockchip@lists.infradead.org, linux-staging@lists.linux.dev, linux-kernel@vger.kernel.org, Jonas Karlman Subject: [PATCH 2/9] media: rkvdec: Add variants support Date: Sun, 5 Nov 2023 23:36:09 +0000 Message-ID: <20231105233630.3927502-3-jonas@kwiboo.se> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20231105233630.3927502-1-jonas@kwiboo.se> References: <20231105233630.3927502-1-jonas@kwiboo.se> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Report-Abuse-To: abuse@forwardemail.net X-Report-Abuse: abuse@forwardemail.net X-Complaints-To: abuse@forwardemail.net X-ForwardEmail-Version: 0.4.40 X-ForwardEmail-Sender: rfc822; jonas@kwiboo.se, smtp.forwardemail.net, 149.28.215.223 X-ForwardEmail-ID: 654827131b004d4cddbe0c66 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Sun, 05 Nov 2023 15:37:08 -0800 (PST) From: Alex Bee Different versions of the Rockchip VDEC IP exists and one way they can differ is what decoding formats are supported. Add a variant implementation in order to support flagging different capabilities. Signed-off-by: Alex Bee Signed-off-by: Jonas Karlman --- drivers/staging/media/rkvdec/rkvdec.c | 21 ++++++++++++++++++++- drivers/staging/media/rkvdec/rkvdec.h | 10 ++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/drivers/staging/media/rkvdec/rkvdec.c b/drivers/staging/media/rkvdec/rkvdec.c index eec68a7a1c95..dc1f75dd1c4f 100644 --- a/drivers/staging/media/rkvdec/rkvdec.c +++ b/drivers/staging/media/rkvdec/rkvdec.c @@ -13,6 +13,7 @@ #include #include #include +#include #include #include #include @@ -332,6 +333,7 @@ static const struct rkvdec_coded_fmt_desc rkvdec_coded_fmts[] = { .ops = &rkvdec_hevc_fmt_ops, .num_decoded_fmts = ARRAY_SIZE(rkvdec_hevc_decoded_fmts), .decoded_fmts = rkvdec_hevc_decoded_fmts, + .capability = RKVDEC_CAPABILITY_HEVC, }, { .fourcc = V4L2_PIX_FMT_H264_SLICE, @@ -348,6 +350,7 @@ static const struct rkvdec_coded_fmt_desc rkvdec_coded_fmts[] = { .num_decoded_fmts = ARRAY_SIZE(rkvdec_h264_decoded_fmts), .decoded_fmts = rkvdec_h264_decoded_fmts, .subsystem_flags = VB2_V4L2_FL_SUPPORTS_M2M_HOLD_CAPTURE_BUF, + .capability = RKVDEC_CAPABILITY_H264, }, { .fourcc = V4L2_PIX_FMT_VP9_FRAME, @@ -363,6 +366,7 @@ static const struct rkvdec_coded_fmt_desc rkvdec_coded_fmts[] = { .ops = &rkvdec_vp9_fmt_ops, .num_decoded_fmts = ARRAY_SIZE(rkvdec_vp9_decoded_fmts), .decoded_fmts = rkvdec_vp9_decoded_fmts, + .capability = RKVDEC_CAPABILITY_VP9, } }; @@ -1167,8 +1171,17 @@ static void rkvdec_watchdog_func(struct work_struct *work) } } +static const struct rkvdec_variant rk3399_rkvdec_variant = { + .capabilities = RKVDEC_CAPABILITY_HEVC | + RKVDEC_CAPABILITY_H264 | + RKVDEC_CAPABILITY_VP9, +}; + static const struct of_device_id of_rkvdec_match[] = { - { .compatible = "rockchip,rk3399-vdec" }, + { + .compatible = "rockchip,rk3399-vdec", + .data = &rk3399_rkvdec_variant, + }, { /* sentinel */ } }; MODULE_DEVICE_TABLE(of, of_rkvdec_match); @@ -1179,16 +1192,22 @@ static const char * const rkvdec_clk_names[] = { static int rkvdec_probe(struct platform_device *pdev) { + const struct rkvdec_variant *variant; struct rkvdec_dev *rkvdec; unsigned int i; int ret, irq; + variant = of_device_get_match_data(&pdev->dev); + if (!variant) + return -EINVAL; + rkvdec = devm_kzalloc(&pdev->dev, sizeof(*rkvdec), GFP_KERNEL); if (!rkvdec) return -ENOMEM; platform_set_drvdata(pdev, rkvdec); rkvdec->dev = &pdev->dev; + rkvdec->capabilities = variant->capabilities; mutex_init(&rkvdec->vdev_lock); INIT_DELAYED_WORK(&rkvdec->watchdog_work, rkvdec_watchdog_func); diff --git a/drivers/staging/media/rkvdec/rkvdec.h b/drivers/staging/media/rkvdec/rkvdec.h index 2f3bda1df5f0..14ce26a6c618 100644 --- a/drivers/staging/media/rkvdec/rkvdec.h +++ b/drivers/staging/media/rkvdec/rkvdec.h @@ -22,6 +22,10 @@ #include #include +#define RKVDEC_CAPABILITY_HEVC BIT(0) +#define RKVDEC_CAPABILITY_H264 BIT(1) +#define RKVDEC_CAPABILITY_VP9 BIT(2) + struct rkvdec_ctx; struct rkvdec_ctrl_desc { @@ -63,6 +67,10 @@ vb2_to_rkvdec_decoded_buf(struct vb2_buffer *buf) base.vb.vb2_buf); } +struct rkvdec_variant { + unsigned int capabilities; +}; + struct rkvdec_coded_fmt_ops { int (*adjust_fmt)(struct rkvdec_ctx *ctx, struct v4l2_format *f); @@ -98,6 +106,7 @@ struct rkvdec_coded_fmt_desc { unsigned int num_decoded_fmts; const struct rkvdec_decoded_fmt_desc *decoded_fmts; u32 subsystem_flags; + unsigned int capability; }; struct rkvdec_dev { @@ -110,6 +119,7 @@ struct rkvdec_dev { void __iomem *regs; struct mutex vdev_lock; /* serializes ioctls */ struct delayed_work watchdog_work; + unsigned int capabilities; }; struct rkvdec_ctx { -- 2.42.0