[v4,2/3] phy: core: add debugfs root

Message ID 20221110132716.12294-2-chunfeng.yun@mediatek.com
State New
Headers
Series [v4,1/3] phy: mediatek: fix build warning caused by clang for powerpc |

Commit Message

Chunfeng Yun (云春峰) Nov. 10, 2022, 1:27 p.m. UTC
  Add a debugfs root for phy class, then phy drivers can add debugfs files
under this folder.

Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com>
---
v2~v4: no changes
---
 drivers/phy/phy-core.c  | 6 ++++++
 include/linux/phy/phy.h | 2 ++
 2 files changed, 8 insertions(+)
  

Comments

Vinod Koul Nov. 24, 2022, 5:39 p.m. UTC | #1
On 10-11-22, 21:27, Chunfeng Yun wrote:
> Add a debugfs root for phy class, then phy drivers can add debugfs files
> under this folder.
> 
> Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com>
> ---
> v2~v4: no changes
> ---
>  drivers/phy/phy-core.c  | 6 ++++++
>  include/linux/phy/phy.h | 2 ++
>  2 files changed, 8 insertions(+)
> 
> diff --git a/drivers/phy/phy-core.c b/drivers/phy/phy-core.c
> index d93ddf1262c5..2f9f69190519 100644
> --- a/drivers/phy/phy-core.c
> +++ b/drivers/phy/phy-core.c
> @@ -11,6 +11,7 @@
>  #include <linux/export.h>
>  #include <linux/module.h>
>  #include <linux/err.h>
> +#include <linux/debugfs.h>
>  #include <linux/device.h>
>  #include <linux/slab.h>
>  #include <linux/of.h>
> @@ -1204,6 +1205,9 @@ void devm_of_phy_provider_unregister(struct device *dev,
>  }
>  EXPORT_SYMBOL_GPL(devm_of_phy_provider_unregister);
>  
> +struct dentry *phy_debug_root;
> +EXPORT_SYMBOL_GPL(phy_debug_root);

Why expose this to whole world? Alternate approach would be to add this
in struct phy

