 aab466f422
			
		
	
	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
 | |
|   */
 |