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: Wed, 14 Aug 2024 10:46:23 +0200 [thread overview]
Message-ID: <20240814104623.72eef495@xps-13> (raw)
In-Reply-To: <IA0PR12MB769997D5958C191215254983DC872@IA0PR12MB7699.namprd12.prod.outlook.com>
Hi Amit,
amit.kumar-mahapatra@amd.com wrote on Wed, 14 Aug 2024 07:13:35 +0000:
> Hello Miquel,
>
> > > 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.
>
> IMHO, there should be a general solution since this isn't limited to just
> one controller. Any controller can support stacked mode with multiple
> native-cs or multiple gpio-cs, or with a combination of a native-cs and a
> gpio-cs.
That's not what was initially discussed. The Xilinx use case was:
a controller is managing two devices "at the same time" transparently
from the host. So the two flashes appear like a single one and thus,
are described like a single one.
You don't need anything in the bindings nor in the core to manage two
flashes connected to the same controller otherwise. The only use case
the Xilinx model was bringing, was to consider the storage bigger from
a host perspective and thus be able to store files across the device
boundary natively.
> For parallel configurations, there are other controllers from
> Microchip and some flash devices that operate similarly to AMD's parallel
> mode.
Yes, Tudor reminded me about these.
> > > 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?
>
> The current bindings are effective if we only support identical
> flash devices or flashes of the same make but with different sizes
> connected in stacked mode. However, if we want to extend stacked support
> to include flashes of different makes in stacked mode,
The only actual feature the stacked mode brings is the ability to
consider two devices like one. This is abstracted by hardware, this is
a controller capability. The only way this can work is if the two
storage devices are of the same kind and accept the same commands/init
cycles.
If you consider two different devices, then there is no hardware
abstraction anymore, the controller is no longer "smart" enough and you
are back to the standard situation with two devices connected using
their own independent CS, known by the host. In this case the
"stacked-mode" bindings no longer apply. You need to describe the two
chips independently in the DT, and your stacked feature in the
controller can no longer be used.
You need other bindings to support this case because it is a different
situation. For this case, there was a mtd-concat approach (which was
never merged). But this is really something different than the stacked
mode in your controller because there is no specific hardware feature
involved, it's just pure software.
> the current
> bindings may not be adequate. That's why I suggested updating the bindings
> to accommodate all possible scenario.
>
> >
> > > 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.
>
> According to the new binding proposal, one of the two flash nodes will
> have a partition that crosses the device boundary.
From a bindings perspective, it feels very awkward and I doubt it will
be accepted. From a code perspective, you're gonna need to butcher the
core...
> > 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.
>
> That's true, but as I mentioned earlier, if we're not inclined to support
> stacked mode for flashes of different makes, then the current bindings
> are sufficient.
Thanks,
Miquèl
next prev parent reply other threads:[~2024-08-14 8:46 UTC|newest]
Thread overview: 78+ 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)
2024-01-23 15:45 ` Linux regression tracking #update (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
2024-08-12 9:45 ` Tudor Ambarus
2024-08-14 7:13 ` Mahapatra, Amit Kumar
2024-08-14 8:46 ` Miquel Raynal [this message]
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=20240814104623.72eef495@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