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 CDDE72BEC5E for ; Tue, 27 Jan 2026 02:34:21 +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=1769481263; cv=none; b=RrvI+Abq1q7V2mSij+BU3GnyDdF8rmej2wxHf653WrUNeBYPJO0mieyZkdL4Sr++CAWqpIE0t7OzU8dbBbhXn7NiWzlaNDjZkc0TUgES3RzVL7qup3n1AY1J50JlMRXsk3tG0TRXWB78lPgSAApQU4JPcZAwzK3sxlN21Z8h8Vk= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769481263; c=relaxed/simple; bh=tJDLY7LJId8IpoDfn8n1WXUfW/N2JxdKsIT0hCxg5qk=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=sVcKBCn2xtFIRRa/m/kzgGu6hGNk5bbaLN4wEWb09g4iFRl2a+zHtEDtKVD2yzbJaQUIqB0Y9qKjyNsj0BI9LLDquQMzJ0zQLtISde2H+mQjSG0WtWoXn7p6gGQdjQI9y2slhHPihv/fEDg4GLqM5TvkHOSDciE6hlr6oAVJS2g= 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=mTogfLhR; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=TN80QDSx; 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="mTogfLhR"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="TN80QDSx" Received: from pps.filterd (m0279866.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 60QKhJ5D2944458 for ; Tue, 27 Jan 2026 02:34:21 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= AlyBoZIoVqBmBc/HIZd0w9u1HtTltCmF3/e8gfFCH8A=; b=mTogfLhROAiYNiWv gTkQ5eRKqKb2QVF9q0Q8BIEYDJyt7Mg13VZkRs3I7o65JebNU1uMvXa0wiaiclo6 2MR8Xoijo3IQpne7czIqtpJnfGLSJoVA1FY5SIPoLx7uXKl/KJyffFjxUX6kV4LP fdwRnqTxsrlofZUppDKH9Xq7BuGJP+Wx0mjsd0Ja8jFzZ0sc4jvLRm16QEEG/pVU oe34vqaCtlxkcfRBzipYby2WEaR3BnuP6oeozw8k9uX8K4/0Og35dvIOAlMD9ced FIz0bC7v87PvidpK/oyVq+FfJbN+NM9il2YPYgHbCbTu/vtIAOTyadLlGuVnIKer 072/0w== Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4bx26838a7-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 27 Jan 2026 02:34:20 +0000 (GMT) Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-29f29ae883bso35641755ad.3 for ; Mon, 26 Jan 2026 18:34:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1769481260; x=1770086060; 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=AlyBoZIoVqBmBc/HIZd0w9u1HtTltCmF3/e8gfFCH8A=; b=TN80QDSxIBuyhKz2fjxeW0uUlbciL1b6aX3717ZzMZYULci5kFtGAezWUibRJVcIEH AnSW0iU6A1fSgenuGaODVrpMy4pGVSIOfkbnZ4WIdFyDTUQOotVe8hh6BuhCozvamDn/ fX5NRj2Z26lsxzsMUT2BNVaavL45w8IKHQQ5zdNCE7ZB6kwzBg7zN0P6mt3rudXxTTQI znBm748JHZshltW0Ss9mvVdSCD/aI50GqOaKfmDYucl+Pe4psUL/5Fn3X2kUz+ZLTfLI iK6A3Kx9a07hVm6i58gQajDMVObYzX1Knp2IAGaOA4jGKuebikf25zCL3v8LUf1X09O7 z4ZQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769481260; x=1770086060; 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=AlyBoZIoVqBmBc/HIZd0w9u1HtTltCmF3/e8gfFCH8A=; b=VtQifpX9auujnSmZGty4gozIkelFI19TDQ6/DdlEWwLdhw0/oDJqOy6rFKP3wyi4PE F1f0AmYrBBX0pK+HceGzbh6W/5OwoaB4//n3eYJaZp6+cSNOjnJnijKGNEYurftT9fMp fCJLwu/RdxINyjoECXmwHFA9DHQ9kr2hEymJWOY/RORNn8c5rwS5AWkE4VvuiQGkEDIi +XDcO4AFdaXLonQP9rOdfF0ZzveeMD4oyE1uijRaJqD8JCDi47GlxaRMgKQmufDNUfFk Su56HRMJPEHv9p2jA7F+BZNYVh89/3LUDV3wfPaRefUZm2RSK00DExfSU08uUhpTZs7a MHJw== X-Gm-Message-State: AOJu0Yz12Zc3bBNDXoEtyG1H67A/36syh2UC5OfLKTm7hVCtE/CzDs9M 660TWkn87E5iFqFG1KZ98Juz2P2RXbMtAi5sOvaRKdo/3xqGsECno+0HVHdccFCSEOU7TzF48EA oRHsem1h5jxTsoCBCDIKUZk5RsNEGVQdhNAaDNj4NbQNSzjuA1t3a5aOiGIqo5qQkMqU= X-Gm-Gg: AZuq6aKo0266YIP12uuHFxVL29AHIDu59FHFZaukTCfkkde6BZ5XG5vInRs/09lpD0O ivIpHWc89IaoPS/b902gysl3Auh6GzF5602Zlub/jCuYJsUewkMsTqvNPWJmbpCqEZDVqAKUFws /voQt8EkSmm9t9UOZ2vZeWHROkau10dHHZCpsDAO+aDZS5/BcPLDq4imTXm3NkP/AYR7dq749fA w5Cm0ybhuU0PxUE5B28eSRz/ZrYdlkiYVuQedzdQCp/oJmeAub80fdwS/vZs52TafF/QKcRnd3N jb3A20GMG3Wl21Ioy4bqbauzTjklOVrFkHeq+uGwIN94kkfkypVhr6fHJLvVVgmTmYPiLgFKSpE cegOaE+Bth4R6nMhzQ+Ap4/kFw22k+qqetoF+z90= X-Received: by 2002:a17:903:2a87:b0:29f:e787:2b9b with SMTP id d9443c01a7336-2a870dd93a8mr3029645ad.41.1769481260216; Mon, 26 Jan 2026 18:34:20 -0800 (PST) X-Received: by 2002:a17:903:2a87:b0:29f:e787:2b9b with SMTP id d9443c01a7336-2a870dd93a8mr3029215ad.41.1769481259720; Mon, 26 Jan 2026 18:34:19 -0800 (PST) Received: from [10.239.133.242] ([114.94.8.21]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a802f97a3bsm98535175ad.49.2026.01.26.18.34.15 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 26 Jan 2026 18:34:19 -0800 (PST) Message-ID: <66aae641-a340-4f0b-9d68-535ac296a335@oss.qualcomm.com> Date: Tue, 27 Jan 2026 10:34:13 +0800 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 v10 4/7] qcom-tgu: Add TGU decode support To: Konrad Dybcio , andersson@kernel.org, alexander.shishkin@linux.intel.com, mike.leach@linaro.org, suzuki.poulose@arm.com, james.clark@arm.com, krzk+dt@kernel.org, conor+dt@kernel.org Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-arm-msm@vger.kernel.org, coresight@lists.linaro.org, devicetree@vger.kernel.org, gregkh@linuxfoundation.org References: <20260109021141.3778421-1-songwei.chai@oss.qualcomm.com> <20260109021141.3778421-5-songwei.chai@oss.qualcomm.com> Content-Language: en-US From: Songwei Chai In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Authority-Analysis: v=2.4 cv=bIEb4f+Z c=1 sm=1 tr=0 ts=6978242c cx=c_pps a=MTSHoo12Qbhz2p7MsH1ifg==:117 a=Uz3yg00KUFJ2y2WijEJ4bw==:17 a=IkcTkHD0fZMA:10 a=vUbySO9Y5rIA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=M09XoMm3SDISpC_kuzgA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=GvdueXVYPmCkWapjIL-Q:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTI3MDAyMCBTYWx0ZWRfX9S9ZjleDF3IH C7P7NK1fyNBN3TRIK9ayysbaa0FIsO2iHdXHAIWJ+sT9aqbA0xeUNFwSFbTy1QJ6XD93DbiH9lb HMREzuwjbhGKMwNP4XbM5svg+/zJo2wznccS+la3QhTkzEdie1BbKtQbZNOjVY96SBwq9XfVlUU 1sJEzeLWBFEynurNzccxVExpzYb+CEgaPggGopbADLDkgjmU5cNvMAJPIGnJxF31Jf8WoJqJL14 ddGknwuCNIaGpfp0Od99Jd81glvWNFrcGR6hzBC1LIyrcIlcXIXb6Vb9dZF2CMLSc4ZZfRFjxq8 DUXylW+WsrQsaLbVAnYEpIaodSptbpZuN2utdCgG4pcEn0yL0CLMcDtQtr0Xt+IkBOu5f271juG susHFg1bsxLKnhVtsoQLcyupdWPgfiLqcv/fsCu5jcyCbGeH3rDLW4mwv9nw0OggheugrE5LFZY mfuj1MnqObhxhBrRE6A== X-Proofpoint-ORIG-GUID: 6Cw4J5-QYUjuYxMxHL6fl4NywjnIGEUp X-Proofpoint-GUID: 6Cw4J5-QYUjuYxMxHL6fl4NywjnIGEUp X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.20,FMLib:17.12.100.49 definitions=2026-01-27_01,2026-01-26_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 lowpriorityscore=0 malwarescore=0 priorityscore=1501 clxscore=1015 spamscore=0 impostorscore=0 suspectscore=0 adultscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2601270020 On 1/13/2026 7:13 PM, Konrad Dybcio wrote: > On 1/9/26 3:11 AM, Songwei Chai wrote: >> Decoding is when all the potential pieces for creating a trigger >> are brought together for a given step. Example - there may be a >> counter keeping track of some occurrences and a priority-group that >> is being used to detect a pattern on the sense inputs. These 2 >> inputs to condition_decode must be programmed, for a given step, >> to establish the condition for the trigger, or movement to another >> steps. >> >> Signed-off-by: Songwei Chai >> --- > > [...] > >> @@ -18,8 +18,36 @@ static int calculate_array_location(struct tgu_drvdata *drvdata, >> int step_index, int operation_index, >> int reg_index) >> { >> - return operation_index * (drvdata->max_step) * (drvdata->max_reg) + >> - step_index * (drvdata->max_reg) + reg_index; > > I think this type of calculations could use a wrapper Agree, this calculation is already wrapped in the calculate_array_location. > >> + int ret = -EINVAL; >> + >> + switch (operation_index) { >> + case TGU_PRIORITY0: >> + case TGU_PRIORITY1: >> + case TGU_PRIORITY2: >> + case TGU_PRIORITY3: >> + ret = operation_index * (drvdata->max_step) * >> + (drvdata->max_reg) + >> + step_index * (drvdata->max_reg) + reg_index; >> + break; >> + case TGU_CONDITION_DECODE: >> + ret = step_index * (drvdata->max_condition_decode) + >> + reg_index; >> + break; >> + default: >> + break; >> + } >> + return ret; > > The only thing your switch statement is assign a value to ret and break > out. Change that to a direct return, and drop 'ret' altogether > I kept a single return intentionally so the function has a single exit point. This makes it easier to extend with common post-processing or debug logic later if needed. That said, I’m fine switching to direct returns if you prefer the simpler style here. > >> +} >> + >> +static int check_array_location(struct tgu_drvdata *drvdata, int step, >> + int ops, int reg) >> +{ >> + int result = calculate_array_location(drvdata, step, ops, reg); >> + >> + if (result == -EINVAL) >> + dev_err(drvdata->dev, "%s - Fail\n", __func__); > > Avoid __func__. > > The error message is very non-descriptive Marked.Will update. > > [...] > >> static int tgu_enable(struct device *dev) >> { >> struct tgu_drvdata *drvdata = dev_get_drvdata(dev); >> + int ret = 0; >> >> guard(spinlock)(&drvdata->lock); >> if (drvdata->enable) >> return -EBUSY; >> >> - tgu_write_all_hw_regs(drvdata); >> + ret = tgu_write_all_hw_regs(drvdata); >> + >> + if (ret == -EINVAL) > > stray \n Sure. >> + goto exit; >> + >> drvdata->enable = true; >> >> - return 0; >> +exit: >> + return ret; > > ret = tgu_write_all_hw_regs(drvdata); > if (!ret) > drvdata->enable = true; > > return ret Will update. > > Konrad