Алгоритм инициализации phy в u-boot

Как то одно время очень долго разбирался с инициализацией phy в юбут и чтобы не забыть весь этот гемор написал этот рассказ.

Описание того как ведут себя сетевые интерфейсы в u-boot.

Если на платке два сетевых интерфейса, подключенных через разные микросхемы phy. После включения питания инициализируется первый интерфейс и если на нем есть линк, то инициализация второго не выполняется. Если линка нет то инициализируется второй.

Что происходит с клоками на шине rmii?

Описывается ситуация когда на платке два сетевых интерфейса. Первый подключен к 88e1111 второй к другому phy.

Описание поведения сигналов следует разделить на две части.

1. Кабель езернет НЕ подключен к первому разъему при включении питания и загрузке u-boot. U-boot стартанул и переключился на второй эзернет сделав первый не активным (для просмотра текущего активного
интерфейса: (=> printenv ethact)

Поведение клоков:
а. при отсутвии линка. на клоке ОТ 88e1111 шины rmii стоит частота 125мгц.
на клоке К 88e1111 шины rmii стоит частота 125мгц.

б. при подключении кабеля в разъем эзернет. на клоке ОТ 88e1111 шины rmii получаем ту частоту на которой происходит линк.

так например:
при линке 1Гбт частота - 125мгц
при линке 100Мбит частота - 25мгц

на клоке К 88e1111 шины rmii стоит частота 125мгц.

2. Кабель езернет подключен к первому разъему при включении питания и загрузке u-boot. U-boot стартанул и остановился на первом интерфейсе сделав его активным. (для просмотра текущего активного
интерфейса: (=> printenv ethact)

Поведение клоков:

а. при отсутвии линка. на клоке ОТ 88e1111 шины rmii стоит частота 125мгц.
на клоке К 88e1111 шины rmii стоит частота на которой был линк при загрузке u-boot и при инициализации сетевого интерфейса.

так например:
при линке 1Гбт частота - 125мгц
при линке 100Мбит частота - 25мгц

б. при подключении кабеля в разъем эзернет. на клоке ОТ 88e1111 шины rmii получаем ту частоту на которой происходит линк.

так например:
при линке 1Гбт частота - 125мгц
при линке 100Мбит частота - 25мгц

на клоке К 88e1111 шины rmii стоит частота на которой был линк ПРИ ЗАГРУЗКЕ u-boot и при инициализации сетевого интерфейса.

так например:
при линке 1Гбт частота - 125мгц
при линке 100Мбит частота - 25мгц

Еще один вид поведения клока это когда к сетевому интерфейсу не подключен phy, т.е. дорожки висят в воздухе.
на клоке ОТ 88e1111 шины rmii стоит частота 125мгц.
на клоке К 88e1111 шины rmii видим 0.

И вариант когда u-boot прогрузился проинициализировав первый интерфейс и сделав его активным. На втором интерфейсе на обоих клоках видим 125мгц