From nobody Tue Sep 29 13:19:20 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 E76D64749EF for ; Fri, 7 Aug 2026 16:04:17 +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=1786118659; cv=none; b=qGi6CLyTPJVZ4hNAs7mTIoF2l4uv5DIu5li8ljK75dm7bXpIPm1Iot+uq2zpzw3sc37/36LoFn5Wuk3mHx9qnit2TrK/CNzaUuGriJFAcHznec6F7udPL5kumpzdTiQ2j+/f/vPi2Fx2yPV5xrxLZw9NJxXNmEtqnshoS5xeCt8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786118659; c=relaxed/simple; bh=RTHMKxogHTIVdAiFZGs5J+GGbqRIMipvqbZrX801VyI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=J3Lx5E01NsHTyleyWi6Mh9j6YH2oaE57osrDjH07DB7QLRcZYd6qMvV27zOK56kqYuRqRi9nZg9m7NIml3OnkqWunE+xQFNXBYWQUIkLgPmXfXgRi9sFII/Y7hHjxfsfPtRymhG/umGiFS5dUXKVwiAbEYMJgW473LjpGzmUXaA= 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=BPJkqmk5; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=fg76XiL1; 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="BPJkqmk5"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="fg76XiL1" 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 677FRiWL1680007 for ; Fri, 7 Aug 2026 16:04:16 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= 33TYFwncrN46/2iN8rzuq/WUVc3WbHSRn/5XMBLGW3E=; b=BPJkqmk5xiiSKIkk /ckRYGErHWsuHeXCA4oA2j5STN9JCMZAKT/9bg3MaFkVUOOfPJ9KGQoiUgMk62db ntA5MSPm07aWlksqvIF+lYMdBwPF/zvnMhRI0tKYZhwmYUK3ELozV7Q6W58QiN0v Ei0X9Xa89KLjvCjI+VgbBvpj/89LtrWOOQdnjEhyaczjnhI/vQbbDBD5kf61uKiZ VdpE2MvXl5B+Rn33GyKLGVMTnbNCeWtTojLdykGyiTzPW0Ud4Dk2BlG/MsFRMK54 hde9fepDPfqOvkghY1uoyh00YDNSeWQPaZjdRhMPTUYKFOgzKjJLE3tGNPF2c0zT cQsppA== 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 4fwgewgk75-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 07 Aug 2026 16:04:16 +0000 (GMT) Received: by mail-pj1-f71.google.com with SMTP id 98e67ed59e1d1-38e11baa66eso3330626a91.2 for ; Fri, 07 Aug 2026 09:04:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1786118656; x=1786723456; 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=33TYFwncrN46/2iN8rzuq/WUVc3WbHSRn/5XMBLGW3E=; b=fg76XiL14PIkmKGjYK1I7wvP3yV4KzsTc1utaSCejTyz1ppZMsZ0pTvc5SJXKHd3ZW ihBMgkb9gtRG6xaJMgBMeIbgf1p6haChLg2VBBkPm/Fhe63b/D2X7IA4UJvTAiYDC1q9 n0wUdiket+MVhs+C1CCoEGQDP1KIx4M0P1wJWBkNr61/uXWfGjBF2DnKg314CrbW9SdM H4ivsHWai9H2HTVyfAHD/QoVG04r4357++A0Gwk3NTM46urRVglB/Loj0MC8H+L/znap ySnKzC7L/8xFtImtD+sBx+bMQwU1SwsZhATry7LsM3wf2yuMDa/hySLF/2PiMeOlOdCo ShXw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786118656; x=1786723456; 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=33TYFwncrN46/2iN8rzuq/WUVc3WbHSRn/5XMBLGW3E=; b=sBvJ9rPphkLvRD2Vjp8dlbSTQFqut0quuVMq653d5fOt9X1g5yGv8jQ6kMz4TK70DO ga3GcmEkFMp/+s2LrzySBBltYCSlf78TxcGOUO5cwlKGMq/grcHec5IoFI9RcaaKIW+9 7zn/OIWgDETzeE8xy76v8oEK6to7erc76hyWfstZ7E4Lhgk8x+nZqWI3BWlH0gy0ES3a uNsMA+fzmZGbXe48rjhs8X7Ie3Y1bXU/Qkq9RgqNGif1ztTzgxo9ruJgyzc+GXm0rEt3 iHxySljKJ0JVnf9Q1mParmPxMTJVf1YJGZns8r12c4IFiBaesTnMTlWT6ChIJ2SA/8vz 2kXg== X-Forwarded-Encrypted: i=1; AHgh+RqJor01VHENeVjnbECVxh/arkQR4JKzdRocgmE3oqK0EQn8KNUT3GYoFK74wB1eRrqtGe1BJHYezyhyV0A=@vger.kernel.org X-Gm-Message-State: AOJu0YzLMNkk/eP13+9Y6rbWhjh7OFvP6nx/cJRXfyX1BIhpPg38ET6J LwIxgHT+CKv2GmcyitgoB4sGiU4YWq6cqJyhdGW7VO63JizPJb44GNbU8WXm6fLFBNiFnAHGscN HWuVzJLo4icQc5EZW1LBwf88iXr3zaXQ9YrwzsK590/E6KrJJvvVanJOhibSy2oO0Thmeu5Ne/W M= X-Gm-Gg: AR+sD13Qf9fGY1DAXMFMlFvJoZLav/ierj71v65drb1NtiO1DXP+WbHEzVl20sioyP4 rgLRBOwdnqz6Hyz8YLVweVzZiDuLP7EEFanxCgcll4zkc2G+8bfwrD5w80Sd7w76evmkuDVKrR6 Nke/Mk/GXzTa4l3imNWRUc31wxjX87TKdAJmkHhmkmNeXIidZncYo1dqI9creaGf+cFal0v+Ib3 hdomFGfNFfmBalhk+LMl8LB2WYkXkZfU5gDa6WmuGue+oAggYap0VWmfbwJt5mc1ldGWpVD0bY5 tZIQRw/hkNFtXOBhOmNPmwBvIb+8/Hmb5bifZEHcTlRPWMrBji9+BMZkFd11/9qhLIEm4lc9g2L 7yd2KuNKfnrMIcvpb1xYaSY37jah3Avh2linZt0vKzzRDeut3QB/2Kn7CE/x3X0Ht5duCEP0GA5 Fm4RrkceaJrqU= X-Received: by 2002:a17:90b:2dc5:b0:38e:ad9d:1151 with SMTP id 98e67ed59e1d1-3909d79f314mr12715379a91.4.1786118655711; Fri, 07 Aug 2026 09:04:15 -0700 (PDT) X-Received: by 2002:a17:90b:2dc5:b0:38e:ad9d:1151 with SMTP id 98e67ed59e1d1-3909d79f314mr12715044a91.4.1786118653692; Fri, 07 Aug 2026 09:04:13 -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 a92af1059eb24-1410199bfd8sm8337541c88.2.2026.08.07.09.04.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 07 Aug 2026 09:04:13 -0700 (PDT) From: Md Sadre Alam Date: Fri, 07 Aug 2026 21:33:55 +0530 Subject: [PATCH v2 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: <20260807-quad-v2-1-8ec821e2f22b@oss.qualcomm.com> References: <20260807-quad-v2-0-8ec821e2f22b@oss.qualcomm.com> In-Reply-To: <20260807-quad-v2-0-8ec821e2f22b@oss.qualcomm.com> To: Mark Brown Cc: linux-spi@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, Md Sadre Alam , Md Sadre Alam X-Mailer: b4 0.14.3 X-Proofpoint-Spam-Info: AW1haW4tMjYwODA3MDEyNSBTYWx0ZWRfX8HwpjFD/jx5G 2yivKwH42WLlQH2ZqGmzY5oQeClrCuVOIhJYZSaCVYvIXUY8r6fYYDZ3yMa5q9fromTv+29Bi9t EWgQ0jSRTxuwf8H61p8kzVwMJS2UhsA= X-Authority-Analysis: v=2.4 cv=N5cZ0W9B c=1 sm=1 tr=0 ts=6a760200 cx=c_pps a=UNFcQwm+pnOIJct1K4W+Mw==:117 a=Ou0eQOY4+eZoSc0qltEV5Q==:17 a=IkcTkHD0fZMA:10 a=Sv0fKeRqtYgA: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-GUID: RKyWxu4WF67ylbvUGMbmpdmp4HcYK9-O X-Proofpoint-ORIG-GUID: RKyWxu4WF67ylbvUGMbmpdmp4HcYK9-O X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODA3MDEyNSBTYWx0ZWRfX+q7sxGgSusCj WMrnYrRcZJR9puoEMTYviD6U8UFaT0c7g2hmQDTDmYxcEqDE01+8h9fXMWnncqtRdac4YzBLAxE 1+L0cPpBZb1VpWKv8C0llfFDi13cjNrVX+HxW00nVZw49BE2UFo7lRksrKxlosIp6zhyojwKKV4 c5HjU/e6lpymSF5vQcSVaPhBp9cURlut3fns6YD9Ez49RhiUB9589muP4Nn+lU+zvkGXfC25PRf ox6BfYd1ZODR1jmbKGUYtDVslRjWAllt26kre7Tuw2cxy9SZKKSk6iS+1ng4hNLqpqdfn+xLyg6 YAw6R/7CUvJ5XJefPUqqVzROyJ2KP8+QPKtXsTd9bYgoUeBBLa53tjc/VIPmARFXcQlplmXk7T9 ehM0m6+O+5dP4060XegAmAEDNOrzA33v0WmY7qQB+LdfabAs3OukorEBoUUgGI9wUxYfQcRp8Na W+oQfvjeCsqYo7KUNcQ== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-07_02,2026-08-07_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 phishscore=0 bulkscore=0 suspectscore=0 spamscore=0 priorityscore=1501 clxscore=1015 impostorscore=0 adultscore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608070125 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 1e2fc875cd66..db105b3fd601 100644 --- a/drivers/spi/spi-qpic-snand.c +++ b/drivers/spi/spi-qpic-snand.c @@ -1004,6 +1004,54 @@ static int qcom_spi_read_page_oob(struct qcom_nand_c= ontroller *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) { @@ -1268,54 +1316,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 Tue Sep 29 13:19:20 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 845B346D0B0 for ; Fri, 7 Aug 2026 16:04:21 +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=1786118663; cv=none; b=fGbd7dXXF8ox17hamThUaEM+jgWDGwWJF5kMIwGFQS1t9DW3jDYhwN11ebPEHqr5WGbo057UiyirFGArrAixs/x4CWA6+acoEMWxvamOyXIZtNWZUd4RUBsLK52nJadEi2q88SEpIjQPXLg4aNCxdUkFsWPrdWjmVecKNMbVjH8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786118663; c=relaxed/simple; bh=KG0GBl+723DVFVAiuh1ol7HTTiDBcSr4vDqc6QAUmyY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=PwMqykR5W+z7FN+Z5hUDoDJCoPI8hltsaxDTJ8kaPCd76xUjrLkr/Z4oHUwp6SAlzAr9IH5Dn2SdEqkocnFC2mko3B+xmPXKGuPid7Yie5Z3ycTFpBCcf5OwLp0NOfvPwvNxDAIMr1FG4hX5sLOvUXXkCTOYQf9QrjqDQzfhCAo= 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=OLD8x57f; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=J3aDlxLX; 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="OLD8x57f"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="J3aDlxLX" Received: from pps.filterd (m0279873.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 677FS7kT1381609 for ; Fri, 7 Aug 2026 16:04:20 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= ie2/DvuvsUrPw0uPFMJ8pcmcDrW0q8iqj17oL8wO1yI=; b=OLD8x57fonEbyr8z 0r7gQA+HmzKdpXtcQ1UF7fPLR2Zn+Q5uJE7q7v1UqoVcOnVlsL7JfEToPjERagP7 Wgfh4HT9mpCrCScNHCocBXlsL1pAQSomy9Kk7ECPUpIeqIBfiZhPI+ST3Z69qKeN 5XdbK7Wk0cS/J2FiMO8cb0S+hEioaETQ7xlo6Tfw8OypkMu0S9tdxJevFz1jhZco Agxu1RKnpsBD9W5gjZvuix7cKdQr9Dnz8Btck4Yn8p4SHih8yP1nhjrEsv/KRpGx fLlzUo2/hST66dJTzSiXwQQRbyk0kqBYQVWseqbqSO5+QT+VeGXx7DPaS39FhXne IM+xRw== 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 4fvy6fvvee-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 07 Aug 2026 16:04:20 +0000 (GMT) Received: by mail-pg1-f198.google.com with SMTP id 41be03b00d2f7-cbb92868263so3764629a12.2 for ; Fri, 07 Aug 2026 09:04:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1786118659; x=1786723459; 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=ie2/DvuvsUrPw0uPFMJ8pcmcDrW0q8iqj17oL8wO1yI=; b=J3aDlxLXiFsHMpji+3OY0/aEp22qP7kWgxSceOeKDDJYUc8o6qxnNzkHEXyHAgXbJW pk2hc4a/zXhy9vIigQCM+Tia/RHxlEtAhc/ut3Uj19tEkwLKkRm2OfLcOqcWiK78HzTf QNDShoLnBIhfuyI1qe92XZGnV8498whEspolSZRH36bGDWtxFGALKQub5qpJaWaFajMJ Wr+WPhrPmH6JKW/7QvguSRSFNDoJHdaecq4qRV7crFCVpdSphtxGat/W7SJVYboA4kso FYSnLm/RtoPQwWgiNGjx7yiSMQ54NgTH9NAD4rbxmi0EaYaJgobdTxIzvDqSH+SOANRz LSww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786118659; x=1786723459; 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=ie2/DvuvsUrPw0uPFMJ8pcmcDrW0q8iqj17oL8wO1yI=; b=ThGeymoxWKpry51VRjryAjzvbFc8W4sRgUR32v8VLPlH730GrxmMlf7D8qiIxFSKpV z2SDAIbZUOfVAivbQXOcQ+qciWDnP4Z9NyqIjHRsmlOFnjixXAP5cIAycZ6jXl9zXRyF Vnyzqy01khnxnHN6RmZGt04novV0AzJOOWWjSGQ4luzuw6n15TY/hGqTHe50veaJ67zL 7jI7cmo1SVkVxqMtfL+YO6LwKt4TeanYEbfPmdXwKxFw8eEzXKv5G2tKEynChOhUoERq uAN4gUlwxIfB4LwQgJMPWGwEX6nWiAh6tl0AIomu5cpWZLEB7oJINbBniRJCV0Gche8E ps7w== X-Forwarded-Encrypted: i=1; AHgh+Ro8+0VOx3Ml/672/Cn4gpmo11H9k3+REPWqovIBaIkmQxnUtYadbZFWDHolFJeF3zE9BCVSaMT6JUW8a4A=@vger.kernel.org X-Gm-Message-State: AOJu0Yz6SNiegwHug62QKO2J1PoBAQzcqThLt/m/jLOHLeAwLCCk2xrV a1LN203BHXg4TuidY9jJELolAquoxhOUoZdLiTA3EAqAWoe5WfyKHtjmOjryJYP/SmGiCpdh3a4 rR1WcLWkjaBIsI1D6xwpwgeOZhGb/WYdUTt51dkZx0Byab063GvozRXGZO7GxqFGw1Kw= X-Gm-Gg: AR+sD11smXBdAeoOHTzR3sk4HB+owQQiKryPwLhudMDgPkDMwCna0ofdXH6QfeGUmNU W9n5ffSPJAnhxLTMJK8hAYiCxp2YF5BadkgWmEIJdsyrazxkhct4aYRnuOUAcRXduP/m/3Ht+R6 ePj5QXl49I19pBoYqWCw+oS04gRRSdHa8GzbRPtw6oY8nQXW31st6PosDBkSa8cjxlH6hszk6Fs qGPf+ASG3b6QHLObQ6uFNc/dv22/9+d85Pvq3DHxHlHK2kO+l+osQh5EQ2nE7YXQpmZH2QBE6FC SQEJ9MJo4cQx1JyKFz9NT3aVhKGSkQk6/Z/b4F/qWTnVMA9oVRZWTdfUuGa+Vvg9AVftugPbVeq tLq509i0MizxL4xfcs8rDoqiMYDMeaPk2IbRT/8iX/mQlkgDjX0sLIJsaARjsXTGsmQ4PVi7DXb VQZ0GlEEqllm0= X-Received: by 2002:a05:6a21:6197:b0:3c3:7891:6523 with SMTP id adf61e73a8af0-3cb85ffd1b7mr30110071637.34.1786118659127; Fri, 07 Aug 2026 09:04:19 -0700 (PDT) X-Received: by 2002:a05:6a21:6197:b0:3c3:7891:6523 with SMTP id adf61e73a8af0-3cb85ffd1b7mr30109765637.34.1786118657424; Fri, 07 Aug 2026 09:04:17 -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 a92af1059eb24-1410199bfd8sm8337541c88.2.2026.08.07.09.04.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 07 Aug 2026 09:04:16 -0700 (PDT) From: Md Sadre Alam Date: Fri, 07 Aug 2026 21:33:56 +0530 Subject: [PATCH v2 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: <20260807-quad-v2-2-8ec821e2f22b@oss.qualcomm.com> References: <20260807-quad-v2-0-8ec821e2f22b@oss.qualcomm.com> In-Reply-To: <20260807-quad-v2-0-8ec821e2f22b@oss.qualcomm.com> To: Mark Brown Cc: linux-spi@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, Md Sadre Alam , Md Sadre Alam X-Mailer: b4 0.14.3 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODA3MDEyNSBTYWx0ZWRfX2xJe0F92SV6z V+47NjQWAMUOYmYNyklvOxX9vyVmzb3TlwlRk9VGJSCQGPAiC3K93n0nCqHZnMCusa6c6yki/hT +Tnebi3sIRAx4kG7C3ehFm7mC/sAQHeaBfarZUgcLSWyVonWgnhwec6LysCvcvYrYN+u4L3gUER S0XfrEA9TQGJLoku0Xf3fP7zAGOPhCnuajwcMDi4dbrBfuNYplaIeW3/BRdiSbVOm+lmqNvnAU1 IwcJyycTEh/p1I6TeBX4FnIwbNvcsFotxJ/KkSGo+5UwaoYqct62ls3/6Kv2OHZJxIHniuAe/42 BQAvjaNABy62a4DzfJ5jn8FJ8WINjwKs8uQu3Xx7P1+9LW6niiG37mtAo6G8S+cK9/+oRrCEdgB LZ+Z/LRCCTbfMJcxBYkw2XEp/s5CN+QzGyQsBjKka9XDKaf4fFmaZPCXaO7cuJl2D9TIioBADiL fKGtVUxtbGLxBL+S7XQ== X-Authority-Analysis: v=2.4 cv=DvhmPm/+ c=1 sm=1 tr=0 ts=6a760204 cx=c_pps a=Qgeoaf8Lrialg5Z894R3/Q==:117 a=Ou0eQOY4+eZoSc0qltEV5Q==:17 a=IkcTkHD0fZMA:10 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=rJkE3RaqiGZ5pbrm-msn:22 a=EUspDBNiAAAA:8 a=LCgf8a1I7HAfrTGDgyUA:9 a=QEXdDO2ut3YA:10 a=x9snwWr2DeNwDh03kgHS:22 X-Proofpoint-ORIG-GUID: BVnkT-n4j7OvmBxHKEUyV89W4GksR2lE X-Proofpoint-GUID: BVnkT-n4j7OvmBxHKEUyV89W4GksR2lE X-Proofpoint-Spam-Info: AW1haW4tMjYwODA3MDEyNSBTYWx0ZWRfX+gMkoDQDo7VP poLJQqFLTkvVtfXJO9Hrt0nrgFrmG+PLMoznKv9tjSyKtE/a3YFhxURbV1igEPjIIQkuB2Z4P7b 03wNHCIsYrh+RNIP2p2OnontX/lLmYM= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-07_02,2026-08-07_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 bulkscore=0 clxscore=1015 spamscore=0 malwarescore=0 suspectscore=0 adultscore=0 impostorscore=0 lowpriorityscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608070125 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 db105b3fd601..6ad2f96dde8c 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, @@ -1004,8 +1010,15 @@ static int qcom_spi_read_page_oob(struct qcom_nand_c= ontroller *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); @@ -1021,11 +1034,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 @@ -1038,12 +1053,15 @@ 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); + *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; @@ -1055,6 +1073,16 @@ 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; + + /* Update the cached command for the cache-read opcode and bus width. */ + ret =3D qcom_spi_cmd_mapping(snandc, op, &cmd); + if (ret < 0) + return ret; + + snandc->qspi->cmd =3D cpu_to_le32(cmd); + if (snandc->qspi->page_rw && snandc->qspi->raw_rw) return qcom_spi_read_page_raw(snandc, op); =20 @@ -1322,11 +1350,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; @@ -1338,7 +1367,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 @@ -1457,6 +1486,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; @@ -1497,7 +1542,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) @@ -1548,6 +1594,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 Tue Sep 29 13:19:20 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 360BF47607C for ; Fri, 7 Aug 2026 16:04:23 +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=1786118665; cv=none; b=eBZ7ugHFX/ZHNcIl+e5OgATHU0aUt5eihnA9LQuQOp0+2EiQLNSNDfmGS2WIVtZjxLb+9ZxAHQYHeWSaIDfF0EmI2KdyRLBJoWYBB1/cbYdHDJwS8xPvK/diRFQI/dB5j1G67OXdih2rAaJfM1PtckT9SM7S7PKE9YEdsSmV7rk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786118665; c=relaxed/simple; bh=IWPoidckTkUCDUTtIIpJEWOGkTo2Wd7LukBSrJluNS4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=j4+Nt8/bI4uSpEUjD5car4P/wpS+njDN4n1cr+b8tlMdhkwo34sKAB+3NrAES1c9+dolcRvfAq+qjmb1fnAb/75SK6JJTtAlI5tT2bZqxtaXF7o5uS31By/FqppkTJBiUo99PQSRVaX3cenGJF9wlKqLAWTofos+x+NK89/Mjec= 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=IIHsZmDJ; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=HGJcsuyw; 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="IIHsZmDJ"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="HGJcsuyw" 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 677FRc8Y1669649 for ; Fri, 7 Aug 2026 16:04:22 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= MKafyX1Wb/XkrOV9lBc+42hvctUQmClx/XghBkmhpvU=; b=IIHsZmDJYpG96qjn B2VTNH33vkcVgVB9pzSuC3Qy9the1galPocuRT3rtudgVPSfAxllPb60RW+F7wA0 V5UkaswvoSw6PvEb26++ptg2CMLgL+mdVuFwvODzIjsJssgqzqd0Ja8X1jhqGitc tm5DBVkmt8RdhoUnAszVGjPvwH547hVHvxE5ulz7xlCLhrUuzNF540J4l5iDQyIT 9Td53i7zttedGxUTCB1vYKD6zgat8YeI0XCFzdqpVIFWGPLVaHehWPf+h6pmKnIg xcMIuAwtyvdQCMWIWhZsLZ1a+FNVNSOtL9RsABwvyXagoTOEd5589fcM36yi32Sp 5FPZ4g== Received: from mail-pf1-f197.google.com (mail-pf1-f197.google.com [209.85.210.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fvy6gvt2a-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 07 Aug 2026 16:04:21 +0000 (GMT) Received: by mail-pf1-f197.google.com with SMTP id d2e1a72fcca58-848568a6f62so5869769b3a.0 for ; Fri, 07 Aug 2026 09:04:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1786118661; x=1786723461; 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=MKafyX1Wb/XkrOV9lBc+42hvctUQmClx/XghBkmhpvU=; b=HGJcsuywy99npCKts2Jz2sVqXWc5y5mUvsz3dwXJ6M16cxOpJxe3JKpjuXXnJkfHiN IzP+DNzz7E/qIMdVy/t6TIc6cTzJbeGJhjWge8bKVUMtDqWjPmHdBZ7BOG4IMxP813Sw xIznE5n2Lf4CCiL2hAkEN140mM+u53AV5Xv/vx6b5OoPDLUOfO4ppRMJLN+kMo9hKdTh j1Hgdep4YHEA453HTvq6kkh9U6sZIxpNzweM9J2jbqElaLYDjlX/J3EesDmbXNAd7AIv T2GyZVhohypsKXcpcBwDHUBQ9vDx/GefapiACeU8m1wgpwGBDIP5djtIe1LDyDkVMc+l iFjw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786118661; x=1786723461; 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=MKafyX1Wb/XkrOV9lBc+42hvctUQmClx/XghBkmhpvU=; b=I2hGHGR1IKBCfq1uTGeGmkrmMchNYsIhOx/sicD6Xmsnzi06DxJP/uQ6zTyszNZK/Q yhI5jD5njJTBpWmxsTiLDIeaE7Rcpln4NJPX5HYe96OPKoneXE8dgdotIN2chiJ6GCE2 ddY0C9syqE7kZPYYAzioBzfYDdsk+LoeU9r7QPla+eHWQkz4cC6YACvOyfcMDpNgLtPF Ui3CUVt9e+l35CI9kuo8Kv53LaT/qnX9/Wk07YY0cXo51TwGuJkG7s/3+3OClMiy5Dq/ mXPTFzMj3kBs0UtRdc+Mm7AFnpHZcCPApUn8a/pho6kXtKC79qPeuyuB/SHYXZUwQlO/ OR/w== X-Forwarded-Encrypted: i=1; AHgh+RqK0EU8EL3eEBLShc0PaRU/b/sReTXAVQ87FZ4tRJdNPEojTzfpLzGMZhB4dGg9+BKjj066GlSvjqVMOmE=@vger.kernel.org X-Gm-Message-State: AOJu0YxCmHxLvXCEL1eU/dIeoIyBW3x/Varvg3Seu4XH3YfwB8eoafT0 GTKAymkygo6UBs9RTYyXjs5C6Osqfy9KZ2X7wnEQ40c/6boiwgxuaRyjw7mbxW/Ruy4ulTsVdeW Ni7QTTN8Kxp9bi6QOY6CKHBq5+XX/6y43oyJT9IScyaucuMYDgYEFWI+suLjsFL3Iz9c= X-Gm-Gg: AR+sD11hjR3U3wmHIDplG00sIHtGGSZ0wbvTlzLW5C2NfAeIcXynvDSWaXaEAsVBj5m 2Ct7BrY7/GRxHmtyaJ5GCE6vtjATb+lqMr81WzHz1X2WTlYBvRg5K6sOAuVARLJ4IQgpL0h+JlL 7V1EQcpn2h3PVXipLGSafTgNb+ej4KTa1rfyENtp1up7bJvhVFWT64INucAOfyZnaO9GYBYVe4/ Roj2enAscsYoPALu+oyS2+8iBRTBg1iwpXW1UjZXzI+H9rpiE1M/ltXTroBMBdJXFTE/lEPAbBL 7Ha7GJwd+4+8VkG4RiqNDs3HQJx0OuVfnmz70ZgORW/qZxVswqRJfoPzZ+GRMRxsDLBSiDi3wsE AlYV6cBNU0z08wyZmCnH+UeOk9r/AuUnevEbhNqNmD+It1Kfi0sXaKvMHcymHiRrVtlru4ziyIv JU4E+SlWmNWJA= X-Received: by 2002:a05:6a20:9e48:b0:3c3:875d:704d with SMTP id adf61e73a8af0-3cb85ee77c2mr32272958637.25.1786118660923; Fri, 07 Aug 2026 09:04:20 -0700 (PDT) X-Received: by 2002:a05:6a20:9e48:b0:3c3:875d:704d with SMTP id adf61e73a8af0-3cb85ee77c2mr32272837637.25.1786118660388; Fri, 07 Aug 2026 09:04:20 -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 a92af1059eb24-1410199bfd8sm8337541c88.2.2026.08.07.09.04.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 07 Aug 2026 09:04:20 -0700 (PDT) From: Md Sadre Alam Date: Fri, 07 Aug 2026 21:33:57 +0530 Subject: [PATCH v2 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: <20260807-quad-v2-3-8ec821e2f22b@oss.qualcomm.com> References: <20260807-quad-v2-0-8ec821e2f22b@oss.qualcomm.com> In-Reply-To: <20260807-quad-v2-0-8ec821e2f22b@oss.qualcomm.com> To: Mark Brown Cc: linux-spi@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, Md Sadre Alam , Md Sadre Alam X-Mailer: b4 0.14.3 X-Authority-Analysis: v=2.4 cv=EYH4hvmC c=1 sm=1 tr=0 ts=6a760205 cx=c_pps a=rEQLjTOiSrHUhVqRoksmgQ==:117 a=Ou0eQOY4+eZoSc0qltEV5Q==:17 a=IkcTkHD0fZMA:10 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=3WHJM1ZQz_JShphwDgj5:22 a=EUspDBNiAAAA:8 a=FygxKSnESxtamiDJ3dkA:9 a=QEXdDO2ut3YA:10 a=2VI0MkxyNR6bbpdq8BZq:22 X-Proofpoint-ORIG-GUID: P-sbUmJxULrdeYnitgJqjFDdr6b9r07c X-Proofpoint-GUID: P-sbUmJxULrdeYnitgJqjFDdr6b9r07c X-Proofpoint-Spam-Info: AW1haW4tMjYwODA3MDEyNSBTYWx0ZWRfX0EhBsLQkQ1lZ L2hG8DUnGazzXmg/44zb6NTu9YqB3M79Zu3Rfqi/MHm6iy5qLayaiMdkKvX0c9SGwyLtHQWNcYu KWWSZL+P/cYg8muqcMJRQj7AEHE3g2s= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODA3MDEyNSBTYWx0ZWRfX1EfjQKktZXh3 uFFxGO/L/ON75pB0fYFEjRRa66tPGrsoOiIUCzf0al+/oR67raYgE+Xl/5ZCUIGzfetnnR1aLso el5ikOuJus9F8LLPLYZhGlZHxJUDiPrzwK4b5hDpCB/D6fr+BaQ8GRY1TR5c+z4anD2lh9zCfvq lHpP3saBtKiYN/hNFplt0r0HPnq0yhp4XeVuaQ+Zma56/9Nqr/BMQ7P0lv1rVogEkqquyxQFXrJ 9tRyeD8LhazeXj8SvAkOeC3Jh30FgGbCRggUE5dIZlVd10DuDd5L+WuLsLWzqj/UvVSynSNj5i4 hKBj2BkpEIg41MbH1/IkDZk3p7v+WT57WfbbwNOzSSUdrgRwIYiWu8n3ekQHTO4TRTKN43z4DqU vXRd1TMrjmA/WL+273g2PN1D5+oiWCF4/MiZ6t4RJIHxxCxAIcvipEeIS8K0LBEVRPgdaIax88O OKTdxRkvkIEEbPaGcdA== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-07_02,2026-08-07_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 phishscore=0 suspectscore=0 priorityscore=1501 spamscore=0 clxscore=1015 malwarescore=0 bulkscore=0 impostorscore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608070125 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 6ad2f96dde8c..61b1f2eb19ce 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 @@ -1036,6 +1037,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