diff --git a/arch/arm/mach-tegra/cboot.c b/arch/arm/mach-tegra/cboot.c
index 0433081c6c55ce69925441a32f37946bac0919fd..0762144ecf4a3e843d79e9a0fdf00e68aa8e9bea 100644
--- a/arch/arm/mach-tegra/cboot.c
+++ b/arch/arm/mach-tegra/cboot.c
@@ -495,7 +495,7 @@ static int cboot_get_ethaddr_legacy(const void *fdt, uint8_t mac[ETH_ALEN])
 		return -ENOENT;
 	}
 
-	eth_parse_enetaddr(prop, mac);
+	string_to_enetaddr(prop, mac);
 
 	if (!is_valid_ethaddr(mac)) {
 		printf("Invalid MAC address: %s\n", prop);
diff --git a/board/renesas/sh7752evb/sh7752evb.c b/board/renesas/sh7752evb/sh7752evb.c
index d675f65c127132b1b8c2edb9e0552152bc0759e7..203eecf3d6d82c8c9fdbf45ebfaec65df50fcced 100644
--- a/board/renesas/sh7752evb/sh7752evb.c
+++ b/board/renesas/sh7752evb/sh7752evb.c
@@ -94,7 +94,7 @@ static void set_mac_to_sh_giga_eth_register(int channel, char *mac_string)
 	unsigned char mac[6];
 	unsigned long val;
 
-	eth_parse_enetaddr(mac_string, mac);
+	string_to_enetaddr(mac_string, mac);
 
 	if (!channel)
 		ether = GETHER0_MAC_BASE;
diff --git a/board/renesas/sh7753evb/sh7753evb.c b/board/renesas/sh7753evb/sh7753evb.c
index 43e13829f38c6f957aba478ebac60b97482307d7..0b118b2f65df6c26fed066af8b583d3d22879e2c 100644
--- a/board/renesas/sh7753evb/sh7753evb.c
+++ b/board/renesas/sh7753evb/sh7753evb.c
@@ -101,7 +101,7 @@ static void set_mac_to_sh_giga_eth_register(int channel, char *mac_string)
 	unsigned char mac[6];
 	unsigned long val;
 
-	eth_parse_enetaddr(mac_string, mac);
+	string_to_enetaddr(mac_string, mac);
 
 	if (!channel)
 		ether = GETHER0_MAC_BASE;
diff --git a/board/renesas/sh7757lcr/sh7757lcr.c b/board/renesas/sh7757lcr/sh7757lcr.c
index 1d7ed9977ee9d7a12c99de817df1873a28e383a2..e8d1fdd03fa206862e67a96d43505835b606c511 100644
--- a/board/renesas/sh7757lcr/sh7757lcr.c
+++ b/board/renesas/sh7757lcr/sh7757lcr.c
@@ -141,7 +141,7 @@ static void set_mac_to_sh_eth_register(int channel, char *mac_string)
 	unsigned char mac[6];
 	unsigned long val;
 
-	eth_parse_enetaddr(mac_string, mac);
+	string_to_enetaddr(mac_string, mac);
 
 	if (!channel)
 		ether = ETHER0_MAC_BASE;
@@ -160,7 +160,7 @@ static void set_mac_to_sh_giga_eth_register(int channel, char *mac_string)
 	unsigned char mac[6];
 	unsigned long val;
 
-	eth_parse_enetaddr(mac_string, mac);
+	string_to_enetaddr(mac_string, mac);
 
 	if (!channel)
 		ether = GETHER0_MAC_BASE;
diff --git a/cmd/ethsw.c b/cmd/ethsw.c
index 884680579975f6911bfdfb3b713b93c91e2f090f..8d271ce1f3cd49efeb0e1d51466b063ea5a66af1 100644
--- a/cmd/ethsw.c
+++ b/cmd/ethsw.c
@@ -864,7 +864,7 @@ static int keyword_match_mac_addr(enum ethsw_keyword_id key_id, int argc,
 		return 0;
 	}
 
-	eth_parse_enetaddr(argv[*argc_nr + 1], parsed_cmd->ethaddr);
+	string_to_enetaddr(argv[*argc_nr + 1], parsed_cmd->ethaddr);
 
 	if (is_broadcast_ethaddr(parsed_cmd->ethaddr)) {
 		memset(parsed_cmd->ethaddr, 0xFF, sizeof(parsed_cmd->ethaddr));
diff --git a/cmd/nvedit.c b/cmd/nvedit.c
index 3420e0b985b984fd50a581666f787592d10c5d06..81d94cd193c6dd6c03d4c843cc6cae2a1284575a 100644
--- a/cmd/nvedit.c
+++ b/cmd/nvedit.c
@@ -361,7 +361,7 @@ ulong env_get_hex(const char *varname, ulong default_val)
 
 int eth_env_get_enetaddr(const char *name, uint8_t *enetaddr)
 {
-	eth_parse_enetaddr(env_get(name), enetaddr);
+	string_to_enetaddr(env_get(name), enetaddr);
 	return is_valid_ethaddr(enetaddr);
 }
 
diff --git a/doc/README.enetaddr b/doc/README.enetaddr
index f9264859866c1ca57cd927b00d96e3960fbad756..5baa9f21798777859f7f919048bb78890e113307 100644
--- a/doc/README.enetaddr
+++ b/doc/README.enetaddr
@@ -76,12 +76,12 @@ To assist in the management of these layers, a few helper functions exist.  You
 should use these rather than attempt to do any kind of parsing/manipulation
 yourself as many common errors have arisen in the past.
 
-	* void eth_parse_enetaddr(const char *addr, uchar *enetaddr);
+	* void string_to_enetaddr(const char *addr, uchar *enetaddr);
 
 Convert a string representation of a MAC address to the binary version.
 char *addr = "00:11:22:33:44:55";
 uchar enetaddr[6];
-eth_parse_enetaddr(addr, enetaddr);
+string_to_enetaddr(addr, enetaddr);
 /* enetaddr now equals { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55 } */
 
 	* int eth_env_get_enetaddr(char *name, uchar *enetaddr);
diff --git a/include/net.h b/include/net.h
index 11eca1bc6c33d3eedf1a80b614af542e08e6fcf2..22c83bc21375fa8cd30de5bccef2946f0f103000 100644
--- a/include/net.h
+++ b/include/net.h
@@ -826,6 +826,19 @@ static inline void net_random_ethaddr(uchar *addr)
 	addr[0] |= 0x02;	/* set local assignment bit (IEEE802) */
 }
 
+/**
+ * string_to_enetaddr() - Parse a MAC address
+ *
+ * Convert a string MAC address
+ *
+ * Implemented in lib/net_utils.c (built unconditionally)
+ *
+ * @addr: MAC address in aa:bb:cc:dd:ee:ff format, where each part is a 2-digit
+ *	hex value
+ * @enetaddr: Place to put MAC address (6 bytes)
+ */
+void string_to_enetaddr(const char *addr, uint8_t *enetaddr);
+
 /* Convert an IP address to a string */
 void ip_to_string(struct in_addr x, char *s);
 
@@ -880,19 +893,6 @@ unsigned int random_port(void);
  */
 int update_tftp(ulong addr, char *interface, char *devstring);
 
-/**********************************************************************/
-
-/**
- * eth_parse_enetaddr() - Parse a MAC address
- *
- * Convert a string MAC address
- *
- * @addr: MAC address in aa:bb:cc:dd:ee:ff format, where each part is a 2-digit
- *	hex value
- * @enetaddr: Place to put MAC address (6 bytes)
- */
-void eth_parse_enetaddr(const char *addr, uint8_t *enetaddr);
-
 /**
  * env_get_ip() - Convert an environment value to to an ip address
  *
@@ -905,5 +905,4 @@ static inline struct in_addr env_get_ip(char *var)
 {
 	return string_to_ip(env_get(var));
 }
-
 #endif /* __NET_H__ */
diff --git a/lib/net_utils.c b/lib/net_utils.c
index 9fb9d4a4b05fc19a492f3f4bb66e9826879600d0..ed5044c3deca90a05fee272cf119c4a4512dd2ed 100644
--- a/lib/net_utils.c
+++ b/lib/net_utils.c
@@ -41,3 +41,18 @@ struct in_addr string_to_ip(const char *s)
 	addr.s_addr = htonl(addr.s_addr);
 	return addr;
 }
