From nobody Fri Dec 19 15:00:25 2025 Received: from mail-lj1-f174.google.com (mail-lj1-f174.google.com [209.85.208.174]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B8E584C6D for ; Sat, 6 Dec 2025 10:15:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.174 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765016152; cv=none; b=StbymMo4KkVsYi61h0DOe+LzgrKQEOGWoN2TlCK0GtLtK7s7DuplmddrFEiLxTkGrsj9ijsHXhZ9tM8d4yoQhWcAk1wxfprFDHr4TrJ3Umtd5MVy9vs8lo9rIEA+qJf4e6f556iOeSD7LtcZ2sG7hDnOeC168vUUJWu2GXWGuHE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765016152; c=relaxed/simple; bh=m5XQ03NkmU7Dyvrl3uNqx25v8w2wEU616h/uh5i28kk=; h=From:To:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=YI+1vXe3pskeC0fXpyOVX87kPVlG2EomJ+QnhcwiFCeRX3kgu/D/aXqYeE8IkSbOnawHpG3cQaO10kGwPgBnCOF4Hmv0DIVw8ynIyAdwvJU+DIfLCKm/ZDNWXxiFVMnmTZQV0NcHlx+9jvhy0MuY8mj9ObFvbE6JTxipt3SubrU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=lj0Ng4fH; arc=none smtp.client-ip=209.85.208.174 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="lj0Ng4fH" Received: by mail-lj1-f174.google.com with SMTP id 38308e7fff4ca-37a5bc6b491so25623511fa.0 for ; Sat, 06 Dec 2025 02:15:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1765016149; x=1765620949; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=HePzOK2YwREM++8Zxr7PF7Xhi3Zuwv6TtIklSs2K0TA=; b=lj0Ng4fHhKyZnffsFWOyUdxN9mhGhuk5YVdeCuAExYYHc77gzDxiDHvkZYVme3b2Tf 9q9svmFjPIKAhZC69QsBLOo2Ks4Qi0hNDtU0dquUbqUGJS7SVi2LvFJAh2mvfXvUkBIQ 8M9ngVuAgZALxqmxJex/lSPXHRQs9b6/JHTLv2Fwv49LjtA5n7ybhnsansYUqwVzSae4 e+rWWl1GOxMA/7RQwFW6Vvc2bOc8dDq/5qflpbK0AwntN8ZfQGj3zLaID+lFyCxNeva6 4zshJAxvWFeHRJOH1ASTAXRMe/p87Iu5WeowpBbPX+xEekxNAckxJE9GrxnoU5yl34vS Mnjg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765016149; x=1765620949; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=HePzOK2YwREM++8Zxr7PF7Xhi3Zuwv6TtIklSs2K0TA=; b=wSWbmZ2bzPljCXpW5HK2udsJkiVpR+Q0xcskUEhQ+3g2xmWnt3KNe5O2kzpik/7X6c wtmiWvzTYmnEMIz08z0ELMluS8wsAB8SQ92zualUY5qUtd+JGC9pDABLgGPn9zofPpem 17w09wpjrdZZgAhMTuAJ5mtwFWU5UslLtSlbglKCCT5NtymbgY5EQOdfvPnivB8vGwhb EE9fN55bPdCOETPlUn2Zs01jqundAshqtZ8d1aaydNbDjJZzdeyPoD+VOnNiS8LRo4D2 cPoot0QZux5kUSkB8dbU9LmBTnbsuExrLcNy+lMNfqZ2iSDeKXx2F72GQqW2nGOakCjt hehA== X-Forwarded-Encrypted: i=1; AJvYcCXfavooFApyniiingFY/+FR4N8o1QtFW4SQM/8S1hdeL5V/MnR7bKJejc0f6S91ViPdQ+JeO2gF+Ydl/A0=@vger.kernel.org X-Gm-Message-State: AOJu0YxWvxP1wjgHnjo0XFv8Z5Lcin93FM5wVzKOmyCjhvrlFQhrF3oL tpLF/JAO0O1R3PREic696eFC4hCD2YK5uaYrKIaIuWoWqc87w/PgkrDKCS8QOroWNrI= X-Gm-Gg: ASbGncstI/490veumG6GzqIAj52oZrbfJD0ZNM8wYq5GRzN4FWDUAPHlwZdGGtYaEEg MRNjvSibRXujWTlT4s6OAxG3iwVvck5DtpAAYhi/Uj6q9TzJHhGZKOlM2q/bKZRWaKBz+Zf2XaZ LjC8MpA8+O5Mcx4UY/Oj9apPg5XxNwWBpHqp7AIm4RjZNMcueLu9lJbZ+OAqD+LLzAS7/+sc0OE WboVmuFSJZ7Ngf5bFb3Ml94J3mhtCY7MRPijdtTJLKINErz7eFIBzXl9YWjxLD0EV1UtOkVLdnB sKP2Fa23VDU7zwtFitrnnVi21FvIf5r6R9DaIKYsgsVcJNyViPHvoqnU/qfk+/WEErSeTK2RhXi cg1lJ7Z552zth8rMsvT9/u028IT14s0Y/QYUvWniiFqoiWxM797EfflIA2hDBqp44AMfo0x0Zgx VvIM3cI+xQG0QAih0= X-Google-Smtp-Source: AGHT+IHZhU14o4ScBHW4P11RxOcWO7E57dLHDLPGPlafHtqW8aK0T9R3cLmmCnbIYLub9+VE97fizQ== X-Received: by 2002:a05:600c:8b0c:b0:477:a219:cdb7 with SMTP id 5b1f17b1804b1-47939c8b376mr21743575e9.0.1765009703680; Sat, 06 Dec 2025 00:28:23 -0800 (PST) Received: from toolbox.. ([87.200.95.144]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-479310a6d9dsm123094705e9.2.2025.12.06.00.28.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 06 Dec 2025 00:28:23 -0800 (PST) From: Christian Hewitt To: Detlev Casanova , =?UTF-8?q?Olivier=20Cr=C3=AAte?= , Ezequiel Garcia , Mauro Carvalho Chehab , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Heiko Stuebner , Diederik de Haas , Dmitry Osipenko , Thomas Gleixner , Dragan Simic , Chukun Pan , linux-media@vger.kernel.org, linux-rockchip@lists.infradead.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH 3/4] media: rkvdec: Add support for the VDPU346 variant Date: Sat, 6 Dec 2025 08:28:08 +0000 Message-Id: <20251206082809.2040679-4-christianshewitt@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20251206082809.2040679-1-christianshewitt@gmail.com> References: <20251206082809.2040679-1-christianshewitt@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" VDPU346 is derived from VDPU381 but with a single core and limited to 4K60 media. It is also limited to H264 L5.1 and omits AV1 and AVS2 capabilities. It is used with RK3566 and RK3568. Signed-off-by: Christian Hewitt --- .../media/platform/rockchip/rkvdec/rkvdec.c | 110 ++++++++++++++++++ 1 file changed, 110 insertions(+) diff --git a/drivers/media/platform/rockchip/rkvdec/rkvdec.c b/drivers/medi= a/platform/rockchip/rkvdec/rkvdec.c index a1c02ef3a97c..cf68454b2217 100644 --- a/drivers/media/platform/rockchip/rkvdec/rkvdec.c +++ b/drivers/media/platform/rockchip/rkvdec/rkvdec.c @@ -295,6 +295,62 @@ static const struct rkvdec_ctrls rkvdec_h264_ctrls =3D= { .num_ctrls =3D ARRAY_SIZE(rkvdec_h264_ctrl_descs), }; =20 +static const struct rkvdec_ctrl_desc vdpu346_hevc_ctrl_descs[] =3D { + { + .cfg.id =3D V4L2_CID_STATELESS_HEVC_DECODE_PARAMS, + }, + { + .cfg.id =3D V4L2_CID_STATELESS_HEVC_SPS, + .cfg.ops =3D &rkvdec_ctrl_ops, + }, + { + .cfg.id =3D V4L2_CID_STATELESS_HEVC_PPS, + }, + { + .cfg.id =3D V4L2_CID_STATELESS_HEVC_SCALING_MATRIX, + }, + { + .cfg.id =3D V4L2_CID_STATELESS_HEVC_DECODE_MODE, + .cfg.min =3D V4L2_STATELESS_HEVC_DECODE_MODE_FRAME_BASED, + .cfg.max =3D V4L2_STATELESS_HEVC_DECODE_MODE_FRAME_BASED, + .cfg.def =3D V4L2_STATELESS_HEVC_DECODE_MODE_FRAME_BASED, + }, + { + .cfg.id =3D V4L2_CID_STATELESS_HEVC_START_CODE, + .cfg.min =3D V4L2_STATELESS_HEVC_START_CODE_ANNEX_B, + .cfg.def =3D V4L2_STATELESS_HEVC_START_CODE_ANNEX_B, + .cfg.max =3D V4L2_STATELESS_HEVC_START_CODE_ANNEX_B, + }, + { + .cfg.id =3D V4L2_CID_MPEG_VIDEO_HEVC_PROFILE, + .cfg.min =3D V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN, + .cfg.max =3D V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_10, + .cfg.menu_skip_mask =3D + BIT(V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_STILL_PICTURE), + .cfg.def =3D V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN, + }, + { + .cfg.id =3D V4L2_CID_MPEG_VIDEO_HEVC_LEVEL, + .cfg.min =3D V4L2_MPEG_VIDEO_HEVC_LEVEL_1, + .cfg.max =3D V4L2_MPEG_VIDEO_HEVC_LEVEL_5_1, + }, + { + .cfg.id =3D V4L2_CID_STATELESS_HEVC_EXT_SPS_ST_RPS, + .cfg.ops =3D &rkvdec_ctrl_ops, + .cfg.dims =3D { 65 }, + }, + { + .cfg.id =3D V4L2_CID_STATELESS_HEVC_EXT_SPS_LT_RPS, + .cfg.ops =3D &rkvdec_ctrl_ops, + .cfg.dims =3D { 65 }, + }, +}; + +static const struct rkvdec_ctrls vdpu346_hevc_ctrls =3D { + .ctrls =3D vdpu346_hevc_ctrl_descs, + .num_ctrls =3D ARRAY_SIZE(vdpu346_hevc_ctrl_descs), +}; + static const struct rkvdec_ctrl_desc vdpu38x_hevc_ctrl_descs[] =3D { { .cfg.id =3D V4L2_CID_STATELESS_HEVC_DECODE_PARAMS, @@ -449,6 +505,43 @@ static const struct rkvdec_coded_fmt_desc rkvdec_coded= _fmts[] =3D { } }; =20 +static const struct rkvdec_coded_fmt_desc vdpu346_coded_fmts[] =3D { + { + .fourcc =3D V4L2_PIX_FMT_H264_SLICE, + .frmsize =3D { + .min_width =3D 64, + .max_width =3D 65520, + .step_width =3D 64, + .min_height =3D 64, + .max_height =3D 65520, + .step_height =3D 16, + }, + .ctrls =3D &rkvdec_h264_ctrls, + .ops =3D &rkvdec_vdpu381_h264_fmt_ops, + .num_decoded_fmts =3D ARRAY_SIZE(rkvdec_h264_decoded_fmts), + .decoded_fmts =3D rkvdec_h264_decoded_fmts, + .subsystem_flags =3D VB2_V4L2_FL_SUPPORTS_M2M_HOLD_CAPTURE_BUF, + .capability =3D RKVDEC_CAPABILITY_H264, + }, + { + .fourcc =3D V4L2_PIX_FMT_HEVC_SLICE, + .frmsize =3D { + .min_width =3D 64, + .max_width =3D 65472, + .step_width =3D 64, + .min_height =3D 64, + .max_height =3D 65472, + .step_height =3D 16, + }, + .ctrls =3D &vdpu346_hevc_ctrls, + .ops =3D &rkvdec_vdpu381_hevc_fmt_ops, + .num_decoded_fmts =3D ARRAY_SIZE(rkvdec_hevc_decoded_fmts), + .decoded_fmts =3D rkvdec_hevc_decoded_fmts, + .subsystem_flags =3D VB2_V4L2_FL_SUPPORTS_M2M_HOLD_CAPTURE_BUF, + .capability =3D RKVDEC_CAPABILITY_HEVC, + }, +}; + static const struct rkvdec_coded_fmt_desc vdpu381_coded_fmts[] =3D { { .fourcc =3D V4L2_PIX_FMT_H264_SLICE, @@ -1654,6 +1747,19 @@ static const struct rkvdec_variant rk3399_rkvdec_var= iant =3D { RKVDEC_CAPABILITY_VP9, }; =20 +static const struct rkvdec_variant rk3568_vdpu346_variant =3D { + .coded_fmts =3D vdpu346_coded_fmts, + .num_coded_fmts =3D ARRAY_SIZE(vdpu346_coded_fmts), + .rcb_sizes =3D vdpu381_rcb_sizes, + .num_rcb_sizes =3D ARRAY_SIZE(vdpu381_rcb_sizes), + .irq_handler =3D vdpu381_irq_handler, + .colmv_size =3D rkvdec_colmv_size, + .flatten_matrices =3D transpose_and_flatten_matrices, + .named_regs =3D true, + .capabilities =3D RKVDEC_CAPABILITY_H264 | + RKVDEC_CAPABILITY_HEVC, +}; + static const struct rkvdec_variant rk3588_vdpu381_variant =3D { .coded_fmts =3D vdpu381_coded_fmts, .num_coded_fmts =3D ARRAY_SIZE(vdpu381_coded_fmts), @@ -1693,6 +1799,10 @@ static const struct of_device_id of_rkvdec_match[] = =3D { .compatible =3D "rockchip,rk3399-vdec", .data =3D &rk3399_rkvdec_variant, }, + { + .compatible =3D "rockchip,rk3568-vdec", + .data =3D &rk3568_vdpu346_variant, + }, { .compatible =3D "rockchip,rk3588-vdec", .data =3D &rk3588_vdpu381_variant, --=20 2.34.1