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 739AC38944E for ; Wed, 3 Jun 2026 11:19:36 +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=1780485577; cv=none; b=koWGzGX3Y1p1b5YfHTvJwTKpz2I5ugvCcFWNWLnuAg3QtUdkScYUP+rQ3uf8eiFvJYgzhRoaziw8iFnZXwY2nD7XYoZBojBi31PRaNsSEd6f9We0XNJLwJCiqDl8/Bci3ZTR4nnw/TQ+I65SWoganQaOHMlzv3TJa4sNYKgvLZM= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780485577; c=relaxed/simple; bh=kZoUTfsDT+RfT9JubWcPrDJcSQyFYJpzaANhbfZqFts=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=pA+DZYZDWfBi9hvgdeeEzPeguLBfW2WMAasSqLtuID8ot5/riJRu6owIRtoQQWe63tbqVyksqsXHOYdQKh/2WpwYGA4mCnhQF3AkNlMaclz0qkOwYP/XAHsZAdJa5U4QggDhlk0G+QjXilXML2an3iWLjhH/rr8f+KnpGUNEeEw= 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=P4+I5Msv; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=dE633e0M; 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="P4+I5Msv"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="dE633e0M" Received: from pps.filterd (m0279871.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 6536RSN31200262 for ; Wed, 3 Jun 2026 11:19:35 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= vCOLHvwV3YQ3YkFnuUfmclvlWehtJAlfoI/KL/kihbE=; b=P4+I5Msv3LWbf+y3 KtTjVVbUB0Ud1TC8oaSnUQaLwrQVemJZL6Viq1WS9y176RAqyeoG9rPuZuX0zMqd CyN7VNWt7sl57aPK5H6ZVUQjL5eyF9qJtZi3RqkXdbmRzj5lhGyUU1y4FJnHriq4 c4IhzNSlUwOOUTspkM9yn4kpZAmVHY/aKSJ3/W3At9kgADxfT6E2Y5m7EEGe9HAV rrGSr4mUIXQidUBRlGpWFBapLq8aZVew7z1ig/HHdZYe3hTQbNSY+5YiiXQaWRYU eCec/DIAIHY0n7n+IP6ITLhfo391i81UzrNL/qMOUD5Ki2Wc7tZPF7OHxM+6kwrV vWBiPQ== Received: from mail-pj1-f71.google.com (mail-pj1-f71.google.com [209.85.216.71]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ejckw1rqy-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 03 Jun 2026 11:19:35 +0000 (GMT) Received: by mail-pj1-f71.google.com with SMTP id 98e67ed59e1d1-36bc5e97950so6827998a91.1 for ; Wed, 03 Jun 2026 04:19:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1780485574; x=1781090374; 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=vCOLHvwV3YQ3YkFnuUfmclvlWehtJAlfoI/KL/kihbE=; b=dE633e0MV3xtxjpmUj4hNMLVDM76fUQR/rZiPlULemoaapmjzGqxKD243MfusbaXGY zodAxHT0pn3v2n0zlqPy/eNHTkk629ZkWUosJwJE1HeeW4XJUhA1ruttXmlsU2bKD0UP 6GQ1hP2A26RepJ5tK0gAn1dQZlX6JWQBnewN92GUfNi37dDJxJj9Qpl6LiXS/VJvQH/V ARHBSxXZI5t97UOO43e3pMWEY5UrB49llGJxfopoMXG1SObDhPnp47h8OLOxyIfJ/VyP k8wEVnl8XFkEq7RGD0jbvSOoIXq3ezb2LcS2cAY9VEh+E3daCDfgEOuA67oGGdbAaOfr FllA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780485574; x=1781090374; 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=vCOLHvwV3YQ3YkFnuUfmclvlWehtJAlfoI/KL/kihbE=; b=HGXe7tvHZmetW8jSaQzGo/Pg1cmC7ysxE/KOmWO5JxBcnsNqQyANvWwcTREExe7biE F427/y85pkY4eXBznp7cznWjn7y4rnT5lz61m/1O5zaRK6jpuR7vdhBSHtALS3KtVdBi MTBz/QupwZLm9aP0aXPryWMW3YzBHn8UxNUpBVSdtc5Tx5BatnZjNPPG7WYqoQdspQB1 pmfL557pVPv1MG6E2piw2L0g0pK/sLtU/4mizId0sJ8Rp3RlY5jyIgLZQmv5u7sDYNaX jfCIBEDlw6CuTe5UDOJSn21fBCsOEjG6ysmqKgSyweDsdgdyZLEPPwj3mGEgobA14drV k6nQ== X-Forwarded-Encrypted: i=1; AFNElJ/rCdDRWPhSLrlvQUWuLDyJv0XXqbadNGyaSrVXXND5yxtR+o2jt090WiF2olW9rT4Qw91wfOpxOpgZdYY=@vger.kernel.org X-Gm-Message-State: AOJu0YxBFoir3AyaLbwQyoyjofpFX1akeSolO6s4IvMbkKJGstxnbW36 CqhepbVYOMFRJDIxNjErTdulEN6XMtseogWiskav/eMM91hf9Gkv1SW5XN6UamweFnhSwglAjFe LMSmiabFyTZNPqcGB6/iITiN0c+I+0yHa6jZZB/R6R3PxhDFtCDlJh3CYKz4ZNDfLU3s= X-Gm-Gg: Acq92OHp2KolnvujwZyJxc2HIUbvrezZnIj1qTC+M4yYXrx1zqWTvCIfKj9P+W6pFFA zIxC/l6rHN9ZR9q+71g1WT3Yqn48sVCQGkDs8HL/3rmJkMSUHfigKu1rO5hfrxWDU7gWkgQDgT0 6k0pcs3s8sdUj7NR3dzEoXUDc4BAmkS5XcFPXfrkl+RNBwkQ0d1WMNwu1Yss3p9X2Zd8UveZeo5 w8QHyNnYZquu+AlQyMTpcpceH096+qlzCjs3lDnHB+py4smli7vvs2Xm2E8b13e4wECbT0KooX3 mtoxJ5dHmqdw81kHufhRB+Oq0mckkzWHVzC7y2kt19CI8dJxvj0bWRJMVbWV/ii2Qlf0CcG9H3A KKc6O8njnVNTd22fjyaLivykXa+3VqYsqbOa4hzsnjtOC6TZ2gT1wmh/p9TpqvvuMUKU= X-Received: by 2002:a05:6a21:7a97:b0:3b4:82bb:cb67 with SMTP id adf61e73a8af0-3b4978d6511mr3387439637.39.1780485574258; Wed, 03 Jun 2026 04:19:34 -0700 (PDT) X-Received: by 2002:a05:6a21:7a97:b0:3b4:82bb:cb67 with SMTP id adf61e73a8af0-3b4978d6511mr3387408637.39.1780485573657; Wed, 03 Jun 2026 04:19:33 -0700 (PDT) Received: from [10.217.219.207] ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c85df0b315esm1916840a12.26.2026.06.03.04.19.30 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 03 Jun 2026 04:19:33 -0700 (PDT) Message-ID: Date: Wed, 3 Jun 2026 16:49:28 +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 v1] spi: qcom-geni: Fix cs_change handling on the last transfer To: Viken Dadhaniya , Mark Brown , Jonathan Marek Cc: linux-arm-msm@vger.kernel.org, linux-spi@vger.kernel.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org References: <20260529-fix-spi-fragmentation-bit-logic-v1-1-3b30f1a3dd7d@oss.qualcomm.com> Content-Language: en-US From: Mukesh Savaliya In-Reply-To: <20260529-fix-spi-fragmentation-bit-logic-v1-1-3b30f1a3dd7d@oss.qualcomm.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Proofpoint-ORIG-GUID: Z9fdTC6H5BKUnMqCMcu06PaZxh9rte7s X-Authority-Analysis: v=2.4 cv=edUNubEH c=1 sm=1 tr=0 ts=6a200dc7 cx=c_pps a=UNFcQwm+pnOIJct1K4W+Mw==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=FelO9ux0wxsA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=3WHJM1ZQz_JShphwDgj5:22 a=VwQbUJbxAAAA:8 a=EUspDBNiAAAA:8 a=SmtWm-_bhN_d2ojGWe4A:9 a=QEXdDO2ut3YA:10 a=uKXjsCUrEbL0IQVhDsJ9:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjAzMDEwOCBTYWx0ZWRfX/Wv8Iv4mCMA5 0PRfLUVX06yh2dTiN6MZiYUsj69DkJeB1Vwk8ctPl1f7Wh8QVMhvkZ1yaSQQ/joLFwXpGNjS8Ol UZFWThRp2wLR/izxB5R+x0brxQUJ29RMPX9tOQUoTYG1xHfF1rQXv5fvJdxi6vndKjEpCkcWsmz DC3vngo/FgwAQWiy4iKpiTiU5Lm3YnDu2wQArW+zLAiWNlmlpw6qoBPoSz52LUyN98uTJlnDXRG I/HrWYMgZyI1EhqNoMj/ZxhjN9y2cHqTLK7uB8G/ubmVfVDC7Fb9b2WMzrSsEBjWNA9UqtpHxKr zj4IbX3tXd+D4hyrURldsL5w5vCT3QA+4DJrsUQdVSDO3iClKKyqbgW5SqAicS7rc87FcxvMIUo ax/sfrL1Or+L9XYJ6PVUpofcdrxl93ZpuvqvHqsVi+wj/cDo0959/wNGJQPgpxse5XV/aTrQ2IR fiI93+ENjFD5UuA6gjQ== X-Proofpoint-GUID: Z9fdTC6H5BKUnMqCMcu06PaZxh9rte7s X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-03_04,2026-05-28_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 adultscore=0 malwarescore=0 suspectscore=0 impostorscore=0 spamscore=0 lowpriorityscore=0 bulkscore=0 phishscore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605210000 definitions=main-2606030108 On 5/29/2026 12:33 AM, Viken Dadhaniya wrote: > Commit b99181cdf9fa ("spi-geni-qcom: remove manual CS control") introduced > automatic CS control via the FRAGMENTATION bit, but missed the case where > cs_change is set on the last transfer in a message. > > For the last transfer, cs_change means that CS should remain asserted after Please make it clear if cs_change = 1 or true ? for CS assertion ? This is to make it understandable for anyone. > the message completes. Since GENI SPI controls CS through FRAGMENTATION, Please provide FRAGMENTION bit information to know what it does when set to 1 and 0 ? Same for better clarity. > set FRAGMENTATION for this case as well as for non-last transfers where > cs_change is not set. > > Additionally, setup_gsi_xfer() was storing FRAGMENTATION (BIT(2) = 4) in > peripheral.fragmentation, which is a boolean field consumed by > gpi_create_spi_tre() via u32_encode_bits(..., TRE_SPI_GO_FRAG). Storing 4 Writing 4 ? > causes u32_encode_bits to mask it to 0, silently disabling the FRAG bit in > the GPI TRE regardless of the cs_change logic. Store 1 instead. > confusing to understand. > Without these fixes, TPM TIS SPI transfers deassert CS between > single-transfer messages that use cs_change to keep CS asserted across the > header, wait-state, and data phases, breaking TCG SPI flow control: > can we also mention scenario like TPM client controls the CS separately on its own. so it becomes clear to understand requirement also. > tpm_tis_spi: probe of spi11.0 failed with error -110 > > Update both setup_se_xfer() and setup_gsi_xfer() to handle this condition. > > Fixes: b99181cdf9fa ("spi-geni-qcom: remove manual CS control") > Cc: stable@vger.kernel.org > Signed-off-by: Viken Dadhaniya > --- > drivers/spi/spi-geni-qcom.c | 27 +++++++++++++++++++-------- > 1 file changed, 19 insertions(+), 8 deletions(-) > > diff --git a/drivers/spi/spi-geni-qcom.c b/drivers/spi/spi-geni-qcom.c > index a04cdc1e5ad4..0618f6bd7878 100644 > --- a/drivers/spi/spi-geni-qcom.c > +++ b/drivers/spi/spi-geni-qcom.c > @@ -449,10 +449,15 @@ static int setup_gsi_xfer(struct spi_transfer *xfer, struct spi_geni_master *mas > return ret; > } > > - if (!xfer->cs_change) { > - if (!list_is_last(&xfer->transfer_list, &spi->cur_msg->transfers)) > - peripheral.fragmentation = FRAGMENTATION; > - } > + /* > + * Set fragmentation to keep CS asserted after this transfer when: > + * - non-last transfer with cs_change=0: keep CS between chained transfers Seems typo, should be keep CS de-deasserted between.... > + * - last transfer with cs_change=1: keep CS asserted after the message > + * (e.g. TPM TIS SPI uses cs_change=1 on single-transfer messages to > + * keep CS asserted across header, wait-state and data phases) > + */ > + peripheral.fragmentation = list_is_last(&xfer->transfer_list, &spi->cur_msg->transfers) ? > + xfer->cs_change : !xfer->cs_change; > > if (peripheral.cmd & SPI_RX) { > dmaengine_slave_config(mas->rx, &config); > @@ -858,10 +863,16 @@ static int setup_se_xfer(struct spi_transfer *xfer, > mas->cur_xfer_mode = GENI_SE_DMA; > geni_se_select_mode(se, mas->cur_xfer_mode); > > - if (!xfer->cs_change) { > - if (!list_is_last(&xfer->transfer_list, &spi->cur_msg->transfers)) > - m_params = FRAGMENTATION; > - } > + /* > + * Set FRAGMENTATION to keep CS asserted after this transfer when: > + * - non-last transfer with cs_change=0: keep CS between chained transfers > + * - last transfer with cs_change=1: keep CS asserted after the message > + * (e.g. TPM TIS SPI uses cs_change=1 on single-transfer messages to > + * keep CS asserted across header, wait-state and data phases) > + */ > + if (list_is_last(&xfer->transfer_list, &spi->cur_msg->transfers) ? > + xfer->cs_change : !xfer->cs_change) > + m_params = FRAGMENTATION; m_params |= FRAGMENTATION ? > > /* > * Lock around right before we start the transfer since our > > --- > base-commit: e7d700e14934e68f86338c5610cf2ae76798b663 > change-id: 20260528-fix-spi-fragmentation-bit-logic-880394337ff9 > > Best regards, > -- > Viken Dadhaniya > >