[PATCH 1/1] sunxi: SPI: fix pinmuxing for Allwinner H6 SoCs

Andre Przywara andre.przywara at arm.com
Wed Dec 15 00:54:34 CET 2021

On Sun, 12 Dec 2021 20:29:06 +0100
Daniel Wagenknecht <dwagenk at mailbox.org> wrote:

Hi Daniel,

please don't just resend without saying why. If you messed up the mail,
or forgot to CC: the list, then please put "RESEND" in the subject, and
briefly say why you resend.
If you want to ping, please reply to the cover letter, but please give
people some time to react. We are all volunteers, and not all patches
seem immediately important to jump on them. Plus you might just annoy
people ;-)
If you are unsure whether your email made it out, check the mailing
list archive.

> The driver for SPI0 on Allwinner H6 SoCs did not use the correct define
> SUN50I_GPC_SPI0 for the pin function, but one for a different Allwinner
> SoC series.
> Fix the conditionals to use the correct define for H6 SoCs. This matches
> the conditional logic in the SPL spi driver.
> Tested by probing the spi-flash on a pine64_h64-model-b board with
> adapted device-tree (disable mmc2, enable spi0).

Yeah, this was probably the reason no one noticed:  It doesn't work
without hacks, and also the PineH64 seems to be the only (supported) H6
board with SPI.

If you have some spare cycles ;-) you can look whether we can fix up
the DT when no eMMC is detected, and how to make this work so this not
only applies to the kernel, but also to U-Boot itself.

> Signed-off-by: Daniel Wagenknecht <dwagenk at mailbox.org>
> ---
>  drivers/spi/spi-sunxi.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> diff --git a/drivers/spi/spi-sunxi.c b/drivers/spi/spi-sunxi.c
> index bc2f544e86..6a8ee8d542 100644
> --- a/drivers/spi/spi-sunxi.c
> +++ b/drivers/spi/spi-sunxi.c
> @@ -249,7 +249,8 @@ static int sun4i_spi_parse_pins(struct udevice *dev)
>  			if (pin < 0)
>  				break;

Indeed this was missing. And as you already figured, this applies to the
H616 as well, where SPI is actually usable (just a clash with SDC2_DS,
which is only needed for HS400).
So please put CONFIG_SUN50I_GEN_H6 in there.

Jernej, Samuel, can you please test this on the OPi Zero2? My board
seems to be in a bad mood :-(

But also please note that this is fragile anyway, as this only applies
to SPI0, and other SoCs use many more multiplexes as well. Please have
a look at Samuel's pinctrl series to see if it fixes your problem, and
possibly help reviewing this:


>  				sunxi_gpio_set_cfgpin(pin, SUN50I_GPC_SPI0);
>  			else
>  				sunxi_gpio_set_cfgpin(pin, SUNXI_GPC_SPI0);

More information about the U-Boot mailing list