The FMan micro-code is needed for anything that runs on the FMan Controller.
FMAN ucode is loaded by fman_upload_firmware in u-boot source code drivers/net/fm/fm.c.
FMAN ucode is loaded in FMAN common part initialization.
Please refer to the following, when boot from NOR flash FMAN ucode is loaded from address 0xEFF00000 on NOR flash directly. For NAND, SPI and SD boot, the FMAN ucode will be copied to RAM allocated by malloc function.
#if defined(CONFIG_SYS_QE_FMAN_FW_IN_NOR)
void *addr = (void *)CONFIG_SYS_FMAN_FW_ADDR;
#elif defined(CONFIG_SYS_QE_FMAN_FW_IN_NAND)
size_t fw_length = CONFIG_SYS_QE_FMAN_FW_LENGTH;
void *addr = malloc(CONFIG_SYS_QE_FMAN_FW_LENGTH);
rc = nand_read(nand_info[0], (loff_t)CONFIG_SYS_FMAN_FW_ADDR,
&fw_length, (u_char *)addr);
if (rc == -EUCLEAN) {
printf("NAND read of FMAN firmware at offset 0x%x failed %d\n",
CONFIG_SYS_FMAN_FW_ADDR, rc);
}