From: Bartosz Golaszewski <brgl@bgdev.pl> To: Sekhar Nori <nsekhar@ti.com>, Kevin Hilman <khilman@kernel.org>, Russell King <linux@armlinux.org.uk>, Arnd Bergmann <arnd@arndb.de>, Greg Kroah-Hartman <gregkh@linuxfoundation.org>, David Woodhouse <dwmw2@infradead.org>, Brian Norris <computersforpeace@gmail.com>, Boris Brezillon <boris.brezillon@bootlin.com>, Marek Vasut <marek.vasut@gmail.com>, Richard Weinberger <richard@nod.at>, Nicolas Ferre <nicolas.ferre@microchip.com>, "David S . Miller" <davem@davemloft.net>, Grygorii Strashko <grygorii.strashko@ti.com>, Srinivas Kandagatla <srinivas.kandagatla@linaro.org>, Andrew Lunn <andrew@lunn.ch>, Florian Fainelli <f.fainelli@gmail.com>, Rob Herring <robh+dt@kernel.org>, Frank Rowand <frowand.list@gmail.com>, Wolfram Sang <wsa@the-dreams.de> Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-i2c@vger.kernel.org, linux-mtd@lists.infradead.org, netdev@vger.kernel.org, linux-omap@vger.kernel.org, devicetree@vger.kernel.org, Bartosz Golaszewski <bgolaszewski@baylibre.com> Subject: [PATCH v2 10/25] net: ethernet: provide nvmem_get_mac_address() Date: Tue, 13 Nov 2018 15:01:18 +0100 [thread overview] Message-ID: <20181113140133.17385-11-brgl@bgdev.pl> (raw) In-Reply-To: <20181113140133.17385-1-brgl@bgdev.pl> From: Bartosz Golaszewski <bgolaszewski@baylibre.com> We already have of_get_nvmem_mac_address() but some non-DT systems want to read the MAC address from NVMEM too. Implement a generalized routine that takes struct device as argument. Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com> --- include/linux/etherdevice.h | 1 + net/ethernet/eth.c | 38 +++++++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/include/linux/etherdevice.h b/include/linux/etherdevice.h index 572e11bb8696..2c0af7b00715 100644 --- a/include/linux/etherdevice.h +++ b/include/linux/etherdevice.h @@ -32,6 +32,7 @@ struct device; int eth_platform_get_mac_address(struct device *dev, u8 *mac_addr); unsigned char *arch_get_platform_mac_address(void); +int nvmem_get_mac_address(struct device *dev, void *addrbuf); u32 eth_get_headlen(void *data, unsigned int max_len); __be16 eth_type_trans(struct sk_buff *skb, struct net_device *dev); extern const struct header_ops eth_header_ops; diff --git a/net/ethernet/eth.c b/net/ethernet/eth.c index fd8faa0dfa61..df38593d1bb4 100644 --- a/net/ethernet/eth.c +++ b/net/ethernet/eth.c @@ -47,6 +47,7 @@ #include <linux/inet.h> #include <linux/ip.h> #include <linux/netdevice.h> +#include <linux/nvmem-consumer.h> #include <linux/etherdevice.h> #include <linux/skbuff.h> #include <linux/errno.h> @@ -548,3 +549,40 @@ int eth_platform_get_mac_address(struct device *dev, u8 *mac_addr) return 0; } EXPORT_SYMBOL(eth_platform_get_mac_address); + +/** + * Obtain the MAC address from an nvmem cell named 'mac-address' associated + * with given device. + * + * @dev: Device with which the mac-address cell is associated. + * @addrbuf: Buffer to which the MAC address will be copied on success. + * + * Returns 0 on success or a negative error number on failure. + */ +int nvmem_get_mac_address(struct device *dev, void *addrbuf) +{ + struct nvmem_cell *cell; + const void *mac; + size_t len; + + cell = nvmem_cell_get(dev, "mac-address"); + if (IS_ERR(cell)) + return PTR_ERR(cell); + + mac = nvmem_cell_read(cell, &len); + nvmem_cell_put(cell); + + if (IS_ERR(mac)) + return PTR_ERR(mac); + + if (len != ETH_ALEN || !is_valid_ether_addr(mac)) { + kfree(mac); + return -EINVAL; + } + + ether_addr_copy(addrbuf, mac); + kfree(mac); + + return 0; +} +EXPORT_SYMBOL(nvmem_get_mac_address); -- 2.19.1
WARNING: multiple messages have this Message-ID (diff)
From: brgl@bgdev.pl (Bartosz Golaszewski) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH v2 10/25] net: ethernet: provide nvmem_get_mac_address() Date: Tue, 13 Nov 2018 15:01:18 +0100 [thread overview] Message-ID: <20181113140133.17385-11-brgl@bgdev.pl> (raw) In-Reply-To: <20181113140133.17385-1-brgl@bgdev.pl> From: Bartosz Golaszewski <bgolaszewski@baylibre.com> We already have of_get_nvmem_mac_address() but some non-DT systems want to read the MAC address from NVMEM too. Implement a generalized routine that takes struct device as argument. Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com> --- include/linux/etherdevice.h | 1 + net/ethernet/eth.c | 38 +++++++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/include/linux/etherdevice.h b/include/linux/etherdevice.h index 572e11bb8696..2c0af7b00715 100644 --- a/include/linux/etherdevice.h +++ b/include/linux/etherdevice.h @@ -32,6 +32,7 @@ struct device; int eth_platform_get_mac_address(struct device *dev, u8 *mac_addr); unsigned char *arch_get_platform_mac_address(void); +int nvmem_get_mac_address(struct device *dev, void *addrbuf); u32 eth_get_headlen(void *data, unsigned int max_len); __be16 eth_type_trans(struct sk_buff *skb, struct net_device *dev); extern const struct header_ops eth_header_ops; diff --git a/net/ethernet/eth.c b/net/ethernet/eth.c index fd8faa0dfa61..df38593d1bb4 100644 --- a/net/ethernet/eth.c +++ b/net/ethernet/eth.c @@ -47,6 +47,7 @@ #include <linux/inet.h> #include <linux/ip.h> #include <linux/netdevice.h> +#include <linux/nvmem-consumer.h> #include <linux/etherdevice.h> #include <linux/skbuff.h> #include <linux/errno.h> @@ -548,3 +549,40 @@ int eth_platform_get_mac_address(struct device *dev, u8 *mac_addr) return 0; } EXPORT_SYMBOL(eth_platform_get_mac_address); + +/** + * Obtain the MAC address from an nvmem cell named 'mac-address' associated + * with given device. + * + * @dev: Device with which the mac-address cell is associated. + * @addrbuf: Buffer to which the MAC address will be copied on success. + * + * Returns 0 on success or a negative error number on failure. + */ +int nvmem_get_mac_address(struct device *dev, void *addrbuf) +{ + struct nvmem_cell *cell; + const void *mac; + size_t len; + + cell = nvmem_cell_get(dev, "mac-address"); + if (IS_ERR(cell)) + return PTR_ERR(cell); + + mac = nvmem_cell_read(cell, &len); + nvmem_cell_put(cell); + + if (IS_ERR(mac)) + return PTR_ERR(mac); + + if (len != ETH_ALEN || !is_valid_ether_addr(mac)) { + kfree(mac); + return -EINVAL; + } + + ether_addr_copy(addrbuf, mac); + kfree(mac); + + return 0; +} +EXPORT_SYMBOL(nvmem_get_mac_address); -- 2.19.1
next prev parent reply other threads:[~2018-11-13 14:02 UTC|newest] Thread overview: 87+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-11-13 14:01 [PATCH v2 00/25] at24: remove Bartosz Golaszewski 2018-11-13 14:01 ` Bartosz Golaszewski 2018-11-13 14:01 ` [PATCH v2 01/25] nvmem: add new config option Bartosz Golaszewski 2018-11-13 14:01 ` Bartosz Golaszewski 2018-11-13 14:01 ` Bartosz Golaszewski 2018-11-29 14:30 ` Bartosz Golaszewski 2018-11-29 14:32 ` Srinivas Kandagatla 2018-11-29 14:35 ` Bartosz Golaszewski 2018-11-29 14:43 ` Boris Brezillon 2018-11-13 14:01 ` [PATCH v2 02/25] mtd: add support for reading MTD devices via the nvmem API Bartosz Golaszewski 2018-11-13 14:01 ` Bartosz Golaszewski 2018-11-18 16:06 ` Boris Brezillon 2018-11-18 16:06 ` Boris Brezillon 2018-11-18 16:06 ` Boris Brezillon 2018-11-18 16:06 ` Boris Brezillon 2018-11-13 14:01 ` [PATCH v2 03/25] ARM: davinci: dm365-evm: use cell nvmem lookup for mac address Bartosz Golaszewski 2018-11-13 14:01 ` Bartosz Golaszewski 2018-11-13 14:01 ` [PATCH v2 04/25] ARM: davinci: dm644x-evm: " Bartosz Golaszewski 2018-11-13 14:01 ` Bartosz Golaszewski 2018-11-13 14:01 ` [PATCH v2 05/25] ARM: davinci: dm646x-evm: " Bartosz Golaszewski 2018-11-13 14:01 ` Bartosz Golaszewski 2018-11-13 14:01 ` [PATCH v2 06/25] ARM: davinci: da830-evm: " Bartosz Golaszewski 2018-11-13 14:01 ` Bartosz Golaszewski 2018-11-13 14:01 ` [PATCH v2 07/25] ARM: davinci: mityomapl138: " Bartosz Golaszewski 2018-11-13 14:01 ` Bartosz Golaszewski 2018-11-13 14:01 ` [PATCH v2 08/25] ARM: davinci: dm850-evm: " Bartosz Golaszewski 2018-11-13 14:01 ` Bartosz Golaszewski 2018-11-13 14:01 ` [PATCH v2 09/25] ARM: davinci: da850-evm: remove unnecessary include Bartosz Golaszewski 2018-11-13 14:01 ` Bartosz Golaszewski 2018-11-13 14:01 ` Bartosz Golaszewski [this message] 2018-11-13 14:01 ` [PATCH v2 10/25] net: ethernet: provide nvmem_get_mac_address() Bartosz Golaszewski 2018-11-29 16:45 ` Bartosz Golaszewski 2018-11-29 19:16 ` David Miller 2018-11-13 14:01 ` [PATCH v2 11/25] net: cadence: switch to using nvmem_get_mac_address() Bartosz Golaszewski 2018-11-13 14:01 ` Bartosz Golaszewski 2018-11-18 15:42 ` Nicolas.Ferre 2018-11-18 15:42 ` Nicolas.Ferre at microchip.com 2018-11-18 15:42 ` Nicolas.Ferre 2018-11-13 14:01 ` [PATCH v2 12/25] of: net: kill of_get_nvmem_mac_address() Bartosz Golaszewski 2018-11-13 14:01 ` Bartosz Golaszewski 2018-11-17 15:45 ` Rob Herring 2018-11-17 15:45 ` Rob Herring 2018-11-17 15:45 ` Rob Herring 2018-11-13 14:01 ` [PATCH v2 13/25] net: davinci_emac: use nvmem_get_mac_address() Bartosz Golaszewski 2018-11-13 14:01 ` Bartosz Golaszewski 2018-11-13 14:01 ` [PATCH v2 14/25] ARM: davinci: da850-evm: remove dead MTD code Bartosz Golaszewski 2018-11-13 14:01 ` Bartosz Golaszewski 2018-11-13 14:01 ` [PATCH v2 15/25] ARM: davinci: mityomapl138: don't read the MAC address from machine code Bartosz Golaszewski 2018-11-13 14:01 ` Bartosz Golaszewski 2018-11-13 14:01 ` [PATCH v2 16/25] ARM: davinci: dm365-evm: use device properties for at24 eeprom Bartosz Golaszewski 2018-11-13 14:01 ` Bartosz Golaszewski 2018-11-13 14:01 ` [PATCH v2 17/25] ARM: davinci: da830-evm: " Bartosz Golaszewski 2018-11-13 14:01 ` Bartosz Golaszewski 2018-11-13 14:01 ` [PATCH v2 18/25] ARM: davinci: dm644x-evm: " Bartosz Golaszewski 2018-11-13 14:01 ` Bartosz Golaszewski 2018-11-13 14:01 ` [PATCH v2 19/25] ARM: davinci: dm646x-evm: " Bartosz Golaszewski 2018-11-13 14:01 ` Bartosz Golaszewski 2018-11-13 14:01 ` [PATCH v2 20/25] ARM: davinci: sffsdr: fix the at24 eeprom device name Bartosz Golaszewski 2018-11-13 14:01 ` Bartosz Golaszewski 2018-11-13 14:01 ` [PATCH v2 21/25] ARM: davinci: sffsdr: use device properties for at24 eeprom Bartosz Golaszewski 2018-11-13 14:01 ` Bartosz Golaszewski 2018-11-13 14:01 ` [PATCH v2 22/25] ARM: davinci: remove dead code related to MAC address reading Bartosz Golaszewski 2018-11-13 14:01 ` Bartosz Golaszewski 2018-11-13 14:01 ` [PATCH v2 23/25] ARM: davinci: mityomapl138: use nvmem notifiers Bartosz Golaszewski 2018-11-13 14:01 ` Bartosz Golaszewski 2018-11-13 14:01 ` [PATCH v2 24/25] ARM: davinci: mityomapl138: use device properties for at24 eeprom Bartosz Golaszewski 2018-11-13 14:01 ` Bartosz Golaszewski 2018-11-13 14:01 ` [PATCH v2 25/25] eeprom: at24: remove at24_platform_data Bartosz Golaszewski 2018-11-13 14:01 ` Bartosz Golaszewski 2018-11-13 14:04 ` [PATCH v2 00/25] at24: remove Bartosz Golaszewski 2018-11-13 14:04 ` Bartosz Golaszewski 2018-11-13 14:07 ` Wolfram Sang 2018-11-13 14:07 ` Wolfram Sang 2018-11-13 14:07 ` Wolfram Sang 2018-11-18 16:03 ` Boris Brezillon 2018-11-18 16:03 ` Boris Brezillon 2018-11-18 16:03 ` Boris Brezillon 2018-11-18 16:03 ` Boris Brezillon 2018-11-19 8:58 ` Bartosz Golaszewski 2018-11-19 8:58 ` Bartosz Golaszewski 2018-11-19 8:58 ` Bartosz Golaszewski 2018-11-19 9:08 ` Boris Brezillon 2018-11-19 9:08 ` Boris Brezillon 2018-11-19 9:08 ` Boris Brezillon 2018-12-06 12:33 ` Sekhar Nori 2018-12-06 12:33 ` Sekhar Nori 2018-12-06 12:33 ` Sekhar Nori
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20181113140133.17385-11-brgl@bgdev.pl \ --to=brgl@bgdev.pl \ --cc=andrew@lunn.ch \ --cc=arnd@arndb.de \ --cc=bgolaszewski@baylibre.com \ --cc=boris.brezillon@bootlin.com \ --cc=computersforpeace@gmail.com \ --cc=davem@davemloft.net \ --cc=devicetree@vger.kernel.org \ --cc=dwmw2@infradead.org \ --cc=f.fainelli@gmail.com \ --cc=frowand.list@gmail.com \ --cc=gregkh@linuxfoundation.org \ --cc=grygorii.strashko@ti.com \ --cc=khilman@kernel.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-i2c@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mtd@lists.infradead.org \ --cc=linux-omap@vger.kernel.org \ --cc=linux@armlinux.org.uk \ --cc=marek.vasut@gmail.com \ --cc=netdev@vger.kernel.org \ --cc=nicolas.ferre@microchip.com \ --cc=nsekhar@ti.com \ --cc=richard@nod.at \ --cc=robh+dt@kernel.org \ --cc=srinivas.kandagatla@linaro.org \ --cc=wsa@the-dreams.de \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.