pinctrl: samsung: add pin_dbg_show callback for debugfs
Subsystems (4)
PATCH 1/1 pinctrl: samsung: add pin_dbg_show callback for debugfs
This patch adds a samsung_pin_dbg_show function to implement the pin_dbg_show callback function which can be used to show pin confuration values. Basically, it can show pin setting values by accessing the "pins" node like below:
$ cat pins pin 0 (gpy7-0) CON(0x0) DAT(0x1) PUD(0x1) DRV(0x0) CON_PDN(0x0) PUD_PDN(0x0)
--- drivers/pinctrl/samsung/pinctrl-samsung.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+)
drivers/pinctrl/samsung/pinctrl-samsung.c +27 -0
@@ -279,6 +279,30 @@ static int samsung_dt_node_to_map(struct pinctrl_dev *pctldev,return 0 ; } +#ifdef CONFIG_DEBUG_FS +/* Forward declaration which can be used by samsung_pin_dbg_show */ +static int samsung_pinconf_rw (struct pinctrl_dev *pctldev,unsigned int pin, +unsigned long *config,bool set); +static char *reg_names[] = {"CON" ,"DAT" ,"PUD" ,"DRV" ,"CON_PDN" ,"PUD_PDN" }; +static void samsung_pin_dbg_show (struct pinctrl_dev *pctldev, +struct seq_file *s,unsigned int pin) +{ +enum pincfg_type cfg_type; +unsigned long config; +int ret; + +for (cfg_type =0 ; cfg_type <PINCFG_TYPE_NUM ; cfg_type++) { + config =PINCFG_PACK (cfg_type,0 ); + ret =samsung_pinconf_rw (pctldev, pin, &config, false); +if (ret == -EINVAL ) +continue ; + +seq_printf (s," %s(0x%lx)" , reg_names[cfg_type], +PINCFG_UNPACK_VALUE (config)); + } +} +#endif +/* list of pinctrl callbacks for the pinctrl core */ static const struct pinctrl_ops samsung_pctrl_ops = { .get_groups_count = samsung_get_group_count,
@@ -286,6 +310,9 @@ static const struct pinctrl_ops samsung_pctrl_ops = { .get_group_pins = samsung_get_group_pins, .dt_node_to_map = samsung_dt_node_to_map, .dt_free_map = samsung_dt_free_map, +#ifdef CONFIG_DEBUG_FS + .pin_dbg_show = samsung_pin_dbg_show, +#endif };/* check if the selector is a valid pin function selector */
Signature · 1 line
2.14.1
Krzysztof Kozlowski
maintainerPATCH 1/1 pinctrl: samsung: add pin_dbg_show callback for debugfs
Quoted 18 lines · Chanho Park
This patch adds a
samsung_pin_dbg_showfunction to implement thepin_dbg_showcallback function which can be used to show pin confuration values. Basically, it can show pin setting values by accessing the "pins" node like below:$ cat pins pin 0 (gpy7-0) CON(0x0) DAT(0x1) PUD(0x1) DRV(0x0) CON_PDN(0x0) PUD_PDN(0x0)Signed-off-by Chanho Park <[email protected]>--- drivers/pinctrl/samsung/pinctrl-samsung.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+)drivers/pinctrl/samsung/pinctrl-samsung.c +0
-0
drivers/pinctrl/samsung/pinctrl-samsung.c static int samsung_dt_node_to_map(struct pinctrl_dev *pctldev, · line 286
Quoted 8 lines
drivers/pinctrl/samsung/pinctrl-samsung.c +5
-0@@ -279,6 +279,30 @@ static int samsung_dt_node_to_map(struct pinctrl_dev *pctldev,return 0 ; } +#ifdef CONFIG_DEBUG_FS +/* Forward declaration which can be used by samsung_pin_dbg_show */ +static int samsung_pinconf_rw (struct pinctrl_dev *pctldev,unsigned int pin, +unsigned long *config,bool set); +static char *reg_names[] = {"CON" ,"DAT" ,"PUD" ,"DRV" ,"CON_PDN" ,"PUD_PDN" };
This should be static const char. Please also add an empty line here.
drivers/pinctrl/samsung/pinctrl-samsung.c static int samsung_dt_node_to_map(struct pinctrl_dev *pctldev, · line 296
Quoted 10 lines
drivers/pinctrl/samsung/pinctrl-samsung.c +10
-0+static void samsung_pin_dbg_show (struct pinctrl_dev *pctldev, +struct seq_file *s,unsigned int pin) +{ +enum pincfg_type cfg_type; +unsigned long config; +int ret; + +for (cfg_type =0 ; cfg_type <PINCFG_TYPE_NUM ; cfg_type++) { + config =PINCFG_PACK (cfg_type,0 ); + ret =samsung_pinconf_rw (pctldev, pin, &config, false);
Use samsung_pinconf_get().
drivers/pinctrl/samsung/pinctrl-samsung.c static int samsung_dt_node_to_map(struct pinctrl_dev *pctldev, · line 297
Quoted 1 line
drivers/pinctrl/samsung/pinctrl-samsung.c +1
-0+if (ret == -EINVAL )
if (ret < 0)
Best regards,
Krzysztof
Quoted 24 lines
drivers/pinctrl/samsung/pinctrl-samsung.c +11
-1+continue ; + +seq_printf (s," %s(0x%lx)" , reg_names[cfg_type], + PINCFG_UNPACK_VALUE(config)); + } +} +#endif +/* list of pinctrl callbacks for the pinctrl core */ static const struct pinctrl_ops samsung_pctrl_ops = { .get_groups_count = samsung_get_group_count,@@ -286,6 +310,9 @@ static const struct pinctrl_ops samsung_pctrl_ops = { .get_group_pins = samsung_get_group_pins, .dt_node_to_map = samsung_dt_node_to_map, .dt_free_map = samsung_dt_free_map, +#ifdef CONFIG_DEBUG_FS + .pin_dbg_show = samsung_pin_dbg_show, +#endif };/* check if the selector is a valid pin function selector */ --2.14.1
PATCH 1/1 pinctrl: samsung: add pin_dbg_show callback for debugfs
Hi Krzysztof,
First of all, thanks for your review.
Quoted 22 lines · Krzysztof Kozlowski
Quoted 21 lines · Chanho Park
This patch adds a
samsung_pin_dbg_showfunction to implement thepin_dbg_showcallback function which can be used to show pin confuration values. Basically, it can show pin setting values by accessing the "pins" node like below:$ cat pins pin 0 (gpy7-0) CON(0x0) DAT(0x1) PUD(0x1) DRV(0x0) CON_PDN(0x0) PUD_PDN(0x0)Signed-off-by Chanho Park <[email protected]>--- drivers/pinctrl/samsung/pinctrl-samsung.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+)drivers/pinctrl/samsung/pinctrl-samsung.c +0
-0@@ -279,6 +279,30 @@ static int samsung_dt_node_to_map(struct pinctrl_dev *pctldev,return 0 ; }
Quoted 6 lines
drivers/pinctrl/samsung/pinctrl-samsung.c static int samsung_dt_node_to_map(struct pinctrl_dev *pctldev, · line 286
Quoted 5 lines
drivers/pinctrl/samsung/pinctrl-samsung.c +5
-0+#ifdef CONFIG_DEBUG_FS +/* Forward declaration which can be used by samsung_pin_dbg_show */ +static int samsung_pinconf_rw (struct pinctrl_dev *pctldev,unsigned int pin, +unsigned long *config,bool set); +static char *reg_names[] = {"CON" ,"DAT" ,"PUD" ,"DRV" ,"CON_PDN" ,"PUD_PDN" };This should be static const char. Please also add an empty line here.
Okay. I'll fix it and use samsung_pinconf_get forward declaration.
Quoted 13 lines
drivers/pinctrl/samsung/pinctrl-samsung.c static int samsung_dt_node_to_map(struct pinctrl_dev *pctldev, · line 296
Quoted 11 lines
drivers/pinctrl/samsung/pinctrl-samsung.c +10
-0+static void samsung_pin_dbg_show (struct pinctrl_dev *pctldev, +struct seq_file *s,unsigned int pin) +{ +enum pincfg_type cfg_type; +unsigned long config; +int ret; + +for (cfg_type =0 ; cfg_type <PINCFG_TYPE_NUM ; cfg_type++) { + config =PINCFG_PACK (cfg_type,0 ); + ret =samsung_pinconf_rw (pctldev, pin, &config, false);Use
samsung_pinconf_get().
Quoted 2 lines
drivers/pinctrl/samsung/pinctrl-samsung.c static int samsung_dt_node_to_map(struct pinctrl_dev *pctldev, · line 297
Quoted 1 line
drivers/pinctrl/samsung/pinctrl-samsung.c +1
-0+if (ret == -EINVAL )if (ret < 0)
Okay. I'll apply this next patch.
Best Regards,
Chanho Park