> +
>  /**
>   * phy_release() - release the phy
>   * @dev: the dev member within phy
> @@ -1233,6 +1237,8 @@ static int __init phy_core_init(void)
>  
>  	phy_class->dev_release = phy_release;
>  
> +	phy_debug_root = debugfs_create_dir("phy", NULL);
> +
>  	return 0;
>  }
>  device_initcall(phy_core_init);
> diff --git a/include/linux/phy/phy.h b/include/linux/phy/phy.h
> index b1413757fcc3..c398749d49b9 100644
> --- a/include/linux/phy/phy.h
> +++ b/include/linux/phy/phy.h
> @@ -205,6 +205,8 @@ struct phy_lookup {
>  #define devm_of_phy_provider_register_full(dev, children, xlate) \
>  	__devm_of_phy_provider_register(dev, children, THIS_MODULE, xlate)
>  
> +extern struct dentry *phy_debug_root;
> +
>  static inline void phy_set_drvdata(struct phy *phy, void *data)
>  {
>  	dev_set_drvdata(&phy->dev, data);
> -- 
> 2.18.0
  
Chunfeng Yun (云春峰) Nov. 28, 2022, 7 a.m. UTC | #2
On Thu, 2022-11-24 at 23:09 +0530, Vinod Koul wrote:
> On 10-11-22, 21:27, Chunfeng Yun wrote:
> > Add a debugfs root for phy class, then phy drivers can add debugfs
> > files
> > under this folder.
> > 
> > Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com>
> > ---
> > v2~v4: no changes
> > ---
> >  drivers/phy/phy-core.c  | 6 ++++++
> >  include/linux/phy/phy.h | 2 ++
> >  2 files changed, 8 insertions(+)
> > 
> > diff --git a/drivers/phy/phy-core.c b/drivers/phy/phy-core.c
> > index d93ddf1262c5..2f9f69190519 100644
> > --- a/drivers/phy/phy-core.c
> > +++ b/drivers/phy/phy-core.c
> > @@ -11,6 +11,7 @@
> >  #include <linux/export.h>
> >  #include <linux/module.h>
> >  #include <linux/err.h>
> > +#include <linux/debugfs.h>
> >  #include <linux/device.h>
> >  #include <linux/slab.h>
> >  #include <linux/of.h>
> > @@ -1204,6 +1205,9 @@ void devm_of_phy_provider_unregister(struct
> > device *dev,
> >  }
> >  EXPORT_SYMBOL_GPL(devm_of_phy_provider_unregister);
> >  
> > +struct dentry *phy_debug_root;
> > +EXPORT_SYMBOL_GPL(phy_debug_root);
> 
> Why expose this to whole world? Alternate approach would be to add
> this
> in struct phy
If only add it in struct phy, many phy folders will be created under
/sys/kernel/debug/, and create them under /sys/kernel/debug/phy seems
more clearer, this also follows other class, such as usb

> 
> > +
> >  /**
> >   * phy_release() - release the phy
> >   * @dev: the dev member within phy
> > @@ -1233,6 +1237,8 @@ static int __init phy_core_init(void)
> >  
> >  	phy_class->dev_release = phy_release;
> >  
> > +	phy_debug_root = debugfs_create_dir("phy", NULL);
> > +
> >  	return 0;
> >  }
> >  device_initcall(phy_core_init);
> > diff --git a/include/linux/phy/phy.h b/include/linux/phy/phy.h
> > index b1413757fcc3..c398749d49b9 100644
> > --- a/include/linux/phy/phy.h
> > +++ b/include/linux/phy/phy.h
> > @@ -205,6 +205,8 @@ struct phy_lookup {
> >  #define devm_of_phy_provider_register_full(dev, children, xlate) \
> >  	__devm_of_phy_provider_register(dev, children, THIS_MODULE,
> > xlate)
> >  
> > +extern struct dentry *phy_debug_root;
> > +
> >  static inline void phy_set_drvdata(struct phy *phy, void *data)
> >  {
> >  	dev_set_drvdata(&phy->dev, data);
> > -- 
> > 2.18.0
> 
>
  

Patch

diff --git a/drivers/phy/phy-core.c b/drivers/phy/phy-core.c
index d93ddf1262c5..2f9f69190519 100644
--- a/drivers/phy/phy-core.c
+++ b/drivers/phy/phy-core.c
@@ -11,6 +11,7 @@ 
 #include <linux/export.h>
 #include <linux/module.h>
 #include <linux/err.h>
+#include <linux/debugfs.h>
 #include <linux/device.h>
 #include <linux/slab.h>
 #include <linux/of.h>
@@ -1204,6 +1205,9 @@  void devm_of_phy_provider_unregister(struct device *dev,
 }
 EXPORT_SYMBOL_GPL(devm_of_phy_provider_unregister);
 
+struct dentry *phy_debug_root;
+EXPORT_SYMBOL_GPL(phy_debug_root);
+
 /**
  * phy_release() - release the phy
  * @dev: the dev member within phy
@@ -1233,6 +1237,8 @@  static int __init phy_core_init(void)
 
 	phy_class->dev_release = phy_release;
 
+	phy_debug_root = debugfs_create_dir("phy", NULL);
+
 	return 0;
 }
 device_initcall(phy_core_init);
diff --git a/include/linux/phy/phy.h b/include/linux/phy/phy.h
index b1413757fcc3..c398749d49b9 100644
--- a/include/linux/phy/phy.h
+++ b/include/linux/phy/phy.h
@@ -205,6 +205,8 @@  struct phy_lookup {
 #define devm_of_phy_provider_register_full(dev, children, xlate) \
 	__devm_of_phy_provider_register(dev, children, THIS_MODULE, xlate)
 
+extern struct dentry *phy_debug_root;
+
 static inline void phy_set_drvdata(struct phy *phy, void *data)
 {
 	dev_set_drvdata(&phy->dev, data);