From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f50.google.com (mail-wm1-f50.google.com [209.85.128.50]) (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 356823C8C70 for ; Tue, 2 Jun 2026 08:39:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.50 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780389572; cv=none; b=rBFn1HvYgIsZ5ZVurvZJooCjvVBPCXXaaDlhw9qbjLiodxOIDLR09uRklLngIesT7D7/HxF+vljIEaQVPYD6hNfPLsbs4zhBv6S7kNNpu2kPhRWwlbck4UAv0n8ajdW201hrn/itgQ4p7IqMPGVVYmoT9/4qf+oH9sbZtXhb43M= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780389572; c=relaxed/simple; bh=FSRjjiwubMsbmGQlFv02cRDb8aSDoT7TLY94ZGqccOE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Hh9vzXyRI1z3JYH/t0xWI4czVYzT5MS/3Y+ssEYI4+WV1PJ58SEX5H+esY13OJ5ZU7X50GtPYN4Hn5dDMjojdNDP7lYGfQPJXVWGmxesMWmCPGa47+e8A+JraBotQQUZjpxjjyUniBKvZiZcJjlttVToCly1oJNmWcjjOAI+d6A= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=jSqPVgGz; arc=none smtp.client-ip=209.85.128.50 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="jSqPVgGz" Received: by mail-wm1-f50.google.com with SMTP id 5b1f17b1804b1-4909e3fa4b2so39274395e9.0 for ; Tue, 02 Jun 2026 01:39:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780389565; x=1780994365; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=yU+v1GlIbb9kozfDeAVXVrzHJKOrtEBHh4oL/P0WE9U=; b=jSqPVgGzQZb5HEz5M2AyF/iI3UvUO+1q+gIo8+SzelCnveGOeFimrDO9Fp8HEmOfSd MSAKhD4OQMsOaiH4T5aWLo/XstN+90QOidvgG56mqWxxWCPjA8iDh2wyNfwUSQeuLIhB wxbV2PAcjHDMYaxrCQYjXBU/H2efSpG0+u50fRwUUmnfPMgQ5WH5s6xemxlew1NlGIx6 jN1aQKB6wbK11blTV/BKrpPr984Bt3l9TE/hrTnz9UAPrC5HUXjODSrPiJmSatiOAC8S dz5izXSNfNu3BoJNmc/27M54ZFRFQsZOlwI1q3iUfGJkX7O4mVTkf7tIGlpFLH3COT0h CzKw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780389565; x=1780994365; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=yU+v1GlIbb9kozfDeAVXVrzHJKOrtEBHh4oL/P0WE9U=; b=Iitt8bx6rvjsgi6XfVBILdbJxibEOAqQ7bphFAXRq+O+ltVnTnNSOuCiGfezVuYYBc fTjFt1aYV4aUBKWIeR5hzAKv8PmEw68b042NehlKQpLNPmWJk73yxlsDn34GiENLTknj vxYS66Qzbo/Tko8ILvnmksEOUIo9u4s18o1IX8axYZxBv8xR/peEh/yuQc/DnYI2BaEB 6oDLpV1N8rHpTVIuSURqLG3HCubTJiN7J+ycYvdT05OHdZUptBeB0uf80GjPbvSTpxPq vMfHcfSbJaTomS0BfMaipYH/ciGT4dMmqP2qB8Phf6+eNnU1IV9h2XbHqPKJdsV1Nq3P oEyA== X-Forwarded-Encrypted: i=1; AFNElJ8vNB9UZWJpKnYSG6ReMnP546e3AQujEOvSo46t/eGBWvhL/MjiA7vScDyHwnq+LY69P+0yfr1I0lPxxG4=@vger.kernel.org X-Gm-Message-State: AOJu0Yzqm3eaA2JyEMO8rDSADsEOBKsObzDQZGv/9eiGfL0dB3GUuO11 uPMooTZ6rY7eV2CTgtaOYaP9NdHlCzuaH73A5en9jpHNuZJ+WzNxjEvFsszo4udkEXA= X-Gm-Gg: Acq92OGjd5lu2ctyFlviBF32uI9A6iZevat+1o7BwZMot6NeDJw62Ejl5xOPDbQwVxR yYJ+mxBQQI6C5ZLMjscrh+zy5SJJsep3y7nHPqlEm+5RdBAyMr73uEN9bPAxW4av59V3l1eEYAu eqqLoLrkGNfEnr4TnXl8MKzRCiZXc3aUxeKZg9BYjJe+vPnkpj1PT+WrRIh6ouCGj1JqaFdRM/q q+g1pOq1hpswgOfCiQ4pb2v/zD0ZoGdHn/J5MkwwC0Y1r0CZ4vRi9ASe4LMCFPU/FHoLsIpUeFx QOyxZhPVxOn2Y14ommUYUs0oujT3XWl1e8WV2vBwrUSsgdzZwF4XkXtNdbudB2Add55R08xqmvv k5ImkHkXTWH7gv0b4UZfAFVAJak5b9seLZveZxqXY6pAMsq/Yes1/Oa97jMoGhdT74VKvcccgo6 AujXWCqj/ruGTayjv2LkfXiKCMLUUmmJvVi9BlDsSlb1BLWACG4KsbFT8= X-Received: by 2002:a05:600c:8b01:b0:48a:563c:c8c5 with SMTP id 5b1f17b1804b1-490a29127c0mr55625555e9.8.1780389565427; Tue, 02 Jun 2026 01:39:25 -0700 (PDT) Received: from arrakeen.starnux.net ([2a01:e0a:106d:1080:8261:5fff:fe11:bdda]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-490b0e26050sm43879425e9.9.2026.06.02.01.39.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 01:39:25 -0700 (PDT) From: Neil Armstrong Date: Tue, 02 Jun 2026 10:39:21 +0200 Subject: [PATCH v5 6/6] media: qcom: iris: vdec: allow GEN2 decoding into 10bit format Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20260602-topic-sm8x50-iris-10bit-decoding-v5-6-c2b32474ed67@linaro.org> References: <20260602-topic-sm8x50-iris-10bit-decoding-v5-0-c2b32474ed67@linaro.org> In-Reply-To: <20260602-topic-sm8x50-iris-10bit-decoding-v5-0-c2b32474ed67@linaro.org> To: Vikash Garodia , Dikshita Agarwal , Abhinav Kumar , Bryan O'Donoghue , Mauro Carvalho Chehab Cc: linux-media@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, Neil Armstrong , Dmitry Baryshkov , Wangao Wang X-Mailer: b4 0.15.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=4850; i=neil.armstrong@linaro.org; h=from:subject:message-id; bh=FSRjjiwubMsbmGQlFv02cRDb8aSDoT7TLY94ZGqccOE=; b=owEBbQKS/ZANAwAKAXfc29rIyEnRAcsmYgBqHpa3tphMfFq2aRbEGfi12mhSrXo+E1GzA7nnkPUP k+QIH7SJAjMEAAEKAB0WIQQ9U8YmyFYF/h30LIt33NvayMhJ0QUCah6WtwAKCRB33NvayMhJ0UP/D/ 4rKpp40CWrMs+OayqZM3J1qkp6ktiWk8FQvq6bdiWqZlo6X522U5dNui+tgvUxN2Bn8KOIt93GDdU0 Nz9+4AQAukp0MMbg9JVVBx5vdArlTS3VZ3HimVO4DZXPzYUXM9FUJdqNgA+0EflfW+svmq2Le8SdyP zMdbFGz7CtlmT1iurqRWaXLcxv5rrHiho89ZsAsiZBU2tZdDCq4KHxzrr0v86+yS1Iv7Rwur4lm2CL U0w1caAvK/wMwVc3oJ1XbN5eDit+K/2D6MekvFW9qLeP0GUwVMcwr3xiFNETS8eyB9IRms8Tr4nj6D 5AboIgx2GitTl3HoV7/HkXuwUCOcVvd8r/IKhtFgi+8HM2N/ACA34ZQ/XiJwu2VDlqKST2oJvez0Si oG4im2hSU5PP1ddlqBx8asU94iG23xCW5nOxytwKCUIW4X8SbJhUhWm+pW/NDj6MfnKvHODwCPbpr1 i8tTK2DmGdwbfBlwSQ2pOdI4AGlz8shAilC+y4OfLke9Ei2ZV8AgNZ5SXod9PU7S7W3SAa9bIIaVWz JQ/PjK53TWxxuTa4iyPEEpa3RVS9kwfci0UL05nMGea7IvEUpYiegQ8B1+w9sjiGblEF9JS03CGTsx hs835IHfqmgk6UfUINjJ99L4vcB27yC3i1FHhwDvjUwATbnUcf/ZbuxblTiA== X-Developer-Key: i=neil.armstrong@linaro.org; a=openpgp; fpr=89EC3D058446217450F22848169AB7B1A4CFF8AE Add the necessary bits into the gen2 platforms tables and handlers to allow decoding streams into 10bit pixel formats. Reviewed-by: Dmitry Baryshkov Tested-by: Wangao Wang Signed-off-by: Neil Armstrong --- drivers/media/platform/qcom/iris/iris_hfi_gen2.c | 8 +++++--- .../media/platform/qcom/iris/iris_hfi_gen2_response.c | 16 +++++++++++++++- drivers/media/platform/qcom/iris/iris_instance.h | 2 ++ drivers/media/platform/qcom/iris/iris_vdec.c | 2 ++ 4 files changed, 24 insertions(+), 4 deletions(-) diff --git a/drivers/media/platform/qcom/iris/iris_hfi_gen2.c b/drivers/media/platform/qcom/iris/iris_hfi_gen2.c index 7a85c1d4e5e6..acc0ed8adda1 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen2.c +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen2.c @@ -31,9 +31,10 @@ static const struct platform_inst_fw_cap inst_fw_cap_sm8550_dec[] = { { .cap_id = PROFILE_HEVC, .min = V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN, - .max = V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_STILL_PICTURE, + .max = V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_10, .step_or_mask = BIT(V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN) | - BIT(V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_STILL_PICTURE), + BIT(V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_STILL_PICTURE) | + BIT(V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_10), .value = V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN, .hfi_id = HFI_PROP_PROFILE, .flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, @@ -262,7 +263,7 @@ static const struct platform_inst_fw_cap inst_fw_cap_sm8550_dec[] = { { .cap_id = BIT_DEPTH, .min = BIT_DEPTH_8, - .max = BIT_DEPTH_8, + .max = BIT_DEPTH_10, .step_or_mask = 1, .value = BIT_DEPTH_8, .hfi_id = HFI_PROP_LUMA_CHROMA_BIT_DEPTH, @@ -996,6 +997,7 @@ static const u32 sm8550_vdec_output_config_params[] = { HFI_PROP_OPB_ENABLE, HFI_PROP_COLOR_FORMAT, HFI_PROP_LINEAR_STRIDE_SCANLINE, + HFI_PROP_UBWC_STRIDE_SCANLINE, }; static const u32 sm8550_venc_output_config_params[] = { diff --git a/drivers/media/platform/qcom/iris/iris_hfi_gen2_response.c b/drivers/media/platform/qcom/iris/iris_hfi_gen2_response.c index aca90aab8548..25162ae71357 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen2_response.c +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen2_response.c @@ -542,6 +542,15 @@ static void iris_hfi_gen2_read_input_subcr_params(struct iris_inst *inst) pixmp_ip->width = width; pixmp_ip->height = height; + if (subsc_params.bit_depth == BIT_DEPTH_8 && + pixmp_op->pixelformat != V4L2_PIX_FMT_NV12 && + pixmp_op->pixelformat != V4L2_PIX_FMT_QC08C) + pixmp_op->pixelformat = V4L2_PIX_FMT_NV12; + else if (subsc_params.bit_depth == BIT_DEPTH_10 && + pixmp_op->pixelformat != V4L2_PIX_FMT_P010 && + pixmp_op->pixelformat != V4L2_PIX_FMT_QC10C) + pixmp_op->pixelformat = V4L2_PIX_FMT_P010; + switch (pixmp_op->pixelformat) { case V4L2_PIX_FMT_P010: pixmp_op->width = ALIGN(width, 128); @@ -625,7 +634,12 @@ static void iris_hfi_gen2_read_input_subcr_params(struct iris_inst *inst) inst->fw_caps[POC].value = subsc_params.pic_order_cnt; inst->fw_caps[TIER].value = subsc_params.tier; - if (subsc_params.bit_depth != BIT_DEPTH_8 || + if (subsc_params.bit_depth == BIT_DEPTH_8) + inst->fw_caps[BIT_DEPTH].value = BIT_DEPTH_8; + else + inst->fw_caps[BIT_DEPTH].value = BIT_DEPTH_10; + + if ((subsc_params.bit_depth != BIT_DEPTH_8 && subsc_params.bit_depth != BIT_DEPTH_10) || !(subsc_params.coded_frames & HFI_BITMASK_FRAME_MBS_ONLY_FLAG)) { dev_err(core->dev, "unsupported content, bit depth: %x, pic_struct = %x\n", subsc_params.bit_depth, subsc_params.coded_frames); diff --git a/drivers/media/platform/qcom/iris/iris_instance.h b/drivers/media/platform/qcom/iris/iris_instance.h index c54d8ec8562a..a770331d1675 100644 --- a/drivers/media/platform/qcom/iris/iris_instance.h +++ b/drivers/media/platform/qcom/iris/iris_instance.h @@ -27,6 +27,8 @@ enum iris_fmt_type_out { enum iris_fmt_type_cap { IRIS_FMT_NV12, IRIS_FMT_QC08C, + IRIS_FMT_TP10, + IRIS_FMT_QC10C, }; /** diff --git a/drivers/media/platform/qcom/iris/iris_vdec.c b/drivers/media/platform/qcom/iris/iris_vdec.c index d55671340600..a8d6354bee28 100644 --- a/drivers/media/platform/qcom/iris/iris_vdec.c +++ b/drivers/media/platform/qcom/iris/iris_vdec.c @@ -71,6 +71,8 @@ void iris_vdec_inst_deinit(struct iris_inst *inst) static const u32 iris_vdec_formats_cap[] = { [IRIS_FMT_NV12] = V4L2_PIX_FMT_NV12, [IRIS_FMT_QC08C] = V4L2_PIX_FMT_QC08C, + [IRIS_FMT_TP10] = V4L2_PIX_FMT_P010, + [IRIS_FMT_QC10C] = V4L2_PIX_FMT_QC10C, }; static bool check_format(struct iris_inst *inst, u32 pixfmt, u32 type) -- 2.34.1