Received: by 2002:a05:6a10:c604:0:0:0:0 with SMTP id y4csp889886pxt; Fri, 6 Aug 2021 17:06:53 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxZZ17ADZ0mjrfxPmjU+XyrQ7jivHwMl0k3Df5s82jAUwPFdPHPZqXVjZhDRhSG6nNlsSUk X-Received: by 2002:a17:906:2642:: with SMTP id i2mr12268377ejc.323.1628294813712; Fri, 06 Aug 2021 17:06:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1628294813; cv=none; d=google.com; s=arc-20160816; b=bHDjRlqoDEYIt30tXMVxjeZdprfPCuILH0PGLrrQGpLWU4dzQEnBNC9lg+XVUKQcn3 Aqzj/QLhhmjPXlJmZKKva9TeiYKRY6XO3XVfayVe0HCeoEl0N5PieKjblyW5cFXjgJZ8 RukePT0hW0czXmpWzWy0EeHfwb/I/HxshyOoMAMzzxS1xYky63O3lzabrKNS2mrtyS6a xCah6wi5TaA2X+SZpcsosLZRMsxAiOkAw0p07BzZpU+Nx8l7073erTkBBOzIyq4ldeGI +fVMQcQr+qNbfgXLHN16994JCA8iCQgneeGVZhH7r1eEJ/8Ef27i6AQiKOhdDtXaOG+h KX3Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :organization:references:in-reply-to:message-id:subject:cc:to:from :date; bh=3HcH36hpedZ97cvTgpzpWe6TblW6+/YovjOFtfv0QMY=; b=geq87pG2GX4tkLrE/yG/8no3kpqqGpSBTSLzebA5UHQ73VxB/mdwofKbFon4M/u4NI hC1llN1aa+eaRAGA47O8gIUjjk3YfLfFjvs5u1997vjfP7A7WgBcwlErO+EG/vb05H6d c9ozGp+UogelaHdfmIrSwsFpbzhUTJj+do35G2TX0UQb1seUwyp4MTPLGqGcWuzqfTcm ime8Yrufm8ffP0ivF3oUaIMY/6aajb0mrXt5cALVNNgIAkzvqOLHkl30lrSIT8H/8Y6J 911obpXPgfAMXCxXM3dZHQRYbHX6q5yLDJOay1zItNEd72ZY5RQSAzzVss4WsYL1YQhc 8E0g== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id h14si10899088edq.2.2021.08.06.17.06.29; Fri, 06 Aug 2021 17:06:53 -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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243731AbhHFTJA convert rfc822-to-8bit (ORCPT + 99 others); Fri, 6 Aug 2021 15:09:00 -0400 Received: from relay11.mail.gandi.net ([217.70.178.231]:50149 "EHLO relay11.mail.gandi.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231887AbhHFTI7 (ORCPT ); Fri, 6 Aug 2021 15:08:59 -0400 Received: (Authenticated sender: miquel.raynal@bootlin.com) by relay11.mail.gandi.net (Postfix) with ESMTPSA id 88CB9100002; Fri, 6 Aug 2021 19:08:41 +0000 (UTC) Date: Fri, 6 Aug 2021 21:08:40 +0200 From: Miquel Raynal To: Apurva Nandan Cc: Richard Weinberger , Vignesh Raghavendra , Mark Brown , Patrice Chotard , Boris Brezillon , , , , Pratyush Yadav Subject: Re: [PATCH 11/13] mtd: spinand: Add support for Power-on-Reset (PoR) instruction Message-ID: <20210806210840.65c06b67@xps13> In-Reply-To: <20210713130538.646-12-a-nandan@ti.com> References: <20210713130538.646-1-a-nandan@ti.com> <20210713130538.646-12-a-nandan@ti.com> Organization: Bootlin X-Mailer: Claws Mail 3.17.7 (GTK+ 2.24.32; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8BIT Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Apurva, Apurva Nandan wrote on Tue, 13 Jul 2021 13:05:36 +0000: > Manufacturers like Gigadevice and Winbond are adding Power-on-Reset > functionality in their SPI NAND flash chips. PoR instruction consists > of a 66h command followed by 99h command, and is different from the FFh > reset. The reset command FFh just clears the status only registers, > while the PoR command erases all the configurations written to the > flash and is equivalent to a power-down -> power-up cycle. > > Add support for the Power-on-Reset command for any flash that provides > this feature. > > Datasheet: https://www.winbond.com/export/sites/winbond/datasheet/W35N01JW_Datasheet_Brief.pdf > > Signed-off-by: Apurva Nandan > --- [...] \ > @@ -218,6 +230,8 @@ struct spinand_device; > * reading/programming/erasing when the RESET occurs. Since we always > * issue a RESET when the device is IDLE, 5us is selected for both initial > * and poll delay. > + * Power on Reset can take max upto 500 us to complete, so sleep for 1000 us s/max upto/up to/ > + * to 1200 us safely. I don't really get why, if the maximum is 500, then let's wait for 500us. > */ > #define SPINAND_READ_INITIAL_DELAY_US 6 > #define SPINAND_READ_POLL_DELAY_US 5 > @@ -227,6 +241,8 @@ struct spinand_device; > #define SPINAND_WRITE_POLL_DELAY_US 15 > #define SPINAND_ERASE_INITIAL_DELAY_US 250 > #define SPINAND_ERASE_POLL_DELAY_US 50 > +#define SPINAND_POR_MIN_DELAY_US 1000 > +#define SPINAND_POR_MAX_DELAY_US 1200 > > #define SPINAND_WAITRDY_TIMEOUT_MS 400 > > @@ -351,6 +367,7 @@ struct spinand_ecc_info { > #define SPINAND_HAS_QE_BIT BIT(0) > #define SPINAND_HAS_CR_FEAT_BIT BIT(1) > #define SPINAND_HAS_OCTAL_DTR_BIT BIT(2) > +#define SPINAND_HAS_POR_CMD_BIT BIT(3) > > /** > * struct spinand_ondie_ecc_conf - private SPI-NAND on-die ECC engine structure Thanks, Miquèl