[U-Boot-Users] Configuration of the PHY address
Mirco Fuchs
mircofuchs at web.de
Tue Aug 8 19:28:45 CEST 2006
Hi,
I'm operating on an at91rm9200-based board. The AT91RM9200 is
connected to an ethernet PHY via MII interface. The current
implementations of the MII-access functions in ether.c assume, that
the phy's address is 00000. But the address of the PHY that I use
(KS8721) is 00001 by default, so i cannot access the MII-registers
with the this implementation. Apart from that a user could configure
the address of the PHY on his board with pull-ups. I think we need to
set the PHY address explicite when accessing it.
I suggest to introduce a new macro (e. g. CFG_PHY_ADDRESS) that can
be set by the user in the board specific header file.
There are two ways to implement the usage of this macro.
The first is that we use the macro directly in the functions
at91rm9200_EmacWritePhy() and at91rm9200_EmacReadPhy() without
changing any parameters. The advantage is that we can implement it
very easy and very fast. The disadvantage is that we cannot change
the address after compilation (which shouldn't be a problem in most
cases).
The second way is to add a new parameter (e. g. phyadd) to the
EmacWrite and EmacRead function. The PHY driver would be responsible
to set the PHY address when calling these functions. The PHY address
could be taken from CFG_PHY_ADDRESS (like above) or could be set
dynamically (e. g. if we have more than one PHY connected). In
addition to the EmacRead and EmacWrite interface itself, we need to
change all drivers using this function and implement the new
interface in this case.
Which of the suggested ways would you prefer?
Best Regards
Mirco
More information about the U-Boot
mailing list