[U-Boot] [patch V3] [3/3] firetux board support
Jean-Christophe PLAGNIOL-VILLARD
plagnioj at jcrosoft.com
Fri Feb 6 23:26:36 CET 2009
> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> +# GNU General Public License for more details.
> +#
> +# You should have received a copy of the GNU General Public License
> +# along with this program; if not, write to the Free Software
> +# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
> +# MA 02111-1307 USA
> +#
> +
> +include $(TOPDIR)/config.mk
> +
> +LIB = $(obj)lib$(BOARD).a
> +
> +COBJS-y += firetux.o boardrevision.o led.o gpio.o
please split it
> +COBJS-$(CONFIG_CMD_NAND) += nand.o
> +SOBJS-y += lowlevel_init.o memsetup.o relocate.o
please split it
> +
> +SRCS := $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c)
> +OBJS := $(addprefix $(obj),$(COBJS-y))
> +SOBJS := $(addprefix $(obj),$(SOBJS-y))
> +
> +all: $(LIB)
> +
> +$(LIB): $(obj).depend $(OBJS) $(SOBJS)
> + $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
> +
> +clean:
> + rm -f $(SOBJS) $(OBJS)
> +
> +distclean: clean
> + rm -f $(LIB) core *.bak .depend
> +
> +#########################################################################
> +
> +# defines $(obj).depend target
> +include $(SRCTREE)/rules.mk
> +
> +sinclude $(obj).depend
> +
> +#########################################################################
> diff --git a/board/dspg/firetux/boardrevision.c b/board/dspg/firetux/boardrevision.c
> new file mode 100644
> index 0000000..3119090
> --- /dev/null
> +++ b/board/dspg/firetux/boardrevision.c
> @@ -0,0 +1,299 @@
> +/*
> + * firetux board detection
> + *
> + * (C) Copyright 2007-2009, emlix GmbH, Germany
> + * Juergen Schoew <js at emlix.com>
> + * (C) Copyright 2008, Sebastian Hess, emlix GmbH <sh at emlix.com>
> + *
> + * (C) Copyright 2008, DSPG Technologies GmbH, Germany
> + * (C) Copyright 2007, NXP Semiconductors Germany GmbH
> + * Matthias Wenzel, <nxp at mazzoo.de>
> + *
> + * See file CREDITS for list of people who contributed to this
> + * project.
> + *
> + * This program is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU General Public License as
> + * published by the Free Software Foundation; either version 2 of
> + * the License, or (at your option) any later version.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> + * GNU General Public License for more details.
> + *
> + * You should have received a copy of the GNU General Public License
> + * along with this program; if not, write to the Free Software
> + * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
> + * MA 02111-1307 USA
> + */
> +
> +/*
> + * These VEGA boards are very similair to each other. The main difference
> + * is the phy address of the network, CPU revision, number of leds and keys.
> + */
> +
> +#include <common.h>
> +#include <asm/io.h>
> +#include "firetux.h"
> +
> +#ifndef CONFIG_IP3912_ETN1_BASE
> +#define CONFIG_IP3912_ETN1_BASE 0xC1600000
> +#endif
> +#ifndef CONFIG_IP3912_ETN2_BASE
> +#define CONFIG_IP3912_ETN2_BASE 0xC1700000
> +#endif
> +
> +/* ip3912 / pnx8181 ETN registers */
> +#define ETN1_BASE CONFIG_IP3912_ETN1_BASE
> +#define ETN2_BASE CONFIG_IP3912_ETN2_BASE
> +
> +#define ETN_MAC1 0x0000
> +#define ETN_SUPP 0x0018
> +#define ETN_MCFG 0x0020
> +#define ETN_MADR 0x0028
> +#define ETN_MCMD 0x0024
> +#define ETN_MWTD 0x002c
> +#define ETN_MRDD 0x0030
> +#define ETN_MIND 0x0034
> +#define ETN_COMMAND 0x0100
please move to a heaser
> +
> +static char firetux_boardrevision = UNKNOWN_PNX8181;
> +
> +char get_boardrevision(void)
> +{
> + return firetux_boardrevision;
> +}
> +
> +static void detect_etn_start(void)
> +{
> + debug("board detect: initialize ETN\n");
> + /* reset MII mgmt, set MII clock */
> + writel(0x0000801c, (void *)(ETN1_BASE + ETN_MCFG));
> + writel(0x0000001c, (void *)(ETN1_BASE + ETN_MCFG));
> +
> + /* enable RMMI */
> + writel(0x00000600, (void *)(ETN1_BASE + ETN_COMMAND));
> +
> + /* reset MAC layer */
> + writel(0x0000cf00, (void *)(ETN1_BASE + ETN_MAC1));
> + /* release MAC soft reset */
> + writel(0x00000000, (void *)(ETN1_BASE + ETN_MAC1));
> + /* reset rx-path, tx-path, host registers */
> + writel(0x00000638, (void *)(ETN1_BASE + ETN_COMMAND));
> + /* reset RMII, 100Mbps MAC, 10Mbps MAC */
> + writel(0x1888, (void *)(ETN1_BASE + ETN_SUPP));
> + writel(0x1000, (void *)(ETN1_BASE + ETN_SUPP));
> +}
> +
maybe you can add an ifdef arround to not compile it when the network is
desable?
and is these phy functions are board or soc specific?
> +/* Wait for the ETN engine to be ready */
> +static void detect_phy_wait(void)
> +{
> + int i, status;
please an empty line
> + for (i = 0; i < 1000; i++) {
> + status = readl((void *)(ETN1_BASE + ETN_MIND)) & 0x7;
> + if (!status)
> + return;
> + udelay(1);
> + }
> + debug("board detect: wait PHY timed out!\n");
> +}
> +
> +/* write to phy */
> +static void detect_phy_write(u8 address, u8 reg, u16 data)
> +{
> + writel((address << 8) | reg, (void *)(ETN1_BASE + ETN_MADR));
> + writel(data, (ETN1_BASE + ETN_MWTD));
> + detect_phy_wait();
> +}
> +
> +/* read from phy */
> +static u16 detect_phy_read(u8 address, u8 reg)
> +{
> + u16 value;
please an empty line
> + writel((address << 8) | reg, (void *)(ETN1_BASE + ETN_MADR));
> + writel(0x00000001, (void *)(ETN1_BASE + ETN_MCMD));
> + detect_phy_wait();
> +
> + value = readl((void *)(ETN1_BASE + ETN_MRDD));
> + writel(0x00000000, (void *)(ETN1_BASE + ETN_MCMD));
> + return value;
> +}
> +
> +/* do a software reset on the phy */
> +static int detect_phy_softreset(u8 phyaddr)
> +{
> + int i, rc;
> +
> + debug("board detect: softreset PHY @0x%02x ", phyaddr);
> +
> + /*
> + * reset power down bit and set autonegotiation in
> + * phy basic control register 0
> + */
> + detect_phy_write(phyaddr, 0x00, 0x1200);
> +
> + /* set reset bit in phy basic control register */
> + detect_phy_write(phyaddr, 0x00, detect_phy_read(phyaddr, 0x00)
> + | (1 << 15));
> + udelay(260); /* HW ref (pg. 51): 256us, IEEE <= 500ms */
> +
> + /* Check for bit reset */
> + for (i = 0; i < 1000; i++) {
> + rc = detect_phy_read(phyaddr, 0x00);
> + if (!(rc & (1 < 11))) {
> + debug("OK\n");
> + return 0;
> + }
> + }
> +
> + debug("timed out!\n");
> + return -1;
> +}
> +
> +# along with this program; if not, write to the Free Software
> +# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
> +# MA 02111-1307 USA
> +#
> +
> +
> +ifndef CONFIG_SYS_PSRAM
> +# SDRAM
> +TEXT_BASE = 0x20780000
> +else
> +# mobile pSRAM
> +TEXT_BASE = 0x90700000
> +endif
> +
> +PLATFORM_CPPFLAGS += -fPIC -fPIE -fno-jump-tables # -msingle-pic-base
could you explain why?
> +
> +ifneq ($(OBJTREE),$(SRCTREE))
> +# We are building u-boot in a separate directory, use generated
> +# .lds script from OBJTREE directory.
> +LDSCRIPT := $(OBJTREE)/board/$(BOARDDIR)/u-boot.lds
> +endif
> diff --git a/board/dspg/firetux/firetux.c b/board/dspg/firetux/firetux.c
> new file mode 100644
> index 0000000..52f0ad1
> --- /dev/null
> +++ b/board/dspg/firetux/firetux.c
> @@ -0,0 +1,413 @@
> +/*
> + * firetux board specific setup
> + *
> + * (C) Copyright 2007-2009, emlix GmbH, Germany
> + * Juergen Schoew <js at emlix.com>
> + *
> + * (C) Copyright 2008, DSPG Technologies GmbH, Germany
> + * (C) Copyright 2007, NXP Semiconductors Germany GmbH
> + * Matthias Wenzel, <nxp at mazzoo.de>
> + *
> + * See file CREDITS for list of people who contributed to this
> + * project.
> + *
> + * This program is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU General Public License as
> + * published by the Free Software Foundation; either version 2 of
> + * the License, or (at your option) any later version.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> + * GNU General Public License for more details.
> + *
> + * You should have received a copy of the GNU General Public License
> + * along with this program; if not, write to the Free Software
> + * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
> + * MA 02111-1307 USA
> + */
> +
> +#include <common.h>
> +#include <asm/io.h>
> +#include <status_led.h>
> +#include "firetux.h"
> +
> +DECLARE_GLOBAL_DATA_PTR;
> +
> +/* functions for ethernet initialization */
> +extern int ip3912_eth_initialize(unsigned char nr, unsigned int etn_base,
> + unsigned int phy_base, unsigned char phy_addr, unsigned char rmii);
> +extern int ip3912_miiphy_initialize(bd_t *bis);
> +
> +#ifdef CONFIG_SHOW_BOOT_PROGRESS
> +void show_boot_progress(int progress)
> +{
> + printf("Boot reached stage %d\n", progress);
> +}
> +#endif
> +
> + writel(31, (void *)PNX8181_INTC_PRIOMASK_IRQ);
> + writel(31, (void *)PNX8181_INTC_PRIOMASK_FIQ);
> +
> + for (i = 1; i < 67; i++)
> + PNX8181_DISABLEIRQ(i);
> +
> + writel(readl((void *)PNX8181_CGU_GATESC) & 0xfdd7becd,
> + (void *)PNX8181_CGU_GATESC);
> +}
soc or board specifiy?
> +
> +/* Ethernet */
> +void firetux_sysmux_config_rmii(void)
> +{
> + /* config gpio c15 and c16 for RMII */
> + writel((readl((void *)(PNX8181_SCON_BASE + PNX8181_SYSMUX4))
> + & ~(0x3 << 0)), (void *)(PNX8181_SCON_BASE + PNX8181_SYSMUX4));
> + writel((readl((void *)(PNX8181_SCON_BASE + PNX8181_SYSMUX5))
> + & ~(0x3 << 30)), (void *)(PNX8181_SCON_BASE + PNX8181_SYSMUX5));
> +}
soc or board specifiy?
> +
> +void firetux_sysmux_config_etn1(void)
> +{
> + /* config gpio c0 and c6 for ETN1 */
> + writel((readl((void *)(PNX8181_SCON_BASE + PNX8181_SYSMUX4))
> + & 0xffffc000), (void *)(PNX8181_SCON_BASE + PNX8181_SYSMUX4));
> +}
soc or board specifiy?
> +
> +void firetux_sysmux_config_etn2(void)
> +{
> + /* config gpio c7 and c13 for ETN2 (alternative config for sd-card) */
> + writel((readl((void *)(PNX8181_SCON_BASE + PNX8181_SYSMUX4))
> + & 0xf0003fff), (void *)(PNX8181_SCON_BASE + PNX8181_SYSMUX4));
> +}
soc or board specifiy?
> +
> +int board_eth_init(bd_t *bis)
soc or board specifiy?
> +{
> + int rc = 0;
> +
> +/*
> + * priority setting for ETN over CPU for SDRAM access
> + * enable port-aging with priority for ETN
> + */
> +#ifdef CONFIG_SYS_ETHER_FAIR_SCHEDULE
> + /*
> + * be fair: ETN and CPU are both high priority, but ETN gets
> + * higher priority and a much lower ageing penatly to get
> + * much more accesses to RAM
> + */
> + writel(0x80000121, (void *)(PNX8181_SDI_SCHED + PNX8181_SCHED0));
> + writel(0xffff0100, (void *)(PNX8181_SDI_SCHED + PNX8181_SCHED1));
> + writel(0x00030131, (void *)(PNX8181_SDI_SCHED + PNX8181_SCHED2));
> +#else
> + /*
> + * highly prioritise the ETN engine and lower CPU priority
> + * to archive a better network thoughput
> + */
> + writel(0xffff0020, (void *)(PNX8181_SDI_SCHED + PNX8181_SCHED0));
> + writel(0xffff0000, (void *)(PNX8181_SDI_SCHED + PNX8181_SCHED1));
> + writel(0xffff0031, (void *)(PNX8181_SDI_SCHED + PNX8181_SCHED2));
> +#endif
> +
> + /* increase priority for SCRAM access at AHB of descriptors */
> + writew(7, (void *)(PNX8181_SC_ARB_BASE + PNX8181_SC_ARB_CFG2));
> + writew(7, (void *)(PNX8181_SC_ARB_BASE + PNX8181_SC_ARB_CFG3));
> +
> + /*
> + * init ETN clocks
> + *
> + * set ETNREFCLK to internal CGU clock, assuming a 13.824MHz crystal
> + * for other xtals see NXP's validation tests,
> + * lib/tools/source/swift_tools.c
> + */
> + writel((15 << 9) | (62 << 3) | 3, (void *)PNX8181_CGU_PER2CON);
> +
> + /* turn on PLL */
> + writel(readl((void *)PNX8181_CGU_PER2CON) | 0x00010000,
> + (void *)PNX8181_CGU_PER2CON);
> + /* wait for PLL lock */
> + while (!(readl((void *)PNX8181_CGU_PER2CON) & 0x00020000))
> + ;
> +
> + /* ungate ETN clocks */
> + writel(readl((void *)PNX8181_CGU_PER2CON) | 0x00802000,
> + (void *)PNX8181_CGU_PER2CON);
> +
> + /* register ip3912 mii interface */
> + ip3912_miiphy_initialize(gd->bd);
> +
> + /* register ethernet devices */
> + switch (get_boardrevision()) {
> + case 1:
> + case 2:
> + firetux_sysmux_config_rmii();
> + firetux_sysmux_config_etn1();
> + firetux_sysmux_config_etn2();
> + /* phys are at addr 0x1 & 0x2 at RMII phybus */
> + rc |= ip3912_eth_initialize(0, CONFIG_IP3912_ETN1_BASE,
> + CONFIG_IP3912_ETN1_BASE, 0x01, 1);
> + rc |= ip3912_eth_initialize(1, CONFIG_IP3912_ETN2_BASE,
> + CONFIG_IP3912_ETN1_BASE, 0x02, 1);
> + break;
> + case 3:
> + case 4:
> + firetux_sysmux_config_rmii();
> + firetux_sysmux_config_etn1();
> + firetux_sysmux_config_etn2();
> + /* phys are at addr 0x1e & 0x1d at RMII phybus */
> + rc |= ip3912_eth_initialize(0, CONFIG_IP3912_ETN1_BASE,
> + CONFIG_IP3912_ETN1_BASE, 0x1e, 1);
> + rc |= ip3912_eth_initialize(1, CONFIG_IP3912_ETN2_BASE,
> + CONFIG_IP3912_ETN1_BASE, 0x1d, 1);
> + break;
> + default:
> + return -1;
> + }
> + return rc;
> +}
> +
> +/*
> + * Miscellaneous platform dependent initialisations
> + */
> +
> +int board_init(void)
> +{
> + /* arch number of Firetux Platform Boards */
> + gd->bd->bi_arch_number = MACH_TYPE_PNX8181;
> +
> + /* adress of boot parameters / atags */
> + gd->bd->bi_boot_params = PHYS_SDRAM_1 + 0x100;
> +
> + /* release the RSTAPU and RSTEXT signal which keeps the PHYs in reset */
> + writel(readw((void *)PNX8181_WDRUCON) | 0x0009,
> + (void *)PNX8181_WDRUCON);
> + /* lower VDDIO to Vbgp * 2.44 (typ. 3.05V) */
> + writel(0x0079, (void *)PNX8181_DAIF_RVDDC);
> +
> + /* select TXD2 for GPIOa11 and select RXD2 for GPIOa1 */
> + writel(((readl((void *)(PNX8181_SCON_BASE + PNX8181_SYSMUX0))
> + & 0xff3ffff3) | 0x00400004),
> + (void *)(PNX8181_SCON_BASE + PNX8181_SYSMUX0));
> + /* select ETN for GPIOc0-16 */
> + writel(readl((void *)(PNX8181_SCON_BASE + PNX8181_SYSMUX5))
> + & 0xfffffffc,
> + (void *)(PNX8181_SCON_BASE + PNX8181_SYSMUX5));
> + writel(readl((void *)(PNX8181_SCON_BASE + PNX8181_SYSMUX4))
> + & 0x30000000,
> + (void *)(PNX8181_SCON_BASE + PNX8181_SYSMUX4));
> +
> + /* use clk26m and fract-n for UART2 */
> + writew(((1 << 7) | (1 << 1)),
> + (void *)(PNX8181_UART2_BASE + PNX8181_UART_FDIV_CTRL));
> + writew(0x5F37, (void *)(PNX8181_UART2_BASE + PNX8181_UART_FDIV_M));
> + writew(0x32C8, (void *)(PNX8181_UART2_BASE + PNX8181_UART_FDIV_N));
> +
> + board_detect();
> +
> + firetux_gpio_init();
> +
> + icache_enable();
> + dcache_enable();
> +
> +#ifdef CONFIG_CMD_NAND
> + firetux_nandflash_init();
> +#else
> + firetux_norflash_init();
> +#endif
> +
> + firetux_irq_disable();
> +
> + return 0;
> +}
> +
> +int firetux_keystatus(int key)
> +{
> + int ret = 0;
> +
> + switch (key) {
> + case 1: /* GPIOA2 */
> + ret = get_gpioa(2);
> + break;
> + case 2: /* GPIOA10 */
> + ret = get_gpioa(10);
> + break;
> + default:
> + ret = -1;
> + break;
> + }
> +
> + return ret;
> +}
> +
> +void firetux_check_bootkey(void)
> +{
> + int i = 0, abort = 0;
> +
> + while ((abort == 0) && (i < 500)) {
> + if (firetux_keystatus(2) == 1) {
> + setenv("bootcmd", "run bootcmd1");
> + firetux_set_led(2, 0);
> + abort = 1;
> + }
> + i++;
> + udelay(10000);
> + }
> + if (abort == 0) {
> + setenv("bootcmd", "run bootcmd2");
> + puts("using alternative bootcmd\n");
> + firetux_set_led(2, 1);
> + }
> +}
> +
> +int misc_init_r(void)
> +{
> + if (get_boardrevision() > 1) /* ez_mcp_pnx8181 has no keys */
> + firetux_check_bootkey();
> +
> + setenv("verify", "n");
> + return 0;
> +}
> +
> +#if defined(CONFIG_DISPLAY_CPUINFO)
> +int print_cpuinfo(void)
soc or board specifiy?
> +{
> + unsigned int sysver, cgu_sccon, armclk, hclk;
> +
> + puts("CPU: ");
> + sysver = readw((void *)PNX8181_REG_SC_SYSVER);
> + printf("PNX8181-%d%c %s-ARM926EJ-S(ARMv5TEJ) ",
> + ((sysver >> 4) & 0xf), ((sysver & 0xf) + 64),
> + (((sysver >> 8) & 0xf) == 1) ? "OM6xxx" : "unknown");
> +
> + cgu_sccon = readw((void *)PNX8181_CGU_SCCON);
> +
> + /* armclk = bbcki * nsc / msc / ksc */
> + armclk = 13824 * (((cgu_sccon >> 3) & 0x3f) + 1)
> + / ((cgu_sccon & 0x7) + 1)
> + / (((cgu_sccon >> 10) & 0x3) + 1);
> + hclk = armclk / (((cgu_sccon >> 12) & 0xf) + 1);
> +
> + printf("@ %dMHz(armclk), %dMHz(hclk)\n",
> + (armclk / 1000), (hclk / 1000));
> + return 0;
> +}
> +#endif
> +
> +#if defined(CONFIG_DISPLAY_BOARDINFO)
> +int checkboard(void)
> +{
> + puts("Board: ");
> +
> + switch (get_boardrevision()) {
> + case 1:
> + puts("EZ_MCP_PNX8181\n");
> + break;
> + case 2:
> + puts("Vega_PNX8181_BaseStation Platform III-a\n");
> + break;
> + case 3:
> + puts("Vega_PNX8181_BaseStation Platform III-b\n");
> + break;
> + case 4:
> + puts("Vega_PNX8181_BaseStation Platform III-c\n");
> + break;
> + case 0:
> + default:
> + puts("unknown PNX8181 board\n");
> + break;
> + }
> +
> + return 0;
> +}
> +#endif
> +
> +int dram_init(void)
> +{
> + int reg;
> +
> + reg = readl((void *)PNX8181_SDI_CFG_1);
> + gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
> + gd->bd->bi_dram[0].size = 1 << (
> + (reg & 0x3) + /* dram width 8, 16, 32, 64 */
> + (((reg & 0x30) >> 4) + 8) + /* columns 8, 9, 10, 11 */
> + (((reg & 0x700) >> 8) + 9) + /* rows 9 .. 16 */
> + ((reg & 0x3000) >> 12)); /* nr banks 1, 2, 4 */
> +
> + return 0;
> +}
> diff --git a/board/dspg/firetux/firetux.h b/board/dspg/firetux/firetux.h
> new file mode 100644
> index 0000000..0196197
> --- /dev/null
> +++ b/board/dspg/firetux/firetux.h
> @@ -0,0 +1,144 @@
> +/*
> + * firetux board specific defines
> + *
> + * (C) Copyright 2007-2009, emlix GmbH, Germany
> + * Juergen Schoew <js at emlix.com>
> + *
> + * (C) Copyright 2008, DSPG Technologies GmbH, Germany
> + * (C) Copyright 2007, NXP Semiconductors Germany GmbH
> + * Matthias Wenzel, <nxp at mazzoo.de>
> + *
> + * See file CREDITS for list of people who contributed to this
> + * project.
> + *
> + * This program is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU General Public License as
> + * published by the Free Software Foundation; either version 2 of
> + * the License, or (at your option) any later version.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> + * GNU General Public License for more details.
> + *
> + * You should have received a copy of the GNU General Public License
> + * along with this program; if not, write to the Free Software
> + * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
> + * MA 02111-1307 USA
> + */
> +
> +/*
> + * Boardrevisions:
> + * 0: unknown PNX8181 board
> + * 1: EZ_MCP_PNX8181
> + * 2: Vega_PNX8181_BaseStation Platform III-a
> + * 3: Vega_PNX8181_BaseStation Platform III-b
> + * 4: Vega_PNX8181_BaseStation Platform III-c
> + */
> +#define CONFIG_MAX_BOARDREVISIONS 4
> +enum firetux_revisions {
> + Any_PNX8181_BaseStation = -1,
> + UNKNOWN_PNX8181 = 0,
> + EZ_MCP_PNX8181,
> + VEGA_BASESTATION_IIIA,
> + VEGA_BASESTATION_IIIB,
> + VEGA_BASESTATION_IIIC,
> +};
> +
> +/* watchdog control register */
> +#define PNX8181_WDRUCON 0xc2203000
soc or board specifiy?
> +
> +/* digital to analog interface */
> +#define PNX8181_DAIF_RVDDC 0xc2000000
soc or board specifiy?
and so on please check
btw could you split this patch to simplify it's review
Best Regards,
J.
More information about the U-Boot
mailing list