[U-Boot] [PATCH 04/10] arm64: a37xx: Handle pin controls in early board init

Stefan Roese sr at denx.de
Tue Feb 14 11:43:39 UTC 2017


Hi Kosta,

On 13.02.2017 14:38, kostap at marvell.com wrote:
> From: Konstantin Porotchkin <kostap at marvell.com>
>
> Fix the default pin control values in a board-specific
> function on early board init stage.
> This fix allows the NETA driver to work in RGMII
> mode until the full-featured pin control driver gets
> introduced.
>
> Signed-off-by: Konstantin Porotchkin <kostap at marvell.com>
> Cc: Stefan Roese <sr at denx.de>
> Cc: Igal Liberman <igall at marvell.com>
> ---
>  board/Marvell/mvebu_db-88f3720/board.c | 26 +++++++++++++++++++++++++-
>  1 file changed, 25 insertions(+), 1 deletion(-)
>
> diff --git a/board/Marvell/mvebu_db-88f3720/board.c b/board/Marvell/mvebu_db-88f3720/board.c
> index edf88c7..3337f3f 100644
> --- a/board/Marvell/mvebu_db-88f3720/board.c
> +++ b/board/Marvell/mvebu_db-88f3720/board.c
> @@ -19,9 +19,33 @@ DECLARE_GLOBAL_DATA_PTR;
>  #define I2C_IO_REG_0_SATA_OFF	2
>  #define I2C_IO_REG_0_USB_H_OFF	1
>
> +#define PINCTRL_NB_REG_VALUE	0x000173fa
> +#define PINCTRL_SB_REG_VALUE	0x00007a23
> +

I am aware that this is a temporary solution, but are these values
correct for the A3720-DB or only the ESPRESSBin board?

BTW: You are now using the "Marvell/mvebu_db-88f3720" board directory
for multiple board and not only the A3720-DB. I would prefer to see
a rename of the board directory before this, like we've done to the
A7k/8k directory. What do you think?

>  int board_early_init_f(void)
>  {
> -	/* Nothing to do (yet), perhaps later some pin-muxing etc */
> +	const void *blob = gd->fdt_blob;
> +	const char *bank_name;
> +	const char *compat = "marvell,armada-3700-pinctl";
> +	int off, len;
> +	void __iomem *addr;
> +
> +	/* FIXME
> +	 * Temporary WA for setting correct pin control values
> +	 * until the real pin control driver is awailable.
> +	 */
> +	off = fdt_node_offset_by_compatible(blob, -1, compat);
> +	while (off != -FDT_ERR_NOTFOUND) {
> +		bank_name = fdt_getprop(blob, off, "bank-name", &len);
> +		addr = (void __iomem *)fdtdec_get_addr_size_auto_noparent(
> +				blob, off, "reg", 0, NULL, true);
> +		if (!strncmp(bank_name, "armada-3700-nb", len))
> +			writel(PINCTRL_NB_REG_VALUE, addr);
> +		else if (!strncmp(bank_name, "armada-3700-sb", len))
> +			writel(PINCTRL_SB_REG_VALUE, addr);
> +
> +		off = fdt_node_offset_by_compatible(blob, off, compat);
> +	}
>
>  	return 0;
>  }
>

Thanks,
Stefan


More information about the U-Boot mailing list