1*4882a593Smuzhiyun /* 2*4882a593Smuzhiyun * (C) Copyright 2009 3*4882a593Smuzhiyun * Vipin Kumar, ST Micoelectronics, vipin.kumar@st.com. 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * SPDX-License-Identifier: GPL-2.0+ 6*4882a593Smuzhiyun */ 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun #include <common.h> 9*4882a593Smuzhiyun #include <miiphy.h> 10*4882a593Smuzhiyun #include <netdev.h> 11*4882a593Smuzhiyun #include <nand.h> 12*4882a593Smuzhiyun #include <asm/io.h> 13*4882a593Smuzhiyun #include <linux/mtd/fsmc_nand.h> 14*4882a593Smuzhiyun #include <asm/mach-types.h> 15*4882a593Smuzhiyun #include <asm/arch/hardware.h> 16*4882a593Smuzhiyun #include <asm/arch/spr_defs.h> 17*4882a593Smuzhiyun #include <asm/arch/spr_misc.h> 18*4882a593Smuzhiyun 19*4882a593Smuzhiyun static struct nand_chip nand_chip[CONFIG_SYS_MAX_NAND_DEVICE]; 20*4882a593Smuzhiyun board_init(void)21*4882a593Smuzhiyunint board_init(void) 22*4882a593Smuzhiyun { 23*4882a593Smuzhiyun return spear_board_init(MACH_TYPE_SPEAR300); 24*4882a593Smuzhiyun } 25*4882a593Smuzhiyun 26*4882a593Smuzhiyun /* 27*4882a593Smuzhiyun * board_nand_init - Board specific NAND initialization 28*4882a593Smuzhiyun * @nand: mtd private chip structure 29*4882a593Smuzhiyun * 30*4882a593Smuzhiyun * Called by nand_init_chip to initialize the board specific functions 31*4882a593Smuzhiyun */ 32*4882a593Smuzhiyun board_nand_init()33*4882a593Smuzhiyunvoid board_nand_init() 34*4882a593Smuzhiyun { 35*4882a593Smuzhiyun struct misc_regs *const misc_regs_p = 36*4882a593Smuzhiyun (struct misc_regs *)CONFIG_SPEAR_MISCBASE; 37*4882a593Smuzhiyun struct nand_chip *nand = &nand_chip[0]; 38*4882a593Smuzhiyun 39*4882a593Smuzhiyun #if defined(CONFIG_NAND_FSMC) 40*4882a593Smuzhiyun if (((readl(&misc_regs_p->auto_cfg_reg) & MISC_SOCCFGMSK) == 41*4882a593Smuzhiyun MISC_SOCCFG30) || 42*4882a593Smuzhiyun ((readl(&misc_regs_p->auto_cfg_reg) & MISC_SOCCFGMSK) == 43*4882a593Smuzhiyun MISC_SOCCFG31)) { 44*4882a593Smuzhiyun 45*4882a593Smuzhiyun fsmc_nand_init(nand); 46*4882a593Smuzhiyun } 47*4882a593Smuzhiyun #endif 48*4882a593Smuzhiyun return; 49*4882a593Smuzhiyun } 50*4882a593Smuzhiyun board_eth_init(bd_t * bis)51*4882a593Smuzhiyunint board_eth_init(bd_t *bis) 52*4882a593Smuzhiyun { 53*4882a593Smuzhiyun int ret = 0; 54*4882a593Smuzhiyun 55*4882a593Smuzhiyun #if defined(CONFIG_ETH_DESIGNWARE) 56*4882a593Smuzhiyun u32 interface = PHY_INTERFACE_MODE_MII; 57*4882a593Smuzhiyun if (designware_initialize(CONFIG_SPEAR_ETHBASE, interface) >= 0) 58*4882a593Smuzhiyun ret++; 59*4882a593Smuzhiyun #endif 60*4882a593Smuzhiyun return ret; 61*4882a593Smuzhiyun } 62