diff mbox series

[net-next] net: phy: add phylib-internal.h

Message ID 290db2fb-01f3-46af-8612-26d30b98d8b3@gmail.com (mailing list archive)
State Superseded
Delegated to: Netdev Maintainers
Headers show
Series [net-next] net: phy: add phylib-internal.h | expand

Checks

Context Check Description
netdev/tree_selection success Clearly marked for net-next, async
netdev/apply fail Patch does not apply to net-next-0

Commit Message

Heiner Kallweit Feb. 18, 2025, 10:43 p.m. UTC
This patch is a starting point for moving phylib-internal
declarations to a private header file.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
---
 drivers/net/phy/phy-c45.c          |  1 +
 drivers/net/phy/phy-core.c         |  3 ++-
 drivers/net/phy/phy.c              |  2 ++
 drivers/net/phy/phy_device.c       |  2 ++
 drivers/net/phy/phy_led_triggers.c |  2 ++
 drivers/net/phy/phylib-internal.h  | 25 +++++++++++++++++++++++++
 include/linux/phy.h                | 13 -------------
 7 files changed, 34 insertions(+), 14 deletions(-)
 create mode 100644 drivers/net/phy/phylib-internal.h

Comments

Heiner Kallweit Feb. 19, 2025, 6:37 a.m. UTC | #1
On 18.02.2025 23:43, Heiner Kallweit wrote:
> This patch is a starting point for moving phylib-internal
> declarations to a private header file.
> 
> Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
> ---
>  drivers/net/phy/phy-c45.c          |  1 +
>  drivers/net/phy/phy-core.c         |  3 ++-
>  drivers/net/phy/phy.c              |  2 ++
>  drivers/net/phy/phy_device.c       |  2 ++
>  drivers/net/phy/phy_led_triggers.c |  2 ++
>  drivers/net/phy/phylib-internal.h  | 25 +++++++++++++++++++++++++
>  include/linux/phy.h                | 13 -------------
>  7 files changed, 34 insertions(+), 14 deletions(-)
>  create mode 100644 drivers/net/phy/phylib-internal.h
> 
Patch only applies on top of patches which weren't applied yet.
So I'll resubmit.

--
pw-bot: cr
Andrew Lunn Feb. 19, 2025, 1:35 p.m. UTC | #2
On Wed, Feb 19, 2025 at 07:37:52AM +0100, Heiner Kallweit wrote:
> On 18.02.2025 23:43, Heiner Kallweit wrote:
> > This patch is a starting point for moving phylib-internal
> > declarations to a private header file.
> > 
> > Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
> > ---
> >  drivers/net/phy/phy-c45.c          |  1 +
> >  drivers/net/phy/phy-core.c         |  3 ++-
> >  drivers/net/phy/phy.c              |  2 ++
> >  drivers/net/phy/phy_device.c       |  2 ++
> >  drivers/net/phy/phy_led_triggers.c |  2 ++
> >  drivers/net/phy/phylib-internal.h  | 25 +++++++++++++++++++++++++
> >  include/linux/phy.h                | 13 -------------
> >  7 files changed, 34 insertions(+), 14 deletions(-)
> >  create mode 100644 drivers/net/phy/phylib-internal.h

Maybe we should discuss a little where we are going with this...

I like the idea, we want to limit the scope of some functions so they
don't get abused. MAC drivers are the main abusers here, they should
have a small set of methods they can use.

If you look at some other subsystems they have a header for consumers,
and a header for providers. include/linux/gpio/{consumer|driver}.h,
clk-provider.h and clk.h, etc.

Do we want include/linux/phy.h to contain the upper API for phylib,
which MAC drivers can use? Should phylib-internal.h be just the
internal API between parts of the core? There will be another header
which has everything a PHY driver needs for the lower interface of
phylib?

Is this what you are thinking?

	Andrew
