]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
net: phy: Make phy_interface_is_rgmii a switch statement
authorNishanth Menon <nm@ti.com>
Fri, 14 Apr 2023 22:06:45 +0000 (17:06 -0500)
committerTom Rini <trini@konsulko.com>
Fri, 5 May 2023 21:48:44 +0000 (17:48 -0400)
Recent commit 75d28899e3e9 ("net: phy: Synchronize PHY interface modes
with Linux") reordered the enum definitions. This exposed a problem
in range checking functions to identify the interface type. Though
this specific api wasn't impacted (all the RGMII definitions remained
within range), this experience should be used to never to have to face
this kind of challenge again.

While it is possible for the phy drivers to use the enums directly,
drivers such as dp83867, dp83869, marvell, micrel_ksz90x1 etc use this
api.

Reported-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
Reviewed-by: Marek BehĂșn <kabel@kernel.org>
Signed-off-by: Nishanth Menon <nm@ti.com>
Reviewed-by: Ramon Fried <rfried.dev@gmail.com>
include/phy.h

index cb87d1d4fc95d1eabb5727cd80e954e4e6553704..247223d92be70fcddfe2525c11df4a1c417822b7 100644 (file)
@@ -361,8 +361,15 @@ int get_phy_id(struct mii_dev *bus, int addr, int devad, u32 *phy_id);
  */
 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;
+       switch (phydev->interface) {
+       case PHY_INTERFACE_MODE_RGMII:
+       case PHY_INTERFACE_MODE_RGMII_ID:
+       case PHY_INTERFACE_MODE_RGMII_RXID:
+       case PHY_INTERFACE_MODE_RGMII_TXID:
+               return 1;
+       default:
+               return 0;
+       }
 }
 
 bool phy_interface_is_ncsi(void);