Re: [PATCH] mmc: rtsx: Add SD Express mode support for RTS5261
From: Ulf Hansson
Date: Tue May 05 2020 - 14:19:07 EST
On Tue, 28 Apr 2020 at 05:44, åé <rui_feng@xxxxxxxxxxxxxx> wrote:
>
> >
> > On Mon, Apr 27, 2020 at 11:41 AM åé <rui_feng@xxxxxxxxxxxxxx> wrote:
> > >
> > >
> > > > On Sun, Apr 26, 2020 at 09:25:46AM +0800, rui_feng@xxxxxxxxxxxxxx
> > wrote:
> > > > > From: Rui Feng <rui_feng@xxxxxxxxxxxxxx>
> > > > >
> > > > > RTS5261 support legacy SD mode and SD Express mode.
> > > > > In SD7.x, SD association introduce SD Express as a new mode.
> > > > > SD Express mode is distinguished by CMD8.
> > > > > Therefore, CMD8 has new bit for SD Express.
> > > > > SD Express is based on PCIe/NVMe.
> > > > > RTS5261 uses CMD8 to switch to SD Express mode.
> > > >
> > > > So how does this bit work? They way I imagined SD Express to work
> > > > is that the actual SD Card just shows up as a real PCIe device,
> > > > similar to say Thunderbolt.
> > >
> > > New SD Express card has dual mode. One is SD mode and another is PCIe
> > mode.
> > > In PCIe mode, it act as a PCIe device and use PCIe protocol not Thunderbolt
> > protocol.
> >
> > I think what Christoph was asking about is why you need to issue any
> > commands at all in SD mode when you want to use PCIe mode instead. What
> > happens if you load the NVMe dthriver before loading the rts5261 driver?
> >
> > Arnd
> >
> > ------Please consider the environment before printing this e-mail.
>
> RTS5261 support SD mode and PCIe/NVMe mode. The workflow is as follows.
> 1.RTS5261 work in SD mode.
> 2.If card is plugged in, Host send CMD8 to ask card's PCIe availability.
This sounds like the card insert/removal needs to be managed by the
rtsx_pci_sdmmc driver (mmc).
> 3.If the card has PCIe availability, RTS5261 switch to PCIe/NVMe mode.
This switch is done by the mmc driver, but how does the PCIe/NVMe
driver know when to take over? Isn't there a synchronization point
needed?
> 4.Mmc driver exit and NVMe driver start working.
Having the mmc driver to exit seems wrong to me. Else how would you
handle a card being removed and inserted again?
In principle you want the mmc core to fail to detect the card and then
do a handover, somehow. No?
Although, to make this work there are a couple of problems you need to
deal with.
1. If the mmc core doesn't successfully detect a card, it will request
the mmc host to power off the card. In this situation, you want to
keep the power to the card, but leave it to be managed by the
PCIe/NVMe driver in some way.
2. During system resume, the mmc core may try to restore power for a
card, especially if it's a removable slot, as to make sure it gets
detected if someone inserted a card while the system was suspended.
Not sure if this plays well with the PCIe/NVMe driver's behaviour.
Again, I think some kind of synchronization is needed.
> 5.If card is unplugged, RTS5261 will switch to SD mode.
Alright, clearly the mmc driver is needed to manage card insert/removal.
> We should send CMD8 in SD mode to ask card's PCIe availability, and the order of NVMe driver and rts5261 driver doesn't matter.
That assumes there's another synchronization mechanism. Maybe there
is, but I don't understand how.
Kind regards
Uffe