From mboxrd@z Thu Jan 1 00:00:00 1970 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 9974C360ED6 for ; Tue, 12 May 2026 16:33:16 +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=1778603597; cv=none; b=ldN2464fIPP082VH5mqizMdAcRxukubgu7gnRHgI1i87WLTwWtUXFp7+OU7jvYBcdqTCXWQ7mWCWDUnll77lA60QJJk9lDW6/itlLXZhdfCgQ2rxPrl4Kkpg54tbpmvMfS++JCTwxtbtkAME/BKHmjF1LIDkrcKdQdtWcmK6xf8= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778603597; c=relaxed/simple; bh=Yp6nAARU9XVSCEW05u32veLAh1I8fS5I6LuP49o/pzc=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=h+Vh/eRYH5Y74UB89Gu1qaGltF/gOsZWuQ2/cWp2gF+NZFvXVWXHHCVF20z79nLtr96Geq9G9Yfmaa5hvM7qICqRnY6fGxqL54MoUvApyvy3m5LrqBWebKOrY+zYdbzeBNlgIbVZGZEgVDZK2oEekp2lv7RTyOZoLIf6LcnPdN4= 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=TjHXFo90; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=NT8IR3ik; 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="TjHXFo90"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="NT8IR3ik" Received: from pps.filterd (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 64CB5Mpe591824 for ; Tue, 12 May 2026 16:33:15 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= YDi9TZpO57ClLA954huq+FpLjiBkLO/JKvZoyMx0Gf8=; b=TjHXFo90hOmuUfvo uebrvy+7+aIhf6Gf1A7o4iDm6HWiSV8WU4570Ng3W5PoBmNGOjVCvMXttcS9qxPc CoiYeORqvjDjwgXDurPSOy46/r5VpiOTvxvAw6LZfGOt0+6zMKbqQp9naDekptr4 hPNVWtMzOVTF1zW25ArW0ylL8rPPoVEKmXMgkYuaeyfyuibiVfFP8Rjx1f8LxXHe B0VnDeEnv116unw/Jmi5wjpWIbBAt0Rd8JO0Qb+YtFGTU+/IC8IXn3kYabcdVnqf V+wknhhW31sAyI17VrfI6pJby+jezjI9mHJSXcx8uqCArjsgtDBdWyt2i7OO2+Ez v3kiog== Received: from mail-pj1-f70.google.com (mail-pj1-f70.google.com [209.85.216.70]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4e4319sb4m-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 12 May 2026 16:33:15 +0000 (GMT) Received: by mail-pj1-f70.google.com with SMTP id 98e67ed59e1d1-366ded3bed0so2922476a91.0 for ; Tue, 12 May 2026 09:33:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1778603595; x=1779208395; 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=YDi9TZpO57ClLA954huq+FpLjiBkLO/JKvZoyMx0Gf8=; b=NT8IR3ikUtisZOAsvmEU1jVhQyJ5IMgERJRFab/SXheO3TCENn/bwMQ/WTERtcol2Z EKONnlbhem/IbNbmjZojjfIRv0Je5ciQU3yLW6HSI+fBf+z5wrd9gHFSPAVuvSy0ozhO r67hNfz9NlFW5RjsYuhf2+eDDuRxqp0vMM/UkGxwr46c04xnKWl+OYALqt13T0/NFajT AVOl0d0sxRm0EiOT9WbluniSTCFDVaSYVk7ezX3/4sQXrFKiGRMTYe2G4hlzAXwYhu48 1dSu5aoYNQSVd+gezUTdf6VJBQNGWpQQC47eWeDPCgBtih3hlAYd0PXtFS8o4Qmd33xy 5Jdw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778603595; x=1779208395; 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=YDi9TZpO57ClLA954huq+FpLjiBkLO/JKvZoyMx0Gf8=; b=bnc60aobHZp/3Qn+XesBBxJxCdkakK+/XOtiQ95ghiL4EPxJpdzOUiJCDj0BNi7g03 33LgK12pQTKCGxGFHJxZMgA+3dlq+bWx0Qq/TOoIvmZmF8MojpLlI7Gp/xeRNNdqfxwa B4Lw9clGEYyXPXV5/i3ezLSmLOnx6Zn6l8PxUwD/Z48cU03qOr1b6KA8Y1T/vwoLgHjs qomKApay9b3wweqve4Z77VLBQSm7dl9ZbXOWnZZCnHmRQsSqQ2ZpQws59Dlse4rwC4w0 B5xPUM8vum/Sa9bgLjjYoQCSAiig2Bz+AC/FSQVXvV2TNzvlHIWVZiU/OKXpbpW2xSfg 1yHg== X-Forwarded-Encrypted: i=1; AFNElJ+1gdhN3rjV8wOUZWtRc4aRa4h9FpPbAu4PUz6J9fr7vfiE/6tWO+VbMpCrfzx3kcno4Ab+dJBbEe24NxE=@vger.kernel.org X-Gm-Message-State: AOJu0Yx+jyIHdr8yzCUL4T1C/1woNCHmN9LJYrmdal1f95Tc2MEX13Pq sxFVGfPNr1avd3nZETNkryrLcSyE2qhNJ6xosVVDHCqP45p4Wk+s0PE+7AlVoQAghA5B4QtWPJC Kl7YvVLBBwHIoJWYbf39vEzemSN+/4gW8HqPRan//WeZlPwC89QMsqQ1s4TnG0DI98Pk= X-Gm-Gg: Acq92OEGK/W34rGdltzUQVmriYX9VMJcupQBUnHQyyectlcqKZSFbg8mK+icDkC7TVS ibSY5Hbn/pJ0D9mjiqxi99jqxrnCFUKTXOPyTNvzIkON9LHEPqyQXTRw1+JRGvxGhYkU7HlvBYx wTvANQLcZ3/7PMroePV/AHnsgcjefhlKzeljR74pxwwBIOJaMWq6qko6nHC5MzrmwN0jvPxJp16 z5H2Au5Dv1zrLVFRePkF/pOwNVf7D/Iqde4LJGK0mG7igLXQP74s4HiQkqLybO74c6lVjAeu/c3 ObdjckVEq82k13hIoh6leO1OSJwWtEj6JBpcUGJYm8jG/ym34pzUX/Nc4/4HR3goIzyLt6Fh5Gv uwqr9lrY+/ZxpKSfsqNBAY+gA4wiLF1dRSk/cTT2ga2sROG3hpTpLh6M2 X-Received: by 2002:a17:90b:4b08:b0:35f:c6bf:2bba with SMTP id 98e67ed59e1d1-368abb24d2amr4657781a91.11.1778603594557; Tue, 12 May 2026 09:33:14 -0700 (PDT) X-Received: by 2002:a17:90b:4b08:b0:35f:c6bf:2bba with SMTP id 98e67ed59e1d1-368abb24d2amr4657747a91.11.1778603594090; Tue, 12 May 2026 09:33:14 -0700 (PDT) Received: from [192.168.0.172] ([49.205.249.231]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-368ede2074esm347739a91.1.2026.05.12.09.33.10 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 12 May 2026 09:33:13 -0700 (PDT) Message-ID: <63f1a17a-3502-47fc-ad6a-9694e76367d1@oss.qualcomm.com> Date: Tue, 12 May 2026 22:03:08 +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 v5 2/2] media: iris: Add Gen2 firmware autodetect and fallback To: Dmitry Baryshkov , 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, Dikshita Agarwal References: <20260512-kodiak-gen2-support-v4-v5-0-a98968423d24@oss.qualcomm.com> <20260512-kodiak-gen2-support-v4-v5-2-a98968423d24@oss.qualcomm.com> Content-Language: en-US From: Vikash Garodia In-Reply-To: <20260512-kodiak-gen2-support-v4-v5-2-a98968423d24@oss.qualcomm.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTEyMDE3MiBTYWx0ZWRfXxAYrwcAtUhmB broOPWzW2UWeZek8Oa06Hx+vvL/HMvxxkwLPu4YhggeJOFV1YneC6VTUfsc7fxrn7opqJVfx742 Om/JLy1NLPqP7s/ZKeD2gOxNf3sXj2Mg8r7h3f5SLY+aWYe5zX6G1WStEiDgxjTCN1/cpV/1pbO T7dDJ3ig0h9ux5KUdeEP6Xxzj8jBxQgHmuoNKIs/czpnf3QFJB5f0nRok6XUmItqAuSQRKMYFLC 8eCeXtZkzAUOmu9ElVm5pXbvT4ZaV0s8A2H/odg6dW/8MvIGnvZq2/4ICFfPohy23juzhRlfC/w 07pSelJ1RtxYnNPzqr2Xgg6wt1ULzvzKk+fkg4RalLbZtA762ONsBTNxcBYvO4dFcjQpb6qDTLn VgxvdWs0Iy0F9RhvFHa8IgWOmeMrWTb3HngCiIb6ZGBp5CDupMUkYZ1ZCc/2Wa7Ma6ZdoXhBUgQ EKOz3IZGQl5NUBHBOFg== X-Proofpoint-GUID: jOQFjGhB0CFO6R3kuQVYSiff5leu6fW9 X-Authority-Analysis: v=2.4 cv=bp98wkai c=1 sm=1 tr=0 ts=6a03564b cx=c_pps a=0uOsjrqzRL749jD1oC5vDA==:117 a=o+V+sR5qrBln4ZYy4JV1aQ==:17 a=IkcTkHD0fZMA:10 a=NGcC8JguVDcA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yx91gb_oNiZeI1HMLzn7:22 a=EUspDBNiAAAA:8 a=0mKQKuFm7qoxaEEgN30A:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=mQ_c8vxmzFEMiUWkPHU9:22 X-Proofpoint-ORIG-GUID: jOQFjGhB0CFO6R3kuQVYSiff5leu6fW9 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-05-11_05,2026-05-08_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 adultscore=0 clxscore=1015 bulkscore=0 malwarescore=0 lowpriorityscore=0 suspectscore=0 phishscore=0 spamscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605050000 definitions=main-2605120172 On 5/12/2026 8:51 PM, Dmitry Baryshkov wrote: > From: Dikshita Agarwal > > Some Iris platforms support both Gen1 and Gen2 HFI firmware images. > Update the firmware loading logic to handle this generically by > preferring Gen2 when available, while safely falling back to Gen1 > when required. > > The firmware loading logic is updated with the following priority: > 1. Device Tree (`firmware-name`): If specified, load unconditionally. > 2. Gen2 default : If no DT override exists, select the Gen2 firmware > descriptor when present and attempt to load the corresponding > firmware image. > 3. Gen1 Fallback: If loading the Gen2 firmware fails and a Gen1 > descriptor is available, retry with the Gen1 firmware image. > > When a platform provides both Gen1 and Gen2 firmware descriptors and the > firmware is loaded via a DT override, the driver detects the > firmware generation at runtime before authentication by inspecting > the firmware data. The firmware is classified as Gen2 if the > QC_IMAGE_VERSION_STRING starts with "vfw" or matches the > "video-firmware.N.M" format with N >= 2. > > If a Gen1 firmware image is detected in this case, the driver switches > to the Gen1 firmware descriptor and associated platform data so that > the correct HFI implementation is used. > > This change makes firmware generation detection platform‑agnostic, > preserves DT overrides, prefers newer Gen2 firmware when available, > and maintains compatibility with platforms that only support Gen1. > > Signed-off-by: Dikshita Agarwal > Co-developed-by: Dmitry Baryshkov > Signed-off-by: Dmitry Baryshkov > --- > drivers/media/platform/qcom/iris/iris_firmware.c | 105 +++++++++++++++++---- > .../platform/qcom/iris/iris_platform_common.h | 6 +- > .../media/platform/qcom/iris/iris_platform_vpu2.c | 11 ++- > .../media/platform/qcom/iris/iris_platform_vpu3x.c | 8 +- > drivers/media/platform/qcom/iris/iris_probe.c | 4 - > drivers/media/platform/qcom/iris/iris_vidc.c | 3 + > 6 files changed, 105 insertions(+), 32 deletions(-) > > diff --git a/drivers/media/platform/qcom/iris/iris_firmware.c b/drivers/media/platform/qcom/iris/iris_firmware.c > index 1a476146d758..64a2170bf538 100644 > --- a/drivers/media/platform/qcom/iris/iris_firmware.c > +++ b/drivers/media/platform/qcom/iris/iris_firmware.c > @@ -16,20 +16,95 @@ > > #define MAX_FIRMWARE_NAME_SIZE 128 > > -static int iris_load_fw_to_memory(struct iris_core *core, const char *fw_name) > +/* Detect Gen2 firmware by scanning the blob for: > + * QC_IMAGE_VERSION_STRING= > + * and then checking: > + * - version starts with "vfw", OR > + * - version matches "video-firmware.N.M" with N >= 2 > + */ > + > +static bool iris_detect_gen2_from_fwdata(const u8 *data, size_t size) > +{ > + const char *marker = "QC_IMAGE_VERSION_STRING="; > + const size_t mlen = strlen(marker); > + int major = 0, minor = 0; > + char version_buf[64]; > + size_t max; > + > + max = (size > mlen) ? size - mlen : 0; > + for (size_t i = 0; i < max; i++) { check for comment in previous version. Regards, Vikash