From nobody Mon Jun 8 14:37:13 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 590E73385B9 for ; Thu, 28 May 2026 19:03:26 +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=1779995007; cv=none; b=QZdVtkjaf7qEAeZ8I9dDabh58dk2AcPGveL8oGKvecz/jdRmQ0rzizdXGMFzePPT79Guo/X3jx0WyOOxSR8pcALFdzU04E/OV5Rkg48qh+Pl+DX1bQYzzteLWizcPuHgCEnsCbQB1qouMa0Nsw1nvYYlXlFIVuBX+j15V0g9PSc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779995007; c=relaxed/simple; bh=paeGq+rWMQnSZAQfy3+y9zJjzTZ7DbWxJrLxFBILOy8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc; b=QwTo+xnWI4fMjEbmfi1wwzaqBckBIyffVxny4WuUjZlRNue6/633qP04KKYSNUZnlWAtI7meVGICsbiM+wua8ggRxxV3gCXrCM0TK+2i2IrR8Jd+fTeLZdeFGqtvRpItgKb4vGT//DzYllaWq1FuadVeXaIMpeRCYG5wWHqyAT4= 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=Dok1X5Kv; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=TduevX06; 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="Dok1X5Kv"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="TduevX06" 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 64SHQ25Z2793652 for ; Thu, 28 May 2026 19:03:25 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:message-id :mime-version:subject:to; s=qcppdkim1; bh=OipNs2AfaqF81i04o0nadF 204cKdQrRojdSAvovdFgs=; b=Dok1X5KveVEc0OVvIpsCQ2K2WsyUFGcxt35aUF lVRc2GexNMoXWqM01FX4JtucxWPTZ+r8F3ohgEtIT8JVjW6v6m6Cw8WDy1RiV2DL 0T/oyURi9lCynFz8JDji8nd5qQVrjMh23aPtje9zfGRwbW82YnZ3IgiV+Zj0GTZG zPYI8X37tyGdS+EMaznqOeUatXzps1UbHpxpotqyM0r746DcmAElbO6Qy4GGcz5f z3QQ2LU18Ttoh8BznhH/+rIR7ndux28J9lJ9aXTuS1laQpTnrmLnNo8QON5KhGT7 HrNa+eVe09YATDlo9qNJ+o7IepkxwVnZEquouD+h343eZ15w== Received: from mail-pj1-f69.google.com (mail-pj1-f69.google.com [209.85.216.69]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ee7y1va9a-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 28 May 2026 19:03:25 +0000 (GMT) Received: by mail-pj1-f69.google.com with SMTP id 98e67ed59e1d1-367f715cbd0so12547064a91.0 for ; Thu, 28 May 2026 12:03:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1779995004; x=1780599804; darn=vger.kernel.org; h=cc:to:message-id:content-transfer-encoding:mime-version:subject :date:from:from:to:cc:subject:date:message-id:reply-to; bh=OipNs2AfaqF81i04o0nadF204cKdQrRojdSAvovdFgs=; b=TduevX06azHELZhdCSqCNJmPcf+8ux6l+CYy/Vfh6u34/0UpPQsem/fZnnrydVqkvt pR+4Yw1Z1p3dLpq+HHn5FXu1p+SJ4tuhnRWY+F2WY+SUcLw7UXw2hO8EYKUKPeUNg0Av ohwjzNoBrp/AKYUVbaOLBNomhJs/rVn+9ad4IveoM8yPsv3SfpnGY1FDgzxjIeiSNeXa O+2DhOSvHOOjP12JPByekdOjAJVI0c2hZ3JiWAHQZla+xFSud/HUfrI/p0790fB/oxH2 1FdBUmOWnEn6ohhPUS+GXKYeqCWZf64HLDHEuRfahaBZPAdaae7SVDYpNXDs+PhFXNFi 5MZQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779995004; x=1780599804; h=cc:to: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=OipNs2AfaqF81i04o0nadF204cKdQrRojdSAvovdFgs=; b=AAVrWIoqtAQA8+xedI1rzWRatYLk/63FZ4TAqGlFLCvbLPmEhQK2z/X7DQnHyDcPfs uaOnHwxrfXWZiEfaUH8XKRXPS7OLqLhw3d5KX5zGc406l57l13ItM/D9k345H5WCX7Gm 6PMwwG9DBkRGUbK4Hnh99NAHJ8QYAc0//I95hVt40nAdcXLIof03BCPutDYJGYcDmqxB k8jGDqjk9n2zfVxjqlYEj0iV67LwDVWURNvN6tBRPtTSAeHEqRGolmwHg5ykJ6jtsWqT sN0uDjAAree87cB0DYni+Hn57JDARJU2gAhjKcc+6oVhbK8QSLAVZATHn1Hd3Fw4qMPn G4KA== X-Forwarded-Encrypted: i=1; AFNElJ8r5cAnr++qgQzssJNwutOxGakkeZboilIZzbRCeMZIu66q7Mek2YWjyPCfgasOKU09qXxkW9Ypqx/OH98=@vger.kernel.org X-Gm-Message-State: AOJu0YxWMbupsdzPJ4HJ74hyV6+3GXumEdo18YziTiSP5bdW+rmCq1mJ khUI49y19fOEHHfipIYosgERGL0j0L8phTzV54WsteBUbUyGEZkYq0S7aip+uZSkEM5X3SXQG1a XrOrHFJWmv39xCSDd94cRzs2dQNDTmFQhcoiEmje+CCMFr2nW0NOT0Q9uA1LqBtniv1eMmWN7m4 4= X-Gm-Gg: Acq92OGVK8BMn4s1WKJpcTbYX6ZohCZRridybbWhdynfFGTB1Q9XUEIu8f3hAbs4puZ 4b/KtsPkoqUxQIwbaZUJua3u5Q/YE1PBVqyUL8SUgpdjzYFsBxUmyB/SX9+FpuyIYAZGL8DZ9x1 fnnwBc6M7YvkOKdiBKzJsS4i6XUgGtlwWu3UOcYMcpUxHCGmlG+uBRJ2jarOlmABMJ6PoNyr6cP dEx+f0hCmilaYgahnlutvTXiXozHPRhkUaruzJWwMD34U5mfIuCniO4Tl+gagfnHuJ1T7g39XUb c08sEpdrYRIGOySOI4dlggDDXdd73CF3j/ci5o3qTsHHC+I9bWmvMqUD4fij8dORQcweYxCv1Sa ec/eVSEwqPyQR4chiCg3mrz175OZfub38mR8k7V3CZDcmz4t8Nd+7iKif+i48tcGo0aDG X-Received: by 2002:a17:90b:5588:b0:369:b9db:b885 with SMTP id 98e67ed59e1d1-36bba8af135mr299559a91.15.1779995004112; Thu, 28 May 2026 12:03:24 -0700 (PDT) X-Received: by 2002:a17:90b:5588:b0:369:b9db:b885 with SMTP id 98e67ed59e1d1-36bba8af135mr299509a91.15.1779995003470; Thu, 28 May 2026 12:03:23 -0700 (PDT) Received: from hu-vdadhani-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-36b90be1699sm2708341a91.12.2026.05.28.12.03.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 28 May 2026 12:03:22 -0700 (PDT) From: Viken Dadhaniya Date: Fri, 29 May 2026 00:33:08 +0530 Subject: [PATCH v1] spi: qcom-geni: Fix cs_change handling on the last transfer 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: <20260529-fix-spi-fragmentation-bit-logic-v1-1-3b30f1a3dd7d@oss.qualcomm.com> X-B4-Tracking: v=1; b=H4sIAGuRGGoC/yWNyw6CMBBFf4XM2klK66P4K8RFKdM6RgtpKzEh/ DujLs9NzrkrFMpMBa7NCpkWLjwlgfbQgL+7FAl5FAat9FmdtMXAHywzY8guvihVV8XAgSs+p8g erVWmOxpzCaEDqcyZRPk99LC0cPtv5T08yNdvGrZtB8oQ+hKHAAAA X-Change-ID: 20260528-fix-spi-fragmentation-bit-logic-880394337ff9 To: 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, Viken Dadhaniya X-Mailer: b4 0.16-dev X-Developer-Signature: v=1; a=ed25519-sha256; t=1779995000; l=3603; i=viken.dadhaniya@oss.qualcomm.com; s=20260324; h=from:subject:message-id; bh=paeGq+rWMQnSZAQfy3+y9zJjzTZ7DbWxJrLxFBILOy8=; b=Pef9xiIMQLyIjLswkPJ5B7zJDZbFEO8mFAmRHVdDHXrPubIVJdUJca+jxpkd6UvTjEDu+OUmf EHoxlwILRiPDWyGDx+AsBHTSSEgqBYDhWxFS4qMyloPlwKY4XUZDP/2 X-Developer-Key: i=viken.dadhaniya@oss.qualcomm.com; a=ed25519; pk=C39f+LOIGhh/02LQpT46TsUSXRvBn9qXC8Xb26KJ44Y= X-Authority-Analysis: v=2.4 cv=DsNmPm/+ c=1 sm=1 tr=0 ts=6a18917d cx=c_pps a=vVfyC5vLCtgYJKYeQD43oA==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=IkcTkHD0fZMA:10 a=NGcC8JguVDcA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_glEPmIy2e8OvE2BGh3C:22 a=VwQbUJbxAAAA:8 a=EUspDBNiAAAA:8 a=XIveKea9zlLi6OhspPoA:9 a=QEXdDO2ut3YA:10 a=rl5im9kqc5Lf4LNbBjHf:22 X-Proofpoint-ORIG-GUID: xGwfqeAYgGvCA61Qwx40DOav-4yi7q_C X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTI4MDE5MiBTYWx0ZWRfX8vOC7h8SPdVy byJKkl9RPTgL4v17xUvG01LjgoNQAL3RGEHwJEq5/hkIBi9GXhCfwAxKiHXGsPFjnwoK2m3Kc05 HZyoauAbaO1QafJV6hADSn1NA2SQLiZKpMSAquYmqzJOpxgZCtPW2f5TxTFX5QDCVSH24TwpEd8 1Yj8ZrIGJYy9QTpG7yIfqh0x/oYXNMFFMbyoBj0+/u7mEQudVPHAX57ZwFu13ZlVsfYTeSP8wMx jkdvCj6N6/9IPZWFCRg1HV7Gp8Tmv0pu2fb48fk69ZrnE2h9eSA5D+XxXzrjdSF9cbaPnMtHe7V RDt9t6Nr/onsWvj09MuHjFWu9wWZ43ASLS/GdfERXap6R6PchyiTmujW04r4SPhRaKODS75tXJn FFYEm5WQVf7g7TsmT+2eoFQAveB/Vm5H0B8M87pN/UpyhTaPxqlJEp+8rabnh2zd4IhxNVuf4O6 D1oofCbjaKtG8y0s0qQ== X-Proofpoint-GUID: xGwfqeAYgGvCA61Qwx40DOav-4yi7q_C 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-05-28_05,2026-05-28_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 phishscore=0 suspectscore=0 adultscore=0 clxscore=1015 priorityscore=1501 malwarescore=0 impostorscore=0 bulkscore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605210000 definitions=main-2605280192 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 the message completes. Since GENI SPI controls CS through FRAGMENTATION, 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) =3D 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 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. 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: 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 Reviewed-by: Jonathan Marek --- 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; } =20 - if (!xfer->cs_change) { - if (!list_is_last(&xfer->transfer_list, &spi->cur_msg->transfers)) - peripheral.fragmentation =3D FRAGMENTATION; - } + /* + * Set fragmentation to keep CS asserted after this transfer when: + * - non-last transfer with cs_change=3D0: keep CS between chained trans= fers + * - last transfer with cs_change=3D1: keep CS asserted after the message + * (e.g. TPM TIS SPI uses cs_change=3D1 on single-transfer messages to + * keep CS asserted across header, wait-state and data phases) + */ + peripheral.fragmentation =3D list_is_last(&xfer->transfer_list, &spi->cur= _msg->transfers) ? + xfer->cs_change : !xfer->cs_change; =20 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 =3D GENI_SE_DMA; geni_se_select_mode(se, mas->cur_xfer_mode); =20 - if (!xfer->cs_change) { - if (!list_is_last(&xfer->transfer_list, &spi->cur_msg->transfers)) - m_params =3D FRAGMENTATION; - } + /* + * Set FRAGMENTATION to keep CS asserted after this transfer when: + * - non-last transfer with cs_change=3D0: keep CS between chained trans= fers + * - last transfer with cs_change=3D1: keep CS asserted after the message + * (e.g. TPM TIS SPI uses cs_change=3D1 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 =3D FRAGMENTATION; =20 /* * Lock around right before we start the transfer since our --- base-commit: e7d700e14934e68f86338c5610cf2ae76798b663 change-id: 20260528-fix-spi-fragmentation-bit-logic-880394337ff9 Best regards, -- =20 Viken Dadhaniya