From nobody Tue Feb 10 00:59:21 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 942C73033D9 for ; Tue, 13 Jan 2026 20:33:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768336427; cv=none; b=KUpb5EXEvP/a4100Hvt0sX3J+CvQhKMO8gZskQ3D0Oq211fGdlxVGJXqwc/nbr87zVJx+/jN8IB6J9/cr6PyLttya4kjljlHBjV7udR0TUM7mY9/UlfK7woSAHg2yKJehNK+jXsLZzyb5djMKWj7hiknYmHKBNDB5cb25Rb9KIs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768336427; c=relaxed/simple; bh=mI3w+fNYnExFQMgzeQKywHjpUbJ8gQ2nSgDbYOTLhNw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=sM4/w8sb40JHeQ+Bzytq5/oAzy1MA+6rhRZw7DK5WXBX3vpyBxiBgMIzeSUhrdRd8oM8M043vjDjtklmrXUJFZCCsLT9JF6gmMnVw5LEFqL3rZL6CAtWWR75RQhR0b4r7vtdequGUo6o+8STAG4Gni9OVv60hQdIr4YfUk5heqY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=pWwD8fI2; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=I1+oDvML; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="pWwD8fI2"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="I1+oDvML" Received: from pps.filterd (m0279869.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 60DG58LP1294956 for ; Tue, 13 Jan 2026 20:33:40 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= pGDn7XjluYGlc7+xUytTtb7c+6xJORtfZoGQQYOexXU=; b=pWwD8fI2C7Xses0w U1VbGxDMe+DwgOSMEpXtzr5sD/vngPdQZzbJnS51s7CGQfmctrILpyuNXs4xyBV6 brO9nHTnoUb+UFZVd8qgkAAqc7FOum4rBMjz4y4wb6uRk9KmdbLOphwFdT+CX5oJ huMHzotgO9NJBa1Wf6ijKwUwea2DijPZTqfWLtnUy3eqZAXYil3/7meGSQgWdGse /+BILPOucoqQKOLVw70aI3RVoESeC2LH3+Z4PxhajRdkznaPBV0i5JDLIa9cx0t0 jiaOy6y3TyYPCnW47qben57GMgXPMzKTWLEntbGx61D5xaayBfGZH7XnbZjrvfg0 t5CXkA== Received: from mail-dy1-f199.google.com (mail-dy1-f199.google.com [74.125.82.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4bns8v0v99-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 13 Jan 2026 20:33:40 +0000 (GMT) Received: by mail-dy1-f199.google.com with SMTP id 5a478bee46e88-2ae5fafb5c1so165821eec.0 for ; Tue, 13 Jan 2026 12:33:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1768336420; x=1768941220; 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=pGDn7XjluYGlc7+xUytTtb7c+6xJORtfZoGQQYOexXU=; b=I1+oDvMLSRXDMiXqSkXfHxKfSO4GXkrY12tGXUs4Pvb91v4njfyRbMtb7kntDuYqtg NIuk2fjX0onsbmZp7MCpAqG1wh5Uvp6vwCAKkKN4/Wpe/E3sUVvG4iMGdANwyhfufGgr szW7HYHxNqz/MwHTyDov0gLIB7KlSZ98klxH8cq47VmNlOnHrEsm5GyEvGCu51z3XY2L gph8BhTluCPEASCS5IHzwZXaygQ9nLLFmP//+FfHQkNVFMOq8BYNfhwR/q9OytwdcG6T cV1px+ui6Yue5fPvbWvcp4QM/sT6e2IwGvddGkBfyls9qwXv3j5QjF1eveg1LxOz2Xy5 kPYQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768336420; x=1768941220; 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=pGDn7XjluYGlc7+xUytTtb7c+6xJORtfZoGQQYOexXU=; b=w5vmCfKUDBWnsAtCXzMqF9g4P8ln80Z6StIrDCDYskiHqm18L3xNl1UWWnT+WxMIBT 4Vr/FnU6ntFfgtu3YsUeaa8fC8WO5YdMUpAFEBC9rNnnJfrkQoXf++BV9YA0Szq9eNFw V/KFNNVMK4F727Ra5kAO1zyDyjlZ06JR6+sXQMOeVpfpppKQbW0rupqu8JOrCSLZCIT2 DTod9p5OwbJKrwZvnPiYY85pTl4PSJXxmdYl7W8xbQsRXQ3ghbMJBiWcVScaSa95aMZ6 mmcI0J7DWrMwGYxifpCpfD2irWyg1dse5d0EOxPuZGTipTqOAVKo39WrWtI9DELdKFau 8N0Q== X-Forwarded-Encrypted: i=1; AJvYcCWxOEF9pTH3zLfve/ZTM0/4lfPV9GyJ3WuRwcs/BzJvGlIy/C6pjua9d56ivJFXg1lFKQzyFIlLzJPRZ8o=@vger.kernel.org X-Gm-Message-State: AOJu0Yw0zl0EAQjaOjzU7GYwB015ykXa03O/E2CXd+71mW3ENFi3NTVZ IMrhCq+6y2yvSnEvEw5KX6KqH37Cef7D6ZYMsSXVb8KS4sb/F+eYB6Eg06w7sqHGLT4nNJazoTb U+ejUhpi9HNDA3fpE4R78rTdccdZAC2bRpfWkL+kJip0usJpqsn04TEl3K/sBp6flHJw= X-Gm-Gg: AY/fxX7wfArG1ct6IXZUA81zP3MxPb2+J3d/G/WFUKoCDzpyhaHnVCxxp48B/WqZc6B DzcbZMF0Lr+pCpQISjs7WZPBOh4ByfbmP8TqnfKuMgTeRHQkrNErCGTo8cbYDCB/KcZq5e0HZf0 iRi4GGRDbpwdGeUqnx0sO+smIZ123hpY8fHBezy4kIX85isGrW9fBnWspdcUsP3I4e82mSGR6WX m0TV/fp0JqdbSjvqBzU2bOBVA4y9F7AazEcnlKNeSa5PaXwmg79RydUIYl+pKo5rnMViS9Tkftf dDsb2gfTpJUlw6WEfb+1VZWfmRE0iLODN7T/5xALbpUV71NVG4QphnfmAoIiwsZu71YNLpaHgEB Gki6H1Z6Hq2PSSXcnhnGOaw37TDw91Sdd4qiEsLXz4jiogeelwN7oMcqT09vMblwFSOvawA== X-Received: by 2002:a05:7300:3b1a:b0:2b0:4f9a:724b with SMTP id 5a478bee46e88-2b4871e9771mr143236eec.6.1768336419441; Tue, 13 Jan 2026 12:33:39 -0800 (PST) X-Received: by 2002:a05:7300:3b1a:b0:2b0:4f9a:724b with SMTP id 5a478bee46e88-2b4871e9771mr143218eec.6.1768336418830; Tue, 13 Jan 2026 12:33:38 -0800 (PST) Received: from gu-dmadival-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2b170673bc0sm19157897eec.5.2026.01.13.12.33.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Jan 2026 12:33:38 -0800 (PST) From: Deepa Guthyappa Madivalara Date: Tue, 13 Jan 2026 12:33:34 -0800 Subject: [RFC PATCH 3/3] media: iris: Add ROI support framework for video encoder 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: quoted-printable Message-Id: <20260113-iris_enc_roi-v1-3-6c86eba38587@oss.qualcomm.com> References: <20260113-iris_enc_roi-v1-0-6c86eba38587@oss.qualcomm.com> In-Reply-To: <20260113-iris_enc_roi-v1-0-6c86eba38587@oss.qualcomm.com> To: Mauro Carvalho Chehab , Vikash Garodia , Dikshita Agarwal , Abhinav Kumar , Bryan O'Donoghue Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, Deepa Guthyappa Madivalara X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1768336416; l=6206; i=deepa.madivalara@oss.qualcomm.com; s=20250814; h=from:subject:message-id; bh=mI3w+fNYnExFQMgzeQKywHjpUbJ8gQ2nSgDbYOTLhNw=; b=DHw1LIcBDk9zxxR949jpdE1ETt0fE+cV00q30+Cfosh6oWTtAU25x2IthDRhu5+UQ/J6t/959 82UNoZZQZmjAnWkxGSgWy5GSojKKsgF1NDGVkzSn04bIl60PaWGh44u X-Developer-Key: i=deepa.madivalara@oss.qualcomm.com; a=ed25519; pk=MOEXgyokievn+bgpHdS6Ixh/KQYyS90z2mqIbQ822FQ= X-Authority-Analysis: v=2.4 cv=aY5sXBot c=1 sm=1 tr=0 ts=6966ac24 cx=c_pps a=cFYjgdjTJScbgFmBucgdfQ==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=vUbySO9Y5rIA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=4usVFD2bs8YhfvkcmPAA:9 a=QEXdDO2ut3YA:10 a=scEy_gLbYbu1JhEsrz4S:22 X-Proofpoint-ORIG-GUID: HkF-dRLdNoXNYciGFbnS5ErmLrRNcQv0 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTEzMDE2OCBTYWx0ZWRfXw7XrNVDuhgJs Y3exrGCZ75wRjgtwF15ybCFsa97N4zNDixDQSeAbbl4SpiYKTdrdVHyjTCAgusB2iKURqkP3Yfy 90IVEAn1IweWPaYTm9eQzanKD9ja1L0pduHVmmwjGXsqLieIxclwmi26JujQy9A5TTpdjI6Rgnt 6g/jm69vIIAmXTsSa1hRhZqB8PqMCCLEuAeR0XXPx9ykawq7Bq0g+tP9NCyEmWKSZorYDlttkOh xjAGYLe9+JAt3xtwC5lbFXjrvJa3qYgJMCbLQ74XdOKm+ZGj472eKLsqSRpQMzKoJX4vsCen0vz JMITECdanADzEBlw2igVeugStivrfxjUmAd0qHgiA9GWHpctEkEgr+x3vldWaDDILmVSe/3wg9P 8+P9k0NzG5G7dlbeMw6MMSVMvVCrgfmUuoRcJLoa2e1I7nO4T3lzjma7z0VBYlr0V8R/f9YKppZ XELStPskFWu4f84ClWw== X-Proofpoint-GUID: HkF-dRLdNoXNYciGFbnS5ErmLrRNcQv0 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2026-01-13_04,2026-01-09_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 priorityscore=1501 suspectscore=0 malwarescore=0 bulkscore=0 lowpriorityscore=0 clxscore=1015 adultscore=0 phishscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2512120000 definitions=main-2601130168 Add ROI support in the iris driver, including control structures and default parameters. Extend support to set ROI parameters using compound control V4L2_CTRL_TYPE_ENC_ROI_PARAMS. Signed-off-by: Deepa Guthyappa Madivalara --- drivers/media/platform/qcom/iris/iris_ctrls.c | 54 ++++++++++++++++++= +++- drivers/media/platform/qcom/iris/iris_ctrls.h | 1 + .../platform/qcom/iris/iris_platform_common.h | 4 ++ .../media/platform/qcom/iris/iris_platform_gen2.c | 8 ++++ 4 files changed, 66 insertions(+), 1 deletion(-) diff --git a/drivers/media/platform/qcom/iris/iris_ctrls.c b/drivers/media/= platform/qcom/iris/iris_ctrls.c index c0b3a09ad3e3dfb0a47e3603a8089cf61390fda8..2d00df554a64829af550ed43267= bf73b6a9c892e 100644 --- a/drivers/media/platform/qcom/iris/iris_ctrls.c +++ b/drivers/media/platform/qcom/iris/iris_ctrls.c @@ -98,6 +98,8 @@ static enum platform_inst_fw_cap_type iris_get_cap_id(u32= id) return B_FRAME_QP_H264; case V4L2_CID_MPEG_VIDEO_HEVC_B_FRAME_QP: return B_FRAME_QP_HEVC; + case V4L2_CID_MPEG_VIDEO_ENC_ROI: + return ROI_PARAMS; default: return INST_FW_CAP_MAX; } @@ -185,6 +187,8 @@ static u32 iris_get_v4l2_id(enum platform_inst_fw_cap_t= ype cap_id) return V4L2_CID_MPEG_VIDEO_H264_B_FRAME_QP; case B_FRAME_QP_HEVC: return V4L2_CID_MPEG_VIDEO_HEVC_B_FRAME_QP; + case ROI_PARAMS: + return V4L2_CID_MPEG_VIDEO_ENC_ROI; default: return 0; } @@ -208,9 +212,14 @@ static int iris_op_s_ctrl(struct v4l2_ctrl *ctrl) return -EINVAL; =20 cap[cap_id].flags |=3D CAP_FLAG_CLIENT_SET; - inst->fw_caps[cap_id].value =3D ctrl->val; =20 + if (inst->fw_caps[cap_id].flags & CAP_FLAG_COMPOUND) { + if (cap_id =3D=3D ROI_PARAMS) + inst->fw_caps[cap_id].p_def =3D + (const void *)ctrl->p_new.p_enc_roi_params; + } + if (vb2_is_streaming(q)) { if (cap[cap_id].set) cap[cap_id].set(inst, cap_id); @@ -223,6 +232,21 @@ static const struct v4l2_ctrl_ops iris_ctrl_ops =3D { .s_ctrl =3D iris_op_s_ctrl, }; =20 +static const struct v4l2_ctrl_enc_roi_params enc_roi_params =3D { + .num_roi_regions =3D 10, + .roi_params =3D { + [0 ... 9] =3D { + .roi_rect =3D { + .left =3D 0, + .top =3D 0, + .width =3D 0, + .height =3D 0, + }, + .delta_qp =3D 0, + }, + }, +}; + int iris_ctrls_init(struct iris_inst *inst) { struct platform_inst_fw_cap *cap =3D &inst->fw_caps[0]; @@ -263,6 +287,22 @@ int iris_ctrls_init(struct iris_inst *inst) cap[idx].max, ~(cap[idx].step_or_mask), cap[idx].value); + } else if (cap[idx].flags & CAP_FLAG_COMPOUND) { + if (cap[idx].cap_id =3D=3D ROI_PARAMS) + cap[idx].p_def =3D &enc_roi_params; + + ctrl =3D v4l2_ctrl_new_std_compound(&inst->ctrl_handler, + &iris_ctrl_ops, + v4l2_id, + v4l2_ctrl_ptr_create + ((void *) + cap[idx].p_def), + v4l2_ctrl_ptr_create + ((void *) + NULL), + v4l2_ctrl_ptr_create + ((void *) + NULL)); } else { ctrl =3D v4l2_ctrl_new_std(&inst->ctrl_handler, &iris_ctrl_ops, @@ -915,3 +955,15 @@ int iris_set_properties(struct iris_inst *inst, u32 pl= ane) =20 return 0; } + +int iris_set_roi_params(struct iris_inst *inst, u32 plane) +{ + const struct v4l2_ctrl_enc_roi_params *enc_roi_params; + enc_roi_params =3D inst->fw_caps[ROI_PARAMS].p_def; + + /* Todo: Send HFI prop to firmware + * once support is available + */ + + return 0; +} diff --git a/drivers/media/platform/qcom/iris/iris_ctrls.h b/drivers/media/= platform/qcom/iris/iris_ctrls.h index 30af333cc4941e737eb1ae83a6944b4192896e23..92ceb9e412635f04787fe92a9e5= c6ba03bb7332d 100644 --- a/drivers/media/platform/qcom/iris/iris_ctrls.h +++ b/drivers/media/platform/qcom/iris/iris_ctrls.h @@ -33,5 +33,6 @@ int iris_set_max_qp(struct iris_inst *inst, enum platform= _inst_fw_cap_type cap_i int iris_set_frame_qp(struct iris_inst *inst, enum platform_inst_fw_cap_ty= pe cap_id); int iris_set_qp_range(struct iris_inst *inst, enum platform_inst_fw_cap_ty= pe cap_id); int iris_set_properties(struct iris_inst *inst, u32 plane); +int iris_set_roi_params(struct iris_inst *inst, u32 plane); =20 #endif diff --git a/drivers/media/platform/qcom/iris/iris_platform_common.h b/driv= ers/media/platform/qcom/iris/iris_platform_common.h index 8d8cdb56a3c7722c06287d4d10feed14ba2b254c..6fcbdcb11db7785085de8f95b07= f93f8a045c9ce 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_common.h +++ b/drivers/media/platform/qcom/iris/iris_platform_common.h @@ -6,6 +6,7 @@ #ifndef __IRIS_PLATFORM_COMMON_H__ #define __IRIS_PLATFORM_COMMON_H__ =20 +#include #include #include "iris_buffer.h" =20 @@ -143,6 +144,7 @@ enum platform_inst_fw_cap_type { P_FRAME_QP_HEVC, B_FRAME_QP_H264, B_FRAME_QP_HEVC, + ROI_PARAMS, INST_FW_CAP_MAX, }; =20 @@ -154,6 +156,7 @@ enum platform_inst_fw_cap_flags { CAP_FLAG_CLIENT_SET =3D BIT(4), CAP_FLAG_BITMASK =3D BIT(5), CAP_FLAG_VOLATILE =3D BIT(6), + CAP_FLAG_COMPOUND =3D BIT(7), }; =20 struct platform_inst_fw_cap { @@ -163,6 +166,7 @@ struct platform_inst_fw_cap { s64 step_or_mask; s64 value; u32 hfi_id; + const void *p_def; enum platform_inst_fw_cap_flags flags; int (*set)(struct iris_inst *inst, enum platform_inst_fw_cap_type cap_id); diff --git a/drivers/media/platform/qcom/iris/iris_platform_gen2.c b/driver= s/media/platform/qcom/iris/iris_platform_gen2.c index c1989240c248601c34b84f508f1b72d72f81260a..eccfe5642d6803fd435787cadc8= 3f878572dbdd5 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_gen2.c +++ b/drivers/media/platform/qcom/iris/iris_platform_gen2.c @@ -586,6 +586,14 @@ static const struct platform_inst_fw_cap inst_fw_cap_s= m8550_enc[] =3D { .flags =3D CAP_FLAG_OUTPUT_PORT, .set =3D iris_set_u32, }, + { + .cap_id =3D ROI_PARAMS, + .step_or_mask =3D 1, + .p_def =3D NULL, + .flags =3D CAP_FLAG_OUTPUT_PORT | CAP_FLAG_COMPOUND | + CAP_FLAG_DYNAMIC_ALLOWED, + .set =3D iris_set_roi_params, + }, }; =20 static struct platform_inst_caps platform_inst_cap_sm8550 =3D { --=20 2.34.1