Messages in this thread | | | From | Chunfeng Yun (云春峰) <> | Subject | Re: [PATCH v8] phy: mediatek: tphy: add debugfs files | Date | Thu, 16 Mar 2023 07:12:16 +0000 |
| |
On Fri, 2023-02-10 at 21:01 +0530, Vinod Koul wrote: > On 10-02-23, 16:58, Chunfeng Yun wrote: > > These debugfs files are mainly used to make eye diagram test > > easier, > > especially helpful to do HQA test for a new IC without efuse > > enabled. > > > > Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com> > > --- > > v8: abandon patch to create phy debug root file > > /sys/kernel/debug/phy/ suggested by Vinod > > Sorry that was not my suggestion Sorry, I misunderstood you means > > > > > v6~v7: no changes > > > > v5: using common debugfs config CONFIG_DEBUG_FS > > > > v4: fix build warning of sometimes uninitialized variable > > > > v3: fix typo of "debugfs" suggested by AngeloGioacchino > > > > v2: add CONFIG_PHY_MTK_TPHY_DEBUGFS suggested by AngeloGioacchino > > --- > > drivers/phy/mediatek/phy-mtk-tphy.c | 405 > > +++++++++++++++++++++++++++- > > 1 file changed, 404 insertions(+), 1 deletion(-) > > > > diff --git a/drivers/phy/mediatek/phy-mtk-tphy.c > > b/drivers/phy/mediatek/phy-mtk-tphy.c > > index e906a82791bd..65a95c3726bf 100644 > > --- a/drivers/phy/mediatek/phy-mtk-tphy.c > > +++ b/drivers/phy/mediatek/phy-mtk-tphy.c > > @@ -7,6 +7,7 @@ > > > > #include <dt-bindings/phy/phy.h> > > #include <linux/clk.h> > > +#include <linux/debugfs.h> > > #include <linux/delay.h> > > #include <linux/iopoll.h> > > #include <linux/mfd/syscon.h> > > @@ -264,6 +265,8 @@ > > > > #define TPHY_CLKS_CNT 2 > > > > +#define USER_BUF_LEN(count) min_t(size_t, 8, (count)) > > + > > enum mtk_phy_version { > > MTK_PHY_V1 = 1, > > MTK_PHY_V2, > > @@ -310,6 +313,7 @@ struct mtk_phy_instance { > > struct clk_bulk_data clks[TPHY_CLKS_CNT]; > > u32 index; > > u32 type; > > + struct dentry *dbgfs; > > struct regmap *type_sw; > > u32 type_sw_reg; > > u32 type_sw_index; > > @@ -332,10 +336,391 @@ struct mtk_tphy { > > const struct mtk_phy_pdata *pdata; > > struct mtk_phy_instance **phys; > > int nphys; > > + struct dentry *dbgfs_root; > > int src_ref_clk; /* MHZ, reference clock for slew rate > > calibrate */ > > int src_coef; /* coefficient for slew rate calibrate */ > > }; > > I asked the struct dentry *debugfs be part of struct phy. Debugfs > would > be created by core but rather than exported, it should be populated > in > phy and you can use it here in the driver > > > Ok, I'll do the following steps:
0. put a struct dentry *debugfs in struct phy; 1. define a static struct dentry *phy_debugfs_root in phy-core.c, then create a root directory (/sys/kernel/debug/phy/) for phy subsystem in phy_core_init(); 2. create directory for each phy under the root directory (/sys/kernel/debug/phy/); this step has two ways: A: create the directory @debugfs of struct phy in phy_create() by default; B: provide some api for user to create/destory the directory @debugfs or others when need; 3. add private debugfs files in @debugfs of struct phy;
For the case in tphy driver, it provides some struct phy, the driver may want to create debugfs files which not belongs to any struct phy in the root directory (/sys/kernel/debug/phy/), then need provide a api.
Do you have any suggestions? Which way do you prefer to use in step 2?
Thanks a lot;
> <skip> > > + > > static struct platform_driver mtk_tphy_driver = { > > .probe = mtk_tphy_probe, > > + .remove = mtk_tphy_remove, > > .driver = { > > .name = "mtk-tphy", > > .of_match_table = mtk_tphy_id_table, > > -- > > 2.18.0 > >
| |