From patchwork Mon Jul 4 11:11:06 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Philip Oberfichtner X-Patchwork-Id: 1651944 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=denx.de header.i=@denx.de header.a=rsa-sha256 header.s=phobos-20191101 header.b=xoDuUzct; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Received: from phobos.denx.de (phobos.denx.de [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4Lc37N0SS4z9sFs for ; Mon, 4 Jul 2022 21:12:47 +1000 (AEST) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 32072844C8; Mon, 4 Jul 2022 13:12:45 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=denx.de Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=denx.de; s=phobos-20191101; t=1656933165; bh=rp4ZJmlDoLVC5loSJrvAUs7JdrUS5hrPrtPpaOK6rwM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From; b=xoDuUzctYDYYYFzYfjp1U0CXAj2cBxUOQGWIu0sMRXjG9AFNgDeKDYfeUaM9vvOEO CgY3g2meVDHBXm2/xNivk4lssmZtXJfbhv+NI+BYZ3DMZ3XVCPd5j6dHJkJMlVokN7 ZthGtKVKM3VMactTf7aj0HSCnj8o0tCddJmxRcLMJmoV1Sevj4NXtqtPUvajMeBLID BFxEBLzS1b8bM+a55GwZhjqpGlOdqNo+pITDV7IDp/CgLEMYLAMq/QKptd7D49jVgT oNQintH6YMkClffaPWXh4s4ZcfdnRWlX5k8zbZy8cMkDQd6BNkPHkcociw1AfIBTm4 rLMVu4XqJLvHg== Received: by phobos.denx.de (Postfix, from userid 109) id 54B41844B1; Mon, 4 Jul 2022 13:12:44 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.3 required=5.0 tests=BAYES_00,RDNS_NONE, SPF_HELO_NONE,SPF_NEUTRAL,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.2 Received: from xpert.denx.de (unknown [62.91.23.180]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id AAAC3844CE for ; Mon, 4 Jul 2022 13:12:41 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=denx.de Authentication-Results: phobos.denx.de; spf=fail smtp.mailfrom=pro@denx.de Received: by xpert.denx.de (Postfix, from userid 535) id 624BC3E06E7; Mon, 4 Jul 2022 13:12:41 +0200 (CEST) From: Philip Oberfichtner To: u-boot@lists.denx.de Cc: Simon Glass , festevam@denx.de, u-boot@dh-electronics.com, Marek Vasut , Christoph Niedermaier , sbabic@denx.de, Patrick Delaunay , Patrice Chotard , peng.fan@nxp.com, Philip Oberfichtner , Tom Rini , uboot-stm32@st-md-mailman.stormreply.com Subject: [PATCH 4/4] ARM: stm32: DH: Use common mac address functions Date: Mon, 4 Jul 2022 13:11:06 +0200 Message-Id: <20220704111106.1415208-5-pro@denx.de> X-Mailer: git-send-email 2.35.3 In-Reply-To: <20220704111106.1415208-1-pro@denx.de> References: <20220704111106.1415208-1-pro@denx.de> MIME-Version: 1.0 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.6 at phobos.denx.de X-Virus-Status: Clean To reduce code duplication, let the stm32 based DH boards use the common code for setting up their mac addresses. Signed-off-by: Philip Oberfichtner Tested-by: Marek Vasut --- board/dhelectronics/dh_stm32mp1/board.c | 104 +++++++++++------------- 1 file changed, 47 insertions(+), 57 deletions(-) diff --git a/board/dhelectronics/dh_stm32mp1/board.c b/board/dhelectronics/dh_stm32mp1/board.c index d407f0bf59..5d83d9cd3f 100644 --- a/board/dhelectronics/dh_stm32mp1/board.c +++ b/board/dhelectronics/dh_stm32mp1/board.c @@ -43,6 +43,7 @@ #include #include #include +#include "../common/dh_common.h" #include "../../st/common/stpmic1.h" /* SYSCFG registers */ @@ -90,35 +91,18 @@ DECLARE_GLOBAL_DATA_PTR; #define KS_CIDER 0xC0 #define CIDER_ID 0x8870 -int setup_mac_address(void) -{ - unsigned char enetaddr[6]; - bool skip_eth0 = false; - bool skip_eth1 = false; - struct udevice *dev; - int off, ret; - ret = eth_env_get_enetaddr("ethaddr", enetaddr); - if (ret) /* ethaddr is already set */ - skip_eth0 = true; +static bool dh_stm32_mac_is_in_ks8851(void) +{ + int off; + u32 reg, cider, ccr; off = fdt_path_offset(gd->fdt_blob, "ethernet1"); - if (off < 0) { - /* ethernet1 is not present in the system */ - skip_eth1 = true; - goto out_set_ethaddr; - } + if (off < 0) + return false; - ret = eth_env_get_enetaddr("eth1addr", enetaddr); - if (ret) { - /* eth1addr is already set */ - skip_eth1 = true; - goto out_set_ethaddr; - } - - ret = fdt_node_check_compatible(gd->fdt_blob, off, "micrel,ks8851-mll"); - if (ret) - goto out_set_ethaddr; + if (fdt_node_check_compatible(gd->fdt_blob, off, "micrel,ks8851-mll")) + return false; /* * KS8851 with EEPROM may use custom MAC from EEPROM, read @@ -126,56 +110,62 @@ int setup_mac_address(void) * is present. If EEPROM is present, it must contain valid * MAC address. */ - u32 reg, cider, ccr; reg = fdt_get_base_address(gd->fdt_blob, off); if (!reg) - goto out_set_ethaddr; + return false; writew(KS_BE0 | KS_BE1 | KS_CIDER, reg + 2); cider = readw(reg); - if ((cider & 0xfff0) != CIDER_ID) { - skip_eth1 = true; - goto out_set_ethaddr; - } + if ((cider & 0xfff0) != CIDER_ID) + return true; writew(KS_BE0 | KS_BE1 | KS_CCR, reg + 2); ccr = readw(reg); - if (ccr & KS_CCR_EEPROM) { - skip_eth1 = true; - goto out_set_ethaddr; - } + if (ccr & KS_CCR_EEPROM) + return true; + + return false; +} + +static int dh_stm32_setup_ethaddr(void) +{ + unsigned char enetaddr[6]; -out_set_ethaddr: - if (skip_eth0 && skip_eth1) + if (dh_mac_is_in_env("ethaddr")) return 0; - off = fdt_path_offset(gd->fdt_blob, "eeprom0"); - if (off < 0) { - printf("%s: No eeprom0 path offset\n", __func__); - return off; - } + if (!dh_get_mac_from_eeprom(enetaddr, "eeprom0")) + return eth_env_set_enetaddr("ethaddr", enetaddr); - ret = uclass_get_device_by_of_offset(UCLASS_I2C_EEPROM, off, &dev); - if (ret) { - printf("Cannot find EEPROM!\n"); - return ret; - } + return -ENXIO; +} - ret = i2c_eeprom_read(dev, 0xfa, enetaddr, 0x6); - if (ret) { - printf("Error reading configuration EEPROM!\n"); - return ret; - } +static int dh_stm32_setup_eth1addr(void) +{ + unsigned char enetaddr[6]; - if (is_valid_ethaddr(enetaddr)) { - if (!skip_eth0) - eth_env_set_enetaddr("ethaddr", enetaddr); + if (dh_mac_is_in_env("eth1addr")) + return 0; + + if (dh_stm32_mac_is_in_ks8851()) + return 0; + if (!dh_get_mac_from_eeprom(enetaddr, "eeprom0")) { enetaddr[5]++; - if (!skip_eth1) - eth_env_set_enetaddr("eth1addr", enetaddr); + return eth_env_set_enetaddr("eth1addr", enetaddr); } + return -ENXIO; +} + +int setup_mac_address(void) +{ + if (dh_stm32_setup_ethaddr()) + printf("%s: Unable to setup ethaddr!\n", __func__); + + if (dh_stm32_setup_eth1addr()) + printf("%s: Unable to setup eth1addr!\n", __func__); + return 0; }