From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.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 EE0E333BBBD for ; Wed, 4 Mar 2026 15:29:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772638177; cv=none; b=DD81IlcnzbJTVJw/GU9ZaIEaBqDOcYJ/ENcP9qdRBZJ8zobnwr0fcT4q+XJRdmcLqO0KK05a+HPcOTGJThU/ZTcnphu4sXrzbZj8ZYR9t0DR1oOiIykuvhrzoWBzAxyHmV3YSunJCyy4nNsTYL2Jf0ydFG2JcWGGSZgrXJokfsY= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772638177; c=relaxed/simple; bh=J2pHDqkcI5jgiqu24QsunAV3h4H2fOr3FdQWGJTAODc=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=VhIlrt4i8itY5ER4uEozseE7WTQArYbMb/R8xASdklF5Kp6TTM9KPOIvG2b/jfIKamPc+q3ezsmJV2iFCvmRZoMAF7DQt8Z4WZLiXGrO9HlHxclO/4LwjZDQXJHjBZ1nPqL6JF1hK0gHkEpZYsrpwrkRqzxuxjTtqjjvZqnCp6s= 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=Q1inYt1P; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=AitbjPGI; arc=none smtp.client-ip=205.220.168.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="Q1inYt1P"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="AitbjPGI" Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 624E0xOr030127 for ; Wed, 4 Mar 2026 15:29:34 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= S7C3ZGxT6MAy3b00eY/LGUqY8Jlj5bg+7oTeA1mEoGE=; b=Q1inYt1P8vbSvquh RbvN1tXFxrQ7WBO3jZeuKtTjeAdNz4ed30cG+G58sHStPLRsDwStQPGQs1dKktMm oJLDvRMSjLmHEww6yy+apcHIz4RMoGWyCBlp5LE+GYdW6c3jGs6VkyZPZyypEeSw WngbUHpGtG1e2KHcRMRUs18ACkBa+1iML/MCIgto3Bgoa9RSbmmaDGcQst1S+ZFB 45FSzvD9ZpzFF6UskSy+MK3gXph4vfIwm/md0q+Vz/2kO7KSp3NJ5AMGDsn/Jj0W 1UKHCydobH6Js0BBYNHw5s10R0Zo6ro7QjZYup1+K2sB6cNbJUxZBK9qhpjPdBv2 4ThEWQ== Received: from mail-pg1-f197.google.com (mail-pg1-f197.google.com [209.85.215.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4cpp4fg9nn-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 04 Mar 2026 15:29:34 +0000 (GMT) Received: by mail-pg1-f197.google.com with SMTP id 41be03b00d2f7-c6e74e55d35so3725346a12.3 for ; Wed, 04 Mar 2026 07:29:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1772638174; x=1773242974; darn=vger.kernel.org; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=S7C3ZGxT6MAy3b00eY/LGUqY8Jlj5bg+7oTeA1mEoGE=; b=AitbjPGIvXVbNYbub9uyfV6HfC7+SN2L2oZLrSo4xFdJxLrm7ZbjpBh+Ergt4LqDh5 n7n+NM2ZIjRGAwXAGjpJoTEtwKa1ETN5+/UZjCbB8X5Xry02pdSiQI2Ho1k7HTzz0WWm 08/nzOGC1jyZG39W3BI1XtKhOxHGJFCempz00uyOTz7nfFMDuzvInv2iaoRCdm27l+XY 1ckv3btGQ+gKVU0SuzWPISYbpVbf1avfHrx5rtK0YD6l5N0TFZ+Rse1ZfgIf9125x0RR kLxeQg+j0lfbCaMdDREXj1Hln+g82KTt0mgdnf8Kb6z/6KJsG2Vr90phqpW2hpQILK4y N77g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772638174; x=1773242974; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=S7C3ZGxT6MAy3b00eY/LGUqY8Jlj5bg+7oTeA1mEoGE=; b=AHNdgAqRrYCrptto3iOREFHAyUYVDFxeWjM0o6nN+pFta+U2PegF2OX2TcC3d6Nqxu X3DfrUGUmfOYjbKDElWr/UCjANBd8IXOMlR8N0L7eP7UwRyKpUV4ubTcbF9Db8Q8PjOS rmIddAC4+RQpMlgtNZ462PldTgb8BHFja4j4GMHezUzJYlSb8TD8rSWHEMyRb+/UkDVX Cy9TDTPj7A9XM5Lj9bqJPmMhGwacFYRpqfSDi9SxWnRGM+J3CWeLKOdNQFS3DzTKS4dx Mw58xOCE7ljIMP3Ug+pmC/VDpxICV3fJpcF0PFsAJ6iDToqm5TJCTUGdOmZ4HXuqnHLk I3Nw== X-Forwarded-Encrypted: i=1; AJvYcCXeqnKJ51lMGozRGW1B+KPvtPwQ7zz0UUy6WxSHO1Y9a0xul+MwaHPDboiL5I0JiIKNYp4R1NeRhuJNzj8=@vger.kernel.org X-Gm-Message-State: AOJu0Yx+O/s9OA+S4tI8a/nEBmfpw+AU1Oew9FPA3AxRpTOjD293C5pp n/mSjSbP/PsGBYDq2w1LqXe47p+Q8p7OgMUtjO/hI5yL6hNbCoOOGoDLGUP2nBg48RYxBb+CzHt MWiy0ClNbFT7Zl6UPOcdMyiM4mPQoZjNpp8tQSCZsaznlgt5T86bDitIOZlt5rMmWD0A= X-Gm-Gg: ATEYQzw+aM5fv2eBbM2AfBsejQxNRu/eHF/z0mI1odvunZxPR0ly5P4NlZXbT89T1Qs KfXfZhVsEI3W+BhW4uQeO9WHo/qEc6PsUPztFQ0JiLEIf+j3KIkjBeMZn0LFSIuBWT2Piapc+E9 a7FsGvomLd62znmpBgxr0jNgwcVz0eTFLb4/KUHlFVTMpSTbK2RMX9Z+6Dbq0bwNPRSSFhBpsUk HpZ57A1G8XMv8bU36nMJ6CpVQ/vwisxqCGO2vgy2Y0zRnll86Pwx/XUJppSZDVtahhuKSIQCz1P DHOicVasfvZBvCBc2V4yAG+6HZjcATGUjAaDdiV7eZ+hEwPXkHvj4g5GugNvHYFjFFAz23Cwed9 vb05po3VrPX8OxjN7gBwLk4wMJMBi5fKwZHVkm2bIiiLf598Aujpr/w== X-Received: by 2002:a05:6a21:1f89:b0:38b:d9b0:e943 with SMTP id adf61e73a8af0-3982e1fe150mr2227258637.38.1772638173484; Wed, 04 Mar 2026 07:29:33 -0800 (PST) X-Received: by 2002:a05:6a21:1f89:b0:38b:d9b0:e943 with SMTP id adf61e73a8af0-3982e1fe150mr2227236637.38.1772638172953; Wed, 04 Mar 2026 07:29:32 -0800 (PST) Received: from [10.204.101.56] ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c70fa61a19bsm17288234a12.9.2026.03.04.07.29.26 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 04 Mar 2026 07:29:32 -0800 (PST) Message-ID: <22b3e2e9-b855-487e-868f-e72fcbbb22cd@oss.qualcomm.com> Date: Wed, 4 Mar 2026 20:59:24 +0530 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v2 5/7] media: iris: add helper to select context bank device To: Dmitry Baryshkov Cc: Dikshita Agarwal , Abhinav Kumar , Bryan O'Donoghue , Mauro Carvalho Chehab , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Saravana Kannan , Joerg Roedel , Will Deacon , Robin Murphy , Stefan Schmidt , Hans Verkuil , Krzysztof Kozlowski , Vishnu Reddy , Hans Verkuil , linux-arm-msm@vger.kernel.org, linux-media@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, iommu@lists.linux.dev, Bryan O'Donoghue References: <20260227-kaanapali-iris-v2-0-850043ac3933@oss.qualcomm.com> <20260227-kaanapali-iris-v2-5-850043ac3933@oss.qualcomm.com> <1dc86b00-9a18-482c-94b1-96692c1dd530@oss.qualcomm.com> Content-Language: en-US From: Vikash Garodia In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Proofpoint-ORIG-GUID: auHSAHHrscON93NYkLQordADbYB_diBJ X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzA0MDEyNiBTYWx0ZWRfX85/oU4YHySXS vhE2Q0ZCJbB53fbJhT863ip9EtjWXukuRKHPQ3kiS61+c1nt2S7CfAzLgYM+jCxBaW2DZ59r7SY nNXrHlk0j7DNJAwb1s/zCJKel1Zlql9pS4jf7RHyTpu0mM6GdNDAZHXxkgrolbj5sJGef6KIBqB AWjCjHQ9rskqr0466pgQmHIlbDRVWfsTmCL35q9DarTtMHICsS3HLF7lHbVUERit0zL8TqdJJ6u eHK5CQxsXsW7hGv0WNjTWkFn0COzVMPtMKx+XltMoZlv1pjbXYdCKBhXNxsmkYT5qfAlW9i+Jzs 7WQiaAl8AXAo/J/BtTdsVYgLuOdTmXss0BuxNQJbp1hwXsJJBa8R0ZMgJC7/yj4fc1HBaxZ41p8 icQ7t//ZWSb+zlBgRVeBDbvSqcQfoAJOsMDB1WBJQU7DwcXY3vs60m76D+GlkRGerkwK0YbDAxb zad+Gkxo6CCgLDzjJCg== X-Authority-Analysis: v=2.4 cv=CdMFJbrl c=1 sm=1 tr=0 ts=69a84fde cx=c_pps a=rz3CxIlbcmazkYymdCej/Q==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_K5XuSEh1TEqbUxoQ0s3:22 a=EUspDBNiAAAA:8 a=aBrO_zpjTiySyTrMC9oA:9 a=QEXdDO2ut3YA:10 a=bFCP_H2QrGi7Okbo017w:22 X-Proofpoint-GUID: auHSAHHrscON93NYkLQordADbYB_diBJ X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-04_06,2026-03-03_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 spamscore=0 lowpriorityscore=0 malwarescore=0 clxscore=1015 adultscore=0 impostorscore=0 bulkscore=0 phishscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2603040126 On 3/4/2026 3:57 AM, Dmitry Baryshkov wrote: > On Wed, Mar 04, 2026 at 12:46:27AM +0530, Vikash Garodia wrote: >> >> >> On 2/28/2026 1:57 AM, Dmitry Baryshkov wrote: >>> On Fri, Feb 27, 2026 at 07:41:21PM +0530, Vikash Garodia wrote: >>>> Depending on the buffer type (input, output, internal and interface >>>> queues), associated context bank is selected, if available. Fallback to >>>> parent device for backward compatibility. >>>> >>>> Co-developed-by: Vishnu Reddy >>>> Signed-off-by: Vishnu Reddy >>>> Signed-off-by: Vikash Garodia >>>> --- >>>> drivers/media/platform/qcom/iris/iris_buffer.c | 7 +-- >>>> drivers/media/platform/qcom/iris/iris_buffer.h | 2 + >>>> drivers/media/platform/qcom/iris/iris_hfi_queue.c | 16 +++--- >>>> drivers/media/platform/qcom/iris/iris_resources.c | 60 +++++++++++++++++++++++ >>>> drivers/media/platform/qcom/iris/iris_resources.h | 2 + >>>> drivers/media/platform/qcom/iris/iris_vidc.c | 4 +- >>>> 6 files changed, 79 insertions(+), 12 deletions(-) >>>> >>>> @@ -177,3 +178,62 @@ int iris_create_child_device_and_map(struct iris_core *core, struct iris_context >>>> return 0; >>>> } >>>> + >>>> +static enum iris_buffer_region iris_get_region(struct iris_inst *inst, >>>> + enum iris_buffer_type buffer_type) >>>> +{ >>>> + switch (buffer_type) { >>>> + case BUF_INPUT: >>>> + if (inst && inst->domain == ENCODER) >>> >>> Can inst be NULL here? >> >> during queues init/deinit, instances are not created. > > Is this function being called during queues init? yes, via iris_get_cb_dev() > >> >>> >>>> + return IRIS_PIXEL_REGION; >>>> + else if (inst && inst->domain == DECODER) >>>> + return IRIS_BITSTREAM_REGION; >>> >>> Are there any other possibilities than encoder and decoder? >> >> will simplify it as >> >> if (inst) { >> if (inst->domain == ENCODER) >> return IRIS_PIXEL_REGION; >> else >> return IRIS_BITSTREAM_REGION; >> } >>> >>>> + break; >>>> + case BUF_OUTPUT: >>>> + if (inst && inst->domain == ENCODER) >>>> + return IRIS_BITSTREAM_REGION; >>>> + else if (inst && inst->domain == DECODER) >>>> + return IRIS_PIXEL_REGION; >>>> + break; >>>> + case BUF_BIN: >>>> + return IRIS_BITSTREAM_REGION; >>>> + case BUF_DPB: >>>> + case BUF_PARTIAL: >>>> + case BUF_SCRATCH_2: >>>> + case BUF_VPSS: >>>> + return IRIS_PIXEL_REGION; >>>> + case BUF_ARP: >>>> + case BUF_COMV: >>>> + case BUF_HFI_QUEUE: >>>> + case BUF_LINE: >>>> + case BUF_NON_COMV: >>>> + case BUF_PERSIST: >>>> + return IRIS_NON_PIXEL_REGION; >>>> + default: >>>> + return 0; >>> >>> dev_err(dev, "unsupported buffer type %x\n", buffer_type) >>> return -EINVAL; >> >> these are bit fields, returning -EINVAL would still match some bits and can >> make the logic as true. 0 can be defined as IRIS_UNKNOWN_REGION > > Yes, sounds good. > >> >>> >>>> + } >>>> + >>>> + return 0; >>> >>> Drop >>> >> >> Ack >> >>>> +} >>>> + >>>> +struct device *iris_get_cb_dev(struct iris_core *core, struct iris_inst *inst, >>>> + enum iris_buffer_type buffer_type) >>>> +{ >>>> + enum iris_buffer_region region; >>>> + struct device *dev = NULL; >>>> + int i; >>>> + >>>> + region = iris_get_region(inst, buffer_type); >>>> + >>>> + for (i = 0; i < core->iris_platform_data->cb_data_size; i++) { >>>> + if (core->iris_platform_data->cb_data[i].region & region) { >>>> + dev = core->iris_platform_data->cb_data[i].dev; >>>> + break; >>>> + } >>> >>> You really seem to overcomplicate things. Replace array search with the >>> indexed array access. Much easier and much better. >>> >>> enum iris_buffer_region { >>> IRIS_PIXEL_REGION, >>> IRIS_BITSTREAM_REGION, >>> IRIS_NON_PIXEL_REGION, >>> // add more when necessary >>> IRIS_NUM_REGIONS, >>> }; >>> >>> struct iris_core { >>> struct iris_cb_device cb_devices[IRIS_NUM_REGIONS]; >>> }; >>> >>> region = iris_get_region(inst, buffer_type); >>> dev = core->cb_devices[region]; >> >> all the regions may/may not be present in all SOC > > You can check for dev != NULL afterwards. with one CB to multiple region mapping, this logic would not work. Regards, Vikash > >