From nobody Sat Jul 25 16:19:19 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 40AEF38887E for ; Thu, 16 Jul 2026 05:28:01 +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=1784179682; cv=none; b=aaBzxN7HXM3sKssG+VMSHb+fTlmsNX6hVjNYhe3Q89Pc1gKMBdMCgENdPe02Uh/rmaq++old/2nyRowSxM5Z3DgG+VoNpn4Tq4oxm9qscJbhpdZlpUtpz45CpteVuqPM1iVUFzOtVl1n5DboAKpsmfgLcd6+hXpEHokr0hswYBQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784179682; c=relaxed/simple; bh=3xgmuOamZaTeCWiAYgEejt1I6jdXRbo99KADyV9iZJg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=cUXvw3UQXo8oN3GvGM9AW9ituKh6pxCG2eDgA7+hCIBA1Rjplt1/2Q6yqouY6gpivWliQUTD8VBX/kyBXvbvHUO6eMWSWBoAqFZqGLL3l797aYoblPPkKipmmN3xKEzVRVbNcScWOxLy3YuaQlNVGIiSQFChhcnF0IpqAZEjgjw= 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=LwMzzt29; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=Vm7refIj; 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="LwMzzt29"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="Vm7refIj" 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 66G3wW1h1689726 for ; Thu, 16 Jul 2026 05:28:00 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= pm4smN8xnc3VjFF87Dikg6BlN/viVNvb3HU62LBPdjk=; b=LwMzzt29DwGaGb69 4sSp9fh4Qi7MCpPTQ827nYdwxZxYUsGgMPn3e9pLNcsi8MVPBh5dPpQBjfWhuYhR VTuKwGSHW9nahu+IrzbPCwRTMjF8AoBtbBlpxAj2GdeE+om74I1CkAN7UauDDIY6 t+cWaOy3FfORKw7oWt68hdIccwuQyGiaXXsXaZUhcSAuRNmkW49Gz8IaKgedHame Gsa7E8YSP4Ygh33wXCvpsMC0RtRx+gQj8UKUoDkrk9qXkv+b8o02rWyVLNtHGuyi Ho/lQdieQLZqqrKZleKrwzYY598hS2XWq/gQksky2kw5mHEXy/QP5U+MWr1Ze5cc fBzdkA== 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 4fe7nmm4sn-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 16 Jul 2026 05:27:59 +0000 (GMT) Received: by mail-pj1-f71.google.com with SMTP id 98e67ed59e1d1-38d7fcd1f66so9191912a91.2 for ; Wed, 15 Jul 2026 22:27:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784179679; x=1784784479; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=pm4smN8xnc3VjFF87Dikg6BlN/viVNvb3HU62LBPdjk=; b=Vm7refIjjVRGvxNtnssy4p+FVTmoeuk8M1bOw1eoC5+D+GagvIN4Y5HlobXv8+ShEa F9H352YWgItNtJHHnZLQmj9Zo8DIA89KW6x4atRZcRJGzyMxfkB1EfBIM+LnMxYbxV9y 4J8TNAZBglFieZsk+lga8qRMiH7X8elk9JDNhxYCd6TgcXTLrcQntnyuiuPH5ZardaD0 UQux7fTGRnvQrv+pfgRKmFKaU1NYYJ+Eom/0MQ1li4pP/r2tW+05Q5q7GUxwapEjh960 kSJaDUHJSWIQqFcE3i+erdCEukMEqLCxHs0Kd11+Cehvat0xAPQOhmDbrymzf37klMGV a55Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784179679; x=1784784479; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=pm4smN8xnc3VjFF87Dikg6BlN/viVNvb3HU62LBPdjk=; b=gtonBNb90OtDeo7gW7393rKiYJgxvaZvOPp3JB1iQCJsbiWBheaV1XXw8Na9kjZ0bs sJj8AP0myBXxu+qt3qkjni+EuKVPSkISA1PVAg3TPsNqJADoVzWtqNkweblih5bY3i4j zWxjnQo8Ru8X8YbRQzlcCbFb0elO/NoO2pCtMPcZJtHRKIAEUtIpJyW/e48KMaTAkZ05 GA0KIJlafi5dEH9tDZTHaLLPyLdYFrxMNmpC9vwka6xCoSSOP3RkBvYBJk0H39gpuvnB lmB5Exl/xLHdR0az0Hhbf+ZgMaoBSCIApCKXmQUT3MdfkasyKNtGn2Kbpe1hOUv34+w+ vRDA== X-Forwarded-Encrypted: i=1; AHgh+RqlZg7Dps1ltZd/rr9mbWGxRWJcuIqU1CnKXO7eHzZd9YLwOOeFTsRWI3HdsAUPu+23j3Mbk8fIUTMgk3Y=@vger.kernel.org X-Gm-Message-State: AOJu0YyNHYIrOR2JsmLf886qQPPNnDXXXRDNcWZtAZWfhqmzXC0QSW2B CY2yEun2SVRhKE3Db95CPMAU7Phr6Fv/XwRARB+lRh+dGISK12ujp/91oa5p8riWTjYmqQFnPt4 TEnpo1LHOL5DqDdOOO4LRIrflHTcfxt0DLVhznKUATpHY3lxwhcFizaXbmlMGcxA5ncI= X-Gm-Gg: AfdE7cm5ec2/VP+2pAibBxinsJTg2Kzmxp/g1jbsZzUkPjZHa+R2JJSB9y0zfoGL1Fm crmiHQL+cLsMQvFVMKqNRBV1ZaSHR+TbBdE0ovBXmdx4vpuoDWefjwiC5jJpPYWcIyYCIMh2Xrg opZPKjGutp2JC+99aJnMUc3vy6V/HtGt99tEgBeTLGqrY1s312Wszmmt6wWx6EozutnMmK8/K03 8qQfNPK0fyN8NQUHqG98TVB3NMqkbGa+1nV8HBS5VIew1h6ixnzu3JBNMWQtAB5t921zwJO8gUK cJ4XG0sUnIuiHOprndxdGSbS2jqLIrArDquzToZ9iE6SzaMAIgv/eg3/DUSOOZf2002hjiuhV/B PIMJBBjlMzJl1O1fauckT+7XfJbTdYgXAACbhOhexS9pBd/VKyST6dfpzMyTsPbzQW+98pJVvMj XjnZopWH4B7tM= X-Received: by 2002:a17:90b:4c46:b0:37f:bfd6:8b40 with SMTP id 98e67ed59e1d1-38e1add8ad5mr8567998a91.5.1784179678954; Wed, 15 Jul 2026 22:27:58 -0700 (PDT) X-Received: by 2002:a17:90b:4c46:b0:37f:bfd6:8b40 with SMTP id 98e67ed59e1d1-38e1add8ad5mr8567964a91.5.1784179678468; Wed, 15 Jul 2026 22:27:58 -0700 (PDT) Received: from hu-mdalam-blr.qualcomm.com (blr-bdr-fw-01_GlobalNAT_AllZones-Outside.qualcomm.com. [103.229.18.19]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3140e53349dsm7795812eec.7.2026.07.15.22.27.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 15 Jul 2026 22:27:58 -0700 (PDT) From: Md Sadre Alam Date: Thu, 16 Jul 2026 10:57:45 +0530 Subject: [PATCH 1/3] spi: spi-qpic-snand: move command mapping helper 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: <20260716-quad-v1-1-636f74da17e1@qti.qualcomm.com> References: <20260716-quad-v1-0-636f74da17e1@qti.qualcomm.com> In-Reply-To: <20260716-quad-v1-0-636f74da17e1@qti.qualcomm.com> To: Mark Brown Cc: linux-spi@vger.kernel.org, linux-kernel@vger.kernel.org, Md Sadre Alam , Md Sadre Alam X-Mailer: b4 0.14.3 X-Proofpoint-Spam-Info: AW1haW4tMjYwNzE2MDA1MyBTYWx0ZWRfX72+9MKqL01VF 7FsnOE+kHUmVsFhTAHHHx1wmtnSKrG5b7DJArwXLIfPEUtBDdt18JBA006VeD1Z6w1gw7o6pRfJ v3ct+q4RWDlNUndR4PbcH+edMp7YiNE= X-Authority-Analysis: v=2.4 cv=cuGrVV4i c=1 sm=1 tr=0 ts=6a586bdf cx=c_pps a=UNFcQwm+pnOIJct1K4W+Mw==:117 a=Ou0eQOY4+eZoSc0qltEV5Q==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_glEPmIy2e8OvE2BGh3C:22 a=EUspDBNiAAAA:8 a=a1To8mgfp0J-3_lObMEA:9 a=QEXdDO2ut3YA:10 a=uKXjsCUrEbL0IQVhDsJ9:22 X-Proofpoint-ORIG-GUID: hvf0m0Qj3fkCubkEW130V8uPFcApT34- X-Proofpoint-GUID: hvf0m0Qj3fkCubkEW130V8uPFcApT34- X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzE2MDA1MyBTYWx0ZWRfXxYEvS/gXNnmb XfujukZbkdQiRWlZs97STSPfWNPBuf2FKxZHw+TsP9iMNMCQQWAMkS5sPuQHuDnbQvn4tl++3wQ rroED96aubTEaUdmQ7tLwqMyH0y0jP+NFKSiVVvEa/mWYh2jd0fYBJ9ttVdj1j32Yxqha1GKlY5 KIfL+TjWXc19c6zAVZwtUabT5R5vRSGD9mDcrhVXU47LoKzQe46BLH+2VDdg8gislQC7N6dQdGz 62/2qfVe4mCgMrhTcG/gBeNGxIez66wmrHJssj9xuKTIH4RIfC/NLoADiwYHPsDDZh6A9tbhj7Q 50f3g/kCfU983BnsJ6bPQ9EASwEZs1RIXiZQdK9XouX0Q8WoaDWXgfAS1kFwLkXFjHRIIFqUPaH mcx9ConcoSVFKJRHooaiszEMI7PA1P5AO+yHCjXj0mxm+vE9BPRn4zaY3pspSkNmas2AWkREx7k P6NKvFPOmZ21twHM0Vw== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-16_02,2026-07-15_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1011 adultscore=0 bulkscore=0 lowpriorityscore=0 malwarescore=0 phishscore=0 priorityscore=1501 spamscore=0 suspectscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607160053 Move qcom_spi_cmd_mapping() above qcom_spi_read_page() so it can be used by read path changes added in a subsequent patch. No functional change. Signed-off-by: Md Sadre Alam --- drivers/spi/spi-qpic-snand.c | 96 ++++++++++++++++++++++------------------= ---- 1 file changed, 48 insertions(+), 48 deletions(-) diff --git a/drivers/spi/spi-qpic-snand.c b/drivers/spi/spi-qpic-snand.c index 6cc53586b8a8..b96b6d149ca5 100644 --- a/drivers/spi/spi-qpic-snand.c +++ b/drivers/spi/spi-qpic-snand.c @@ -991,6 +991,54 @@ static int qcom_spi_read_page_oob(struct qcom_nand_con= troller *snandc, return qcom_spi_check_error(snandc); } =20 +static int qcom_spi_cmd_mapping(struct qcom_nand_controller *snandc, u32 o= pcode, u32 *cmd) +{ + switch (opcode) { + case SPINAND_RESET: + *cmd =3D (SPI_WP | SPI_HOLD | SPI_TRANSFER_MODE_x1 | OP_RESET_DEVICE); + break; + case SPINAND_READID: + *cmd =3D (SPI_WP | SPI_HOLD | SPI_TRANSFER_MODE_x1 | OP_FETCH_ID); + break; + case SPINAND_GET_FEATURE: + *cmd =3D (SPI_TRANSFER_MODE_x1 | SPI_WP | SPI_HOLD | ACC_FEATURE); + break; + case SPINAND_SET_FEATURE: + *cmd =3D (SPI_TRANSFER_MODE_x1 | SPI_WP | SPI_HOLD | ACC_FEATURE | + QPIC_SET_FEATURE); + break; + case SPINAND_READ: + if (snandc->qspi->raw_rw) { + *cmd =3D (PAGE_ACC | LAST_PAGE | SPI_TRANSFER_MODE_x1 | + SPI_WP | SPI_HOLD | OP_PAGE_READ); + } else { + *cmd =3D (PAGE_ACC | LAST_PAGE | SPI_TRANSFER_MODE_x1 | + SPI_WP | SPI_HOLD | OP_PAGE_READ_WITH_ECC); + } + + break; + case SPINAND_ERASE: + *cmd =3D OP_BLOCK_ERASE | PAGE_ACC | LAST_PAGE | SPI_WP | + SPI_HOLD | SPI_TRANSFER_MODE_x1; + break; + case SPINAND_WRITE_EN: + *cmd =3D SPINAND_WRITE_EN; + break; + case SPINAND_PROGRAM_EXECUTE: + *cmd =3D (PAGE_ACC | LAST_PAGE | SPI_TRANSFER_MODE_x1 | + SPI_WP | SPI_HOLD | OP_PROGRAM_PAGE); + break; + case SPINAND_PROGRAM_LOAD: + *cmd =3D SPINAND_PROGRAM_LOAD; + break; + default: + dev_err(snandc->dev, "Opcode not supported: %u\n", opcode); + return -EOPNOTSUPP; + } + + return 0; +} + static int qcom_spi_read_page(struct qcom_nand_controller *snandc, const struct spi_mem_op *op) { @@ -1255,54 +1303,6 @@ static int qcom_spi_program_execute(struct qcom_nand= _controller *snandc, return 0; } =20 -static int qcom_spi_cmd_mapping(struct qcom_nand_controller *snandc, u32 o= pcode, u32 *cmd) -{ - switch (opcode) { - case SPINAND_RESET: - *cmd =3D (SPI_WP | SPI_HOLD | SPI_TRANSFER_MODE_x1 | OP_RESET_DEVICE); - break; - case SPINAND_READID: - *cmd =3D (SPI_WP | SPI_HOLD | SPI_TRANSFER_MODE_x1 | OP_FETCH_ID); - break; - case SPINAND_GET_FEATURE: - *cmd =3D (SPI_TRANSFER_MODE_x1 | SPI_WP | SPI_HOLD | ACC_FEATURE); - break; - case SPINAND_SET_FEATURE: - *cmd =3D (SPI_TRANSFER_MODE_x1 | SPI_WP | SPI_HOLD | ACC_FEATURE | - QPIC_SET_FEATURE); - break; - case SPINAND_READ: - if (snandc->qspi->raw_rw) { - *cmd =3D (PAGE_ACC | LAST_PAGE | SPI_TRANSFER_MODE_x1 | - SPI_WP | SPI_HOLD | OP_PAGE_READ); - } else { - *cmd =3D (PAGE_ACC | LAST_PAGE | SPI_TRANSFER_MODE_x1 | - SPI_WP | SPI_HOLD | OP_PAGE_READ_WITH_ECC); - } - - break; - case SPINAND_ERASE: - *cmd =3D OP_BLOCK_ERASE | PAGE_ACC | LAST_PAGE | SPI_WP | - SPI_HOLD | SPI_TRANSFER_MODE_x1; - break; - case SPINAND_WRITE_EN: - *cmd =3D SPINAND_WRITE_EN; - break; - case SPINAND_PROGRAM_EXECUTE: - *cmd =3D (PAGE_ACC | LAST_PAGE | SPI_TRANSFER_MODE_x1 | - SPI_WP | SPI_HOLD | OP_PROGRAM_PAGE); - break; - case SPINAND_PROGRAM_LOAD: - *cmd =3D SPINAND_PROGRAM_LOAD; - break; - default: - dev_err(snandc->dev, "Opcode not supported: %u\n", opcode); - return -EOPNOTSUPP; - } - - return 0; -} - static int qcom_spi_write_page(struct qcom_nand_controller *snandc, const struct spi_mem_op *op) { --=20 2.34.1 From nobody Sat Jul 25 16:19:19 2026 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 3EE1D3845A2 for ; Thu, 16 Jul 2026 05:28:03 +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=1784179685; cv=none; b=Y+3eGZsC+5j7k7Aso2lw0USWMvDHvs4lOynMJu3GtCsjdQZKyhMnRUkIrjVorJAnGVjoKNUG+jzJxAO0sOkodT5nrNTv3RtyiMXRSuJuaBtBlFnIsNRrb6lIZ//G7Rp84uz6g2blKhHxUZv86oseQz0guTqb8XW+JDHuhDdEO/k= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784179685; c=relaxed/simple; bh=FJCOkr82uBlHtDHrHTjLZhw8Ri5FjduiBo/WDahh6Sg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=c0iFs5PxRlzzTQUAhdHr2GRkiHtDlGLuEJNebnH3LrZGGJbKFDQ0pPPK1G1Ic+ojjmUXToPn3JucFjRPVF7TR86rm8nY16wq5ISc2h9gkViyDHXZqlUlmItwiiB8juYdBIEAkkKUxRXQOk6tzNaGJZVO6eexnm/KsbX7CKdGZuw= 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=ZIr5OAkz; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=dWGy0I2B; 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="ZIr5OAkz"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="dWGy0I2B" Received: from pps.filterd (m0279865.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66G3wMdw1753938 for ; Thu, 16 Jul 2026 05:28:02 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= R6h9FcF9DDa6d36d3YHHrMo5TXJSy+ELkvqqZiE+R+s=; b=ZIr5OAkzYCykFMPV zTCvT4MhJoiIPksmp7j7irsvfxejURdJbhAosPVdY/sX+wrZcWBobiPXezbcmB/J EZeS+xuHntUIRw5jl/tLjkXik2UnPVZgYkqLf0hDG0+Gu9LQSfwQsrciRqylxvLr xEP5jmmlWgL1cWSVV4eqS4Q75LFugwSvsqo9bFGSzfsM6/5jZ6fZtC4DpI9r+ooF xcIhyYlCQe7EmFUS2nGkJv2v0+Syqy7F3bNnv2KI6rgIU5H5XG1S+G1yQyY6zwyi MHjxCU2JWPB6TZIuBF6R+VrSp6ljUALCKCyzYh4r0ZEJNrqPn2kOoekA2E22yFl7 +NW2aQ== Received: from mail-pg1-f198.google.com (mail-pg1-f198.google.com [209.85.215.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fe855c3x9-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 16 Jul 2026 05:28:02 +0000 (GMT) Received: by mail-pg1-f198.google.com with SMTP id 41be03b00d2f7-c88aab7c1fcso14859365a12.3 for ; Wed, 15 Jul 2026 22:28:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784179682; x=1784784482; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=R6h9FcF9DDa6d36d3YHHrMo5TXJSy+ELkvqqZiE+R+s=; b=dWGy0I2BOLOV3t+mh5Sab27rk7D96seozrYFqlp42BWUIR0d2i8shdB4f0t7W6LUXZ TMRkBYsR5plOlm6+p+U7JjNtF2B5HyCZw6RLmHz+J8o108c7VGBofKZmmTn6xOJHRuFD fdAGr6OdnRuuPC4QTMsxGfc4WIKNqAzst0Zt0+5Qq35PlphE8LG7MP7F1ZmU80af7zIf MXR07D+lGQSeLD+J6Pzo1d0c47oZ3XTbizv9PYYv+xnJnbJfzxC5WcEhgsx1hqGz5Uor 19MEpJsuIE16yVrP5TntyzAq6aHTG6FmBe56b3e2uFF5wcXO7Rp2ahTt64oGwJtuYe4J wBww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784179682; x=1784784482; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=R6h9FcF9DDa6d36d3YHHrMo5TXJSy+ELkvqqZiE+R+s=; b=sYuLimTOskPa3+RPg9w6Ztq/+rNw0SLmJaYw1YAlsPYEzaHR/PfNT5Rg23oG9JASsK pkZYt3GuU4QLJrg6O/WOwasRZubZQiDed2xnvjVgZpLIVqjm+auiTlWk0t9WCb6p0HqH Iya7EZcL9KyNLw/pCyK4y4PdRE3o0NrGxhH/2DVx+Cf+/ZAPORinfyL9UKkTkqZZJpqd jEamSZiT8Z4f8RcQZAL8j7nTCATV4ZBcnW4HHrBcznFMRAoS5L5RhxtOSc/p+FDhDgL/ TkUNGiqpDIXjes+YnMAyKpMvbVeN+qtEpdvf8Fe/YDbV/jsXKDoM93KIGKaW6riB+Hcz lGTQ== X-Forwarded-Encrypted: i=1; AHgh+RrOzZ8n8bXRPZc2a671hHkHZyXpd8388dOiqqf3aGO82I9vGg0WjtRnP/gbxyBTPnqByz6T+I1xALiHBj0=@vger.kernel.org X-Gm-Message-State: AOJu0YyHpfd6BJqtySmqi/JYHuWwvlj97jnKCPAoThyaAbcq/YRBFyz+ GMmSSTUgtjYgnPKXdmZHEh3lBO6Na7xyh4PYHl4eVvJCEAZtKcB7lAXUbZ+HTTA10HEG3CFWg22 a2wo9klZGHRxXVYbUHIxP7PPqAOdH812hpufiDWccse+cWfyrLQMOWXHTJC8cI2CVY/MBhTV8lE 8= X-Gm-Gg: AfdE7cmWOAXYA39A2E9D6EWQVz8L192M3C+6xxvFK4MvpAYM52E24C1CfQVLf1iP9ge 2SbmWKdha7pZxTjRbShKi9vw4zzf4vePKHRGqpcW+Y4KjjSMLYt4+qEt9sapKlVP4KPhb6D16NF IZsNgso4LkCiJX+N/CQCsFtj4kdOOtJ/Cw6bJ3KHznJppuYtljOZDJ7FsPj5BIuvUInGsBPGjie 7eqx4JEKT+Z4wtVhoxU/oHy/YK6bknIpH0rHDmTMb8i9lIdaNA61mElVOnXYu8Q7+vYyc8piIBm y8wNL+GnaFS14hkl2Sh1rg6m6kLgdJA1iMLvV0/gt9fd7AERrPrRIHlOblH6FO4ndxKmT57C65J rRZrSFpTUkSXD0iNeF6Y9a3YLrqay43fahvatDzaepNff8WATYUAwUeO5WVuU7XWlJcgTununTQ yBEdYNeysIKik= X-Received: by 2002:a05:6a20:93a1:b0:3c3:8f0f:b6a0 with SMTP id adf61e73a8af0-3c38f0fbae6mr1214412637.49.1784179681541; Wed, 15 Jul 2026 22:28:01 -0700 (PDT) X-Received: by 2002:a05:6a20:93a1:b0:3c3:8f0f:b6a0 with SMTP id adf61e73a8af0-3c38f0fbae6mr1214388637.49.1784179681048; Wed, 15 Jul 2026 22:28:01 -0700 (PDT) Received: from hu-mdalam-blr.qualcomm.com (blr-bdr-fw-01_GlobalNAT_AllZones-Outside.qualcomm.com. [103.229.18.19]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3140e53349dsm7795812eec.7.2026.07.15.22.27.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 15 Jul 2026 22:28:00 -0700 (PDT) From: Md Sadre Alam Date: Thu, 16 Jul 2026 10:57:46 +0530 Subject: [PATCH 2/3] spi: spi-qpic-snand: add quad mode support 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: <20260716-quad-v1-2-636f74da17e1@qti.qualcomm.com> References: <20260716-quad-v1-0-636f74da17e1@qti.qualcomm.com> In-Reply-To: <20260716-quad-v1-0-636f74da17e1@qti.qualcomm.com> To: Mark Brown Cc: linux-spi@vger.kernel.org, linux-kernel@vger.kernel.org, Md Sadre Alam , Md Sadre Alam X-Mailer: b4 0.14.3 X-Proofpoint-GUID: qeJaLq7dL21PaKYqVIhWZb2Lu35pDWmC X-Authority-Analysis: v=2.4 cv=KOlqylFo c=1 sm=1 tr=0 ts=6a586be2 cx=c_pps a=Qgeoaf8Lrialg5Z894R3/Q==:117 a=Ou0eQOY4+eZoSc0qltEV5Q==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=Um2Pa8k9VHT-vaBCBUpS:22 a=EUspDBNiAAAA:8 a=LCgf8a1I7HAfrTGDgyUA:9 a=QEXdDO2ut3YA:10 a=x9snwWr2DeNwDh03kgHS:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzE2MDA1MyBTYWx0ZWRfX7pPgnkGtnytG Eb0PItj5lApjJ5SPbEYWbNjy63/+GgWQ/s4g5kidYuHH54MmDARqJBotz/LeEzaDynq1VISCdrR U+CI1sbkSTJx08bkfiqjX0vMldknP/PfVyVrJ4v/2dSUyzWYhgjdpChuBXaRn03mwO5E/L8PG6W q4GYyfi+l/MNDoN3LY4L2J84m5T2L36Kg3YiqLisV1WMV30Mt13YiR1hyglMqKCv7/fimPfYksn FdhrpSuqGjV0SIZ3hMpyEyS6OtJqRn3j2E4mgDdyxsxh6nw+naaXPNIWcSywOKI4SjE9lz8Po/7 Hj2EuGFQ96jOSpPhXFzZl9XeEYbYRB81AmMQqoSpMQ7eU2SoOTquc7niQqG28wzumaGbThwKIzS dbfJC5cwOGHcZb9JB6VKd4TSIhOO9pcvQIcUC+ANcpjn8MrohvoNlz6NmTMGkSQ6vfMoQBuiFG7 +7NaegcYCLaVEvCMh+w== X-Proofpoint-Spam-Info: AW1haW4tMjYwNzE2MDA1MyBTYWx0ZWRfX4fv7bv/NJIlw HSUT5wS4n3xwrkpdL7fvQIAtMCGxbBVgezRuyk9pmkhTc6TrxGUXoFucTGfG8yBbB2QVzwCkmc3 kublPwZokQ3vZNNNGUy4DEgosFgvk+c= X-Proofpoint-ORIG-GUID: qeJaLq7dL21PaKYqVIhWZb2Lu35pDWmC X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-16_02,2026-07-15_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 bulkscore=0 impostorscore=0 malwarescore=0 spamscore=0 clxscore=1015 priorityscore=1501 adultscore=0 lowpriorityscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607160053 Add support for quad (x4) transfer mode in the QPIC SPI NAND driver. The controller supports both single (x1) and quad (x4) SPI transfers, but the driver currently operates only in x1 mode. Track the QUAD enable state from the device configuration register (0xB0) and switch the data transfer width accordingly. When the core enables quad mode, use x4 transfers for read and program operations to improve throughput. Introduce a quad_mode flag in struct qpic_spi_nand to cache the current device state. The flag is updated based on GET_FEATURE responses from the configuration register. Signed-off-by: Md Sadre Alam --- drivers/spi/spi-qpic-snand.c | 67 ++++++++++++++++++++++++++++++++++++++--= ---- 1 file changed, 58 insertions(+), 9 deletions(-) diff --git a/drivers/spi/spi-qpic-snand.c b/drivers/spi/spi-qpic-snand.c index b96b6d149ca5..5c077f7023f1 100644 --- a/drivers/spi/spi-qpic-snand.c +++ b/drivers/spi/spi-qpic-snand.c @@ -46,14 +46,19 @@ =20 #define SPINAND_RESET 0xff #define SPINAND_READID 0x9f +#define SPINAND_FEATURE_ADDR 0xb0 #define SPINAND_GET_FEATURE 0x0f #define SPINAND_SET_FEATURE 0x1f +#define SPINAND_READ_CACHE 0x0b #define SPINAND_READ 0x13 +#define SPINAND_READ_QUAD 0xeb #define SPINAND_ERASE 0xd8 #define SPINAND_WRITE_EN 0x06 #define SPINAND_PROGRAM_EXECUTE 0x10 #define SPINAND_PROGRAM_LOAD 0x84 +#define SPINAND_PROGRAM_LOAD_QUAD 0x34 =20 +#define QUAD_WIDTH 0x4 #define ACC_FEATURE 0xe #define BAD_BLOCK_MARKER_SIZE 0x2 #define OOB_BUF_SIZE 128 @@ -114,6 +119,7 @@ struct qpic_spi_nand { bool oob_rw; bool page_rw; bool raw_rw; + bool quad_mode; }; =20 static void qcom_spi_set_read_loc_first(struct qcom_nand_controller *snand= c, @@ -991,8 +997,15 @@ static int qcom_spi_read_page_oob(struct qcom_nand_con= troller *snandc, return qcom_spi_check_error(snandc); } =20 -static int qcom_spi_cmd_mapping(struct qcom_nand_controller *snandc, u32 o= pcode, u32 *cmd) +static int qcom_spi_cmd_mapping(struct qcom_nand_controller *snandc, + const struct spi_mem_op *op, u32 *cmd) { + u32 opcode =3D op->cmd.opcode; + u32 transfer_mode =3D SPI_TRANSFER_MODE_x1; + + if (snandc->qspi->quad_mode && op->data.buswidth =3D=3D QUAD_WIDTH) + transfer_mode =3D SPI_TRANSFER_MODE_x4; + switch (opcode) { case SPINAND_RESET: *cmd =3D (SPI_WP | SPI_HOLD | SPI_TRANSFER_MODE_x1 | OP_RESET_DEVICE); @@ -1008,11 +1021,13 @@ static int qcom_spi_cmd_mapping(struct qcom_nand_co= ntroller *snandc, u32 opcode, QPIC_SET_FEATURE); break; case SPINAND_READ: + case SPINAND_READ_QUAD: + case SPINAND_READ_CACHE: if (snandc->qspi->raw_rw) { - *cmd =3D (PAGE_ACC | LAST_PAGE | SPI_TRANSFER_MODE_x1 | + *cmd =3D (PAGE_ACC | LAST_PAGE | transfer_mode | SPI_WP | SPI_HOLD | OP_PAGE_READ); } else { - *cmd =3D (PAGE_ACC | LAST_PAGE | SPI_TRANSFER_MODE_x1 | + *cmd =3D (PAGE_ACC | LAST_PAGE | transfer_mode | SPI_WP | SPI_HOLD | OP_PAGE_READ_WITH_ECC); } =20 @@ -1025,12 +1040,16 @@ static int qcom_spi_cmd_mapping(struct qcom_nand_co= ntroller *snandc, u32 opcode, *cmd =3D SPINAND_WRITE_EN; break; case SPINAND_PROGRAM_EXECUTE: - *cmd =3D (PAGE_ACC | LAST_PAGE | SPI_TRANSFER_MODE_x1 | - SPI_WP | SPI_HOLD | OP_PROGRAM_PAGE); + if (snandc->qspi->quad_mode) + *cmd =3D (PAGE_ACC | LAST_PAGE | transfer_mode | + SPI_WP | SPI_HOLD | OP_PROGRAM_PAGE); break; case SPINAND_PROGRAM_LOAD: *cmd =3D SPINAND_PROGRAM_LOAD; break; + case SPINAND_PROGRAM_LOAD_QUAD: + *cmd =3D SPINAND_PROGRAM_LOAD_QUAD; + break; default: dev_err(snandc->dev, "Opcode not supported: %u\n", opcode); return -EOPNOTSUPP; @@ -1042,6 +1061,15 @@ static int qcom_spi_cmd_mapping(struct qcom_nand_con= troller *snandc, u32 opcode, static int qcom_spi_read_page(struct qcom_nand_controller *snandc, const struct spi_mem_op *op) { + int ret; + u32 cmd; + /* Call mapping once again to update the quad mode based on + * buswidth + */ + ret =3D qcom_spi_cmd_mapping(snandc, op, &cmd); + if (ret < 0) + return ret; + if (snandc->qspi->page_rw && snandc->qspi->raw_rw) return qcom_spi_read_page_raw(snandc, op); =20 @@ -1309,11 +1337,12 @@ static int qcom_spi_write_page(struct qcom_nand_con= troller *snandc, int ret; u32 cmd; =20 - ret =3D qcom_spi_cmd_mapping(snandc, op->cmd.opcode, &cmd); + ret =3D qcom_spi_cmd_mapping(snandc, op, &cmd); if (ret < 0) return ret; =20 - if (op->cmd.opcode =3D=3D SPINAND_PROGRAM_LOAD) + if (op->cmd.opcode =3D=3D SPINAND_PROGRAM_LOAD || + op->cmd.opcode =3D=3D SPINAND_PROGRAM_LOAD_QUAD) snandc->qspi->data_buf =3D (u8 *)op->data.buf.out; =20 return 0; @@ -1325,7 +1354,7 @@ static int qcom_spi_send_cmdaddr(struct qcom_nand_con= troller *snandc, u32 cmd; int ret, opcode; =20 - ret =3D qcom_spi_cmd_mapping(snandc, op->cmd.opcode, &cmd); + ret =3D qcom_spi_cmd_mapping(snandc, op, &cmd); if (ret < 0) return ret; =20 @@ -1430,6 +1459,22 @@ static int qcom_spi_io_op(struct qcom_nand_controlle= r *snandc, const struct spi_ val =3D le32_to_cpu(*(__le32 *)snandc->reg_read_buf); val >>=3D 8; memcpy(op->data.buf.in, &val, snandc->buf_count); + + /* + * Track QUAD mode state from configuration register. + * When core layer reads register 0xB0 (CFG), check if + * QUAD enable bit (bit 0) is set and update our state + * accordingly for future READ/WRITE operations. + */ + if (op->addr.val =3D=3D SPINAND_FEATURE_ADDR) { + bool quad_enabled =3D !!((u8)val & BIT(0)); + + if (snandc->qspi->quad_mode !=3D quad_enabled) { + snandc->qspi->quad_mode =3D quad_enabled; + dev_info(snandc->dev, "SPI NAND QUAD mode: %s\n", + quad_enabled ? "enabled" : "disabled"); + } + } } =20 return 0; @@ -1470,7 +1515,8 @@ static bool qcom_spi_supports_op(struct spi_mem *mem,= const struct spi_mem_op *o =20 return ((!op->addr.nbytes || op->addr.buswidth =3D=3D 1) && (!op->dummy.nbytes || op->dummy.buswidth =3D=3D 1) && - (!op->data.nbytes || op->data.buswidth =3D=3D 1)); + (!op->data.nbytes || op->data.buswidth =3D=3D 1 || + op->data.buswidth =3D=3D 4)); } =20 static int qcom_spi_exec_op(struct spi_mem *mem, const struct spi_mem_op *= op) @@ -1521,6 +1567,9 @@ static int qcom_spi_probe(struct platform_device *pde= v) if (!qspi) return -ENOMEM; =20 + /* Initialize QUAD mode state */ + qspi->quad_mode =3D false; + ctlr =3D __devm_spi_alloc_controller(dev, sizeof(*snandc), false); if (!ctlr) return -ENOMEM; --=20 2.34.1 From nobody Sat Jul 25 16:19:19 2026 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 62711382F03 for ; Thu, 16 Jul 2026 05:28:05 +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=1784179686; cv=none; b=NKqp8pjDoW0OXCc3H5mfNYhbmf8ivUJveLNbJCDaS/junKUT3ABDsLxgSZ3Kdl/ZKrlwJm94/W2RtjtCds77EJQGmO0wSQAlZOmRL7xo7BnnmTkkYLZVXfIrcso0Ha2TaAmUQ8rCv6tXlEi+R0j99qjax5zwQUKdGNkDEt0FFus= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784179686; c=relaxed/simple; bh=BOLZoKheyS7yxrXmIvch8ffzYL34EXzMewdSr5TayC0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=tMhH42SlkGmWUURPcAV0XSa0VP+6q5KxKdVPDlD3b/ttru6SzcF+HIDqhW7tDB733zC8O2F0xXmKj+JCp1uzqF3wMwCL2uGIkr0Ja1idnDnFm4dL3p5xA870ZxAbLyvm23TdZ1miWkXUW0I0bHlqIy7gUo6IgYO+1lVObOCUZ/A= 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=ZjxMrP+c; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=XSCOYqDq; 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="ZjxMrP+c"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="XSCOYqDq" 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 66G3wQZ31412170 for ; Thu, 16 Jul 2026 05:28:04 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= XRdAWTgk0ofBEkNhCQmxjBVp98NxTcEKu+gg7GtTExc=; b=ZjxMrP+cDDh534qe 352tsUzOAj8dVwWrTOz7PKOf2uVQg8CxDEZ1sp/AKV7oGHcI4HbmZxUa2NlVAl16 GNp3d+wOYVFKrCy5ZJw4KMjBnJL2V5W+K+JacojkUtx5kJetK4LuuDFeDl6HXRan QfGm8OiV96EgOk3WhzTpVBan+0BkbTAz9JkQ7AMSq7ixjzXn0kSBubylyspsg/0M lpI4qamQ7sy5ZG6m9XqH2Li60Y5e0Y5ZCuuGQK9v3tGAzKz006SEDJrjZlI7HFMh CrZ8biSDHYtdy9eecaJZUQI6mvNpJa8Pn3sdDyiwOpDHMeIhHVZ3ka8ccX7mAXpb 24kAXw== 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 4fe7kac8xg-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 16 Jul 2026 05:28:04 +0000 (GMT) Received: by mail-pj1-f69.google.com with SMTP id 98e67ed59e1d1-38e095fd889so5938877a91.2 for ; Wed, 15 Jul 2026 22:28:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784179684; x=1784784484; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=XRdAWTgk0ofBEkNhCQmxjBVp98NxTcEKu+gg7GtTExc=; b=XSCOYqDq7djLh5cfzWswb5ZX6dQOzxOTjq40oEnVow+jKxY75Tq8UDNDmzPrhe8oA7 K/nuPN8SgvhBVl5enxw27H39BhgTgtxWDTANYV60TYYWaN3Onhz6QRPXuOE87Ddk9Uhs pi7WpA0kVgYiDt4o1mN8dCycz4LtbsOUYBbMWQdz+8VJekGtEnoh0mSaxQxyNRYMtGX0 b+JHvMxs03mmOXWcKuX2bSxNU1xgk0YU3GDeUyTNEgxiwJwxmVVWn8EtxNlYiLY56V/y rrdQxDH7D2HAJr7KiV25e9oZuO0Y3JC4eY50/aNtwEoyM8lAtcBVY8yYAFaWNH1W9gCS kytA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784179684; x=1784784484; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=XRdAWTgk0ofBEkNhCQmxjBVp98NxTcEKu+gg7GtTExc=; b=ZdGP2jcLso/zAO1MfPILAs4XKb2InmxXf8kUhF4NObinl4PzuhsDEZkJaDwaRAl1pa RjdzTqdqzw5Uc2oQGyfSGHzI5xoQRiBik1DkcgizEoZBrRsF6aonlfLdUmi/vWwEKKxA 1tnL87SfZxNP5f9g2vuQPa/oUj/sgYueRRxsKpdlH8/pveJ885Y4s+THj/isXmPEB1T4 VR/TNuhrQnTlC2EUnFFg8rnS4t15iWYuogJoRSAUWOcOCbf9tAzjxGTRFiip2SoD9gH+ l3ZtBZbpwVig34osSfmMNyQpSjNf/vBM4ZzmZgD11PTNyGCnEknEtwDhydU0uIGREMJ2 dj8w== X-Forwarded-Encrypted: i=1; AHgh+RpV76ovPA2SyOYeR+/IV/R/NIat4OfwqV91ap5MNGG+nubQ5hKI8pQnmkrwGLlh66OmNyhIJfRKvxstVBI=@vger.kernel.org X-Gm-Message-State: AOJu0YzwsihjMh73Rq+3Ugkpc3pg/kLQeGuoDRmTLHZ4RW70fp8xhrXN 5PpLD88o9hkG1n4qStB0YGvOFKaZlWl1NvzVq9ie0Tgx+vFfdRCxOKszNbmQWYelk8t9RiLtlhi dD7xk/uHzYUk6LnIy7Bwb+GhBRsr3DSo/q1q9en2990SNf27XFl5gCN9ZkRP5rX7QXkE= X-Gm-Gg: AfdE7clETWDBJ8S0+mkihHE+kuWyjZa/5m/yD10AZVg3wHf6CuldJsAWgAVU5UkcsvF qu31SllYm/jjG1iQXc7rzbnJ3diThsYJMN3Du0kwjDEvIrVSP4FdRFr4ro+kqpBuCZiJTwlHgsb 3jXM1Z7OHbZ4gszzespeNj3mZMg7IjViPQPBPjWG2fAh0bqFxkSUi2IqWPvLGjoivNMyJjtWK30 KxQ72cKcjmdzVSTKD4Wx5A5+iptbNg3C6nMTW4R75FJidRfogEkGiib3parXAK76YFEVbVbucbn cQZBWAyIQDlobZ8A2tznT/3mfPYdCJce1L5B3pWjkTUx1PcIKBihTgcTs93EXMCFPAnuozLAmPV rz+o7ERnEhaeb+hfBt3R7/Wpm1bwsZPDQkvx2iDRCUm/lX0kOlYx9tgQL51ceW6ufpgRC1NcL0L iCRhb6s+PZdow= X-Received: by 2002:a05:6300:2288:b0:3c0:e6c3:224a with SMTP id adf61e73a8af0-3c110775293mr21497802637.37.1784179684000; Wed, 15 Jul 2026 22:28:04 -0700 (PDT) X-Received: by 2002:a05:6300:2288:b0:3c0:e6c3:224a with SMTP id adf61e73a8af0-3c110775293mr21497782637.37.1784179683536; Wed, 15 Jul 2026 22:28:03 -0700 (PDT) Received: from hu-mdalam-blr.qualcomm.com (blr-bdr-fw-01_GlobalNAT_AllZones-Outside.qualcomm.com. [103.229.18.19]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3140e53349dsm7795812eec.7.2026.07.15.22.28.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 15 Jul 2026 22:28:03 -0700 (PDT) From: Md Sadre Alam Date: Thu, 16 Jul 2026 10:57:47 +0530 Subject: [PATCH 3/3] spi: spi-qpic-snand: Handle Macronix quad read opcode 0x6b 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: <20260716-quad-v1-3-636f74da17e1@qti.qualcomm.com> References: <20260716-quad-v1-0-636f74da17e1@qti.qualcomm.com> In-Reply-To: <20260716-quad-v1-0-636f74da17e1@qti.qualcomm.com> To: Mark Brown Cc: linux-spi@vger.kernel.org, linux-kernel@vger.kernel.org, Md Sadre Alam , Md Sadre Alam X-Mailer: b4 0.14.3 X-Authority-Analysis: v=2.4 cv=TMF1jVla c=1 sm=1 tr=0 ts=6a586be4 cx=c_pps a=vVfyC5vLCtgYJKYeQD43oA==:117 a=Ou0eQOY4+eZoSc0qltEV5Q==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=YMgV9FUhrdKAYTUUvYB2:22 a=EUspDBNiAAAA:8 a=FygxKSnESxtamiDJ3dkA:9 a=QEXdDO2ut3YA:10 a=rl5im9kqc5Lf4LNbBjHf:22 X-Proofpoint-GUID: sJMDN7Fr5XiDT2B9UC4cQ22SU2BfHlhI X-Proofpoint-ORIG-GUID: sJMDN7Fr5XiDT2B9UC4cQ22SU2BfHlhI X-Proofpoint-Spam-Info: AW1haW4tMjYwNzE2MDA1MyBTYWx0ZWRfXx/rzsxD8X6SB yH7PdG5Ai74i3knwRvhM+rNDbfq7lc7CZ7D8lV9H/i4RPibZM1mVa6uETjQfwyMvzFdTVLs1lzV XkNi6e8h8puGjK4gGFIQq169hOSODBc= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzE2MDA1MyBTYWx0ZWRfXwopH4C/R/loQ YofXzSqPH+pke3/Bbaihi4Qe4ibI8pyPN80s++E3Hgn315ibAYhsiS25zWVnE18lES4wUrqlNpN lwNx1mSdlY92fHE/yNMFI5tHCdfO2IwWuj/tP0N1hMzSM05QGX83BTpnijMltlK96J5n8BZXJJG TyiFxGzX+KA6MgANiXWIkkTwWyY9FD9y1yUygCvuR8nUb4jzHF32wFdcqDdtbc41nZo8vrRzmRc jwhJrwemNiFdIgXMmBGn2cNk7VFI+k/qxKJlBEjCeZvQ1DXxyHNn66GPxHBVI5ZiDIPL3izwUpQ 0Wjwlq7OYi5IHbH44PKEdpBlSjKnQwYlrdWbwNDXiHyMJWnCR09TVmlJ1Tn/6UntMtgbWs1TWn8 McPiLGZBYi0KkRWyXkY9NwhIDu0qGEYd0XfblmcQbKyHZRc2b6etDwr1mMzGeDKBUYKeTFAf8ha GMt9xDGQy8V5r3vZvmg== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-16_02,2026-07-15_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1011 adultscore=0 phishscore=0 suspectscore=0 impostorscore=0 priorityscore=1501 bulkscore=0 spamscore=0 malwarescore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607160053 Macronix SPI-NAND devices use opcode 0x6b for quad output cache reads, while most other devices use opcode 0xeb. The QPIC SPI-NAND driver does not currently recognize opcode 0x6b, causing read operations to fail when Macronix devices select this cache read variant. Add the Macronix-specific read opcode to the command mapping logic and treat it the same as the existing quad read operations. This allows Macronix SPI-NAND devices to operate correctly in quad read mode. Signed-off-by: Md Sadre Alam --- drivers/spi/spi-qpic-snand.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/spi/spi-qpic-snand.c b/drivers/spi/spi-qpic-snand.c index 5c077f7023f1..e2f5dce15946 100644 --- a/drivers/spi/spi-qpic-snand.c +++ b/drivers/spi/spi-qpic-snand.c @@ -52,6 +52,7 @@ #define SPINAND_READ_CACHE 0x0b #define SPINAND_READ 0x13 #define SPINAND_READ_QUAD 0xeb +#define SPINAND_READ_MACRONIX 0x6b #define SPINAND_ERASE 0xd8 #define SPINAND_WRITE_EN 0x06 #define SPINAND_PROGRAM_EXECUTE 0x10 @@ -1023,6 +1024,7 @@ static int qcom_spi_cmd_mapping(struct qcom_nand_cont= roller *snandc, case SPINAND_READ: case SPINAND_READ_QUAD: case SPINAND_READ_CACHE: + case SPINAND_READ_MACRONIX: if (snandc->qspi->raw_rw) { *cmd =3D (PAGE_ACC | LAST_PAGE | transfer_mode | SPI_WP | SPI_HOLD | OP_PAGE_READ); --=20 2.34.1