From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Cyrus-Session-Id: sloti22d1t05-3414120-1524151117-2-8305531326139256721 X-Sieve: CMU Sieve 3.0 X-Spam-known-sender: no X-Spam-score: 0.0 X-Spam-hits: BAYES_00 -1.9, HEADER_FROM_DIFFERENT_DOMAINS 0.25, MAILING_LIST_MULTI -1, RCVD_IN_DNSWL_HI -5, LANGUAGES en, BAYES_USED global, SA_VERSION 3.4.0 X-Spam-source: IP='209.132.180.67', Host='vger.kernel.org', Country='US', FromHeader='org', MailFrom='org' X-Spam-charsets: X-Resolved-to: greg@kroah.com X-Delivered-to: greg@kroah.com X-Mail-from: linux-usb-owner@vger.kernel.org ARC-Seal: i=1; a=rsa-sha256; cv=none; d=messagingengine.com; s=fm2; t= 1524151116; b=s9qgfmV/K1L6H1OmEh0agBGeQ3xe3FAJx+kg7VhuHHDhdtcOG+ HBd2QWbq0yFu7rRlkYF2mbWovh+9p94DkY4zfkYgmoYSv3fI0uRGMPUbrSQWYVIP 5abAyFD92uPKvPbHq+VPDdpTRhOf/vJrGcWSvpeUsi5yjGjv3FdcGChShsfsY7Rg Lmm3eXfzno7GGWp1MLfRVR4A4BzGXikXQOnumz2RK2oM8URONatyYeOYQNeunMV5 ad/7eLoShzwMirXXCUga6HG9zoEnDWH7WuRx9P4msuPFv/4m58Yq8wTP2ui3T8Su sZfFKMMeNATxj9zZtgDRxP5Md2waMRKGXgSg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=from:to:subject:date:message-id :in-reply-to:references:sender:list-id; s=fm2; t=1524151116; bh= n2Ws518Owa3IJI4hXcC0im34gO1xAMBClQVZY2WFtPc=; b=qvwf9vwtiDX91Zzs KKgDAr9NqBUY0nsWNz4Hlnxz8wkYX1coiA6wtJXeaP7WNo9VmI9yHo7UB+p71pLS ZvpVVLTb2YliwFNAEs6U48gQFeu6AfWq4B0rdyPOQ9M/K7yLNLicvufqgPXtldQA aqqXoeDJay+AV9CuBcKggQ7K1Ka8l0K3cI89NQvuSqfR25HJLZ2dZ/Y1k+0uFxXK zz1725/WhOKMJBXTEBfC8di5NbFcEXtSLwbEtBSGSf0S83Kr/r2FA038I26A3iCS a6OCeMBxSbaup8GF+1vWlu6E+X9epd9ZKWEwnDfSeU8yc5vdB++RXXtnLYmAjX7M +/2MNA== ARC-Authentication-Results: i=1; mx4.messagingengine.com; arc=none (no signatures found); dkim=fail (body has been altered, 2048-bit rsa key sha256) header.d=raspberrypi-org.20150623.gappssmtp.com header.i=@raspberrypi-org.20150623.gappssmtp.com header.b=y9KINavL x-bits=2048 x-keytype=rsa x-algorithm=sha256 x-selector=20150623; dkim=invalid (public key: invalid data, 0-bit key sha256) header.d=raspberrypi.org header.i=@raspberrypi.org header.b=C5kJgj1C x-bits=0 x-keytype="" x-algorithm=sha256 x-selector=pp; dmarc=none (p=none,has-list-id=yes,d=none) header.from=raspberrypi.org; iprev=pass policy.iprev=209.132.180.67 (vger.kernel.org); spf=none smtp.mailfrom=linux-usb-owner@vger.kernel.org smtp.helo=vger.kernel.org; x-aligned-from=fail; x-cm=none score=0; x-google-dkim=fail (body has been altered, 2048-bit rsa key) header.d=1e100.net header.i=@1e100.net header.b=RdMdfpbO; x-ptr=pass x-ptr-helo=vger.kernel.org x-ptr-lookup=vger.kernel.org; x-return-mx=pass smtp.domain=vger.kernel.org smtp.result=pass smtp_org.domain=kernel.org smtp_org.result=pass smtp_is_org_domain=no header.domain=raspberrypi.org header.result=pass header_is_org_domain=yes; x-vs=clean score=-100 state=0 Authentication-Results: mx4.messagingengine.com; arc=none (no signatures found); dkim=fail (body has been altered, 2048-bit rsa key sha256) header.d=raspberrypi-org.20150623.gappssmtp.com header.i=@raspberrypi-org.20150623.gappssmtp.com header.b=y9KINavL x-bits=2048 x-keytype=rsa x-algorithm=sha256 x-selector=20150623; dkim=invalid (public key: invalid data, 0-bit key sha256) header.d=raspberrypi.org header.i=@raspberrypi.org header.b=C5kJgj1C x-bits=0 x-keytype="" x-algorithm=sha256 x-selector=pp; dmarc=none (p=none,has-list-id=yes,d=none) header.from=raspberrypi.org; iprev=pass policy.iprev=209.132.180.67 (vger.kernel.org); spf=none smtp.mailfrom=linux-usb-owner@vger.kernel.org smtp.helo=vger.kernel.org; x-aligned-from=fail; x-cm=none score=0; x-google-dkim=fail (body has been altered, 2048-bit rsa key) header.d=1e100.net header.i=@1e100.net header.b=RdMdfpbO; x-ptr=pass x-ptr-helo=vger.kernel.org x-ptr-lookup=vger.kernel.org; x-return-mx=pass smtp.domain=vger.kernel.org smtp.result=pass smtp_org.domain=kernel.org smtp_org.result=pass smtp_is_org_domain=no header.domain=raspberrypi.org header.result=pass header_is_org_domain=yes; x-vs=clean score=-100 state=0 X-ME-VSCategory: clean X-CM-Envelope: MS4wfDJGVPXcJARRp3zoqjSVC8tfT/44j9CqqoquP5NxC9GmtXCWfxv1YOLxtN3y17MPtGoB1LBTb34/SAvqhHHaZS887Ast/sbQCDaE8ZgA2jaevvWCIAxt nPQnGFhUosQRbSPxcFNQoGg1ATkiEaeYU+t773BvN7UKA9CzPMj46x5JRyoW5GAqUPU5o7rgIClqN34Sw8gYdf3pet6kSUJ3QN/IsvDD9MkAdzW9RrVvPqGW X-CM-Analysis: v=2.3 cv=JLoVTfCb c=1 sm=1 tr=0 a=UK1r566ZdBxH71SXbqIOeA==:117 a=UK1r566ZdBxH71SXbqIOeA==:17 a=xqWC_Br6kY4A:10 a=Kd1tUaAdevIA:10 a=WFZIRff2AAAA:8 a=XYAwZIGsAAAA:8 a=VwQbUJbxAAAA:8 a=ROtsYTQvONTiMNvWuDkA:9 a=HoxxFJXVrSfGih9s:21 a=zI8jaF3KVClHV97Q:21 a=x8gzFH9gYPwA:10 a=E8ToXWR_bxluHZ7gmE-Z:22 a=AjGcO6oz07-iQ99wixmX:22 X-ME-CMScore: 0 X-ME-CMCategory: none Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753002AbeDSPSH (ORCPT ); Thu, 19 Apr 2018 11:18:07 -0400 Received: from mx08-00252a01.pphosted.com ([91.207.212.211]:56652 "EHLO mx08-00252a01.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752640AbeDSPSD (ORCPT ); Thu, 19 Apr 2018 11:18:03 -0400 X-Google-Smtp-Source: AIpwx4853ZM7mFRLnRq4PWVVHo0HwhvDlWP0Cu8grfCoZzjiXcQxnDIFER+MbYGR2eeSlAI9XyQjOA== From: Phil Elwell To: Woojung Huh , Microchip Linux Driver Support , Rob Herring , Mark Rutland , Andrew Lunn , Florian Fainelli , "David S. Miller" , Mauro Carvalho Chehab , Greg Kroah-Hartman , Linus Walleij , Andrew Morton , Randy Dunlap , Phil Elwell , netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-usb@vger.kernel.org Subject: [PATCH resend v3 1/3] lan78xx: Read MAC address from DT if present Date: Thu, 19 Apr 2018 16:16:57 +0100 Message-Id: <1524151019-82823-2-git-send-email-phil@raspberrypi.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1524151019-82823-1-git-send-email-phil@raspberrypi.org> References: <1524151019-82823-1-git-send-email-phil@raspberrypi.org> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:,, definitions=2018-04-19_05:,, signatures=0 Sender: linux-usb-owner@vger.kernel.org X-Mailing-List: linux-usb@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-Mailing-List: linux-kernel@vger.kernel.org List-ID: 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 --- drivers/net/usb/lan78xx.c | 42 ++++++++++++++++++++---------------------- 1 file changed, 20 insertions(+), 22 deletions(-) diff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c index 0867f72..a823f01 100644 --- a/drivers/net/usb/lan78xx.c +++ b/drivers/net/usb/lan78xx.c @@ -37,6 +37,7 @@ #include #include #include +#include #include "lan78xx.h" #define DRIVER_AUTHOR "WOOJUNG HUH " @@ -1652,34 +1653,31 @@ static void lan78xx_init_mac_address(struct lan78xx_net *dev) 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); -- 2.7.4 From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [resend,v3,1/3] lan78xx: Read MAC address from DT if present From: Phil Elwell Message-Id: <1524151019-82823-2-git-send-email-phil@raspberrypi.org> Date: Thu, 19 Apr 2018 16:16:57 +0100 To: Woojung Huh , Microchip Linux Driver Support , Rob Herring , Mark Rutland , Andrew Lunn , Florian Fainelli , "David S. Miller" , Mauro Carvalho Chehab , Greg Kroah-Hartman , Linus Walleij , Andrew Morton , Randy Dunlap , Phil Elwell , netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-usb@vger.kernel.org List-ID: VGhlcmUgaXMgYSBzdGFuZGFyZCBtZWNoYW5pc20gZm9yIGxvY2F0aW5nIGFuZCB1c2luZyBhIE1B QyBhZGRyZXNzIGZyb20KdGhlIERldmljZSBUcmVlLiBVc2UgdGhpcyBmYWNpbGl0eSBpbiB0aGUg bGFuNzh4eCBkcml2ZXIgdG8gc3VwcG9ydAphcHBsaWNhdGlvbnMgd2l0aG91dCBwcm9ncmFtbWVk IEVFUFJPTSBvciBPVFAuIEF0IHRoZSBzYW1lIHRpbWUsCnJlZ3VsYXJpc2UgdGhlIGhhbmRsaW5n IG9mIHRoZSBkaWZmZXJlbnQgYWRkcmVzcyBzb3VyY2VzLgoKU2lnbmVkLW9mZi1ieTogUGhpbCBF bHdlbGwgPHBoaWxAcmFzcGJlcnJ5cGkub3JnPgotLS0KIGRyaXZlcnMvbmV0L3VzYi9sYW43OHh4 LmMgfCA0MiArKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmls ZSBjaGFuZ2VkLCAyMCBpbnNlcnRpb25zKCspLCAyMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jIGIvZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYwpp bmRleCAwODY3ZjcyLi5hODIzZjAxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC91c2IvbGFuNzh4 eC5jCisrKyBiL2RyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMKQEAgLTM3LDYgKzM3LDcgQEAKICNp bmNsdWRlIDxsaW51eC9pcnFjaGlwL2NoYWluZWRfaXJxLmg+CiAjaW5jbHVkZSA8bGludXgvbWlj cm9jaGlwcGh5Lmg+CiAjaW5jbHVkZSA8bGludXgvcGh5Lmg+CisjaW5jbHVkZSA8bGludXgvb2Zf bmV0Lmg+CiAjaW5jbHVkZSAibGFuNzh4eC5oIgogCiAjZGVmaW5lIERSSVZFUl9BVVRIT1IJIldP T0pVTkcgSFVIIDx3b29qdW5nLmh1aEBtaWNyb2NoaXAuY29tPiIKQEAgLTE2NTIsMzQgKzE2NTMs MzEgQEAgc3RhdGljIHZvaWQgbGFuNzh4eF9pbml0X21hY19hZGRyZXNzKHN0cnVjdCBsYW43OHh4 X25ldCAqZGV2KQogCWFkZHJbNV0gPSAoYWRkcl9oaSA+PiA4KSAmIDB4RkY7CiAKIAlpZiAoIWlz X3ZhbGlkX2V0aGVyX2FkZHIoYWRkcikpIHsKLQkJLyogcmVhZGluZyBtYWMgYWRkcmVzcyBmcm9t IEVFUFJPTSBvciBPVFAgKi8KLQkJaWYgKChsYW43OHh4X3JlYWRfZWVwcm9tKGRldiwgRUVQUk9N X01BQ19PRkZTRVQsIEVUSF9BTEVOLAotCQkJCQkgYWRkcikgPT0gMCkgfHwKLQkJICAgIChsYW43 OHh4X3JlYWRfb3RwKGRldiwgRUVQUk9NX01BQ19PRkZTRVQsIEVUSF9BTEVOLAotCQkJCSAgICAg IGFkZHIpID09IDApKSB7Ci0JCQlpZiAoaXNfdmFsaWRfZXRoZXJfYWRkcihhZGRyKSkgewotCQkJ CS8qIGVlcHJvbSB2YWx1ZXMgYXJlIHZhbGlkIHNvIHVzZSB0aGVtICovCi0JCQkJbmV0aWZfZGJn KGRldiwgaWZ1cCwgZGV2LT5uZXQsCi0JCQkJCSAgIk1BQyBhZGRyZXNzIHJlYWQgZnJvbSBFRVBS T00iKTsKLQkJCX0gZWxzZSB7Ci0JCQkJLyogZ2VuZXJhdGUgcmFuZG9tIE1BQyAqLwotCQkJCXJh bmRvbV9ldGhlcl9hZGRyKGFkZHIpOwotCQkJCW5ldGlmX2RiZyhkZXYsIGlmdXAsIGRldi0+bmV0 LAotCQkJCQkgICJNQUMgYWRkcmVzcyBzZXQgdG8gcmFuZG9tIGFkZHIiKTsKLQkJCX0KLQotCQkJ YWRkcl9sbyA9IGFkZHJbMF0gfCAoYWRkclsxXSA8PCA4KSB8Ci0JCQkJICAoYWRkclsyXSA8PCAx NikgfCAoYWRkclszXSA8PCAyNCk7Ci0JCQlhZGRyX2hpID0gYWRkcls0XSB8IChhZGRyWzVdIDw8 IDgpOwotCi0JCQlyZXQgPSBsYW43OHh4X3dyaXRlX3JlZyhkZXYsIFJYX0FERFJMLCBhZGRyX2xv KTsKLQkJCXJldCA9IGxhbjc4eHhfd3JpdGVfcmVnKGRldiwgUlhfQUREUkgsIGFkZHJfaGkpOwor CQlpZiAoIWV0aF9wbGF0Zm9ybV9nZXRfbWFjX2FkZHJlc3MoJmRldi0+dWRldi0+ZGV2LCBhZGRy KSkgeworCQkJLyogdmFsaWQgYWRkcmVzcyBwcmVzZW50IGluIERldmljZSBUcmVlICovCisJCQlu ZXRpZl9kYmcoZGV2LCBpZnVwLCBkZXYtPm5ldCwKKwkJCQkgICJNQUMgYWRkcmVzcyByZWFkIGZy b20gRGV2aWNlIFRyZWUiKTsKKwkJfSBlbHNlIGlmICgoKGxhbjc4eHhfcmVhZF9lZXByb20oZGV2 LCBFRVBST01fTUFDX09GRlNFVCwKKwkJCQkJCSBFVEhfQUxFTiwgYWRkcikgPT0gMCkgfHwKKwkJ CSAgICAobGFuNzh4eF9yZWFkX290cChkZXYsIEVFUFJPTV9NQUNfT0ZGU0VULAorCQkJCQkgICAg ICBFVEhfQUxFTiwgYWRkcikgPT0gMCkpICYmCisJCQkgICBpc192YWxpZF9ldGhlcl9hZGRyKGFk ZHIpKSB7CisJCQkvKiBlZXByb20gdmFsdWVzIGFyZSB2YWxpZCBzbyB1c2UgdGhlbSAqLworCQkJ bmV0aWZfZGJnKGRldiwgaWZ1cCwgZGV2LT5uZXQsCisJCQkJICAiTUFDIGFkZHJlc3MgcmVhZCBm cm9tIEVFUFJPTSIpOwogCQl9IGVsc2UgewogCQkJLyogZ2VuZXJhdGUgcmFuZG9tIE1BQyAqLwog CQkJcmFuZG9tX2V0aGVyX2FkZHIoYWRkcik7CiAJCQluZXRpZl9kYmcoZGV2LCBpZnVwLCBkZXYt Pm5ldCwKIAkJCQkgICJNQUMgYWRkcmVzcyBzZXQgdG8gcmFuZG9tIGFkZHIiKTsKIAkJfQorCisJ CWFkZHJfbG8gPSBhZGRyWzBdIHwgKGFkZHJbMV0gPDwgOCkgfAorCQkJICAoYWRkclsyXSA8PCAx NikgfCAoYWRkclszXSA8PCAyNCk7CisJCWFkZHJfaGkgPSBhZGRyWzRdIHwgKGFkZHJbNV0gPDwg OCk7CisKKwkJcmV0ID0gbGFuNzh4eF93cml0ZV9yZWcoZGV2LCBSWF9BRERSTCwgYWRkcl9sbyk7 CisJCXJldCA9IGxhbjc4eHhfd3JpdGVfcmVnKGRldiwgUlhfQUREUkgsIGFkZHJfaGkpOwogCX0K IAogCXJldCA9IGxhbjc4eHhfd3JpdGVfcmVnKGRldiwgTUFGX0xPKDApLCBhZGRyX2xvKTsK