]> git.karo-electronics.de Git - karo-tx-uboot.git/blobdiff - doc/README.enetaddr
dm: regulator: add max77686 regulator driver
[karo-tx-uboot.git] / doc / README.enetaddr
index 1d75aa3876efc8c47bbe9e6c76963ef0ec105bf0..0fafd2cdcd5f575796c69fc3fe97c085d4a666b4 100644 (file)
@@ -28,6 +28,23 @@ Here are the places where MAC addresses might be stored:
              purpose of passing this information to an OS kernel we are about
              to boot
 
+Correct flow of setting up the MAC address (summarized):
+
+1. Read from hardware in initialize() function
+2. Read from environment in net/eth.c after initialize()
+3. The environment variable will be compared to the driver initialized
+   struct eth_device->enetaddr. If they differ, a warning is printed, and the
+   environment variable will be used unchanged.
+   If the environment variable is not set, it will be initialized from
+   eth_device->enetaddr, and a warning will be printed.
+4. Program the address into hardware if the following conditions are met:
+       a) The relevant driver has a 'write_addr' function
+       b) The user hasn't set an 'ethmacskip' environment variable
+       c) The address is valid (unicast, not all-zeros)
+
+Previous behavior had the MAC address always being programmed into hardware
+in the device's init() function.
+
 -------
  Usage
 -------
@@ -70,7 +87,7 @@ eth_parse_enetaddr(addr, enetaddr);
 Look up an environment variable and convert the stored address.  If the address
 is valid, then the function returns 1.  Otherwise, the function returns 0.  In
 all cases, the enetaddr memory is initialized.  If the env var is not found,
-then it is set to all zeros.  The common function is_valid_ether_addr() is used
+then it is set to all zeros.  The common function is_valid_ethaddr() is used
 to determine address validity.
 uchar enetaddr[6];
 if (!eth_getenv_enetaddr("ethaddr", enetaddr)) {