From patchwork Fri May 3 14:27:05 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Petr_=C5=A0tetiar?= X-Patchwork-Id: 10928857 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 30F0513AD for ; Fri, 3 May 2019 14:27:36 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 207A1277D9 for ; Fri, 3 May 2019 14:27:36 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 1240528474; Fri, 3 May 2019 14:27:36 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.2 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 305F6277D9 for ; Fri, 3 May 2019 14:27:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-Id:Date:Subject:To :From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=w0qit8JERVyohkQAvOte1GGl1uSJN/qwu48jLwAdI9k=; b=NQaLFUs1LANWJe +31khwbfiKljSKqBFXtvTbcbouUGbW52/g5+H8Ig1y5ozFAMEdmQGr5BvU+u7F5S4Q9E5tHUk/2Ji wwNptBnuTDoW6W6QOLq8nZkwk9Jz/CoeokuXC1QVV3pntsW7eJzunMQz6DuDIluz5etXbvjPCPEGo H0X97W0OCEBfOrIYOR73uYKZOKwwxn0HXemx3a6GoWQOK/i9n0HT8mHeP3RCHCAiZtWI9jkHcpi8P y+G9LDFg43TW6lX4Af8XbRiVppu6UnlzJsCfldg+H9+/w1I3Z6Vpym8VtVW7yy32dZ+2cr88wiTcc RjfC9Z2WiIIJs9pYvAyg==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1hMZ9v-0000JO-AL; Fri, 03 May 2019 14:27:31 +0000 Received: from smtp-out.xnet.cz ([178.217.244.18]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1hMZ9r-0000IA-8Z; Fri, 03 May 2019 14:27:29 +0000 Received: from meh.true.cz (meh.true.cz [108.61.167.218]) (Authenticated sender: petr@true.cz) by smtp-out.xnet.cz (Postfix) with ESMTPSA id 9A93A4AC5; Fri, 3 May 2019 16:27:24 +0200 (CEST) Received: by meh.true.cz (OpenSMTPD) with ESMTP id eb006926; Fri, 3 May 2019 16:27:23 +0200 (CEST) From: =?utf-8?q?Petr_=C5=A0tetiar?= To: netdev@vger.kernel.org, devicetree@vger.kernel.org, Matthias Brugger Subject: [PATCH v4 00/10] of_net: Add NVMEM support to of_get_mac_address Date: Fri, 3 May 2019 16:27:05 +0200 Message-Id: <1556893635-18549-1-git-send-email-ynezz@true.cz> X-Mailer: git-send-email 1.9.1 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190503_072727_608514_A1C5FC5F X-CRM114-Status: GOOD ( 12.39 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Andrew Lunn , Florian Fainelli , Maxime Ripard , Srinivas Kandagatla , linux-mediatek@lists.infradead.org, =?utf-8?q?Petr_=C5=A0tetiar?= , Frank Rowand , linux-arm-kernel@lists.infradead.org, Heiner Kallweit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP Hi, this patch series is a continuation of my previous attempt[1], where I've tried to wire MTD layer into of_get_mac_address, so it would be possible to load MAC addresses from various NVMEMs as EEPROMs etc. Predecessor of this patch which used directly MTD layer has originated in OpenWrt some time ago and supports already about 497 use cases in 357 device tree files. During the review process of my 1st attempt I was told, that I shouldn't be using MTD directly, but that I should rather use new NVMEM subsystem and during the review process of v2 I was told, that I should handle EPROBE_DEFFER error as well, during the review process of v3 I was told, that returning pointer/NULL/ERR_PTR is considered as wrong API design, so this v4 patch series tries to accommodate all this previous remarks. First patch is wiring NVMEM support directly into of_get_mac_address as it's obvious, that adding support for NVMEM into every other driver would mean adding a lot of repetitive code. This patch allows us to configure MAC addresses in various devices like ethernet and wireless adapters directly from of_get_mac_address, which is used by quite a lot of drivers in the tree already. Second patch is simply updating documentation with NVMEM bits, and cleaning up all current binding documentation referencing any of the MAC address related properties. Third and fourth patches are simply removing duplicate NVMEM code which is no longer needed as the first patch has wired NVMEM support directly into of_get_mac_address. Patches 5-10 are converting all current users of of_get_mac_address to the new ERR_PTR encoded error value, as of_get_mac_address could now return valid pointer, NULL and ERR_PTR. Just for a better picture, this patch series and one simple patch[2] on top of it, allows me to configure 8Devices Carambola2 board's MAC addresses with following DTS (simplified): &spi { flash@0 { partitions { art: partition@ff0000 { label = "art"; reg = <0xff0000 0x010000>; read-only; nvmem-cells { compatible = "nvmem-cells"; #address-cells = <1>; #size-cells = <1>; eth0_addr: eth-mac-addr@0 { reg = <0x0 0x6>; }; eth1_addr: eth-mac-addr@6 { reg = <0x6 0x6>; }; wmac_addr: wifi-mac-addr@1002 { reg = <0x1002 0x6>; }; }; }; }; }; }; ð0 { nvmem-cells = <ð0_addr>; nvmem-cell-names = "mac-address"; }; ð1 { nvmem-cells = <ð1_addr>; nvmem-cell-names = "mac-address"; }; &wmac { nvmem-cells = <&wmac_addr>; nvmem-cell-names = "mac-address"; }; 1. https://patchwork.ozlabs.org/patch/1086628/ 2. https://patchwork.ozlabs.org/patch/890738/ -- ynezz Petr Štetiar (10): of_net: add NVMEM support to of_get_mac_address dt-bindings: doc: reflect new NVMEM of_get_mac_address behaviour net: macb: support of_get_mac_address new ERR_PTR error net: davinci: support of_get_mac_address new ERR_PTR error net: ethernet: support of_get_mac_address new ERR_PTR error net: usb: support of_get_mac_address new ERR_PTR error net: wireless: support of_get_mac_address new ERR_PTR error staging: octeon-ethernet: support of_get_mac_address new ERR_PTR error ARM: Kirkwood: support of_get_mac_address new ERR_PTR error powerpc: tsi108: support of_get_mac_address new ERR_PTR error .../devicetree/bindings/net/altera_tse.txt | 5 +- Documentation/devicetree/bindings/net/amd-xgbe.txt | 5 +- .../devicetree/bindings/net/brcm,amac.txt | 4 +- Documentation/devicetree/bindings/net/cpsw.txt | 4 +- .../devicetree/bindings/net/davinci_emac.txt | 5 +- Documentation/devicetree/bindings/net/dsa/dsa.txt | 5 +- Documentation/devicetree/bindings/net/ethernet.txt | 6 ++- .../devicetree/bindings/net/hisilicon-femac.txt | 4 +- .../bindings/net/hisilicon-hix5hd2-gmac.txt | 4 +- .../devicetree/bindings/net/keystone-netcp.txt | 10 ++-- Documentation/devicetree/bindings/net/macb.txt | 5 +- .../devicetree/bindings/net/marvell-pxa168.txt | 4 +- .../devicetree/bindings/net/microchip,enc28j60.txt | 3 +- .../devicetree/bindings/net/microchip,lan78xx.txt | 5 +- .../devicetree/bindings/net/qca,qca7000.txt | 4 +- .../devicetree/bindings/net/samsung-sxgbe.txt | 4 +- .../bindings/net/snps,dwc-qos-ethernet.txt | 5 +- .../bindings/net/socionext,uniphier-ave4.txt | 4 +- .../devicetree/bindings/net/socionext-netsec.txt | 5 +- .../bindings/net/wireless/mediatek,mt76.txt | 5 +- .../devicetree/bindings/net/wireless/qca,ath9k.txt | 4 +- arch/arm/mach-mvebu/kirkwood.c | 3 +- arch/powerpc/sysdev/tsi108_dev.c | 2 +- drivers/net/ethernet/aeroflex/greth.c | 2 +- drivers/net/ethernet/allwinner/sun4i-emac.c | 2 +- drivers/net/ethernet/altera/altera_tse_main.c | 2 +- drivers/net/ethernet/arc/emac_main.c | 2 +- drivers/net/ethernet/aurora/nb8800.c | 2 +- drivers/net/ethernet/broadcom/bcmsysport.c | 2 +- drivers/net/ethernet/broadcom/bgmac-bcma.c | 2 +- drivers/net/ethernet/broadcom/bgmac-platform.c | 2 +- drivers/net/ethernet/broadcom/genet/bcmgenet.c | 2 +- drivers/net/ethernet/cadence/macb_main.c | 12 ++--- drivers/net/ethernet/cavium/octeon/octeon_mgmt.c | 2 +- drivers/net/ethernet/cavium/thunder/thunder_bgx.c | 2 +- drivers/net/ethernet/davicom/dm9000.c | 2 +- drivers/net/ethernet/ethoc.c | 2 +- drivers/net/ethernet/ezchip/nps_enet.c | 2 +- drivers/net/ethernet/freescale/fec_main.c | 2 +- drivers/net/ethernet/freescale/fec_mpc52xx.c | 2 +- drivers/net/ethernet/freescale/fman/mac.c | 2 +- .../net/ethernet/freescale/fs_enet/fs_enet-main.c | 2 +- drivers/net/ethernet/freescale/gianfar.c | 2 +- drivers/net/ethernet/freescale/ucc_geth.c | 2 +- drivers/net/ethernet/hisilicon/hisi_femac.c | 2 +- drivers/net/ethernet/hisilicon/hix5hd2_gmac.c | 2 +- drivers/net/ethernet/lantiq_xrx200.c | 2 +- drivers/net/ethernet/marvell/mv643xx_eth.c | 2 +- drivers/net/ethernet/marvell/mvneta.c | 2 +- drivers/net/ethernet/marvell/pxa168_eth.c | 2 +- drivers/net/ethernet/marvell/sky2.c | 2 +- drivers/net/ethernet/mediatek/mtk_eth_soc.c | 2 +- drivers/net/ethernet/micrel/ks8851.c | 2 +- drivers/net/ethernet/micrel/ks8851_mll.c | 2 +- drivers/net/ethernet/microchip/enc28j60.c | 2 +- drivers/net/ethernet/nxp/lpc_eth.c | 2 +- drivers/net/ethernet/qualcomm/qca_spi.c | 2 +- drivers/net/ethernet/qualcomm/qca_uart.c | 2 +- drivers/net/ethernet/renesas/ravb_main.c | 2 +- drivers/net/ethernet/renesas/sh_eth.c | 2 +- .../net/ethernet/samsung/sxgbe/sxgbe_platform.c | 2 +- drivers/net/ethernet/socionext/sni_ave.c | 2 +- drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 2 +- drivers/net/ethernet/ti/cpsw.c | 2 +- drivers/net/ethernet/ti/davinci_emac.c | 16 +++---- drivers/net/ethernet/ti/netcp_core.c | 2 +- drivers/net/ethernet/wiznet/w5100.c | 2 +- drivers/net/ethernet/xilinx/ll_temac_main.c | 2 +- drivers/net/ethernet/xilinx/xilinx_axienet_main.c | 2 +- drivers/net/ethernet/xilinx/xilinx_emaclite.c | 2 +- drivers/net/usb/smsc75xx.c | 2 +- drivers/net/usb/smsc95xx.c | 2 +- drivers/net/wireless/ath/ath9k/init.c | 2 +- drivers/net/wireless/mediatek/mt76/eeprom.c | 2 +- drivers/net/wireless/ralink/rt2x00/rt2x00dev.c | 2 +- drivers/of/of_net.c | 54 ++++++++++++++++++++-- drivers/staging/octeon/ethernet.c | 2 +- net/ethernet/eth.c | 2 +- 78 files changed, 175 insertions(+), 116 deletions(-)