From: Miquel Raynal <miquel.raynal@bootlin.com>
To: "Mahapatra, Amit Kumar" <amit.kumar-mahapatra@amd.com>
Cc: Tudor Ambarus <tudor.ambarus@linaro.org>,
"broonie@kernel.org" <broonie@kernel.org>,
"pratyush@kernel.org" <pratyush@kernel.org>,
"richard@nod.at" <richard@nod.at>,
"vigneshr@ti.com" <vigneshr@ti.com>,
"sbinding@opensource.cirrus.com" <sbinding@opensource.cirrus.com>,
"lee@kernel.org" <lee@kernel.org>,
"james.schulman@cirrus.com" <james.schulman@cirrus.com>,
"david.rhodes@cirrus.com" <david.rhodes@cirrus.com>,
"rf@opensource.cirrus.com" <rf@opensource.cirrus.com>,
"perex@perex.cz" <perex@perex.cz>,
"tiwai@suse.com" <tiwai@suse.com>,
"linux-spi@vger.kernel.org" <linux-spi@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"michael@walle.cc" <michael@walle.cc>,
"linux-mtd@lists.infradead.org" <linux-mtd@lists.infradead.org>,
"nicolas.ferre@microchip.com" <nicolas.ferre@microchip.com>,
"alexandre.belloni@bootlin.com" <alexandre.belloni@bootlin.com>,
"claudiu.beznea@tuxon.dev" <claudiu.beznea@tuxon.dev>,
"Simek, Michal" <michal.simek@amd.com>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>,
"alsa-devel@alsa-project.org" <alsa-devel@alsa-project.org>,
"patches@opensource.cirrus.com" <patches@opensource.cirrus.com>,
"linux-sound@vger.kernel.org" <linux-sound@vger.kernel.org>,
"git (AMD-Xilinx)" <git@amd.com>,
"amitrkcian2002@gmail.com" <amitrkcian2002@gmail.com>,
Conor Dooley <conor.dooley@microchip.com>,
"beanhuo@micron.com" <beanhuo@micron.com>
Subject: Re: [PATCH v11 07/10] mtd: spi-nor: Add stacked memories support in spi-nor
Date: Mon, 12 Aug 2024 10:38:12 +0200 [thread overview]
Message-ID: <20240812103812.72763f69@xps-13> (raw)
In-Reply-To: <IA0PR12MB769944254171C39FF4171B52DCB42@IA0PR12MB7699.namprd12.prod.outlook.com>
Hi,
> Hello Everyone,
>
> I would like to propose another approach for handling stacked and
> parallel connection modes and would appreciate your thoughts on it.
> But before that, here is some background on what we are trying to achieve.
>
> The AMD QSPI controller supports two advanced connection modes(Stacked and
> Dual Parallel) which allow the controller to treat two different flashes
> as one storage.
>
> Stacked:
> Flashes share the same SPI bus, but different CS line, controller asserts
> the CS of the flash to which it needs to communicate.
>
> Dual Parallel:
> Both the flashes have their separate SPI bus CS of both the flashes will
> be asserted/de-asserted at the same time. In this mode data will be split
> across both the flashes by enabling the STRIPE setting in the controller.
> If STRIPE is not enabled, then same data will be sent to both the devices.
>
> For more information on the modes please feel free to go through the
> controller flash interface below
> https://docs.amd.com/r/en-US/am011-versal-acap-trm/QSPI-Flash-Device-Interface
>
> Mirochip QSPI controller also supports "Dual Parallel 8-bit IO mode", but
> they call it "Twin Quad Mode".
> https://ww1.microchip.com/downloads/aemDocuments/documents/MPU32/ProductDocuments/DataSheets/SAMA7G5-Series-Data-Sheet-DS60001765.pdf
>
> DT binding changes were added through the following commits:
> https://github.com/torvalds/linux/commit/f89504300e94524d5d5846ff8b728592ac72cec4
> https://github.com/torvalds/linux/commit/eba5368503b4291db7819512600fa014ea17c5a8
> https://github.com/torvalds/linux/commit/e2edd1b64f1c79e8abda365149ed62a2a9a494b4
>
> SPI core changes were adds through the following commit:
> https://github.com/torvalds/linux/commit/4d8ff6b0991d5e86b17b235fc46ec62e9195cb9b
>
> Based on the inputs/suggestions from Tudor, i am planning to add a new
> layer between the SPI-NOR and MTD layers to support stacked and parallel
> configurations. This new layer will be part of the spi-nor and located in
> mtd/spi-nor/
For now I don't think you need a totally generic implementation. As
long as there is only one controller supporting these modes, I'd say
this is not super relevant.
> This layer would perform the following tasks:
> - During probing, store information from all the connected flashes,
> whether in stacked or parallel mode, and present it as a single device
> to the MTD layer.
> - Register callbacks through this new layer instead of spi-nor/core.c and
> handle MTD device registration.
> - In stacked mode, select the appropriate spi-nor flash based on the
> address provided by the MTD layer during flash operations.
> - Manage flash crossover operations in stacked mode.
> - Ensure both connected flashes are identical in parallel mode.
> - Handle odd byte count requests from the MTD layer during flash
> operations in parallel mode.
>
> For implementing this the current DT binding need to be updated as
> follows.
So you want to go back to step 1 and redefine bindings? Is that worth?
> stacked-memories DT changes:
> - Flash size information can be retrieved directly from the flash, so it
> has been removed from the DT binding.
> - Each stacked flash will have its own flash node. This approach allows
> flashes of different makes and sizes to be stacked together, as each
> flash will be probed individually.
And how will you define partitions crossing device boundaries? I
believe this constraint has been totally forgotten in this proposal.
The whole idea of stacking two devices this way was to simplify the
user's life with a single device exposed and the controller handling
itself the CS changes. That is precisely what the current binding do.
The final goal being to double your storage transparently. If your goal
was to put two chips aside, then none of this was actually needed. If
you don't care about that anymore, then all the energy put into
discussing the bindings initially was useless and a controller property
could also have made the trick.
> - The stacked-memories DT bindings will contain the phandles of the flash
> nodes connected in stacked mode.
>
> spi@0 {
>
> flash@0 {
> compatible = "jedec,spi-nor"
> reg = <0x00>;
> stacked-memories = <&flash@0 &flash@1>;
> spi-max-frequency = <50000000>;
> ...
> partition@0 {
> label = "qspi-0";
> reg = <0x0 0xf00000>;
> };
>
>
> }
>
> flash@1 {
> compatible = "jedec,spi-nor"
> reg = <0x01>;
> spi-max-frequency = <50000000>;
> ...
> partition@0 {
> label = "qspi-1";
> reg = <0x0 0x800000>;
> };
> }
> }
>
> parallel-memories DT changes:
> - Flash size information can be retrieved directly from the flash, so it
> has been removed from the DT binding.
> - Each flash connected in parallel mode will have its own flash node.
> This allows us to verify that both flashes connected in parallel are
> identical, as each flash node will be probed separately.
Well, you don't have to verify that. It's a basic hardware design
constraint for using this mode.
Otherwise same comment as above, this description doesn't allow
correct partitioning and that was one of the main constraints back when
we discussed these needs.
> - The parallel-memories DT bindings will contain the phandles of the
> flash nodes connected in parallel.
>
> spi@0 {
>
> flash@0 {
> compatible = "jedec,spi-nor"
> reg = <0x00>;
> parallel-memories = <&flash@0 &flash@1>;
> spi-max-frequency = <50000000>;
> ...
> partition@0 {
> label = "qspi-0";
> reg = <0x0 0xf00000>;
> };
>
>
> }
>
> flash@1 {
> compatible = "jedec,spi-nor"
> reg = <0x01>;
> spi-max-frequency = <50000000>;
> ...
> partition@0 {
> label = "qspi-1";
> reg = <0x0 0x800000>;
> };
> }
> }
Thanks,
Miquèl
______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/
next prev parent reply other threads:[~2024-08-12 8:39 UTC|newest]
Thread overview: 77+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-11-25 9:21 [PATCH v11 00/10] spi: Add support for stacked/parallel memories Amit Kumar Mahapatra
2023-11-25 9:21 ` [PATCH v11 01/10] mfd: tps6594: Use set/get APIs to access spi->chip_select Amit Kumar Mahapatra
2023-12-01 9:57 ` (subset) " Lee Jones
2023-12-01 18:50 ` Mark Brown
2023-12-06 13:45 ` Lee Jones
2023-12-07 13:38 ` [GIT PULL] Immutable branch between MFD and SPI due for the v6.8 merge window Lee Jones
2023-12-07 16:20 ` Mark Brown
2023-11-25 9:21 ` [PATCH v11 02/10] ALSA: hda/cs35l56: Use set/get APIs to access spi->chip_select Amit Kumar Mahapatra
2023-11-25 9:21 ` [PATCH v11 03/10] spi: Add multi-cs memories support in SPI core Amit Kumar Mahapatra
2024-01-12 19:11 ` Guenter Roeck
2024-01-12 19:16 ` Mark Brown
2024-01-12 20:05 ` Guenter Roeck
2024-01-20 17:05 ` Guenter Roeck
2024-01-21 1:04 ` Mark Brown
2024-01-21 16:58 ` Guenter Roeck
2024-01-21 18:06 ` Michael Walle
2024-01-21 19:29 ` Guenter Roeck
2024-01-21 21:17 ` Mark Brown
2024-01-21 21:15 ` Mark Brown
2024-01-21 9:42 ` Linux regression tracking #adding (Thorsten Leemhuis)
2023-11-25 9:21 ` [PATCH v11 04/10] mtd: spi-nor: Convert macros with inline functions Amit Kumar Mahapatra
2023-11-25 9:21 ` [PATCH v11 05/10] mtd: spi-nor: Add APIs to set/get nor->params Amit Kumar Mahapatra
2023-11-25 9:21 ` [PATCH v11 06/10] mtd: spi-nor: Move write enable inside specific write & erase APIs Amit Kumar Mahapatra
2023-11-25 9:21 ` [PATCH v11 07/10] mtd: spi-nor: Add stacked memories support in spi-nor Amit Kumar Mahapatra
2023-12-06 14:30 ` Tudor Ambarus
2023-12-06 14:43 ` Tudor Ambarus
2023-12-08 17:06 ` Mahapatra, Amit Kumar
2023-12-11 3:44 ` Tudor Ambarus
2023-12-08 17:05 ` Mahapatra, Amit Kumar
2023-12-11 3:33 ` Tudor Ambarus
2023-12-11 6:56 ` Mahapatra, Amit Kumar
2023-12-11 9:35 ` Tudor Ambarus
2023-12-11 13:37 ` Mahapatra, Amit Kumar
2023-12-12 15:02 ` Tudor Ambarus
2023-12-15 7:55 ` Mahapatra, Amit Kumar
2023-12-15 8:09 ` Tudor Ambarus
2023-12-15 10:02 ` Mahapatra, Amit Kumar
2023-12-15 10:33 ` Tudor Ambarus
2023-12-15 11:20 ` Mahapatra, Amit Kumar
2023-12-19 8:26 ` Tudor Ambarus
2023-12-21 6:54 ` Mahapatra, Amit Kumar
2024-02-09 11:06 ` Tudor Ambarus
2024-02-09 16:13 ` Tudor Ambarus
2024-03-13 16:03 ` Mahapatra, Amit Kumar
2024-07-26 12:35 ` Mahapatra, Amit Kumar
[not found] ` < <IA0PR12MB769944254171C39FF4171B52DCB42@IA0PR12MB7699.namprd12.prod.outlook.com>
2024-07-26 12:55 ` Michael Walle
2024-07-31 8:58 ` Michal Simek
2024-07-31 9:19 ` Michael Walle
2024-07-31 13:40 ` Michal Simek
2024-07-31 14:11 ` Michael Walle
2024-08-01 6:22 ` Michal Simek
2024-08-01 6:37 ` Frager, Neal
2024-08-01 9:28 ` Mahapatra, Amit Kumar
[not found] ` < <CH2PR12MB50044242FE253D7B0E3425ABF0B22@CH2PR12MB5004.namprd12.prod.outlook.com>
2024-08-05 8:14 ` Michael Walle
2024-08-05 8:27 ` Michael Walle
2024-08-05 11:00 ` Michal Simek
2024-08-07 13:21 ` Mahapatra, Amit Kumar
2024-08-12 7:29 ` Miquel Raynal
2024-08-12 7:37 ` Michael Walle
2024-08-12 8:39 ` Miquel Raynal
2024-08-12 8:38 ` Miquel Raynal [this message]
2024-08-12 9:45 ` Tudor Ambarus
2024-08-14 7:13 ` Mahapatra, Amit Kumar
2024-08-14 8:46 ` Miquel Raynal
2024-08-14 12:53 ` Mahapatra, Amit Kumar
2024-08-14 14:46 ` Miquel Raynal
2024-08-19 10:28 ` Mahapatra, Amit Kumar
2024-03-13 16:03 ` Mahapatra, Amit Kumar
2023-12-07 17:24 ` Tudor Ambarus
2023-11-25 9:21 ` [PATCH v11 08/10] spi: spi-zynqmp-gqspi: Add stacked memories support in GQSPI driver Amit Kumar Mahapatra
2023-11-25 9:21 ` [PATCH v11 09/10] mtd: spi-nor: Add parallel memories support in spi-nor Amit Kumar Mahapatra
2023-11-25 9:21 ` [PATCH v11 10/10] spi: spi-zynqmp-gqspi: Add parallel memories support in GQSPI driver Amit Kumar Mahapatra
2023-12-07 22:35 ` (subset) [PATCH v11 00/10] spi: Add support for stacked/parallel memories Mark Brown
2023-12-12 12:34 ` Michael Walle
2023-12-15 7:28 ` Mahapatra, Amit Kumar
2023-12-18 22:10 ` Richard Weinberger
2023-12-19 8:12 ` Miquel Raynal
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240812103812.72763f69@xps-13 \
--to=miquel.raynal@bootlin.com \
--cc=alexandre.belloni@bootlin.com \
--cc=alsa-devel@alsa-project.org \
--cc=amit.kumar-mahapatra@amd.com \
--cc=amitrkcian2002@gmail.com \
--cc=beanhuo@micron.com \
--cc=broonie@kernel.org \
--cc=claudiu.beznea@tuxon.dev \
--cc=conor.dooley@microchip.com \
--cc=david.rhodes@cirrus.com \
--cc=git@amd.com \
--cc=james.schulman@cirrus.com \
--cc=lee@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mtd@lists.infradead.org \
--cc=linux-sound@vger.kernel.org \
--cc=linux-spi@vger.kernel.org \
--cc=michael@walle.cc \
--cc=michal.simek@amd.com \
--cc=nicolas.ferre@microchip.com \
--cc=patches@opensource.cirrus.com \
--cc=perex@perex.cz \
--cc=pratyush@kernel.org \
--cc=rf@opensource.cirrus.com \
--cc=richard@nod.at \
--cc=sbinding@opensource.cirrus.com \
--cc=tiwai@suse.com \
--cc=tudor.ambarus@linaro.org \
--cc=vigneshr@ti.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox