[U-Boot] [PATCH 9/9] mips: ath79: Add support for TPLink WDR4300

Wills Wang wills.wang at live.com
Sat May 21 18:29:39 CEST 2016



On 05/07/2016 02:10 AM, Marek Vasut wrote:
[...]
> diff --git a/board/tplink/wdr4300/wdr4300.c b/board/tplink/wdr4300/wdr4300.c
> new file mode 100644
> index 0000000..6e070fd
> --- /dev/null
> +++ b/board/tplink/wdr4300/wdr4300.c
> @@ -0,0 +1,74 @@
> +/*
> + * Copyright (C) 2016 Marek Vasut <marex at denx.de>
> + *
> + * SPDX-License-Identifier: GPL-2.0+
> + */
> +
> +#include <common.h>
> +#include <asm/io.h>
> +#include <asm/addrspace.h>
> +#include <asm/types.h>
> +#include <mach/ath79.h>
> +#include <mach/ar71xx_regs.h>
> +#include <mach/ddr.h>
> +#include <debug_uart.h>
> +
> +DECLARE_GLOBAL_DATA_PTR;
> +
> +#ifdef CONFIG_USB
> +static void wdr4300_usb_start(void)
> +{
> +	void __iomem *gpio_regs = map_physmem(AR71XX_GPIO_BASE,
> +					      AR71XX_GPIO_SIZE, MAP_NOCACHE);
> +	if (!gpio_regs)
> +		return;
> +
> +	/* Power up the USB HUB. */
> +	clrbits_be32(gpio_regs + AR71XX_GPIO_REG_OE, BIT(21) | BIT(22));
> +	writel(BIT(21) | BIT(22), gpio_regs + AR71XX_GPIO_REG_SET);
> +	mdelay(1);
> +
> +	ath79_usb_reset();
> +}
> +#else
> +static inline void wdr4300_usb_start(void) {}
> +#endif
> +
> +#ifdef CONFIG_BOARD_EARLY_INIT_F
> +int board_early_init_f(void)
> +{
> +	void __iomem *regs;
> +
> +	regs = map_physmem(AR71XX_GPIO_BASE, AR71XX_GPIO_SIZE,
> +			   MAP_NOCACHE);
> +
> +	/* Assure JTAG is not disconnected. */
> +	writel(0x40, regs + AR934X_GPIO_REG_FUNC);
> +
> +	/* Configure default GPIO input/output regs. */
> +	writel(0x3031b, regs + AR71XX_GPIO_REG_OE);
> +	writel(0x0f804, regs + AR71XX_GPIO_REG_OUT);
> +
> +	/* Configure pin multiplexing. */
> +	writel(0x00000000, regs + AR934X_GPIO_REG_OUT_FUNC0);
> +	writel(0x0b0a0980, regs + AR934X_GPIO_REG_OUT_FUNC1);
> +	writel(0x00180000, regs + AR934X_GPIO_REG_OUT_FUNC2);
> +	writel(0x00000000, regs + AR934X_GPIO_REG_OUT_FUNC3);
> +	writel(0x0000004d, regs + AR934X_GPIO_REG_OUT_FUNC4);
> +	writel(0x00000000, regs + AR934X_GPIO_REG_OUT_FUNC5);
> +
> +#ifdef CONFIG_DEBUG_UART
> +	debug_uart_init();
> +#endif
> +
> +#ifndef CONFIG_SKIP_LOWLEVEL_INIT
> +	ar934x_pll_init(560, 480, 240);
> +	ar934x_ddr_init(560, 480, 240);
> +#endif
Can we get it to work  if CONFIG_SKIP_LOWLEVEL_INIT is defined?
> +
> +	wdr4300_usb_start();
> +	ath79_eth_reset();
> +
> +	return 0;
> +}
> +#endif
>

-- 
Best Regards
Wills



More information about the U-Boot mailing list