From nobody Mon Feb 9 15:26:03 2026 Received: from mail-wm1-f51.google.com (mail-wm1-f51.google.com [209.85.128.51]) (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 7625D33C53D for ; Sat, 10 Jan 2026 05:37:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768023463; cv=none; b=dXK9i4yFxoYp5fp+NQ/bK9XEssHzDYOAV3RRaPXy3o8uI+iR1Fx3w/7ETh622niBmnhqFtVgF3JaOF8flKqyPPiiw3Au8tvo+Xhpps6LU+UEjc3Ue0B7XvC16StjlISsKTP/UcjedCC+WkcJyxH+KOKMW7zZobM/WPQblkClLls= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768023463; c=relaxed/simple; bh=WljOqNK74DzVd+siLPZsiFtaVwMXuKc/CKeyp/+23k4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=qaJHt7Bd6cmiKVsCKLnBDv3RI50m+jpedehS4k8mGjSUndVah4Nz8apoysFkl7W8fkR40r7XQuyaVQFkDJW/AdSZfziQxWqXcFzlcTBmle0km2lbp7GoU8g2SNU/FUuBPyeYuXmPE20M/QJcowFAlZDi77tWG+KF5XiyQlG2OsM= 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=VCBZqv4C; arc=none smtp.client-ip=209.85.128.51 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="VCBZqv4C" Received: by mail-wm1-f51.google.com with SMTP id 5b1f17b1804b1-47796a837c7so35146455e9.0 for ; Fri, 09 Jan 2026 21:37:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1768023460; x=1768628260; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=SwF/unBnaFW1rvIB2VegLLFRYP2bQTcQU4jqjcGifVk=; b=VCBZqv4CGVz8NveJQ5YLsu/1M6LCbbuLZ8Z4HcEqEBThZr+F6YjkvMgUZ2C41R3n8P IL7+f2qoplWdyLEeQ7k33Z7CNnKY8k6DCvK3FK/XNuzyo7WHVfYD1vNI9+kYVObuJWfW RMxqW0CNC6oYGoodferu7sA7YGZisdVNdu825ccoPk/fU7W2OWgWi42v9fuO3n9mw4fD ofUpRoYh7d7+fV6NEfxqC2PFjjRr+gJ3e4NRlwzq79/xwn9dTsUKbjyhDibz7Zk6Ggv6 dbjYJw2eWHhsg12XTrltfBXJXuD9DI1iBnnTUp8LFySNJ2A1/CLlyqMKi4vOCLUWDYaj XSaw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768023460; x=1768628260; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=SwF/unBnaFW1rvIB2VegLLFRYP2bQTcQU4jqjcGifVk=; b=g/aoADzww1dXn8El6CRWsoHpolNLD57sK5i1ErKokCKShUsq+p+bqDFsan23kkTj3Z i8Oo0g5ScsLR4bIRCq3gSye1j/6fDlLnI8dXxpNGQEq4xbeAp3Gi8Leo2wHEcWqdHzR2 q19z5Bs9pA8N+cbx6EgUi9FWCsRnmwJTu7Zh8nS+GOUjYFfD8zMo9b9xdgrI6w0xXguf mwVZlK7t5RD0qMekxktdELmXCOAX60Gx1UeAzE//szai2+AYqW5jZioaFAW/sQpLMmJu gY+QP0t3+hUYd47NZsvzKgmYuv+OXJiHZ+aHoPnchQpAbymlgsDzHSh824FzC2RQAbL0 Ozhg== X-Forwarded-Encrypted: i=1; AJvYcCUmp22rqIAFuy0x1cNeomzgofnrDYvVcadKwqoiviGbsG/PztTOBPG1Cvu9j7oBO7FCgP0wFXnsRkAuJH0=@vger.kernel.org X-Gm-Message-State: AOJu0YxIZ9QshFY8TfaDiWQ2QSTPmbPFwaLz/FRTKKFNPlhISpipbMhN KbwoQe1X3U+mO9cddeEcqU2Tkp2ryYJ0jKTWJ/pZsSEkp4gonmEbaOb4 X-Gm-Gg: AY/fxX63iBSipZWBXp2epLlZ3TmjJP12PQZt32yE9KJr/5JcqrA1kq1Q/OdqKDvu7wK z4E7dfp/yV82DEeMgFL+u+qZ0Yeox3BfgADmmnBxOyBE0+/IyzHamN2p7I+Yr6yBltg8sScAtOU erEs38pxKy7B3GFkC4HY7gvw2TwSScsbfFJdLoz61EoQ2NHgGxr6Rkf97KWo/qJS+Z5l430k1Qg EJuhE4WLyFLeLnE9krjaBBLL1Wgk2P+lV7H+PuuADphG1K2GZTacrGSF1Wxx13KLrPd5yIen/r6 npE01AXWZuFsbC92oACSqNTaxEEj+OshclEvhDreLmo+jbeoMm1vADFHKAeMxA9L0f/HNVAn67Y UV1TIoS+E8hG7bUhxmHnXCuo/TYX/324ZGevyVVblYzbYb1cJOFg0l6J5+LZnwzlqSEcB96U26+ bW6ZnU5BenSWJ/RNg= X-Google-Smtp-Source: AGHT+IETNRaHMNAZQeH2gwTg4jdbHnvg19YnwNKOZH/s/Wk/33B+6YxgXnlQIAepe6DAJfUBCWI5ig== X-Received: by 2002:a05:600c:8b65:b0:477:79f8:daa8 with SMTP id 5b1f17b1804b1-47d8fbda479mr66222065e9.17.1768023459645; Fri, 09 Jan 2026 21:37:39 -0800 (PST) Received: from toolbox.. ([87.200.95.144]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-432bd0dadcfsm25973825f8f.3.2026.01.09.21.37.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 09 Jan 2026 21:37:39 -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 Cc: Nicolas Dufresne , Dang Huynh Subject: [PATCH v3 2/3] media: rkvdec: Add support for the VDPU346 variant Date: Sat, 10 Jan 2026 05:37:26 +0000 Message-ID: <20260110053727.2295260-3-christianshewitt@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260110053727.2295260-1-christianshewitt@gmail.com> References: <20260110053727.2295260-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 similar to 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. VDPU346 is used with RK3566 and RK3568. Signed-off-by: Christian Hewitt Reviewed-by: Nicolas Dufresne Tested-by: Dang Huynh # Pinetab2 --- .../media/platform/rockchip/rkvdec/rkvdec.c | 103 ++++++++++++++++++ 1 file changed, 103 insertions(+) diff --git a/drivers/media/platform/rockchip/rkvdec/rkvdec.c b/drivers/medi= a/platform/rockchip/rkvdec/rkvdec.c index a5cf6f3240f8..6e49b129d11f 100644 --- a/drivers/media/platform/rockchip/rkvdec/rkvdec.c +++ b/drivers/media/platform/rockchip/rkvdec/rkvdec.c @@ -236,6 +236,62 @@ static const struct rkvdec_ctrls rkvdec_hevc_ctrls =3D= { .num_ctrls =3D ARRAY_SIZE(rkvdec_hevc_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, @@ -463,6 +519,41 @@ static const struct rkvdec_coded_fmt_desc rk3288_coded= _fmts[] =3D { } }; =20 +static const struct rkvdec_coded_fmt_desc vdpu346_coded_fmts[] =3D { + { + .fourcc =3D V4L2_PIX_FMT_HEVC_SLICE, + .frmsize =3D { + .min_width =3D 64, + .max_width =3D 4096, + .step_width =3D 64, + .min_height =3D 64, + .max_height =3D 2304, + .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, + }, + { + .fourcc =3D V4L2_PIX_FMT_H264_SLICE, + .frmsize =3D { + .min_width =3D 64, + .max_width =3D 4096, + .step_width =3D 64, + .min_height =3D 64, + .max_height =3D 2304, + .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, + }, +}; + static const struct rkvdec_coded_fmt_desc vdpu381_coded_fmts[] =3D { { .fourcc =3D V4L2_PIX_FMT_HEVC_SLICE, @@ -1657,6 +1748,14 @@ static const struct rkvdec_variant_ops vdpu381_varia= nt_ops =3D { .flatten_matrices =3D transpose_and_flatten_matrices, }; =20 +static const struct rkvdec_variant 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), + .ops =3D &vdpu381_variant_ops, +}; + static const struct rkvdec_variant vdpu381_variant =3D { .coded_fmts =3D vdpu381_coded_fmts, .num_coded_fmts =3D ARRAY_SIZE(vdpu381_coded_fmts), @@ -1705,6 +1804,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 &vdpu346_variant, + }, { .compatible =3D "rockchip,rk3588-vdec", .data =3D &vdpu381_variant, --=20 2.43.0