From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id AA1DCCA5FFC for ; Tue, 6 Oct 2026 06:49:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Date:Cc:To:From:Subject:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=WgRI/saZOmiFPeqaARpJREmkjkWa5MjLjVRIZmZyzAY=; b=bYi/ij9cUTgWqb gB4nlayF+ro1JWHIgKNFs/+z1Gwyg8ONO2pj1P80agtEPv0SZcj/T5mwCNSu+/qG4/dXJ72p+cWvy wXU5NbGYR36grC8GozeGxMtYab8mUTSjIq4qLg3TkhDJteeDR9I05WXHkHavRx8ZXU/Zs0y0CCgo8 UoilEKZMPAqNVPYYK8sFHIO440ph+Viih7yu3zTzFYQEbKXG3tSJmnX2bO7pKnTcpyMfu2N3kopnM 0GOfu07s/KHIoyyDoSwlUctoyrk6T6NhHRfyfzNN6k626608ztMI5ElQBhmBlUXWTKTCBBJtNjxIj jrrkv5ZvKgOTS9MqSxRw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1xDyzH-000000009ew-3zZG; Tue, 06 Oct 2026 06:49:19 +0000 Received: from mail-wr1-x435.google.com ([2a00:1450:4864:20::435]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1xDyzF-000000009eV-07mq for linux-mtd@lists.infradead.org; Tue, 06 Oct 2026 06:49:18 +0000 Received: by mail-wr1-x435.google.com with SMTP id ffacd0b85a97d-48afe75f055so2083491f8f.2 for ; Mon, 05 Oct 2026 23:49:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1791269355; x=1791874155; darn=lists.infradead.org; h=mime-version:user-agent:content-transfer-encoding:content-type :references:in-reply-to:date:cc:to:from:subject:message-id:from:to :cc:subject:date:message-id:reply-to:content-type; bh=dQqu7u1PnHAzJlGyGfMmZKvvCDRPUclc9gbsVzDpIrw=; b=X6Cl0GAqdOVIG3XljXmM+ZZijTmg7gysWLd6a1tWmNkFF1L72eZVPSG69jTax2KI+a 7KHCwGTiZoFDga7aMpxeQ6AXy57QWsiVw4yYGbXDHzplHLzVWAaba+VViBg7wRcOPIA9 UKz3gyTMaNobsEvzZUTuPagVHxSdMkjWop6L5Zf+Q0lNG83Jiwhxsw2M+xxhqJsZw8R4 QaB42t7ffr3s+l8mIrxYKWeBODf/0FQS7Thla8GvyGoXJSWBQ/lvTq5D6miTtB6YQBtT dKlIxKkm9kJeEo2RpVDhQuCfW9m2W7dGTGcFrQDcrQdxdSu/knzePGM4vaIR+eTkr3y/ 60yw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1791269355; x=1791874155; h=mime-version:user-agent:content-transfer-encoding:content-type :references:in-reply-to:date:cc:to:from:subject:message-id:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=dQqu7u1PnHAzJlGyGfMmZKvvCDRPUclc9gbsVzDpIrw=; b=GH49bZnSWGyQ/EvAwTn5Nv5PTFg+FPfZZEg/+7L8BnzFhHv647T83P8cfwUoBplh+f fMTE9E5Xfuy0vhq65OcpPQYiYmLYkOcS0f5fxWf1NWDe3fRHLi3PE6L2f+aokWL/CFD1 DbqlT+PKv7ff3PdFixbEQBJiCfUyVja4Hp+lCMazY7u9McgYKrNH7H+J7irRCDF2dPrK z5SfBnlz0jKH4oADheBoQOyr0gnqr2kigqpI0mbm3gqV5lBwKirfnsJqXu7dkok4PwyW veTfBYusdJmwkbozDc/DFKYlU3zweYjerLFgh6BW9VL4HF4rOwC60wMpwTTRr4T5pYiD U8bg== X-Forwarded-Encrypted: i=1; AKwUvBxSO978R1/8posC9maKUhwu4Ou6AI20OTRb2s+hS50pGBhyv8g5Hc/zjtmQU4a20fMh2b8aowdnM6w=@lists.infradead.org X-Gm-Message-State: AFq9FYJjvPPJxpdogce9hIrL7bOzU3DIzGTzYsY4ysO+X2ONUqpNgQ4o IfQfqeWZPsf0572I9bg97O/t3YO/GF9Q9j/sH+Oa5x4HFKXFAjhyAaCBn6L82g== X-Gm-Gg: AYBFou2hDdWP9pEOFnBBYI3NXYAIeG/LPidXRk9+8hD2r/kYRz+HRRjPr7V6z8wC0ju PsQ3D5sDQWi7/PAOziyMoht4A0TyDeUmJAfb5DK/+Kk0BdAHbJnPytzLaAHxJiuZcr6uHGbVgLR c6kFWNPO+/fAEA8GsgZHvcAUK+YW8Htz5uGgwMg0Dz4HbjvPWIGup8R1mDK1ZTS8guUC6ATsvg5 kWlxSKTw3jZ/whYI24GD60JWnoKGP7nUkugw2OrFxzNNBYv7ibLgckLUT0I6XthtP3ErtINJifD wFGY0wwe6ZNuB/iXz3U3e/5TGCWuUGCpwVynOCk4Xh5SZjpZfogyxWmMeN50ZRFw3LUSLEMgeGd WjodNydjnmVrAeDIK0XF9nwusjz7HzpHBeB1fJSN0O2DF8/TaBto4F3xjaERUDipVRVkZlUuUwS l4FxW/2I5Qu7c3PzE2MSSMfoRo937MigX5k1JLJnm1fLVQonVE2TOpCwoziZ7m+q1WNtGYMKSXA jAcwG0PNwvTk8dODts8KduHV4iLhnOYjLuPqyyfi36edw/ASDYBAw6STfSgvTa/3hfOK+056a+V CByPbZO4gkCM7lZP X-Received: by 2002:a05:6000:22c6:b0:488:83b1:16a1 with SMTP id ffacd0b85a97d-48c6d0f47a2mr789373f8f.7.1791269354706; Mon, 05 Oct 2026 23:49:14 -0700 (PDT) Received: from ?IPv6:2001:818:ea56:d000:56e0:ceba:7da4:6673? ([2001:818:ea56:d000:56e0:ceba:7da4:6673]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-48c6cd717f8sm1302935f8f.48.2026.10.05.23.49.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 05 Oct 2026 23:49:14 -0700 (PDT) Message-ID: Subject: Re: [RFC PATCH 0/4] spi: cadence-xspi: add ACMD PIO support for NAND and NOR From: Nuno =?ISO-8859-1?Q?S=E1?= To: Miquel Raynal , Nuno =?ISO-8859-1?Q?S=E1?= Cc: Fei Xie , Mark Brown , linux-spi@vger.kernel.org, linux-mtd@lists.infradead.org Date: Tue, 06 Oct 2026 07:50:44 +0100 In-Reply-To: <87bj99lef4.fsf@bootlin.com> References: <20260921093701.1341766-1-fei.xie@horizon.auto> <20260928055005.3987624-1-fei.xie@horizon.auto> <87bj99lef4.fsf@bootlin.com> User-Agent: Evolution 3.60.2 (3.60.2-1.fc44) MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.9.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20261005_234917_113025_44AFDADD X-CRM114-Status: GOOD ( 47.83 ) X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-mtd" Errors-To: linux-mtd-bounces+linux-mtd=archiver.kernel.org@lists.infradead.org T24gU3VuLCAyMDI2LTEwLTA0IGF0IDE2OjM3ICswMjAwLCBNaXF1ZWwgUmF5bmFsIHdyb3RlOgo+ IEhlbGxvLAo+IAo+IE9uIDI4LzA5LzIwMjYgYXQgMTY6MDI6MjcgKzAxLCBOdW5vIFPDoSA8bnVu by5zYUBhbmFsb2cuY29tPiB3cm90ZToKPiAKPiA+IE9uIE1vbiwgU2VwIDI4LCAyMDI2IGF0IDAx OjUwOjA1UE0gKzA4MDAsIEZlaSBYaWUgd3JvdGU6Cj4gPiAKPiA+IEhpIEZlaSwKPiA+IAo+ID4g PiBIaSBOdW5vLCBNaXF1ZWwsCj4gPiA+IAo+ID4gPiBUaGFua3MgZm9yIGFza2luZyBmb3IgYmVu Y2htYXJrcy4gSSBiYWNrcG9ydGVkIHRoZSAzMi82NC1iaXQgU1RJRyBTRE1BCj4gPiA+IHRyYW5z ZmVyIGNoYW5nZXMgZnJvbSB0aGUgcGF0Y2ggTnVubyBwb2ludGVkIHRvIFsxXSB0byBvdXIgdmVu ZG9yIDYuMQo+ID4gPiBrZXJuZWwsIGFuZCBjb21wYXJlZCB0aGF0IFNUSUcgcGF0aCBhZ2FpbnN0 IHRoZSBBQ01EIFNQSSBOQU5EIHBhdGggZnJvbQo+ID4gPiB0aGlzIFJGQy4gSSBoYXZlIG5vdCBh cHBsaWVkIE51bm8ncyBzZXBhcmF0ZSBBQ01EIHJlYWQgaW1wbGVtZW50YXRpb247Cj4gPiA+IHRo ZSBmaWd1cmVzIGJlbG93IGFyZSBmb3IgdGhlIGltcGxlbWVudGF0aW9uIGluIHRoaXMgUkZDLgo+ ID4gPiAKPiA+ID4gVGhlIGRldmljZSBpcyBhIEdENUY0R004UkUgU1BJIE5BTkQgKDIgS2lCIHBh Z2VzLCAxMjggS2lCIGVyYXNlYmxvY2tzKQo+ID4gPiBvbiBhIEhvcml6b24gSjZCIGJvYXJkLCBy dW5uaW5nIGF0IDgwIE1IeiBpbiBxdWFkIFNEUiBtb2RlLiBCb3RoIHBhdGhzCj4gPiA+IHVzZWQg dGhlIHNhbWUgYm9hcmQgUEhZIGNvbmZpZ3VyYXRpb24uIFNUSUcgbmVlZGVkIG9uZSBhZGRpdGlv bmFsIGR1bW15Cj4gPiA+IGNsb2NrIGZvciB0aGUgRUJoIHJlYWQtY2FjaGUgY29tbWFuZCBvbiB0 aGlzIGJvYXJkIHRvIHJldHVybiBjb3JyZWN0Cj4gPiA+IGRhdGEgYXQgODAgTUh6LiBUaGlzIGlz IGEgbG9jYWwgdGVzdCBhZGp1c3RtZW50LCBub3QgcGFydCBvZiB0aGUgcG9zdGVkCj4gPiA+IFJG QyBvciBbMV07IEkgZXhjbHVkZWQgdGhlIGluY29ycmVjdCBTVElHIHJlYWRzIGZyb20gdGhlIGNv bXBhcmlzb24uCj4gPiA+IAo+ID4gPiBJIHJhbiBmbGFzaF9zcGVlZCAtYyA1IC1kIC9kZXYvbXRk MTggdGhyZWUgdGltZXMgd2l0aCBlYWNoIG1vZGUuIFRoZQo+ID4gPiBudW1iZXJzIGJlbG93IGFy ZSB0aGUgYXJpdGhtZXRpYyBtZWFucywgaW4gS2lCL3M6Cj4gPiA+IAo+ID4gPiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgU1RJR8Kg wqDCoMKgwqAgQUNNRCBQSU8KPiA+ID4gwqAgZXJhc2VibG9jayB3cml0ZSBzcGVlZMKgwqDCoMKg wqAgMzY4NcKgwqDCoMKgwqDCoMKgwqDCoCAzNTU1Cj4gPiA+IMKgIGVyYXNlYmxvY2sgcmVhZCBz cGVlZMKgwqDCoMKgwqAgMTI0NjjCoMKgwqDCoMKgwqDCoMKgIDE0MjIyCj4gPiA+IMKgIHBhZ2Ug d3JpdGUgc3BlZWTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDM2NzHCoMKgwqDCoMKgwqDCoMKgwqAg MzUxMAo+ID4gPiDCoCBwYWdlIHJlYWQgc3BlZWTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDExOTMx wqDCoMKgwqDCoMKgwqDCoCAxMzcxNgo+ID4gPiDCoCBlcmFzZSBzcGVlZMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCA0MDAwMMKgwqDCoMKgwqDCoMKgwqAgMzc2NDcKPiA+IAo+ID4gU28g dGhpcyBnb2VzIGFsb25nIHdpdGggbXkgZXhwZWN0YXRpb25zLiBJIHRoaW5rIHdlIGNhbiBhbGwg YWdyZWUgdGhhdAo+ID4gUFJPR1JBTSArIEVSQVNFIGlzIG5vdCB3b3J0aCB0aGUgdHJvdWJsZT8g V2UgZXZlbiBsb29zZSBwZXJmb3JtYW5jZS4uLgo+IAo+IFllYWguCj4gCj4gPiA+IEZvciBhIHNl cGFyYXRlIHNlcXVlbnRpYWwtcmVhZCB0ZXN0LCBJIGVyYXNlZCBhbmQgcHJvZ3JhbW1lZCB0aGUg Zmlyc3QKPiA+ID4gNjQgTWlCIHdpdGgga25vd24gcmFuZG9tIGRhdGEsIHRoZW4gY2hlY2tlZCB0 aGF0IGVhY2ggbW9kZSByZWFkIGJhY2sKPiA+ID4gdGhlIGNvbXBsZXRlIGFyZWEgYnl0ZS1mb3It Ynl0ZS4gQm90aCBTSEEtMjU2IGhhc2hlcyBtYXRjaGVkIHRoZSBzb3VyY2U7Cj4gPiA+IHRoZSBy ZXBvcnRlZCBFQ0MgZmFpbHVyZSBjb3VudHMgd2VyZSB6ZXJvLiBJIHRoZW4gcmFuOgo+ID4gCj4g PiBXaGF0IGRvIHlvdSBtZWFuIGJ5IHNlcXVlbnRpYWwgcmVhZD8gRG9lcyB5b3VyIGZsYXNoIHN1 cHBvcnRzIGNvbnRpbnVvdXMKPiA+IHJhZHMgKG9yIGJ1ZmZlcmVkIG1vZGUgSSB0aGluaykuIElm IHNvLCBJIHdvdWxkIGV4cGVjdCBtdWNoIGJldHRlcgo+ID4gbnVtYmVyIGZvciB0aGUgQUNNRCBj YXNlLiBCdXQgdGhhdCBjYW4gYmUgdGhlIGlzc3VlIG9mIGhhdmluZyBib3RoIHRoZQo+ID4gY29u dHJvbGxlciBhbmQgdGhlIGNoaXAgdHJ5aW5nIHRvIHdhbGsgcGFnZXMuCj4gCj4gU2VxdWVudGlh bCwgY29udGludW91cyBhbmQgYnVmZmVyZWQgc2hvdWxkIG1lYW4gdGhlIHNhbWUgaW4gdGhlIE5B TkQKPiBjb250ZXh0Lgo+IAo+ID4gPiDCoCAvdmFyL2J1c3lib3gvdGltZSAtZiAncmVhbD0lZSB1 c2VyPSVVIHN5cz0lUyBjcHU9JVAnIFwKPiA+ID4gwqDCoMKgIGRkIGlmPS9kZXYvbXRkMTggb2Y9 L2Rldi9udWxsIGJzPTFNIGNvdW50PTY0Cj4gPiA+IAo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBTVElHwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgQUNNRCBQSU8KPiA+ID4gwqAgZWxhcHNlZCAodGhyZWUgcnVucynCoMKgwqAgNS4zMC81 LjI4LzUuMjYgc8KgIDQuNjYvNC42NS80LjY1IHMKPiA+ID4gwqAgbWVhbiB0aHJvdWdocHV0wqDC oMKgwqDCoMKgwqDCoCAxMi4xMiBNaUIvc8KgwqDCoMKgwqDCoCAxMy43NSBNaUIvcwo+ID4gPiDC oCBtZWFuIHN5c3RlbSB0aW1lwqDCoMKgwqDCoMKgwqAgMy41NSBzwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAxLjA2IHMKPiA+ID4gwqAgcHJvY2VzcyBDUFUgdXNhZ2XCoMKgwqDCoMKgwqAgNjclwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAyMiUKPiA+ID4gCj4gPiA+IE9uIHRoaXMgTkFORCwg QUNNRCBpbXByb3ZlcyB0aGUgNjQgTWlCIHJlYWQgdGhyb3VnaHB1dCBieSBhYm91dCAxMy41JQo+ ID4gPiBhbmQgcmVkdWNlcyB0aGUgcmVhZGluZyBwcm9jZXNzJ3MgQ1BVIHVzYWdlIGJ5IDQ1IHBl cmNlbnRhZ2UgcG9pbnRzLgo+ID4gPiBUaGUgZmxhc2hfc3BlZWQgcmVzdWx0cyBzaG93IGEgc2lt aWxhciBnYWluIGZvciByZWFkcywgaW5jbHVkaW5nCj4gPiA+IHNpbmdsZS1wYWdlIHJlYWRzLgo+ IAo+IEZZSSwgaWYgeW91IHB1bGwgYSByZWNlbnQgdmVyc2lvbiBvZiBtdGQtdXRpbHMsIGZsYXNo X3NwZWVkIGNhbgo+IGJlbmNobWFyayBjb250aW51b3VzIHJlYWQgaW1wcm92ZW1lbnRzIHdpdGgg dGhlIC1DIG9wdGlvbi4KPiAKPiA+ID4gSSBkbyBub3Qgc2VlIGEgcHJvZ3JhbSBvciBlcmFzZSB0 aHJvdWdocHV0IGJlbmVmaXQ6Cj4gPiA+IEFDTUQgaXMgc2xpZ2h0bHkgc2xvd2VyIGZvciBib3Ro IGluIHRoaXMgc2V0dXAuIFRoZXNlIGFyZSBTUEkgTkFORAo+ID4gPiByZXN1bHRzIG9ubHk7IEkg aGF2ZSBub3QgYmVuY2htYXJrZWQgdGhlIE5PUiBwYXRoIG9uIHRoaXMgYm9hcmQuCj4gPiAKPiA+ IFNvIENQVSByZXN1bHRzIGFyZSB0aGUgYmluZyB0aGluZyBoZXJlLiBJIGd1ZXNzIHdlIG5lZWQg dG8gZGVjaWRlIGlmCj4gPiBpdCdzIHdvcnRoIHRoZSBhbW91bnQgb2YgY29tcGxleGl0eSBpdCBy ZXF1aXJlcyBmb3IgdGhlIHdob2xlIHRoaW5nIHRvCj4gPiB3b3JrLiBBcyBJIG1lbnRpb25lZCwg aWYgdGhlIGNoaXAgaGFzIGNvbnRpbnVvdXMgbW9kZSBhbmQgd2UgdHJ5IHRvCj4gPiByZWFkIGFu eXRoaW5nIGJpZ2dlciB0aGFuIHBhZ2Ugc2l6ZSB3ZSBzaG91bGQgbGV0IHRoZSBuYW5kIGNoaXAg dG8KPiA+IHdhbGsgdGhlIHBhZ2VzIGFuZCB0aGF0IG1lYW5zIHRoZSBiZWhhdmlvciB3ZSBoYXZl IHRvZGF5IChJTUhPIG9mCj4gPiBjb3Vyc2UpOgo+ID4gCj4gPiAweDEzIChTVElHKSArIHdhaXQg KyByZWFkIGZyb20gY2FjaGUgKEFDTUQpCj4gPiAKPiA+IElmIHdlJ3JlIG9ubHkgcmVhZGluZyBh IHNpbmdsZSBwYWdlIHRoZW4gdGhlIGxvZ2ljIGluIHRoaXMgc2VyaWVzIHdvdWxkCj4gPiBwYXlv ZmYgKHNsaWdodCBwZXJmb3JtYW5jZSBnYWluICsgc2lnbmlmaWNhbnQgZHJvcCBpbiBjcHUgbG9h ZCkuIE9uZSBzaW1wbGUKPiA+IHdheSBmb3IgZG9pbmcgdGhpcyBhcyBhIHN0YXJ0aW5nIHBvaW50 IHdvdWxkIGJlOgo+ID4gCj4gPiAqIE5hbmQgaGFzIGNvbnQgbW9kZSAtPiB4c3BpIGNvbnRyb2xs ZXIgZG9lcyBub3RoaW5nIHNwZWNpYWwKPiA+ICogTmFuZCBoYXMgbm8gY29udCBtb2RlIC0+IEFn Z3JlZ2F0ZSB0aGUgeGZlcnMgdG9nZXRoZXIuCj4gCj4gSSdtIGZpbmUgd2l0aCBzdGF0aWMgZGVj aXNpb25zIGxpa2UgdGhhdCwgYnV0IG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlCj4gYWJvdmUgaXMg dGhhdCBBQ01EIG1vZGUgaXMgdXNlZnVsIGZvciBhbGwgcmVhZHMuIHNvIEkgZG9uJ3QgZ2V0IHdo eSB5b3UKPiB3b3VsZCBubyB1c2UgaXQgZm9yIGFsbC4gTWF5YmUgYmVjYXVzZSBpdCB3b3VsZCBi cmVhayBjb250aW51b3VzIHJlYWRzPwo+IChzb3JyeSBJIGxvc3QgYSBiaXQgb2YgdGhlIGNvbnRl eHQgYWxyZWFkeSkuCgpFeGFjdGx5LiBJbiBBQ01ELCBpcyBhbHNvIGNhcGFibGUgb2YgIndhbGtp bmcgcGFnZXMiIGZvciByZWFkcyBiaWdnZXIgdGhhbiBwYWdlIHNpemUKKGhlbmNlIHRoZSBuZWVk IHRvIGtub3cgdGhlIGZsYXNoIGdlb21ldHJ5KSBhbmQgSUlSQywgdGhhdCBkb2VzIG5vdCByZWFs bHkgd29yayB3ZWxsCndoZW4gdGhlIGZsYXNoIGlzIGFsc28gZG9pbmcgaXQuCgo+IAo+IEZvciB3 cml0ZXMgYW5kIGVyYXNlcyBob3dldmVyLCBpdCBzZWVtcyBsaWtlIHdlIGNvdWxkIGtlZXAgdGhl IFNUSUcgcGF0aC4KPiAKPiA+IERvaW5nIHNvbWV0aGluZyBkeW5hbWljIHdvdWxkIGJlIG11Y2gg bW9yZSBjb21wbGV4IEkgZ3Vlc3MuIFdpdGggdGhlCj4gPiBhYm92ZSByZWFzb25pbmcsIGhhdmlu ZyBzb21lIG1lbV9pbmZvKCkga2luZCBvZiBzcGlfbWVtIGNhbGxiYWNrIHRvIHRlbGwKPiA+IHVz IHRoaW5ncyBsaWtlIGdlb21ldHJ5LCBjb250aW51b3VzIG1vZGUgc3VwcG9ydCwgZXRjIHdvdWxk IGJlIGVub3VnaCB0bwo+ID4gaGFuZGxlIHRoZSBhYm92ZSBJIHRoaW5rLiBUaGUgcmVhc29uaW5n IGlzIHRoYXQgcmVhZGluZyBhIG5hbmQgcGFnZSBpcwo+ID4gYWx3YXlzIGxpa2Ugc3BpbmFuZF9s b2FkX3BhZ2Vfb3AoKSAob3Bjb2RlIDB4MTMpICsgc3BpbmFuZF93YWl0KCkgKwo+ID4gc3BpbmFu ZF9yZWFkX2Zyb21fY2FjaGVfb3AoKSBzbyB3ZSBjb3VsZCBwcm9iYWJseSBhZ2dyZWdhdGUgZXZl cnl0aGluZwo+ID4gaW4gdGhlIGxhc3QgY2FsbCBvbiB0aGUgY29udHJvbGxlciBzaWRlIHdpdGhv dXQgY29tcGxpY2F0aW5nIHRoZSBuYW5kIGNvcmUKPiA+IGxvZ2ljLgo+IAo+IEluIGdlbmVyYWws IGRyaXZlcnMgbWFraW5nIGFzc3VtcHRpb25zIGhhcyBiZWVuIGEgZGlzYXN0ZXIgaW4gdGhlIHJh dwo+IE5BTkQgd29ybGQuIFRoaXMgd2FzIHRoZSBtYWluIHJlYXNvbiBmb3IgdGhlIC0+ZXhlY19v cCgpIGludHJvZHVjdGlvbgo+IHRoZXJlOiBnaXZpbmcgdGhlIHdob2xlIG9wZXJhdGlvbiB0byB0 aGUgY29udHJvbGxlciBzbyBpdCBjYW4gZGVjaWRlCj4gd2hhdCB0byBkbyB3aXRob3V0IGd1ZXNz aW5nLiBCdXQgd2UgdGhpbmtpbmcgYXQgdGhlIG9wZXJhdGlvbiBib3VuZGFyeSwKPiBub3QgYXQg dGhlICJzZXQgb2Ygb3BlcmF0aW9ucyIgbGV2ZWwuIFNpbmNlIC0+ZXhlY19vcCgpIGluIHRoZSBT UEkgTkFORAo+IHN1YnN5c3RlbSBoYXMgYmVlbiB3cml0dGVuIGZvbGxvd2luZyB0aGUgc2FtZSBw aGlsb3NvcGh5LCBJIGZlYXIgd2UncmUKPiBnb2luZyB0byB0cnkgbWFrZSByb3VuZHMgZml0IGlu c2lkZSBzcXVhcmVzLiBPbmUgb2YgdGhlIHBvc3NpYmxlCgpGYWlyIGVub3VnaCEgQWdyZWVkCgo+ IGFwcHJvYWNoIHdvdWxkIGJlIHRvIG1pbWljIHdoYXQgd2UndmUgZG9uZSBmb3IgdGhlIHNvbWUg bGltaXRlZAo+IGNvbnRyb2xsZXJzOiBwYWNrIGV2ZXJ5dGhpbmcgaW4gb25lIHNpbmdsZSBvcCAo c2VlIHRoZSBfbW9ub2xpdGhpYwo+IHN1ZmZpeCBpbiBkcml2ZXJzL210ZC9uYW5kL3Jhdy8pLiBU aGF0J3MganVzdCBvbmUgaWRlYS4KPiAKCkkgY2FuIHRha2UgYSBsb29rIG1vc3RseSBmb3IgY3Vy aW9zaXR5IGFzIG15IGludGVudGlvbiBpcyBub3QgdG8gInN0ZWFsIiB0aGlzIHdvcmsKZnJvbSBG ZWkuIElmIGV2ZXJ5b25lIGFncmVlcyAoc3BlY2lhbGx5IEZlaSksIHdoYXQgSSBjYW4gZG8gaXMg dG8gc2VuZCBteSBzaW1wbGVyCnBhdGNoZXMgdGhhdCBqdXN0IHN1cHBvcnQgQUNNRCAod2l0aG91 dCBhbnkgc3BlY2lhbCBkaXN0aW5jdGlvbiBiZXR3ZWVuIE5hbmQgYW5kIE5vcikKRm9yIE5hbmRz LCBJIGhhdmUgYSBtaXggb2YgU1RJRyBhbmQgQUNNRCwgd2hlcmUgYmlnIGdhaW5zIGNvbWUgZnJv bSBOYW5kcyB3aXRoIGNvbnQKbW9kZS4KClRoZW4gd2UgY2FuIGJ1aWxkIG9uIHRvcCBvZiBpdCBp biBvcmRlciB0byBpbXByb3ZlIE5hbmQgc3VwcG9ydCAobW9zdGx5IG9uIENQVSBsb2FkKS4KCi0g TnVubyBTw6EKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpMaW51eCBNVEQgZGlzY3Vzc2lvbiBtYWlsaW5nIGxpc3QKaHR0cDovL2xpc3RzLmlu ZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1tdGQvCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wr1-f42.google.com (mail-wr1-f42.google.com [209.85.221.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CF8CB22425B for ; Tue, 6 Oct 2026 06:49:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.42 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1791269358; cv=none; b=eVDNz4s6Zn+IV+2eUnRm/6MYosSLxpTGb4OYCWQ8yb0lAl2r4uj5u9YwW1RxKwVk8KLxuh2c9G657PMKwB2C4CgmZ/emWxddpgLozTfCC+6f3Lri/bOO2nX2YF7+d79h3ikQ2xh0jgaLmSz/ICY/0bNXioHGFesZMkK6fmvQFjg= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1791269358; c=relaxed/simple; bh=dQqu7u1PnHAzJlGyGfMmZKvvCDRPUclc9gbsVzDpIrw=; h=Message-ID:Subject:From:To:Cc:Date:In-Reply-To:References: Content-Type:MIME-Version; b=ovmfsIc5VFLs/IMSIAy+gUZhxYuqlI89GvAAW1O08z4KwDZSGmjvb9O0hg9dsRKfruLWHM+ecqQIx1wk7auAih0sEod9L/ozeVTDFGv+/i3guSb7zwFFm5pQ0HPozR9meVi6eZWIgEdrRxCPfd1IkNDueByGiPIDFvElfU7JieA= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=X/4FrGGY; arc=none smtp.client-ip=209.85.221.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="X/4FrGGY" Received: by mail-wr1-f42.google.com with SMTP id ffacd0b85a97d-48afcfc4bf5so1998186f8f.1 for ; Mon, 05 Oct 2026 23:49:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1791269355; x=1791874155; darn=vger.kernel.org; h=mime-version:user-agent:content-transfer-encoding:content-type :references:in-reply-to:date:cc:to:from:subject:message-id:from:to :cc:subject:date:message-id:reply-to:content-type; bh=dQqu7u1PnHAzJlGyGfMmZKvvCDRPUclc9gbsVzDpIrw=; b=X/4FrGGYehkCtAru98UOYEuB+GLpP+HeZFRwuUVYYgU+xLKk8lVdimRftRUMrU6LiH zXtY2cQMt9tnX+DbJfnPrjdlWlOFbryK2ioKJHapYosD4EhJL+WF1vhrjq0y9TBd7nl5 yx0H7zOB6T86QyDwsXS6P0MABsXooU6hSsIFMDWppbo1pPDobwE2UihghiZGV8BOsIKk 1fk7bfFRpsgAjWXuW5HrYYfmWODgCI7Ncg+au5VefLyCflgnhShGjvNjqo7kLGebVW/z ksu3WHFXwNMEytzYvVWdR9rJoVsyZHDUl1+8aeeq8oP7yVHgO3tbtCGMwe0Mz7VWaEzQ jsHw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1791269355; x=1791874155; h=mime-version:user-agent:content-transfer-encoding:content-type :references:in-reply-to:date:cc:to:from:subject:message-id:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=dQqu7u1PnHAzJlGyGfMmZKvvCDRPUclc9gbsVzDpIrw=; b=LGue6A7Uk5mvPvlzK0ri+gbfRJjzx9sDf0ndGPldyTowKVfBbx3zyncEz8cUBmbGBf yizWT2H5dJkohRB6Ir6AMhs48UO0Uc8DbOlGFIVMMPqm6+fk4wgWwJ7MuMQPxYm8lmso AGqxkMYHCjl2HoFg9WT49sTxZsiRr76wfBsyIJziIVgo4IrpeuLyM4CGgOibdbGt3iEn uY4oyFLFNVoBBC7q089nsuRtcLuCazGeCaQYYTkX/iYbTpay9pYK4FcxO7kiz9LUsx/I 80NQisZ0qi8fXBOierR8Mlue3+P8+WObHVBBfWOOnl0MPKm9Wp/JRYOk2CF0l/9+8Jxt +09g== X-Forwarded-Encrypted: i=1; AKwUvByCZvQcH5NWIXR/vizKYBftfDPLGbVSId4njBcjvUehIba9JHaz3UAt3Ew/L4nNOQAITt7EQsn1C0c=@vger.kernel.org X-Gm-Message-State: AFq9FYJkcM2WCC93/ijuCVlHsbSQjmo8eaq3WWKo2i6qgDRjilOLxNCw GlIHIR1DOLeYMCoNpYAPujADVLDA/FAVW6Of4qLNlEFBiRAMvY04WNsD X-Gm-Gg: AYBFou3//R3ifx/1dYigr5k+iu6kdQwPHAuYodmB0nW2sDgvG5F1EKIBVV01TFndP+j v/nkDDaprs5EwZ9kDCXQ7D3z88GZSL+W6B8ZFm79ygmO9UDZYMffgcEjJXXOES641i3O63t4OLl 13vpCX106pW5TJzkFcsfXs0y63QK3JJEM+BhjNVkSkdmalCGNX834uXir731fuMPASKPvHyaBLa izWvoMrg8afkwzbsnTIh5BG7S/hHzQ7EuzhGWZo+0YPrLWJfNb/A8FH2kt0RaGgeHZrDtURV8CA KLs7iMRN0IuktzQEYW+jdDYs7aAjomqWuv4+d0E3Ay134mMCyl8DTLpZmowedrGFcV05jNZZGi6 6eTLccIsPEKToFfrjJv/kAXFuRkPU2w4zGh1GkhgtuQd/4QjkxCnKFw7Po4WsPIBWs7KH2Pe73y UDVYr0ti2wEHjn5L1iKudhN4LPyVQCfLq1lDqjRtAtSXsszcrlwsEFHI1Q31I6MpSo3zzrL5i+a 28yRICz58Os+53wGXOp6OkeB9597yXM2IzA57tjcq9IOk/6C4DDyQVKqCYuM0kywdFScfIqUyOG r7fITn3VSsx5JFKm X-Received: by 2002:a05:6000:22c6:b0:488:83b1:16a1 with SMTP id ffacd0b85a97d-48c6d0f47a2mr789373f8f.7.1791269354706; Mon, 05 Oct 2026 23:49:14 -0700 (PDT) Received: from ?IPv6:2001:818:ea56:d000:56e0:ceba:7da4:6673? ([2001:818:ea56:d000:56e0:ceba:7da4:6673]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-48c6cd717f8sm1302935f8f.48.2026.10.05.23.49.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 05 Oct 2026 23:49:14 -0700 (PDT) Message-ID: Subject: Re: [RFC PATCH 0/4] spi: cadence-xspi: add ACMD PIO support for NAND and NOR From: Nuno =?ISO-8859-1?Q?S=E1?= To: Miquel Raynal , Nuno =?ISO-8859-1?Q?S=E1?= Cc: Fei Xie , Mark Brown , linux-spi@vger.kernel.org, linux-mtd@lists.infradead.org Date: Tue, 06 Oct 2026 07:50:44 +0100 In-Reply-To: <87bj99lef4.fsf@bootlin.com> References: <20260921093701.1341766-1-fei.xie@horizon.auto> <20260928055005.3987624-1-fei.xie@horizon.auto> <87bj99lef4.fsf@bootlin.com> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable User-Agent: Evolution 3.60.2 (3.60.2-1.fc44) Precedence: bulk X-Mailing-List: linux-spi@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 On Sun, 2026-10-04 at 16:37 +0200, Miquel Raynal wrote: > Hello, >=20 > On 28/09/2026 at 16:02:27 +01, Nuno S=C3=A1 wrote: >=20 > > On Mon, Sep 28, 2026 at 01:50:05PM +0800, Fei Xie wrote: > >=20 > > Hi Fei, > >=20 > > > Hi Nuno, Miquel, > > >=20 > > > Thanks for asking for benchmarks. I backported the 32/64-bit STIG SDM= A > > > transfer changes from the patch Nuno pointed to [1] to our vendor 6.1 > > > kernel, and compared that STIG path against the ACMD SPI NAND path fr= om > > > this RFC. I have not applied Nuno's separate ACMD read implementation= ; > > > the figures below are for the implementation in this RFC. > > >=20 > > > The device is a GD5F4GM8RE SPI NAND (2 KiB pages, 128 KiB eraseblocks= ) > > > on a Horizon J6B board, running at 80 MHz in quad SDR mode. Both path= s > > > used the same board PHY configuration. STIG needed one additional dum= my > > > clock for the EBh read-cache command on this board to return correct > > > data at 80 MHz. This is a local test adjustment, not part of the post= ed > > > RFC or [1]; I excluded the incorrect STIG reads from the comparison. > > >=20 > > > I ran flash_speed -c 5 -d /dev/mtd18 three times with each mode. The > > > numbers below are the arithmetic means, in KiB/s: > > >=20 > > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 STIG=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ACM= D PIO > > > =C2=A0 eraseblock write speed=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 3685=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 3555 > > > =C2=A0 eraseblock read speed=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 12468=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 14222 > > > =C2=A0 page write speed=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0 3671=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0 3510 > > > =C2=A0 page read speed=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0 11931=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= 13716 > > > =C2=A0 erase speed=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 40000=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 37647 > >=20 > > So this goes along with my expectations. I think we can all agree that > > PROGRAM + ERASE is not worth the trouble? We even loose performance... >=20 > Yeah. >=20 > > > For a separate sequential-read test, I erased and programmed the firs= t > > > 64 MiB with known random data, then checked that each mode read back > > > the complete area byte-for-byte. Both SHA-256 hashes matched the sour= ce; > > > the reported ECC failure counts were zero. I then ran: > >=20 > > What do you mean by sequential read? Does your flash supports continuou= s > > rads (or buffered mode I think). If so, I would expect much better > > number for the ACMD case. But that can be the issue of having both the > > controller and the chip trying to walk pages. >=20 > Sequential, continuous and buffered should mean the same in the NAND > context. >=20 > > > =C2=A0 /var/busybox/time -f 'real=3D%e user=3D%U sys=3D%S cpu=3D%P' \ > > > =C2=A0=C2=A0=C2=A0 dd if=3D/dev/mtd18 of=3D/dev/null bs=3D1M count=3D= 64 > > >=20 > > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0 STIG=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0 ACMD PIO > > > =C2=A0 elapsed (three runs)=C2=A0=C2=A0=C2=A0 5.30/5.28/5.26 s=C2=A0 = 4.66/4.65/4.65 s > > > =C2=A0 mean throughput=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0 12.12 MiB/s=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 13.75 MiB/s > > > =C2=A0 mean system time=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 3.5= 5 s=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 1.06 = s > > > =C2=A0 process CPU usage=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 67%=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0 22% > > >=20 > > > On this NAND, ACMD improves the 64 MiB read throughput by about 13.5% > > > and reduces the reading process's CPU usage by 45 percentage points. > > > The flash_speed results show a similar gain for reads, including > > > single-page reads. >=20 > FYI, if you pull a recent version of mtd-utils, flash_speed can > benchmark continuous read improvements with the -C option. >=20 > > > I do not see a program or erase throughput benefit: > > > ACMD is slightly slower for both in this setup. These are SPI NAND > > > results only; I have not benchmarked the NOR path on this board. > >=20 > > So CPU results are the bing thing here. I guess we need to decide if > > it's worth the amount of complexity it requires for the whole thing to > > work. As I mentioned, if the chip has continuous mode and we try to > > read anything bigger than page size we should let the nand chip to > > walk the pages and that means the behavior we have today (IMHO of > > course): > >=20 > > 0x13 (STIG) + wait + read from cache (ACMD) > >=20 > > If we're only reading a single page then the logic in this series would > > payoff (slight performance gain + significant drop in cpu load). One si= mple > > way for doing this as a starting point would be: > >=20 > > * Nand has cont mode -> xspi controller does nothing special > > * Nand has no cont mode -> Aggregate the xfers together. >=20 > I'm fine with static decisions like that, but my understanding of the > above is that ACMD mode is useful for all reads. so I don't get why you > would no use it for all. Maybe because it would break continuous reads? > (sorry I lost a bit of the context already). Exactly. In ACMD, is also capable of "walking pages" for reads bigger than = page size (hence the need to know the flash geometry) and IIRC, that does not really = work well when the flash is also doing it. >=20 > For writes and erases however, it seems like we could keep the STIG path. >=20 > > Doing something dynamic would be much more complex I guess. With the > > above reasoning, having some mem_info() kind of spi_mem callback to tel= l > > us things like geometry, continuous mode support, etc would be enough t= o > > handle the above I think. The reasoning is that reading a nand page is > > always like spinand_load_page_op() (opcode 0x13) + spinand_wait() + > > spinand_read_from_cache_op() so we could probably aggregate everything > > in the last call on the controller side without complicating the nand c= ore > > logic. >=20 > In general, drivers making assumptions has been a disaster in the raw > NAND world. This was the main reason for the ->exec_op() introduction > there: giving the whole operation to the controller so it can decide > what to do without guessing. But we thinking at the operation boundary, > not at the "set of operations" level. Since ->exec_op() in the SPI NAND > subsystem has been written following the same philosophy, I fear we're > going to try make rounds fit inside squares. One of the possible Fair enough! Agreed > approach would be to mimic what we've done for the some limited > controllers: pack everything in one single op (see the _monolithic > suffix in drivers/mtd/nand/raw/). That's just one idea. >=20 I can take a look mostly for curiosity as my intention is not to "steal" th= is work from Fei. If everyone agrees (specially Fei), what I can do is to send my s= impler patches that just support ACMD (without any special distinction between Nan= d and Nor) For Nands, I have a mix of STIG and ACMD, where big gains come from Nands w= ith cont mode. Then we can build on top of it in order to improve Nand support (mostly on = CPU load). - Nuno S=C3=A1