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

Daniel Wagenknecht dwagenk at mailbox.org
Thu Dec 16 20:38:39 CET 2021


Hi Andre,

On 12/15/21 12:54 AM, Andre Przywara wrote:

> 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.

yes, this was a RESEND. The original submission was rejected by the
mailinglist because I wasn't a subscriber yet. You and the other CC'd
people got the mail multiple times without an obvious reason, sorry.

> 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.

I'm not sure if implementing some magic here would be good. I did
experiment with adapting the fdt in the u-boot shell, but if implemented
correctly this would probably live in the board initialization code,
right? I haven't looked for references of similar implementations in the
u-boot tree yet.
The sunxi mmc and spi driver both initialize the pins before starting a
transfer, correct? So activating both in the u-boot fdt would probably
work due to the single-threaded execution. But when that same fdt would
be passed to the linux kernel (as with UEFI on U-Boot) it would cause
conflict there.

Like I mentioned above: I wouldn't want to implement too much magic here.

> Please have
> a look at Samuel's pinctrl series to see if it fixes your problem, and
> possibly help reviewing this:
> https://lists.denx.de/pipermail/u-boot/2021-October/464248.html

That looks promising, [PATCH
22/23](https://lists.denx.de/pipermail/u-boot/2021-October/464267.html)
defines the correct pinctrl value for spi0:
> diff --git a/drivers/pinctrl/sunxi/pinctrl-sun50i-h6.c b/drivers/pinctrl/sunxi/pinctrl-sun50i-h6.c
> index d80886269c..b3b5228214 100644
> --- a/drivers/pinctrl/sunxi/pinctrl-sun50i-h6.c
> +++ b/drivers/pinctrl/sunxi/pinctrl-sun50i-h6.c
> @@ -15,6 +15,7 @@ static const struct sunxi_pinctrl_function sun50i_h6_pinctrl_functions[] = {
>  	{ "mmc0",	2 },	/* PF0-PF5 */
>  	{ "mmc1",	2 },	/* PG0-PG5 */
>  	{ "mmc2",	3 },	/* PC1-PC14 */
> +	{ "spi0",	4 },	/* PC0-PC7 */
>  #if IS_ENABLED(CONFIG_UART0_PORT_F)
>  	{ "uart0",	3 },	/* PF2-PF4 */
>  #else

I'll give it a try and provide feedback in that thread. If this get's
included my fix becomes obsolete.

>>  
>> -			if (IS_ENABLED(CONFIG_MACH_SUN50I))
>> +			if (IS_ENABLED(CONFIG_MACH_SUN50I) ||
>> +			    IS_ENABLED(CONFIG_MACH_SUN50I_H6))
> [...]
> So please put CONFIG_SUN50I_GEN_H6 in there.

I'll send a fixup anyhow!

Best Wishes
Daniel


More information about the U-Boot mailing list