spear310.c 1.8 KB

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