+
+void string_to_enetaddr(const char *addr, uint8_t *enetaddr)
+{
+	char *end;
+	int i;
+
+	if (!enetaddr)
+		return;
+
+	for (i = 0; i < 6; ++i) {
+		enetaddr[i] = addr ? simple_strtoul(addr, &end, 16) : 0;
+		if (addr)
+			addr = (*end) ? end + 1 : end;
+	}
+}
diff --git a/net/eth-uclass.c b/net/eth-uclass.c
index 3bd98b01ad32ac097754c5c3ff78b1b485a32cfb..9fe4096120ea1985876f2f30b653315167d914ce 100644
--- a/net/eth-uclass.c
+++ b/net/eth-uclass.c
@@ -227,7 +227,7 @@ static int on_ethaddr(const char *name, const char *value, enum env_op op,
 		switch (op) {
 		case env_op_create:
 		case env_op_overwrite:
-			eth_parse_enetaddr(value, pdata->enetaddr);
+			string_to_enetaddr(value, pdata->enetaddr);
 			eth_write_hwaddr(dev);
 			break;
 		case env_op_delete:
diff --git a/net/eth_legacy.c b/net/eth_legacy.c
index 41f52635266280360a6e848f752556c7aed011f6..5d6b0d7d7f4599a640668b28bcfa462a8de4c987 100644
--- a/net/eth_legacy.c
+++ b/net/eth_legacy.c
@@ -117,7 +117,7 @@ static int on_ethaddr(const char *name, const char *value, enum env_op op,
 			switch (op) {
 			case env_op_create:
 			case env_op_overwrite:
-				eth_parse_enetaddr(value, dev->enetaddr);
+				string_to_enetaddr(value, dev->enetaddr);
 				eth_write_hwaddr(dev, "eth", dev->index);
 				break;
 			case env_op_delete:
diff --git a/net/net.c b/net/net.c
index 0513444eb78fc670d3d24cde8ff94472d13ab467..284ae1bd6bff7536780e93541235f22cd60de871 100644
--- a/net/net.c
+++ b/net/net.c
@@ -1625,15 +1625,3 @@ ushort env_get_vlan(char *var)
 {
 	return string_to_vlan(env_get(var));
 }
-
-void eth_parse_enetaddr(const char *addr, uint8_t *enetaddr)
-{
-	char *end;
-	int i;
-
-	for (i = 0; i < 6; ++i) {
-		enetaddr[i] = addr ? simple_strtoul(addr, &end, 16) : 0;
-		if (addr)
-			addr = (*end) ? end + 1 : end;
-	}
-}