On Mon, 12 Apr 2021 14:20:41 +0800 Chen-Yu Tsai <wens@xxxxxxxx> wrote: > Hi, > > On Mon, Apr 12, 2021 at 8:08 AM Andre Przywara <andre.przywara@xxxxxxx> wrote: > > > > Commit 941432d00768 ("arm64: dts: allwinner: Drop non-removable from > > SoPine/LTS SD card") enabled the card detect GPIO for the SOPine module, > > along the way with the Pine64-LTS, which share the same base .dtsi. > > > > This was based on the observation that the Pine64-LTS has as "push-push" > > SD card socket, and that the schematic mentions the card detect GPIO. > > > > After having received two reports about failing SD card access with that > > patch, some more research and polls on that subject revealed that there > > are at least two different versions of the Pine64-LTS out there: > > - On some boards (including mine) the card detect pin is "stuck" at > > high, regardless of an microSD card being inserted or not. > > - On other boards the card-detect is working, but is active-high, by > > virtue of an explicit inverter circuit, as shown in the schematic. > > > > To cover all versions of the board out there, and don't take any chances, > > let's revert the introduction of the CD GPIO, and go back to the > > non-removable property for the Pine64-LTS. That should avoid regressions > > and should work for everyone. > > The SOPine card detect has proven to be working, so let's keep that > > GPIO in place. > > > > Fixes: 941432d00768 ("arm64: dts: allwinner: Drop non-removable from SoPine/LTS SD card") > > Reported-by: Michael Weiser <michael.weiser@xxxxxx> > > Reported-by: Daniel Kulesz <kuleszdl@xxxxxxxxxx> > > Signed-off-by: Andre Przywara <andre.przywara@xxxxxxx> > > --- > > arch/arm64/boot/dts/allwinner/sun50i-a64-pine64-lts.dts | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64-lts.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64-lts.dts > > index e79ce49e7e6a..843338e19694 100644 > > --- a/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64-lts.dts > > +++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64-lts.dts > > @@ -21,5 +21,5 @@ > > }; > > > > &mmc0 { > > - cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 push-push switch */ > > + non-removable; /* card detect is broken on some boards */ > > So a revert is good, but has anyone tried using the "broken-cd" instead? Ha, that's a good idea, I totally forgot about this property! > That way, at least on Linux, the mmc core resorts to polling for a card. > At least this way the card is still removable. Yes indeed, I tested it on my "stuck at 1" Pine64-LTS, and it works like a charm! Daniel, Michael, can you test this on your boards? So removing the cd-gpios property, and adding "broken-cd;" instead? Cheers, Andre