Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp1675954pxj; Wed, 19 May 2021 11:12:39 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzhf3Bz/CqNLFq1WVGBMa8w90U199pbPoof2ZJwGT3PTD24sTx/hwmrgg/d9e0aNz10P5iE X-Received: by 2002:a92:d7c3:: with SMTP id g3mr280078ilq.114.1621447959560; Wed, 19 May 2021 11:12:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621447959; cv=none; d=google.com; s=arc-20160816; b=L+uym0YcuTO8/nD7Kkr78F1Es5X1Or0Hdclv5X7e7uT2PbQ2CGOI+llndn3ScvU0Hg LLhECAre6SNdla3Rz+8rkvz+jEKd7B4FMB8mcs2RjEOv2v6/OX3mD5FdIWoY1/OPOMN3 n5UTDLzxBptjjCaj4ikjl11WKqUcgcU/TlP9NLR/BOJ7Dtt5LRiyEY0x+JD+hu4GYtOX ulv3wo/1Jne9cbW8P4zCFdtWBWMyXBHojEC5FgFpE6py7KUDPxP6G3WVpzBwI4jmblih JhYLX08xCB0g2AdDNNiDHA/+nMu14qsww2DZxdK0iesa8gjlupiNoDVRtPXj94ImOe0y m6Dg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:message-id:date:subject:cc:to:from :dkim-signature; bh=ClUM44THHlL1BycyMOmRsN86GSk4mDnz+xXOf8XGX8s=; b=USEeT8Qyoqfj0lRZ9H4P/e+tCq214MwAUERPuq+jHiiDmHlyo2rKyz1f+0fZ8eVE7D 2uA6YsyckQsPxIqWbJbzZc8KcUyx6u70TcwDRBlN7OElsd4M1LpJ7UwT9vssia9fe5Im +CikJYpAIS/8gAyhFjoU25obh8VWtMSJ42tgssOe0agO2NUw6222BgpGCMAdNTm9rxVO aDDllODvcmADpbmtjDiSm1yLdXXsvbYGKFXjRBtXNTgL68In6V/qVTc3g6uTmTSIJNFj 9FUgrU79HXSp+ePufLHBxVoLXW5POTRoqQH01qozB9oiqgQIx+xt9DsXNef8rtGIlEHG pYbA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@foss.st.com header.s=selector1 header.b=TgMdYdTR; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=foss.st.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id t10si299033ilj.54.2021.05.19.11.12.26; Wed, 19 May 2021 11:12:39 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@foss.st.com header.s=selector1 header.b=TgMdYdTR; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=foss.st.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233544AbhERNpP (ORCPT + 99 others); Tue, 18 May 2021 09:45:15 -0400 Received: from mx07-00178001.pphosted.com ([185.132.182.106]:47553 "EHLO mx07-00178001.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231230AbhERNpF (ORCPT ); Tue, 18 May 2021 09:45:05 -0400 Received: from pps.filterd (m0046668.ppops.net [127.0.0.1]) by mx07-00178001.pphosted.com (8.16.0.43/8.16.0.43) with SMTP id 14IDX56q023702; Tue, 18 May 2021 15:43:35 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foss.st.com; h=from : to : cc : subject : date : message-id : mime-version : content-type; s=selector1; bh=ClUM44THHlL1BycyMOmRsN86GSk4mDnz+xXOf8XGX8s=; b=TgMdYdTRkPqqRW4B2K8CKt6ybV8q+0Huq+i9A+RJIz544JJ72F7Ng8gVVbQwKR17AIIS Cd3xo+ZgdBXxM8NYneGLheRqpcndSWvtAjjpI8RS0CCF8+Y3NzP9V0HU8NevpU+dSJ+K qjKpLggiSh4y4Jv87bu2l+5pksxiRAnY4jaf7Clb0LfCuc3R13Rrw6+MQ2H4Anoy8J0b el94qfjAj62MuGTzS1hjkdoMlbdKYWHUHkJRhHkXBZ9kJTgAMjkAzMkUOH5DT306JFnt 7KQ/nrxn2kyrWSR6Cjspn4QUPo+U1PZ0Vu6rLLpPWm6Sk75fheAVpJlR0sfa707Nyy4X Sw== Received: from beta.dmz-eu.st.com (beta.dmz-eu.st.com [164.129.1.35]) by mx07-00178001.pphosted.com with ESMTP id 38maunsgw3-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 18 May 2021 15:43:34 +0200 Received: from euls16034.sgp.st.com (euls16034.sgp.st.com [10.75.44.20]) by beta.dmz-eu.st.com (STMicroelectronics) with ESMTP id 3260610002A; Tue, 18 May 2021 15:43:34 +0200 (CEST) Received: from Webmail-eu.st.com (sfhdag2node3.st.com [10.75.127.6]) by euls16034.sgp.st.com (STMicroelectronics) with ESMTP id 1BCB4227D8B; Tue, 18 May 2021 15:43:34 +0200 (CEST) Received: from localhost (10.75.127.50) by SFHDAG2NODE3.st.com (10.75.127.6) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Tue, 18 May 2021 15:43:33 +0200 From: To: Mark Brown , Miquel Raynal , Vignesh Raghavendra , Boris Brezillon , , Alexandre Torgue , , , , CC: , Subject: [PATCH v4 0/3] MTD: spinand: Add spi_mem_poll_status() support Date: Tue, 18 May 2021 15:43:29 +0200 Message-ID: <20210518134332.17826-1-patrice.chotard@foss.st.com> X-Mailer: git-send-email 2.17.1 MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.75.127.50] X-ClientProxiedBy: SFHDAG2NODE3.st.com (10.75.127.6) To SFHDAG2NODE3.st.com (10.75.127.6) X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.391,18.0.761 definitions=2021-05-18_04:2021-05-18,2021-05-18 signatures=0 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Patrice Chotard This series adds support for the spi_mem_poll_status() spinand interface. Some QSPI controllers allows to poll automatically memory status during operations (erase, read or write). This allows to offload the CPU for this task. STM32 QSPI is supporting this feature, driver update are also part of this series. Changes in v4: - Remove init_completion() from spi_mem_probe() added in v2. - Add missing static for spi_mem_read_status(). - Check if operation in spi_mem_poll_status() is a READ. - Update patch 2 commit message. - Add comment which explains how delays has been calculated. - Rename SPINAND_STATUS_TIMEOUT_MS to SPINAND_WAITRDY_TIMEOUT_MS. Chnages in v3: - Add spi_mem_read_status() which allows to read 8 or 16 bits status. - Add initial_delay_us and polling_delay_us parameters to spi_mem_poll_status(). and also to poll_status() callback. - Move spi_mem_supports_op() in SW-based polling case. - Add delay before invoquing read_poll_timeout(). - Remove the reinit/wait_for_completion() added in v2. - Add initial_delay_us and polling_delay_us parameters to spinand_wait(). - Add SPINAND_READ/WRITE/ERASE/RESET_INITIAL_DELAY_US and SPINAND_READ/WRITE/ERASE/RESET_POLL_DELAY_US defines. - Remove spi_mem_finalize_op() API added in v2. Changes in v2: - Indicates the spi_mem_poll_status() timeout unit - Use 2-byte wide status register - Add spi_mem_supports_op() call in spi_mem_poll_status() - Add completion management in spi_mem_poll_status() - Add offload/non-offload case management in spi_mem_poll_status() - Optimize the non-offload case by using read_poll_timeout() - mask and match stm32_qspi_poll_status()'s parameters are 2-byte wide - Make usage of new spi_mem_finalize_op() API in stm32_qspi_wait_poll_status() Patrice Chotard (3): spi: spi-mem: add automatic poll status functions mtd: spinand: use the spi-mem poll status APIs spi: stm32-qspi: add automatic poll status feature drivers/mtd/nand/spi/core.c | 45 +++++++++++++------ drivers/spi/spi-mem.c | 85 ++++++++++++++++++++++++++++++++++++ drivers/spi/spi-stm32-qspi.c | 83 +++++++++++++++++++++++++++++++---- include/linux/mtd/spinand.h | 22 ++++++++++ include/linux/spi/spi-mem.h | 14 ++++++ 5 files changed, 228 insertions(+), 21 deletions(-) -- 2.17.1