diff options
| author | David S. Miller <davem@davemloft.net> | 2020-06-25 16:05:21 -0700 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2020-06-25 16:05:21 -0700 |
| commit | d0a45b5ca508bf7e18155abb2093ec60db995b9a (patch) | |
| tree | bf974b1ba849cfc461cfa6d9b49c9a0ec4fd1c88 /include/linux | |
| parent | 17604218c87b30982d6e426b85979652a5cde7ea (diff) | |
| parent | 8095295292b564583bb5bee5ba69924c2fd40434 (diff) | |
Merge branch 'RGMII-Internal-delay-common-property'
Dan Murphy says:
====================
RGMII Internal delay common property
The RGMII internal delay is a common setting found in most RGMII capable PHY
devices. It was found that many vendor specific device tree properties exist
to do the same function. This creates a common property to be used for PHY's
that have internal delays for the Rx and Tx paths.
If the internal delay is tunable then the caller needs to pass the internal
delay array and the return will be the index in the array that was found in
the firmware node.
If the internal delay is fixed then the caller only needs to indicate which
delay to return. There is no need for a fixed delay to add device properties
since the value is not configurable. Per the ethernet-controller.yaml the
interface type indicates that the PHY should provide the delay.
This series contains examples of both a configurable delay and a fixed delay.
====================
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/phy.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/include/linux/phy.h b/include/linux/phy.h index 6fb8f302978d..2c00374dc996 100644 --- a/include/linux/phy.h +++ b/include/linux/phy.h @@ -1443,6 +1443,10 @@ void phy_set_asym_pause(struct phy_device *phydev, bool rx, bool tx); bool phy_validate_pause(struct phy_device *phydev, struct ethtool_pauseparam *pp); void phy_get_pause(struct phy_device *phydev, bool *tx_pause, bool *rx_pause); + +s32 phy_get_internal_delay(struct phy_device *phydev, struct device *dev, + const int *delay_values, int size, bool is_rx); + void phy_resolve_pause(unsigned long *local_adv, unsigned long *partner_adv, bool *tx_pause, bool *rx_pause); |
