Thread (9 messages) 9 messages, 5 authors, 2024-11-01

Re: [PATCH] mmc: dw_mmc: rockchip: Keep controller working for card detect

From: Heiko Stübner <heiko@sntech.de>
Date: 2024-10-04 20:59:32
Also in: linux-mmc, linux-rockchip, lkml

Am Freitag, 4. Oktober 2024, 19:34:33 CEST schrieb Robin Murphy:
On 02/10/2024 10:55 pm, Ulf Hansson wrote:
quoted
On Sat, 14 Sept 2024 at 13:52, Heiko Stübner [off-list ref] wrote:
quoted
Am Donnerstag, 12. September 2024, 09:26:14 CEST schrieb Kever Yang:
quoted
In order to make the SD card hotplug working we need the card detect
function logic inside the controller always working. The runtime PM will
gate the clock and the power domain, which stops controller working when
no data transfer happen.

So lets skip enable runtime PM when the card needs to detected by the
controller and the card is removable.

Signed-off-by: Kever Yang <redacted>
So for the change itself this looks good, i.e. it fixes an issue for baords relying
on the on-chip-card-detect.


But for boards doing that, the controller will be running _all the time_
even if there is never any card inserted.

So relying on the on-soc card-detect will effectively increase the power-
consumption of the board - even it it'll never use any sd-card?
Good point! A better option is to use a polling based mechanism - and
we have MMC_CAP_NEEDS_POLL for exactly that.

Moreover, on DT based platforms one can even use the "broken-cd"
property to indicate this.
Except that goes further than is needed here, since it would fall back 
entirely to software-based polling for card presence. In this case the 
CD function is not broken in terms of actually detecting a card, it just 
doesn't work to wake the controller up from suspend because it can't 
fire its own interrupt while powered off. In principle all we should 
require here is to periodically resume/suspend the device, to provide a 
window for the interrupt to work and normal operation to take over if 
appropriate.

Of course the really clever way would be for suspend to switch the pin 
into GPIO mode, and set the GPIO interrupt as a wakeup to trigger resume 
and switch it back again, but perhaps that's a bit tricky without 
explicit pinctrl states in the DT :/
and then the question really becomes, why move away from cd-gpios at all.


Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help