aab466f422
Backport generic phylink validate series and make use of it for mtk_eth_soc Ethernet driver as well as mt7530 DSA driver. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
62 lines
1.9 KiB
Diff
62 lines
1.9 KiB
Diff
From 8e20f591f204f8db7f1182918f8e2285d3f589e0 Mon Sep 17 00:00:00 2001
|
|
From: "Russell King (Oracle)" <rmk+kernel@armlinux.org.uk>
|
|
Date: Tue, 26 Oct 2021 11:06:01 +0100
|
|
Subject: [PATCH] net: phy: add phy_interface_t bitmap support
|
|
|
|
Add support for a bitmap for phy interface modes, which includes:
|
|
- a macro to declare the interface bitmap
|
|
- an inline helper to zero the interface bitmap
|
|
- an inline helper to detect an empty interface bitmap
|
|
- inline helpers to do a bitwise AND and OR operations on two interface
|
|
bitmaps
|
|
|
|
Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
|
|
Signed-off-by: David S. Miller <davem@davemloft.net>
|
|
---
|
|
include/linux/phy.h | 34 ++++++++++++++++++++++++++++++++++
|
|
1 file changed, 34 insertions(+)
|
|
|
|
--- a/include/linux/phy.h
|
|
+++ b/include/linux/phy.h
|
|
@@ -155,6 +155,40 @@ typedef enum {
|
|
PHY_INTERFACE_MODE_MAX,
|
|
} phy_interface_t;
|
|
|
|
+/* PHY interface mode bitmap handling */
|
|
+#define DECLARE_PHY_INTERFACE_MASK(name) \
|
|
+ DECLARE_BITMAP(name, PHY_INTERFACE_MODE_MAX)
|
|
+
|
|
+static inline void phy_interface_zero(unsigned long *intf)
|
|
+{
|
|
+ bitmap_zero(intf, PHY_INTERFACE_MODE_MAX);
|
|
+}
|
|
+
|
|
+static inline bool phy_interface_empty(const unsigned long *intf)
|
|
+{
|
|
+ return bitmap_empty(intf, PHY_INTERFACE_MODE_MAX);
|
|
+}
|
|
+
|
|
+static inline void phy_interface_and(unsigned long *dst, const unsigned long *a,
|
|
+ const unsigned long *b)
|
|
+{
|
|
+ bitmap_and(dst, a, b, PHY_INTERFACE_MODE_MAX);
|
|
+}
|
|
+
|
|
+static inline void phy_interface_or(unsigned long *dst, const unsigned long *a,
|
|
+ const unsigned long *b)
|
|
+{
|
|
+ bitmap_or(dst, a, b, PHY_INTERFACE_MODE_MAX);
|
|
+}
|
|
+
|
|
+static inline void phy_interface_set_rgmii(unsigned long *intf)
|
|
+{
|
|
+ __set_bit(PHY_INTERFACE_MODE_RGMII, intf);
|
|
+ __set_bit(PHY_INTERFACE_MODE_RGMII_ID, intf);
|
|
+ __set_bit(PHY_INTERFACE_MODE_RGMII_RXID, intf);
|
|
+ __set_bit(PHY_INTERFACE_MODE_RGMII_TXID, intf);
|
|
+}
|
|
+
|
|
/*
|
|
* phy_supported_speeds - return all speeds currently supported by a PHY device
|
|
*/
|