Heiner Kallweit Feb. 19, 2025, 5:29 p.m. UTC | #3
On 19.02.2025 14:35, Andrew Lunn wrote:
> On Wed, Feb 19, 2025 at 07:37:52AM +0100, Heiner Kallweit wrote:
>> On 18.02.2025 23:43, Heiner Kallweit wrote:
>>> This patch is a starting point for moving phylib-internal
>>> declarations to a private header file.
>>>
>>> Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
>>> ---
>>>  drivers/net/phy/phy-c45.c          |  1 +
>>>  drivers/net/phy/phy-core.c         |  3 ++-
>>>  drivers/net/phy/phy.c              |  2 ++
>>>  drivers/net/phy/phy_device.c       |  2 ++
>>>  drivers/net/phy/phy_led_triggers.c |  2 ++
>>>  drivers/net/phy/phylib-internal.h  | 25 +++++++++++++++++++++++++
>>>  include/linux/phy.h                | 13 -------------
>>>  7 files changed, 34 insertions(+), 14 deletions(-)
>>>  create mode 100644 drivers/net/phy/phylib-internal.h
> 
> Maybe we should discuss a little where we are going with this...
> 
> I like the idea, we want to limit the scope of some functions so they
> don't get abused. MAC drivers are the main abusers here, they should
> have a small set of methods they can use.
> 
> If you look at some other subsystems they have a header for consumers,
> and a header for providers. include/linux/gpio/{consumer|driver}.h,
> clk-provider.h and clk.h, etc.
> 
> Do we want include/linux/phy.h to contain the upper API for phylib,
> which MAC drivers can use? Should phylib-internal.h be just the
> internal API between parts of the core? There will be another header
> which has everything a PHY driver needs for the lower interface of
> phylib?
> 
> Is this what you are thinking?
> 
Exactly. Not sure in which category phylink would fall: part of core,
or similar to a PHY driver?

> 	Andrew
Heiner
diff mbox series

Patch

diff --git a/drivers/net/phy/phy-c45.c b/drivers/net/phy/phy-c45.c
index 37c9a344b..0bcbdce38 100644
--- a/drivers/net/phy/phy-c45.c
+++ b/drivers/net/phy/phy-c45.c
@@ -9,6 +9,7 @@ 
 #include <linux/phy.h>
 
 #include "mdio-open-alliance.h"
