| // SPDX-License-Identifier: (GPL-2.0+ OR MIT) |
| * Copyright (c) 2018 Microsemi Corporation |
| static inline int vcoreiii_train_bytelane(void) |
| ret = hal_vcoreiii_train_bytelane(0); |
| ret = hal_vcoreiii_train_bytelane(1); |
| int vcoreiii_ddr_init(void) |
| if (!(readl(BASE_CFG + ICPU_MEMCTRL_STAT) |
| & ICPU_MEMCTRL_STAT_INIT_DONE)) { |
| hal_vcoreiii_init_memctl(); |
| hal_vcoreiii_wait_memctl(); |
| if (hal_vcoreiii_init_dqs() || vcoreiii_train_bytelane()) |
| hal_vcoreiii_ddr_failed(); |
| #if (CONFIG_SYS_TEXT_BASE != 0x20000000) |
| hal_vcoreiii_ddr_verified(); |
| hal_vcoreiii_ddr_failed(); |
| /* Clear boot-mode and read-back to activate/verify */ |
| clrbits_le32(BASE_CFG + ICPU_GENERAL_CTRL, |
| ICPU_GENERAL_CTRL_BOOT_MODE_ENA); |
| readl(BASE_CFG + ICPU_GENERAL_CTRL); |
| printf("MSCC VCore-III MIPS 24Kec\n"); |
| while (vcoreiii_ddr_init()) |
| gd->ram_size = CONFIG_SYS_SDRAM_SIZE; |