]> git.ipfire.org Git - people/ms/u-boot.git/blame - board/spear/spear320/spear320.c
Add GPL-2.0+ SPDX-License-Identifier to source files
[people/ms/u-boot.git] / board / spear / spear320 / spear320.c
CommitLineData
7da69236
VK
1/*
2 * (C) Copyright 2009
3 * Ryan Chen, ST Micoelectronics, ryan.chen@st.com.
4 * Vipin Kumar, ST Micoelectronics, vipin.kumar@st.com.
5 *
1a459660 6 * SPDX-License-Identifier: GPL-2.0+
7da69236
VK
7 */
8
9#include <common.h>
9afc1af0 10#include <miiphy.h>
deb00562 11#include <netdev.h>
7da69236
VK
12#include <nand.h>
13#include <asm/io.h>
1fa943b9 14#include <linux/mtd/fsmc_nand.h>
7da69236
VK
15#include <asm/arch/hardware.h>
16#include <asm/arch/spr_defs.h>
17#include <asm/arch/spr_misc.h>
1fa943b9 18
9afc1af0
VK
19#define PLGPIO_SEL_36 0xb3000028
20#define PLGPIO_IO_36 0xb3000038
21
1fa943b9 22static struct nand_chip nand_chip[CONFIG_SYS_MAX_NAND_DEVICE];
7da69236 23
9afc1af0
VK
24static void spear_phy_reset(void)
25{
26 writel(0x10, PLGPIO_IO_36);
27 writel(0x10, PLGPIO_SEL_36);
28}
29
7da69236
VK
30int board_init(void)
31{
9afc1af0 32 spear_phy_reset();
9d69e33d 33 return spear_board_init(MACH_TYPE_SPEAR320);
7da69236
VK
34}
35
36/*
37 * board_nand_init - Board specific NAND initialization
38 * @nand: mtd private chip structure
39 *
40 * Called by nand_init_chip to initialize the board specific functions
41 */
42
1fa943b9 43void board_nand_init()
7da69236
VK
44{
45 struct misc_regs *const misc_regs_p =
46 (struct misc_regs *)CONFIG_SPEAR_MISCBASE;
1fa943b9 47 struct nand_chip *nand = &nand_chip[0];
7da69236 48
1fa943b9 49#if defined(CONFIG_NAND_FSMC)
7da69236
VK
50 if (((readl(&misc_regs_p->auto_cfg_reg) & MISC_SOCCFGMSK) ==
51 MISC_SOCCFG30) ||
52 ((readl(&misc_regs_p->auto_cfg_reg) & MISC_SOCCFGMSK) ==
53 MISC_SOCCFG31)) {
54
1fa943b9 55 fsmc_nand_init(nand);
7da69236 56 }
1fa943b9 57#endif
7da69236 58
1fa943b9 59 return;
7da69236 60}
deb00562
VK
61
62int board_eth_init(bd_t *bis)
63{
8eb0ee6a 64 int ret = 0;
9afc1af0 65
deb00562 66#if defined(CONFIG_DESIGNWARE_ETH)
9afc1af0
VK
67 u32 interface = PHY_INTERFACE_MODE_MII;
68 if (designware_initialize(0, CONFIG_SPEAR_ETHBASE, CONFIG_DW0_PHY,
69 interface) >= 0)
70 ret++;
deb00562 71#endif
8eb0ee6a
VK
72#if defined(CONFIG_MACB)
73 if (macb_eth_initialize(0, (void *)CONFIG_SYS_MACB0_BASE,
9afc1af0
VK
74 CONFIG_MACB0_PHY) >= 0)
75 ret++;
8eb0ee6a
VK
76#endif
77 return ret;
deb00562 78}