+#include "phylib-internal.h"
 
 /**
  * genphy_c45_baset1_able - checks if the PMA has BASE-T1 extended abilities
diff --git a/drivers/net/phy/phy-core.c b/drivers/net/phy/phy-core.c
index 2fd1d153a..b1c1670de 100644
--- a/drivers/net/phy/phy-core.c
+++ b/drivers/net/phy/phy-core.c
@@ -6,6 +6,8 @@ 
 #include <linux/phy.h>
 #include <linux/of.h>
 
+#include "phylib-internal.h"
+
 /**
  * phy_speed_to_str - Return a string representing the PHY link speed
  *
@@ -544,7 +546,6 @@  void phy_check_downshift(struct phy_device *phydev)
 
 	phydev->downshifted_rate = 1;
 }
-EXPORT_SYMBOL_GPL(phy_check_downshift);
 
 static int phy_resolve_min_speed(struct phy_device *phydev, bool fdx_only)
 {
diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c
index b454e31d4..fd8d8dd29 100644
--- a/drivers/net/phy/phy.c
+++ b/drivers/net/phy/phy.c
@@ -36,6 +36,8 @@ 
 #include <net/genetlink.h>
 #include <net/sock.h>
 
+#include "phylib-internal.h"
+
 #define PHY_STATE_TIME	HZ
 
 #define PHY_STATE_STR(_state)			\
diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c
index 103a4d102..7d21379fa 100644
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
@@ -41,6 +41,8 @@ 
 #include <linux/uaccess.h>
 #include <linux/unistd.h>
 
+#include "phylib-internal.h"
+
 MODULE_DESCRIPTION("PHY library");
 MODULE_AUTHOR("Andy Fleming");
 MODULE_LICENSE("GPL");
diff --git a/drivers/net/phy/phy_led_triggers.c b/drivers/net/phy/phy_led_triggers.c
index f550576eb..bd3c9554f 100644
--- a/drivers/net/phy/phy_led_triggers.c
+++ b/drivers/net/phy/phy_led_triggers.c
@@ -5,6 +5,8 @@ 
 #include <linux/phy_led_triggers.h>
 #include <linux/netdevice.h>
 
+#include "phylib-internal.h"
+
 static struct phy_led_trigger *phy_speed_to_led_trigger(struct phy_device *phy,
 							unsigned int speed)
 {
diff --git a/drivers/net/phy/phylib-internal.h b/drivers/net/phy/phylib-internal.h
new file mode 100644
index 000000000..dc9592c6b
--- /dev/null
+++ b/drivers/net/phy/phylib-internal.h
@@ -0,0 +1,25 @@ 
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * phylib-internal header
+ */
+
+#ifndef __PHYLIB_INTERNAL_H
+#define __PHYLIB_INTERNAL_H
+
+struct phy_device;
+
+/*
+ * phy_supported_speeds - return all speeds currently supported by a PHY device
+ */
+unsigned int phy_supported_speeds(struct phy_device *phy,
+				  unsigned int *speeds,
+				  unsigned int size);
+void of_set_phy_supported(struct phy_device *phydev);
+void of_set_phy_eee_broken(struct phy_device *phydev);
+void of_set_phy_timing_role(struct phy_device *phydev);
+int phy_speed_down_core(struct phy_device *phydev);
+void phy_check_downshift(struct phy_device *phydev);
+
+int genphy_c45_read_eee_adv(struct phy_device *phydev, unsigned long *adv);
+
+#endif /* __PHYLIB_INTERNAL_H */
diff --git a/include/linux/phy.h b/include/linux/phy.h
index c0f524579..3076b4caa 100644
--- a/include/linux/phy.h
+++ b/include/linux/phy.h
@@ -184,13 +184,6 @@  static inline void phy_interface_set_rgmii(unsigned long *intf)
 	__set_bit(PHY_INTERFACE_MODE_RGMII_TXID, intf);
 }
 
-/*
- * phy_supported_speeds - return all speeds currently supported by a PHY device
- */
-unsigned int phy_supported_speeds(struct phy_device *phy,
-				      unsigned int *speeds,
-				      unsigned int size);
-
 /**
  * phy_modes - map phy_interface_t enum to device tree binding of phy-mode
  * @interface: enum phy_interface_t value
@@ -1324,10 +1317,6 @@  phy_lookup_setting(int speed, int duplex, const unsigned long *mask,
 		   bool exact);
 size_t phy_speeds(unsigned int *speeds, size_t size,
 		  unsigned long *mask);
-void of_set_phy_supported(struct phy_device *phydev);
-void of_set_phy_eee_broken(struct phy_device *phydev);
-void of_set_phy_timing_role(struct phy_device *phydev);
-int phy_speed_down_core(struct phy_device *phydev);
 
 /**
  * phy_is_started - Convenience function to check whether PHY is started
@@ -1353,7 +1342,6 @@  static inline void phy_disable_eee_mode(struct phy_device *phydev, u32 link_mode
 
 void phy_resolve_aneg_pause(struct phy_device *phydev);
 void phy_resolve_aneg_linkmode(struct phy_device *phydev);
-void phy_check_downshift(struct phy_device *phydev);
 
 /**
  * phy_read - Convenience function for reading a given PHY register
@@ -2028,7 +2016,6 @@  int genphy_c45_ethtool_get_eee(struct phy_device *phydev,
 int genphy_c45_ethtool_set_eee(struct phy_device *phydev,
 			       struct ethtool_keee *data);
 int genphy_c45_an_config_eee_aneg(struct phy_device *phydev);
-int genphy_c45_read_eee_adv(struct phy_device *phydev, unsigned long *adv);
 
 /* Generic C45 PHY driver */
 extern struct phy_driver genphy_c45_driver;