diff options
Diffstat (limited to 'board/synopsys')
-rw-r--r-- | board/synopsys/axs101/axs101.c | 18 | ||||
-rw-r--r-- | board/synopsys/axs101/axs10x.h | 16 | ||||
-rw-r--r-- | board/synopsys/axs101/nand.c | 7 |
3 files changed, 39 insertions, 2 deletions
diff --git a/board/synopsys/axs101/axs101.c b/board/synopsys/axs101/axs101.c index d1271ffcca..8c16410944 100644 --- a/board/synopsys/axs101/axs101.c +++ b/board/synopsys/axs101/axs101.c @@ -9,6 +9,7 @@ #include <malloc.h> #include <netdev.h> #include <phy.h> +#include "axs10x.h" DECLARE_GLOBAL_DATA_PTR; @@ -27,9 +28,9 @@ int board_mmc_init(bd_t *bis) host->ioaddr = (void *)ARC_DWMMC_BASE; host->buswidth = 4; host->dev_index = 0; - host->bus_hz = 25000000; + host->bus_hz = 50000000; - add_dwmci(host, 52000000, 400000); + add_dwmci(host, host->bus_hz, 400000); return 0; } @@ -42,3 +43,16 @@ int board_eth_init(bd_t *bis) return 0; } + + +#define AXS_MB_CREG 0xE0011000 + +int board_early_init_f(void) +{ + if (readl((void __iomem *)AXS_MB_CREG + 0x234) & (1 << 28)) + gd->board_type = AXS_MB_V3; + else + gd->board_type = AXS_MB_V2; + + return 0; +} diff --git a/board/synopsys/axs101/axs10x.h b/board/synopsys/axs101/axs10x.h new file mode 100644 index 0000000000..8e8c41f865 --- /dev/null +++ b/board/synopsys/axs101/axs10x.h @@ -0,0 +1,16 @@ +/* + * Copyright (C) 2015 Synopsys, Inc. All rights reserved. + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#ifndef _BOARD_SYNOPSYS_AXS10X_H +#define _BOARD_SYNOPSYS_AXS10X_H + +enum { + AXS_MB_V2, + AXS_MB_V3 +}; + +#endif /* _BOARD_SYNOPSYS_AXS10X_H */ + diff --git a/board/synopsys/axs101/nand.c b/board/synopsys/axs101/nand.c index ff35286c6e..4be52e22c0 100644 --- a/board/synopsys/axs101/nand.c +++ b/board/synopsys/axs101/nand.c @@ -9,6 +9,9 @@ #include <malloc.h> #include <nand.h> #include <asm/io.h> +#include "axs10x.h" + +DECLARE_GLOBAL_DATA_PTR; #define BUS_WIDTH 8 /* AXI data bus width in bytes */ @@ -232,5 +235,9 @@ int board_nand_init(struct nand_chip *nand) nand->write_buf = axs101_nand_write_buf; nand->read_buf = axs101_nand_read_buf; + /* MBv3 has NAND IC with 16-bit data bus */ + if (gd->board_type == AXS_MB_V3) + nand->options |= NAND_BUSWIDTH_16; + return 0; } |