
On Thu, 2020-06-18 at 16:52 +0100, David Woodhouse wrote:
So... whose bug is that? :)
Looks like the pinctrl driver. This *ought* to work (with the caveat that I really ought to make two pinctrl setups and change between them according to the voltage, like the Linux DT and mtk-sd driver do).
--- a/arch/arm/dts/mt7623n-bananapi-bpi-r2.dts +++ b/arch/arm/dts/mt7623n-bananapi-bpi-r2.dts @@ -133,12 +133,14 @@ "MSDC0_DAT2", "MSDC0_DAT3", "MSDC0_DAT4", "MSDC0_DAT5", "MSDC0_DAT6", "MSDC0_DAT7"; input-enable; - bias-pull-up; + drive-strength = <2>; + bias-pull-up = <3>; };
conf-clk { pins = "MSDC0_CLK"; - bias-pull-down; + drive-strength = <2>; + bias-pull-down = <3>; };
conf-rst {
But it doesn't work. Partly because the U-Boot mtk pinctrl driver doesn't support the R0 R1 bits encoded in that <3>, and partly because it doesn't *even* get pullup/pulldown right at all; it sets the bit in the GPIO_PULLSEL registers but *not* the PUPD bit in the correct register for MSDC and other pins.