Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp2557913imu; Thu, 29 Nov 2018 06:53:04 -0800 (PST) X-Google-Smtp-Source: AFSGD/WR+CG4/s4CwcERHSrvamvpMmMT97xSmZ9iAG3vMyDmbkgpLQr2HfX0R81EgoB1ugYjwTHY X-Received: by 2002:a17:902:4d46:: with SMTP id o6mr1683729plh.302.1543503184918; Thu, 29 Nov 2018 06:53:04 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1543503184; cv=none; d=google.com; s=arc-20160816; b=AkKsg3tljbHd4Xlm6qKziEsEl5PgaKxLfy+rH6IExKrDfRXg38i+Je4acxkzSZi3qb hwKDXD8CNu9cFLjiGkAmc9GoXsWhghDitl65j5FU7AhAavtTNZBiRjD4Sy8Iq7HYJR8u 1h42s8O3zneqeh7G02CpW04ho103JkdrWNOLT2R60+c+tIabm15hnIGbW+WIzDkBJhO3 hQ+k5yCu7b7RWMnLpAe1VS7csVBjN6qgwoznpxM01M1xs07dtEDVDBMTcRHVRSMqAf2d 0lJy3RMSmBm5mPFOXXv3zoR2fg0yIZhyqbNdg0uTRClARHj9Er4i+4LQN4rpMi9y9sSY ba9g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=RQrbdin5yiLIsVaKSByNvVak+4TWpjDxitxTieapqTk=; b=t3hKNPImuhUDrqQz3Las/5ELzZyW7TMh4TLKId3NVQRUh3jIKHD1app6GbiAccf7DH co6HRLcdWUz+KLBp2VVJEhtvWFZk7tRB+WypUKtlsIu0f5kjDd+9W0pRzwHx3C34TaMk sMwlsoH8CV3kZuYNv7PI39Lgj+EN8toyQS3nUnzZAo2SfjGcm/0XlroUr9MDfeZW7Zu0 lXvDrJ7Gk2c60UFrEYcejYnN5FkuTRVTaYm/deZrpZYb56yIKGOyXq3JKIgPFf9d3g/S yxHzbp8gVa+sG8f2H7H+D6hvH3D9IajU1tdJI9P0hoXcEZG5pMY6a/Z1U5WThk97yaoO cj3g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=swWwl5Pd; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id e8si2081770pgn.325.2018.11.29.06.52.43; Thu, 29 Nov 2018 06:53:04 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=swWwl5Pd; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732417AbeK3B3T (ORCPT + 99 others); Thu, 29 Nov 2018 20:29:19 -0500 Received: from mail.kernel.org ([198.145.29.99]:55576 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728693AbeK3B3R (ORCPT ); Thu, 29 Nov 2018 20:29:17 -0500 Received: from localhost (5356596B.cm-6-7b.dynamic.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 7F68A2145D; Thu, 29 Nov 2018 14:23:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1543501426; bh=E8aRAhkHmteTihl4UTv0DJMh1+MoLWdfWlgyDXtbKFg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=swWwl5Pd8y92GLwPHJunGHSXtk8vRlwAddw1trs7QWqAXDbijjFIIR7DvdV3XDQLQ J314+nKd/kSIMXEMiM3joFHMvvUFaBloWPi+frsXWfTDGIyUnWDPhf1nAqGBFrFCjE Jo0yjIld332tZP8d51y1igi6OKo9Bkw6t6v+0G3s= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Phil Elwell , "David S. Miller" , Paolo Pisati Subject: [PATCH 4.9 85/92] lan78xx: Read MAC address from DT if present Date: Thu, 29 Nov 2018 15:12:54 +0100 Message-Id: <20181129140113.566351103@linuxfoundation.org> X-Mailer: git-send-email 2.19.2 In-Reply-To: <20181129140106.520639693@linuxfoundation.org> References: <20181129140106.520639693@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.9-stable review patch. If anyone has any objections, please let me know. ------------------ From: Phil Elwell commit 760db29bdc97b73ff60b091315ad787b1deb5cf5 upstream. There is a standard mechanism for locating and using a MAC address from the Device Tree. Use this facility in the lan78xx driver to support applications without programmed EEPROM or OTP. At the same time, regularise the handling of the different address sources. Signed-off-by: Phil Elwell Signed-off-by: David S. Miller Tested-by: Paolo Pisati Signed-off-by: Greg Kroah-Hartman --- drivers/net/usb/lan78xx.c | 42 ++++++++++++++++++++---------------------- 1 file changed, 20 insertions(+), 22 deletions(-) --- a/drivers/net/usb/lan78xx.c +++ b/drivers/net/usb/lan78xx.c @@ -31,6 +31,7 @@ #include #include #include +#include #include "lan78xx.h" #define DRIVER_AUTHOR "WOOJUNG HUH " @@ -1644,34 +1645,31 @@ static void lan78xx_init_mac_address(str addr[5] = (addr_hi >> 8) & 0xFF; if (!is_valid_ether_addr(addr)) { - /* reading mac address from EEPROM or OTP */ - if ((lan78xx_read_eeprom(dev, EEPROM_MAC_OFFSET, ETH_ALEN, - addr) == 0) || - (lan78xx_read_otp(dev, EEPROM_MAC_OFFSET, ETH_ALEN, - addr) == 0)) { - if (is_valid_ether_addr(addr)) { - /* eeprom values are valid so use them */ - netif_dbg(dev, ifup, dev->net, - "MAC address read from EEPROM"); - } else { - /* generate random MAC */ - random_ether_addr(addr); - netif_dbg(dev, ifup, dev->net, - "MAC address set to random addr"); - } - - addr_lo = addr[0] | (addr[1] << 8) | - (addr[2] << 16) | (addr[3] << 24); - addr_hi = addr[4] | (addr[5] << 8); - - ret = lan78xx_write_reg(dev, RX_ADDRL, addr_lo); - ret = lan78xx_write_reg(dev, RX_ADDRH, addr_hi); + if (!eth_platform_get_mac_address(&dev->udev->dev, addr)) { + /* valid address present in Device Tree */ + netif_dbg(dev, ifup, dev->net, + "MAC address read from Device Tree"); + } else if (((lan78xx_read_eeprom(dev, EEPROM_MAC_OFFSET, + ETH_ALEN, addr) == 0) || + (lan78xx_read_otp(dev, EEPROM_MAC_OFFSET, + ETH_ALEN, addr) == 0)) && + is_valid_ether_addr(addr)) { + /* eeprom values are valid so use them */ + netif_dbg(dev, ifup, dev->net, + "MAC address read from EEPROM"); } else { /* generate random MAC */ random_ether_addr(addr); netif_dbg(dev, ifup, dev->net, "MAC address set to random addr"); } + + addr_lo = addr[0] | (addr[1] << 8) | + (addr[2] << 16) | (addr[3] << 24); + addr_hi = addr[4] | (addr[5] << 8); + + ret = lan78xx_write_reg(dev, RX_ADDRL, addr_lo); + ret = lan78xx_write_reg(dev, RX_ADDRH, addr_hi); } ret = lan78xx_write_reg(dev, MAF_LO(0), addr_lo);