On 05/17/2017 02:29 PM, Iyappan Subramanian wrote: > On Wed, May 17, 2017 at 1:26 PM, Andrew Lunn <and...@lunn.ch> wrote: >>> +bool is_xgene_enet_phy_mode_rgmii(struct net_device *ndev) >>> +{ >>> + struct xgene_enet_pdata *pdata = netdev_priv(ndev); >>> + int phy_mode = pdata->phy_mode; >>> + bool ret; >>> + >>> + ret = phy_mode == PHY_INTERFACE_MODE_RGMII || >>> + phy_mode == PHY_INTERFACE_MODE_RGMII_ID || >>> + phy_mode == PHY_INTERFACE_MODE_RGMII_RXID || >>> + phy_mode == PHY_INTERFACE_MODE_RGMII_TXID; >>> + >>> + return ret; >>> +} >> >> include/linux/phy.h: >> >> /** >> * phy_interface_is_rgmii - Convenience function for testing if a PHY >> interface >> * is RGMII (all variants) >> * @phydev: the phy_device struct >> */ >> static inline bool phy_interface_is_rgmii(struct phy_device *phydev) >> { >> return phydev->interface >= PHY_INTERFACE_MODE_RGMII && >> phydev->interface <= PHY_INTERFACE_MODE_RGMII_TXID; >> }; > > Thanks. I'll use this helper function.
If you can use it, that's great, the reason why I did not recommend using it before was because it takes a phydev reference and your code clearly could have run before connecting to the PHY device. Alternatively, we could introduce a helper function that just checks a phy_interface_t type, something like: static inline bool phy_interface_is_rgmii(phy_interface_t mode) { ... } and introduce: static inline bool phydev_interface_is_rgmii(struct phy_device *phydev) { return phy_interface_is_rgmii(phydev->interface); } which would use this helper function internally. Or just drop the second helper, and always pass phydev->interface where needed. -- Florian