Pergunta 2: Acredito que essas impressões são do uboot. Se assim for, eu acredito que você tem "CONFIG_PHY_RESET" definido - você poderia por favor verificar sua configuração do uboot para isso? Para desativar esse recurso, você provavelmente teria que verificar sua configuração, geralmente algo semelhante a: ./include/configs/YourBoardConfigFile.h, é o que o uboot usaria.
Uma das outras respostas foi chamada para usar o Kconfig - eu verifiquei o menuconfig do meu uboot e essa opção não estava presente.
Se você der uma olhada no arquivo de origem do uboot: ./drivers/net/4xx_enet.c , procure por "CONFIG_PHY_RESET", parece que o código está sendo executado:
#if defined(CONFIG_PHY_RESET)
/*
* Reset the phy, only if its the first time through
* otherwise, just check the speeds & feeds
*/
if (hw_p->first_init == 0) {
Logo em seguida, você pode ver a mensagem "Aguardando PHY auto negotiation to complete" ser impressa, por isso deve estar exatamente onde está o seu problema (ou próximo a ele - havia alguns outros arquivos que tiveram inicialização semelhante dependendo da arquitetura) ).
Por algum motivo, o LEIAME arquivo na fonte de alto nível do uboot chama CONFIG_PHY_RESET_DELAY, mas não CONFIG_PHY_RESET, então você pode ter perdido lá.
Pergunta 3: Se o CONFIG_PHY_RESET é o problema, então isso precisa ser definido em tempo de compilação. Você deve ser capaz de baixar a fonte uBoot da Xilinx para o seu fórum.
Não sei por que a redefinição é necessária, então realmente não respondi à pergunta 1 da sua, mas parece que alguns PHYs têm requisitos diferentes para serem redefinidos na inicialização e até mesmo alguns precisam de uma certa quantidade de atraso.