1e71305acSCalvin Johnson.. SPDX-License-Identifier: GPL-2.0 2e71305acSCalvin Johnson 3e71305acSCalvin Johnson========================= 4e71305acSCalvin JohnsonMDIO bus and PHYs in ACPI 5e71305acSCalvin Johnson========================= 6e71305acSCalvin Johnson 7*59f3f982SSakari AilusThe PHYs on an MDIO bus [phy] are probed and registered using 8e71305acSCalvin Johnsonfwnode_mdiobus_register_phy(). 9e71305acSCalvin Johnson 10e71305acSCalvin JohnsonLater, for connecting these PHYs to their respective MACs, the PHYs registered 11e71305acSCalvin Johnsonon the MDIO bus have to be referenced. 12e71305acSCalvin Johnson 13e71305acSCalvin JohnsonThis document introduces two _DSD properties that are to be used 14*59f3f982SSakari Ailusfor connecting PHYs on the MDIO bus [dsd-properties-rules] to the MAC layer. 15e71305acSCalvin Johnson 16e71305acSCalvin JohnsonThese properties are defined in accordance with the "Device 17*59f3f982SSakari AilusProperties UUID For _DSD" [dsd-guide] document and the 18e71305acSCalvin Johnsondaffd814-6eba-4d8c-8a91-bc9bbf4aa301 UUID must be used in the Device 19e71305acSCalvin JohnsonData Descriptors containing them. 20e71305acSCalvin Johnson 21e71305acSCalvin Johnsonphy-handle 22e71305acSCalvin Johnson---------- 23e71305acSCalvin JohnsonFor each MAC node, a device property "phy-handle" is used to reference 24e71305acSCalvin Johnsonthe PHY that is registered on an MDIO bus. This is mandatory for 25e71305acSCalvin Johnsonnetwork interfaces that have PHYs connected to MAC via MDIO bus. 26e71305acSCalvin Johnson 27e71305acSCalvin JohnsonDuring the MDIO bus driver initialization, PHYs on this bus are probed 28e71305acSCalvin Johnsonusing the _ADR object as shown below and are registered on the MDIO bus. 29e71305acSCalvin Johnson 305a336f97SIoana Ciornei.. code-block:: none 315a336f97SIoana Ciornei 32e71305acSCalvin Johnson Scope(\_SB.MDI0) 33e71305acSCalvin Johnson { 34e71305acSCalvin Johnson Device(PHY1) { 35e71305acSCalvin Johnson Name (_ADR, 0x1) 36e71305acSCalvin Johnson } // end of PHY1 37e71305acSCalvin Johnson 38e71305acSCalvin Johnson Device(PHY2) { 39e71305acSCalvin Johnson Name (_ADR, 0x2) 40e71305acSCalvin Johnson } // end of PHY2 41e71305acSCalvin Johnson } 42e71305acSCalvin Johnson 43e71305acSCalvin JohnsonLater, during the MAC driver initialization, the registered PHY devices 44e71305acSCalvin Johnsonhave to be retrieved from the MDIO bus. For this, the MAC driver needs 45e71305acSCalvin Johnsonreferences to the previously registered PHYs which are provided 46e71305acSCalvin Johnsonas device object references (e.g. \_SB.MDI0.PHY1). 47e71305acSCalvin Johnson 48e71305acSCalvin Johnsonphy-mode 49e71305acSCalvin Johnson-------- 50e71305acSCalvin JohnsonThe "phy-mode" _DSD property is used to describe the connection to 51*59f3f982SSakari Ailusthe PHY. The valid values for "phy-mode" are defined in [ethernet-controller]. 52e71305acSCalvin Johnson 537c4d7ca8SMarcin Wojtasmanaged 547c4d7ca8SMarcin Wojtas------- 557c4d7ca8SMarcin WojtasOptional property, which specifies the PHY management type. 56*59f3f982SSakari AilusThe valid values for "managed" are defined in [ethernet-controller]. 577c4d7ca8SMarcin Wojtas 587c4d7ca8SMarcin Wojtasfixed-link 597c4d7ca8SMarcin Wojtas---------- 607c4d7ca8SMarcin WojtasThe "fixed-link" is described by a data-only subnode of the 617c4d7ca8SMarcin WojtasMAC port, which is linked in the _DSD package via 627c4d7ca8SMarcin Wojtashierarchical data extension (UUID dbb8e3e6-5886-4ba6-8795-1319f52a966b 63*59f3f982SSakari Ailusin accordance with [dsd-guide] "_DSD Implementation Guide" document). 647c4d7ca8SMarcin WojtasThe subnode should comprise a required property ("speed") and 657c4d7ca8SMarcin Wojtaspossibly the optional ones - complete list of parameters and 66*59f3f982SSakari Ailustheir values are specified in [ethernet-controller]. 677c4d7ca8SMarcin Wojtas 68e71305acSCalvin JohnsonThe following ASL example illustrates the usage of these properties. 69e71305acSCalvin Johnson 70e71305acSCalvin JohnsonDSDT entry for MDIO node 71e71305acSCalvin Johnson------------------------ 72e71305acSCalvin Johnson 73e71305acSCalvin JohnsonThe MDIO bus has an SoC component (MDIO controller) and a platform 74e71305acSCalvin Johnsoncomponent (PHYs on the MDIO bus). 75e71305acSCalvin Johnson 76e71305acSCalvin Johnsona) Silicon Component 77e71305acSCalvin JohnsonThis node describes the MDIO controller, MDI0 78e71305acSCalvin Johnson--------------------------------------------- 795a336f97SIoana Ciornei 805a336f97SIoana Ciornei.. code-block:: none 815a336f97SIoana Ciornei 82e71305acSCalvin Johnson Scope(_SB) 83e71305acSCalvin Johnson { 84e71305acSCalvin Johnson Device(MDI0) { 85e71305acSCalvin Johnson Name(_HID, "NXP0006") 86e71305acSCalvin Johnson Name(_CCA, 1) 87e71305acSCalvin Johnson Name(_UID, 0) 88e71305acSCalvin Johnson Name(_CRS, ResourceTemplate() { 89e71305acSCalvin Johnson Memory32Fixed(ReadWrite, MDI0_BASE, MDI_LEN) 90e71305acSCalvin Johnson Interrupt(ResourceConsumer, Level, ActiveHigh, Shared) 91e71305acSCalvin Johnson { 92e71305acSCalvin Johnson MDI0_IT 93e71305acSCalvin Johnson } 94e71305acSCalvin Johnson }) // end of _CRS for MDI0 95e71305acSCalvin Johnson } // end of MDI0 96e71305acSCalvin Johnson } 97e71305acSCalvin Johnson 98e71305acSCalvin Johnsonb) Platform Component 99e71305acSCalvin JohnsonThe PHY1 and PHY2 nodes represent the PHYs connected to MDIO bus MDI0 100e71305acSCalvin Johnson--------------------------------------------------------------------- 1015a336f97SIoana Ciornei 1025a336f97SIoana Ciornei.. code-block:: none 1035a336f97SIoana Ciornei 104e71305acSCalvin Johnson Scope(\_SB.MDI0) 105e71305acSCalvin Johnson { 106e71305acSCalvin Johnson Device(PHY1) { 107e71305acSCalvin Johnson Name (_ADR, 0x1) 108e71305acSCalvin Johnson } // end of PHY1 109e71305acSCalvin Johnson 110e71305acSCalvin Johnson Device(PHY2) { 111e71305acSCalvin Johnson Name (_ADR, 0x2) 112e71305acSCalvin Johnson } // end of PHY2 113e71305acSCalvin Johnson } 114e71305acSCalvin Johnson 115e71305acSCalvin JohnsonDSDT entries representing MAC nodes 116e71305acSCalvin Johnson----------------------------------- 117e71305acSCalvin Johnson 118e71305acSCalvin JohnsonBelow are the MAC nodes where PHY nodes are referenced. 119e71305acSCalvin Johnsonphy-mode and phy-handle are used as explained earlier. 120e71305acSCalvin Johnson------------------------------------------------------ 1215a336f97SIoana Ciornei 1225a336f97SIoana Ciornei.. code-block:: none 1235a336f97SIoana Ciornei 124e71305acSCalvin Johnson Scope(\_SB.MCE0.PR17) 125e71305acSCalvin Johnson { 126e71305acSCalvin Johnson Name (_DSD, Package () { 127e71305acSCalvin Johnson ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), 128e71305acSCalvin Johnson Package () { 129e71305acSCalvin Johnson Package (2) {"phy-mode", "rgmii-id"}, 130e71305acSCalvin Johnson Package (2) {"phy-handle", \_SB.MDI0.PHY1} 131e71305acSCalvin Johnson } 132e71305acSCalvin Johnson }) 133e71305acSCalvin Johnson } 134e71305acSCalvin Johnson 135e71305acSCalvin Johnson Scope(\_SB.MCE0.PR18) 136e71305acSCalvin Johnson { 137e71305acSCalvin Johnson Name (_DSD, Package () { 138e71305acSCalvin Johnson ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), 139e71305acSCalvin Johnson Package () { 140e71305acSCalvin Johnson Package (2) {"phy-mode", "rgmii-id"}, 141e71305acSCalvin Johnson Package (2) {"phy-handle", \_SB.MDI0.PHY2}} 142e71305acSCalvin Johnson } 143e71305acSCalvin Johnson }) 144e71305acSCalvin Johnson } 145e71305acSCalvin Johnson 1467c4d7ca8SMarcin WojtasMAC node example where "managed" property is specified. 1477c4d7ca8SMarcin Wojtas------------------------------------------------------- 1487c4d7ca8SMarcin Wojtas 1497c4d7ca8SMarcin Wojtas.. code-block:: none 1507c4d7ca8SMarcin Wojtas 1517c4d7ca8SMarcin Wojtas Scope(\_SB.PP21.ETH0) 1527c4d7ca8SMarcin Wojtas { 1537c4d7ca8SMarcin Wojtas Name (_DSD, Package () { 1547c4d7ca8SMarcin Wojtas ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), 1557c4d7ca8SMarcin Wojtas Package () { 1567c4d7ca8SMarcin Wojtas Package () {"phy-mode", "sgmii"}, 1577c4d7ca8SMarcin Wojtas Package () {"managed", "in-band-status"} 1587c4d7ca8SMarcin Wojtas } 1597c4d7ca8SMarcin Wojtas }) 1607c4d7ca8SMarcin Wojtas } 1617c4d7ca8SMarcin Wojtas 1627c4d7ca8SMarcin WojtasMAC node example with a "fixed-link" subnode. 1637c4d7ca8SMarcin Wojtas--------------------------------------------- 1647c4d7ca8SMarcin Wojtas 1657c4d7ca8SMarcin Wojtas.. code-block:: none 1667c4d7ca8SMarcin Wojtas 1677c4d7ca8SMarcin Wojtas Scope(\_SB.PP21.ETH1) 1687c4d7ca8SMarcin Wojtas { 1697c4d7ca8SMarcin Wojtas Name (_DSD, Package () { 1707c4d7ca8SMarcin Wojtas ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), 1717c4d7ca8SMarcin Wojtas Package () { 1727c4d7ca8SMarcin Wojtas Package () {"phy-mode", "sgmii"}, 1737c4d7ca8SMarcin Wojtas }, 1747c4d7ca8SMarcin Wojtas ToUUID("dbb8e3e6-5886-4ba6-8795-1319f52a966b"), 1757c4d7ca8SMarcin Wojtas Package () { 1767c4d7ca8SMarcin Wojtas Package () {"fixed-link", "LNK0"} 1777c4d7ca8SMarcin Wojtas } 1787c4d7ca8SMarcin Wojtas }) 1797c4d7ca8SMarcin Wojtas Name (LNK0, Package(){ // Data-only subnode of port 1807c4d7ca8SMarcin Wojtas ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), 1817c4d7ca8SMarcin Wojtas Package () { 1827c4d7ca8SMarcin Wojtas Package () {"speed", 1000}, 1837c4d7ca8SMarcin Wojtas Package () {"full-duplex", 1} 1847c4d7ca8SMarcin Wojtas } 1857c4d7ca8SMarcin Wojtas }) 1867c4d7ca8SMarcin Wojtas } 1877c4d7ca8SMarcin Wojtas 188e71305acSCalvin JohnsonReferences 189e71305acSCalvin Johnson========== 190e71305acSCalvin Johnson 191*59f3f982SSakari Ailus[phy] Documentation/networking/phy.rst 192e71305acSCalvin Johnson 193*59f3f982SSakari Ailus[dsd-properties-rules] 194*59f3f982SSakari Ailus Documentation/firmware-guide/acpi/DSD-properties-rules.rst 195e71305acSCalvin Johnson 196*59f3f982SSakari Ailus[ethernet-controller] 197*59f3f982SSakari Ailus Documentation/devicetree/bindings/net/ethernet-controller.yaml 198e71305acSCalvin Johnson 199*59f3f982SSakari Ailus[dsd-guide] DSD Guide. 200*59f3f982SSakari Ailus https://github.com/UEFI/DSD-Guide/blob/main/dsd-guide.adoc, referenced 201*59f3f982SSakari Ailus 2021-11-30. 202