Re: [U-Boot] [PATCH v2 2/2] net: eth-uclass: Support device tree MAC addresses
On Thu, Apr 18, 2019 at 07:30:05PM +0300, Grygorii Strashko wrote: > > > On 17.04.19 18:03, Thierry Reding wrote: > > On Wed, Apr 17, 2019 at 02:49:22PM +0300, Grygorii Strashko wrote: > >> > >> > >> On 16.04.19 19:24, Thierry Reding wrote: > >>> From: Thierry Reding > >>> > >>> Add the standard Ethernet device tree bindings (imported from v5.0 of > >>> the Linux kernel) and implement support for reading the MAC address for > >>> Ethernet devices in the Ethernet uclass. If the "mac-address" property > >>> exists, the MAC address will be parsed from that. If that property does > >>> not exist, the "local-mac-address" property will be tried as fallback. > >>> > >>> MAC addresses from device tree take precedence over the ones stored in > >>> a network interface card's ROM. > >>> > >>> Acked-by: Joe Hershberger > >>> Signed-off-by: Thierry Reding > >>> --- > >>> Changes in v2: > >>> - use dev_read_u8_array_ptr() > >>> > >>> .../devicetree/bindings/net/ethernet.txt | 66 +++ > >>> net/eth-uclass.c | 26 +++- > >>> 2 files changed, 89 insertions(+), 3 deletions(-) > >>> create mode 100644 Documentation/devicetree/bindings/net/ethernet.txt > >>> > >>> diff --git a/Documentation/devicetree/bindings/net/ethernet.txt > >>> b/Documentation/devicetree/bindings/net/ethernet.txt > >>> new file mode 100644 > >>> index ..cfc376bc977a > >>> --- /dev/null > >>> +++ b/Documentation/devicetree/bindings/net/ethernet.txt > >>> @@ -0,0 +1,66 @@ > >>> +The following properties are common to the Ethernet controllers: > >>> + > >>> +NOTE: All 'phy*' properties documented below are Ethernet specific. For > >>> the > >>> +generic PHY 'phys' property, see > >>> +Documentation/devicetree/bindings/phy/phy-bindings.txt. > >>> + > >>> +- local-mac-address: array of 6 bytes, specifies the MAC address that was > >>> + assigned to the network device; > >>> +- mac-address: array of 6 bytes, specifies the MAC address that was last > >>> used by > >>> + the boot program; should be used in cases where the MAC address > >>> assigned to > >>> + the device by the boot program is different from the > >>> "local-mac-address" > >>> + property; > >>> +- nvmem-cells: phandle, reference to an nvmem node for the MAC address; > >>> +- nvmem-cell-names: string, should be "mac-address" if nvmem is to be > >>> used; > >>> +- max-speed: number, specifies maximum speed in Mbit/s supported by the > >>> device; > >>> +- max-frame-size: number, maximum transfer unit (IEEE defined MTU), > >>> rather than > >>> + the maximum frame size (there's contradiction in the Devicetree > >>> + Specification). > >>> +- phy-mode: string, operation mode of the PHY interface. This is now a > >>> de-facto > >>> + standard property; supported values are: > >>> + * "internal" > >>> + * "mii" > >>> + * "gmii" > >>> + * "sgmii" > >>> + * "qsgmii" > >>> + * "tbi" > >>> + * "rev-mii" > >>> + * "rmii" > >>> + * "rgmii" (RX and TX delays are added by the MAC when required) > >>> + * "rgmii-id" (RGMII with internal RX and TX delays provided by the > >>> PHY, the > >>> + MAC should not add the RX or TX delays in this case) > >>> + * "rgmii-rxid" (RGMII with internal RX delay provided by the PHY, the > >>> MAC > >>> + should not add an RX delay in this case) > >>> + * "rgmii-txid" (RGMII with internal TX delay provided by the PHY, the > >>> MAC > >>> + should not add an TX delay in this case) > >>> + * "rtbi" > >>> + * "smii" > >>> + * "xgmii" > >>> + * "trgmii" > >>> + * "2000base-x", > >>> + * "2500base-x", > >>> + * "rxaui" > >>> + * "xaui" > >>> + * "10gbase-kr" (10GBASE-KR, XFI, SFI) > >>> +- phy-connection-type: the same as "phy-mode" property but described in > >>> the > >>> + Devicetree Specification; > >>> +- phy-handle: phandle, specifies a reference to a node representing a PHY > >>> + device; this property is described in the Devicetree Specification and > >>> so > >>> + preferred; > >>> +- phy: the same as "phy-handle" property, not recommended for new > >>> bindings. > >>> +- phy-device: the same as "phy-handle" property, not recommended for new > >>> + bindings. > >>> +- rx-fifo-depth: the size of the controller's receive fifo in bytes. This > >>> + is used for components that can have configurable receive fifo sizes, > >>> + and is useful for determining certain configuration settings such as > >>> + flow control thresholds. > >>> +- tx-fifo-depth: the size of the controller's transmit fifo in bytes. > >>> This > >>> + is used for components that can have configurable fifo sizes. > >>> +- managed: string, specifies the PHY management type. Supported values > >>> are: > >>> + "auto", "in-band-status". "auto" is the default, it usess MDIO for > >>> + management if fixed-link is not specified. > >>> + > >>> +Child nodes of the Ethernet controller are typically the individual PHY > >>> devices > >>> +connected via the MDIO bus (sometimes the
Re: [U-Boot] [PATCH v2 2/2] net: eth-uclass: Support device tree MAC addresses
On Wed, Apr 17, 2019 at 09:32:26PM -0700, Simon Glass wrote: > Hi Thierry, > > On Wed, 17 Apr 2019 at 08:03, Thierry Reding > wrote: > > > On Wed, Apr 17, 2019 at 02:49:22PM +0300, Grygorii Strashko wrote: > > > > > > > > > On 16.04.19 19:24, Thierry Reding wrote: > > > > From: Thierry Reding > > > > > > > > Add the standard Ethernet device tree bindings (imported from v5.0 of > > > > the Linux kernel) and implement support for reading the MAC address for > > > > Ethernet devices in the Ethernet uclass. If the "mac-address" property > > > > exists, the MAC address will be parsed from that. If that property does > > > > not exist, the "local-mac-address" property will be tried as fallback. > > > > > > > > MAC addresses from device tree take precedence over the ones stored in > > > > a network interface card's ROM. > > > > > > > > Acked-by: Joe Hershberger > > > > Signed-off-by: Thierry Reding > > > > --- > > > > Changes in v2: > > > > - use dev_read_u8_array_ptr() > > > > It would be good to have test cases for these. By "these", do you mean the eth_dev_get_mac_address() function that this patche introduces, or the dev_read_u8_array_ptr() function? For the former, that'd be a little difficult because it is not a public API, it's only called from the eth-uclass.c code. Thierry > > > > > > > > .../devicetree/bindings/net/ethernet.txt | 66 +++ > > > > net/eth-uclass.c | 26 +++- > > > > 2 files changed, 89 insertions(+), 3 deletions(-) > > > > create mode 100644 Documentation/devicetree/bindings/net/ethernet.txt > > > > Regards, > Simon signature.asc Description: PGP signature ___ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot
Re: [U-Boot] [PATCH v2 2/2] net: eth-uclass: Support device tree MAC addresses
On 17.04.19 18:03, Thierry Reding wrote: > On Wed, Apr 17, 2019 at 02:49:22PM +0300, Grygorii Strashko wrote: >> >> >> On 16.04.19 19:24, Thierry Reding wrote: >>> From: Thierry Reding >>> >>> Add the standard Ethernet device tree bindings (imported from v5.0 of >>> the Linux kernel) and implement support for reading the MAC address for >>> Ethernet devices in the Ethernet uclass. If the "mac-address" property >>> exists, the MAC address will be parsed from that. If that property does >>> not exist, the "local-mac-address" property will be tried as fallback. >>> >>> MAC addresses from device tree take precedence over the ones stored in >>> a network interface card's ROM. >>> >>> Acked-by: Joe Hershberger >>> Signed-off-by: Thierry Reding >>> --- >>> Changes in v2: >>> - use dev_read_u8_array_ptr() >>> >>> .../devicetree/bindings/net/ethernet.txt | 66 +++ >>> net/eth-uclass.c | 26 +++- >>> 2 files changed, 89 insertions(+), 3 deletions(-) >>> create mode 100644 Documentation/devicetree/bindings/net/ethernet.txt >>> >>> diff --git a/Documentation/devicetree/bindings/net/ethernet.txt >>> b/Documentation/devicetree/bindings/net/ethernet.txt >>> new file mode 100644 >>> index ..cfc376bc977a >>> --- /dev/null >>> +++ b/Documentation/devicetree/bindings/net/ethernet.txt >>> @@ -0,0 +1,66 @@ >>> +The following properties are common to the Ethernet controllers: >>> + >>> +NOTE: All 'phy*' properties documented below are Ethernet specific. For the >>> +generic PHY 'phys' property, see >>> +Documentation/devicetree/bindings/phy/phy-bindings.txt. >>> + >>> +- local-mac-address: array of 6 bytes, specifies the MAC address that was >>> + assigned to the network device; >>> +- mac-address: array of 6 bytes, specifies the MAC address that was last >>> used by >>> + the boot program; should be used in cases where the MAC address assigned >>> to >>> + the device by the boot program is different from the "local-mac-address" >>> + property; >>> +- nvmem-cells: phandle, reference to an nvmem node for the MAC address; >>> +- nvmem-cell-names: string, should be "mac-address" if nvmem is to be used; >>> +- max-speed: number, specifies maximum speed in Mbit/s supported by the >>> device; >>> +- max-frame-size: number, maximum transfer unit (IEEE defined MTU), rather >>> than >>> + the maximum frame size (there's contradiction in the Devicetree >>> + Specification). >>> +- phy-mode: string, operation mode of the PHY interface. This is now a >>> de-facto >>> + standard property; supported values are: >>> + * "internal" >>> + * "mii" >>> + * "gmii" >>> + * "sgmii" >>> + * "qsgmii" >>> + * "tbi" >>> + * "rev-mii" >>> + * "rmii" >>> + * "rgmii" (RX and TX delays are added by the MAC when required) >>> + * "rgmii-id" (RGMII with internal RX and TX delays provided by the PHY, >>> the >>> + MAC should not add the RX or TX delays in this case) >>> + * "rgmii-rxid" (RGMII with internal RX delay provided by the PHY, the MAC >>> + should not add an RX delay in this case) >>> + * "rgmii-txid" (RGMII with internal TX delay provided by the PHY, the MAC >>> + should not add an TX delay in this case) >>> + * "rtbi" >>> + * "smii" >>> + * "xgmii" >>> + * "trgmii" >>> + * "2000base-x", >>> + * "2500base-x", >>> + * "rxaui" >>> + * "xaui" >>> + * "10gbase-kr" (10GBASE-KR, XFI, SFI) >>> +- phy-connection-type: the same as "phy-mode" property but described in the >>> + Devicetree Specification; >>> +- phy-handle: phandle, specifies a reference to a node representing a PHY >>> + device; this property is described in the Devicetree Specification and so >>> + preferred; >>> +- phy: the same as "phy-handle" property, not recommended for new bindings. >>> +- phy-device: the same as "phy-handle" property, not recommended for new >>> + bindings. >>> +- rx-fifo-depth: the size of the controller's receive fifo in bytes. This >>> + is used for components that can have configurable receive fifo sizes, >>> + and is useful for determining certain configuration settings such as >>> + flow control thresholds. >>> +- tx-fifo-depth: the size of the controller's transmit fifo in bytes. This >>> + is used for components that can have configurable fifo sizes. >>> +- managed: string, specifies the PHY management type. Supported values are: >>> + "auto", "in-band-status". "auto" is the default, it usess MDIO for >>> + management if fixed-link is not specified. >>> + >>> +Child nodes of the Ethernet controller are typically the individual PHY >>> devices >>> +connected via the MDIO bus (sometimes the MDIO bus controller is separate). >>> +They are described in the phy.txt file in this same directory. >>> +For non-MDIO PHY management see fixed-link.txt. >>> diff --git a/net/eth-uclass.c b/net/eth-uclass.c >>> index 4225aabf1fa1..c6d5ec013bd8 100644 >>> --- a/net/eth-uclass.c >>> +++ b/net/eth-uclass.c >>> @@ -455,6 +455,23 @@ static int eth_pre_
Re: [U-Boot] [PATCH v2 2/2] net: eth-uclass: Support device tree MAC addresses
Hi Thierry, On Wed, 17 Apr 2019 at 08:03, Thierry Reding wrote: > On Wed, Apr 17, 2019 at 02:49:22PM +0300, Grygorii Strashko wrote: > > > > > > On 16.04.19 19:24, Thierry Reding wrote: > > > From: Thierry Reding > > > > > > Add the standard Ethernet device tree bindings (imported from v5.0 of > > > the Linux kernel) and implement support for reading the MAC address for > > > Ethernet devices in the Ethernet uclass. If the "mac-address" property > > > exists, the MAC address will be parsed from that. If that property does > > > not exist, the "local-mac-address" property will be tried as fallback. > > > > > > MAC addresses from device tree take precedence over the ones stored in > > > a network interface card's ROM. > > > > > > Acked-by: Joe Hershberger > > > Signed-off-by: Thierry Reding > > > --- > > > Changes in v2: > > > - use dev_read_u8_array_ptr() > It would be good to have test cases for these. > > > > > > .../devicetree/bindings/net/ethernet.txt | 66 +++ > > > net/eth-uclass.c | 26 +++- > > > 2 files changed, 89 insertions(+), 3 deletions(-) > > > create mode 100644 Documentation/devicetree/bindings/net/ethernet.txt > > Regards, Simon ___ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot
Re: [U-Boot] [PATCH v2 2/2] net: eth-uclass: Support device tree MAC addresses
On Wed, Apr 17, 2019 at 02:49:22PM +0300, Grygorii Strashko wrote: > > > On 16.04.19 19:24, Thierry Reding wrote: > > From: Thierry Reding > > > > Add the standard Ethernet device tree bindings (imported from v5.0 of > > the Linux kernel) and implement support for reading the MAC address for > > Ethernet devices in the Ethernet uclass. If the "mac-address" property > > exists, the MAC address will be parsed from that. If that property does > > not exist, the "local-mac-address" property will be tried as fallback. > > > > MAC addresses from device tree take precedence over the ones stored in > > a network interface card's ROM. > > > > Acked-by: Joe Hershberger > > Signed-off-by: Thierry Reding > > --- > > Changes in v2: > > - use dev_read_u8_array_ptr() > > > > .../devicetree/bindings/net/ethernet.txt | 66 +++ > > net/eth-uclass.c | 26 +++- > > 2 files changed, 89 insertions(+), 3 deletions(-) > > create mode 100644 Documentation/devicetree/bindings/net/ethernet.txt > > > > diff --git a/Documentation/devicetree/bindings/net/ethernet.txt > > b/Documentation/devicetree/bindings/net/ethernet.txt > > new file mode 100644 > > index ..cfc376bc977a > > --- /dev/null > > +++ b/Documentation/devicetree/bindings/net/ethernet.txt > > @@ -0,0 +1,66 @@ > > +The following properties are common to the Ethernet controllers: > > + > > +NOTE: All 'phy*' properties documented below are Ethernet specific. For the > > +generic PHY 'phys' property, see > > +Documentation/devicetree/bindings/phy/phy-bindings.txt. > > + > > +- local-mac-address: array of 6 bytes, specifies the MAC address that was > > + assigned to the network device; > > +- mac-address: array of 6 bytes, specifies the MAC address that was last > > used by > > + the boot program; should be used in cases where the MAC address assigned > > to > > + the device by the boot program is different from the "local-mac-address" > > + property; > > +- nvmem-cells: phandle, reference to an nvmem node for the MAC address; > > +- nvmem-cell-names: string, should be "mac-address" if nvmem is to be used; > > +- max-speed: number, specifies maximum speed in Mbit/s supported by the > > device; > > +- max-frame-size: number, maximum transfer unit (IEEE defined MTU), rather > > than > > + the maximum frame size (there's contradiction in the Devicetree > > + Specification). > > +- phy-mode: string, operation mode of the PHY interface. This is now a > > de-facto > > + standard property; supported values are: > > + * "internal" > > + * "mii" > > + * "gmii" > > + * "sgmii" > > + * "qsgmii" > > + * "tbi" > > + * "rev-mii" > > + * "rmii" > > + * "rgmii" (RX and TX delays are added by the MAC when required) > > + * "rgmii-id" (RGMII with internal RX and TX delays provided by the PHY, > > the > > + MAC should not add the RX or TX delays in this case) > > + * "rgmii-rxid" (RGMII with internal RX delay provided by the PHY, the MAC > > + should not add an RX delay in this case) > > + * "rgmii-txid" (RGMII with internal TX delay provided by the PHY, the MAC > > + should not add an TX delay in this case) > > + * "rtbi" > > + * "smii" > > + * "xgmii" > > + * "trgmii" > > + * "2000base-x", > > + * "2500base-x", > > + * "rxaui" > > + * "xaui" > > + * "10gbase-kr" (10GBASE-KR, XFI, SFI) > > +- phy-connection-type: the same as "phy-mode" property but described in the > > + Devicetree Specification; > > +- phy-handle: phandle, specifies a reference to a node representing a PHY > > + device; this property is described in the Devicetree Specification and so > > + preferred; > > +- phy: the same as "phy-handle" property, not recommended for new bindings. > > +- phy-device: the same as "phy-handle" property, not recommended for new > > + bindings. > > +- rx-fifo-depth: the size of the controller's receive fifo in bytes. This > > + is used for components that can have configurable receive fifo sizes, > > + and is useful for determining certain configuration settings such as > > + flow control thresholds. > > +- tx-fifo-depth: the size of the controller's transmit fifo in bytes. This > > + is used for components that can have configurable fifo sizes. > > +- managed: string, specifies the PHY management type. Supported values are: > > + "auto", "in-band-status". "auto" is the default, it usess MDIO for > > + management if fixed-link is not specified. > > + > > +Child nodes of the Ethernet controller are typically the individual PHY > > devices > > +connected via the MDIO bus (sometimes the MDIO bus controller is separate). > > +They are described in the phy.txt file in this same directory. > > +For non-MDIO PHY management see fixed-link.txt. > > diff --git a/net/eth-uclass.c b/net/eth-uclass.c > > index 4225aabf1fa1..c6d5ec013bd8 100644 > > --- a/net/eth-uclass.c > > +++ b/net/eth-uclass.c > > @@ -455,6 +455,23 @@ static int eth_pre_unbind(struct udevice *dev) > > retur
Re: [U-Boot] [PATCH v2 2/2] net: eth-uclass: Support device tree MAC addresses
On 16.04.19 19:24, Thierry Reding wrote: > From: Thierry Reding > > Add the standard Ethernet device tree bindings (imported from v5.0 of > the Linux kernel) and implement support for reading the MAC address for > Ethernet devices in the Ethernet uclass. If the "mac-address" property > exists, the MAC address will be parsed from that. If that property does > not exist, the "local-mac-address" property will be tried as fallback. > > MAC addresses from device tree take precedence over the ones stored in > a network interface card's ROM. > > Acked-by: Joe Hershberger > Signed-off-by: Thierry Reding > --- > Changes in v2: > - use dev_read_u8_array_ptr() > > .../devicetree/bindings/net/ethernet.txt | 66 +++ > net/eth-uclass.c | 26 +++- > 2 files changed, 89 insertions(+), 3 deletions(-) > create mode 100644 Documentation/devicetree/bindings/net/ethernet.txt > > diff --git a/Documentation/devicetree/bindings/net/ethernet.txt > b/Documentation/devicetree/bindings/net/ethernet.txt > new file mode 100644 > index ..cfc376bc977a > --- /dev/null > +++ b/Documentation/devicetree/bindings/net/ethernet.txt > @@ -0,0 +1,66 @@ > +The following properties are common to the Ethernet controllers: > + > +NOTE: All 'phy*' properties documented below are Ethernet specific. For the > +generic PHY 'phys' property, see > +Documentation/devicetree/bindings/phy/phy-bindings.txt. > + > +- local-mac-address: array of 6 bytes, specifies the MAC address that was > + assigned to the network device; > +- mac-address: array of 6 bytes, specifies the MAC address that was last > used by > + the boot program; should be used in cases where the MAC address assigned to > + the device by the boot program is different from the "local-mac-address" > + property; > +- nvmem-cells: phandle, reference to an nvmem node for the MAC address; > +- nvmem-cell-names: string, should be "mac-address" if nvmem is to be used; > +- max-speed: number, specifies maximum speed in Mbit/s supported by the > device; > +- max-frame-size: number, maximum transfer unit (IEEE defined MTU), rather > than > + the maximum frame size (there's contradiction in the Devicetree > + Specification). > +- phy-mode: string, operation mode of the PHY interface. This is now a > de-facto > + standard property; supported values are: > + * "internal" > + * "mii" > + * "gmii" > + * "sgmii" > + * "qsgmii" > + * "tbi" > + * "rev-mii" > + * "rmii" > + * "rgmii" (RX and TX delays are added by the MAC when required) > + * "rgmii-id" (RGMII with internal RX and TX delays provided by the PHY, the > + MAC should not add the RX or TX delays in this case) > + * "rgmii-rxid" (RGMII with internal RX delay provided by the PHY, the MAC > + should not add an RX delay in this case) > + * "rgmii-txid" (RGMII with internal TX delay provided by the PHY, the MAC > + should not add an TX delay in this case) > + * "rtbi" > + * "smii" > + * "xgmii" > + * "trgmii" > + * "2000base-x", > + * "2500base-x", > + * "rxaui" > + * "xaui" > + * "10gbase-kr" (10GBASE-KR, XFI, SFI) > +- phy-connection-type: the same as "phy-mode" property but described in the > + Devicetree Specification; > +- phy-handle: phandle, specifies a reference to a node representing a PHY > + device; this property is described in the Devicetree Specification and so > + preferred; > +- phy: the same as "phy-handle" property, not recommended for new bindings. > +- phy-device: the same as "phy-handle" property, not recommended for new > + bindings. > +- rx-fifo-depth: the size of the controller's receive fifo in bytes. This > + is used for components that can have configurable receive fifo sizes, > + and is useful for determining certain configuration settings such as > + flow control thresholds. > +- tx-fifo-depth: the size of the controller's transmit fifo in bytes. This > + is used for components that can have configurable fifo sizes. > +- managed: string, specifies the PHY management type. Supported values are: > + "auto", "in-band-status". "auto" is the default, it usess MDIO for > + management if fixed-link is not specified. > + > +Child nodes of the Ethernet controller are typically the individual PHY > devices > +connected via the MDIO bus (sometimes the MDIO bus controller is separate). > +They are described in the phy.txt file in this same directory. > +For non-MDIO PHY management see fixed-link.txt. > diff --git a/net/eth-uclass.c b/net/eth-uclass.c > index 4225aabf1fa1..c6d5ec013bd8 100644 > --- a/net/eth-uclass.c > +++ b/net/eth-uclass.c > @@ -455,6 +455,23 @@ static int eth_pre_unbind(struct udevice *dev) > return 0; > } > > +static bool eth_dev_get_mac_address(struct udevice *dev, u8 mac[ARP_HLEN]) > +{ > + const uint8_t *p; > + > + p = dev_read_u8_array_ptr(dev, "mac-address", ARP_HLEN); > + if (!p) > + p = dev_read_u8_array_ptr(dev, "local-mac-address", ARP_HLEN); > + >