* [linusw-pinctrl:devel 15/25] drivers/pinctrl/realtek/pinctrl-rtd.c:180:29: warning: '%s' directive argument is null
@ 2023-09-26 18:47 kernel test robot
2023-09-27 9:06 ` Linus Walleij
0 siblings, 1 reply; 2+ messages in thread
From: kernel test robot @ 2023-09-26 18:47 UTC (permalink / raw)
To: Tzuyi Chang; +Cc: oe-kbuild-all, linux-gpio, Linus Walleij
tree: https://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl.git devel
head: caaeb8c551123e26e86270c8dec99a78f1f6fe0f
commit: e99ce78030db2fca9b296a1c4f4aaa87b008d97b [15/25] pinctrl: realtek: Add common pinctrl driver for Realtek DHC RTD SoCs
config: arm-randconfig-001-20230926 (https://download.01.org/0day-ci/archive/20230927/202309270234.aJGlDE0P-lkp@intel.com/config)
compiler: arm-linux-gnueabi-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20230927/202309270234.aJGlDE0P-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202309270234.aJGlDE0P-lkp@intel.com/
All warnings (new ones prefixed by >>):
In file included from include/linux/device.h:15,
from include/linux/platform_device.h:13,
from drivers/pinctrl/realtek/pinctrl-rtd.c:18:
drivers/pinctrl/realtek/pinctrl-rtd.c: In function 'rtd_pinctrl_set_one_mux':
>> drivers/pinctrl/realtek/pinctrl-rtd.c:180:29: warning: '%s' directive argument is null [-Wformat-overflow=]
180 | dev_err(pcdev->dev, "No function %s available for pin %s\n", func_name, mux->name);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/dev_printk.h:110:30: note: in definition of macro 'dev_printk_index_wrap'
110 | _p_func(dev, fmt, ##__VA_ARGS__); \
| ^~~
include/linux/dev_printk.h:144:56: note: in expansion of macro 'dev_fmt'
144 | dev_printk_index_wrap(_dev_err, KERN_ERR, dev, dev_fmt(fmt), ##__VA_ARGS__)
| ^~~~~~~
drivers/pinctrl/realtek/pinctrl-rtd.c:180:9: note: in expansion of macro 'dev_err'
180 | dev_err(pcdev->dev, "No function %s available for pin %s\n", func_name, mux->name);
| ^~~~~~~
drivers/pinctrl/realtek/pinctrl-rtd.c:180:63: note: format string is defined here
180 | dev_err(pcdev->dev, "No function %s available for pin %s\n", func_name, mux->name);
| ^~
drivers/pinctrl/realtek/pinctrl-rtd.c:168:37: warning: '%s' directive argument is null [-Wformat-overflow=]
168 | dev_err(pcdev->dev, "No functions available for pin %s\n", mux->name);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/dev_printk.h:110:30: note: in definition of macro 'dev_printk_index_wrap'
110 | _p_func(dev, fmt, ##__VA_ARGS__); \
| ^~~
include/linux/dev_printk.h:144:56: note: in expansion of macro 'dev_fmt'
144 | dev_printk_index_wrap(_dev_err, KERN_ERR, dev, dev_fmt(fmt), ##__VA_ARGS__)
| ^~~~~~~
drivers/pinctrl/realtek/pinctrl-rtd.c:168:17: note: in expansion of macro 'dev_err'
168 | dev_err(pcdev->dev, "No functions available for pin %s\n", mux->name);
| ^~~~~~~
drivers/pinctrl/realtek/pinctrl-rtd.c:168:69: note: format string is defined here
168 | dev_err(pcdev->dev, "No functions available for pin %s\n", mux->name);
| ^~
vim +180 drivers/pinctrl/realtek/pinctrl-rtd.c
> 18 #include <linux/platform_device.h>
19 #include <linux/seq_file.h>
20 #include <linux/regmap.h>
21 #include <linux/slab.h>
22 #include "../core.h"
23 #include "../pinctrl-utils.h"
24 #include "pinctrl-rtd.h"
25
26 struct rtd_pinctrl {
27 struct device *dev;
28 struct pinctrl_dev *pcdev;
29 void __iomem *base;
30 struct pinctrl_desc desc;
31 const struct rtd_pinctrl_desc *info;
32 struct regmap *regmap_pinctrl;
33 };
34
35 /* custom pinconf parameters */
36 #define RTD_DRIVE_STRENGH_P (PIN_CONFIG_END + 1)
37 #define RTD_DRIVE_STRENGH_N (PIN_CONFIG_END + 2)
38 #define RTD_DUTY_CYCLE (PIN_CONFIG_END + 3)
39
40 static const struct pinconf_generic_params rtd_custom_bindings[] = {
41 {"realtek,drive-strength-p", RTD_DRIVE_STRENGH_P, 0},
42 {"realtek,drive-strength-n", RTD_DRIVE_STRENGH_N, 0},
43 {"realtek,duty-cycle", RTD_DUTY_CYCLE, 0},
44 };
45
46 static int rtd_pinctrl_get_groups_count(struct pinctrl_dev *pcdev)
47 {
48 struct rtd_pinctrl *data = pinctrl_dev_get_drvdata(pcdev);
49
50 return data->info->num_groups;
51 }
52
53 static const char *rtd_pinctrl_get_group_name(struct pinctrl_dev *pcdev,
54 unsigned int selector)
55 {
56 struct rtd_pinctrl *data = pinctrl_dev_get_drvdata(pcdev);
57
58 return data->info->groups[selector].name;
59 }
60
61 static int rtd_pinctrl_get_group_pins(struct pinctrl_dev *pcdev,
62 unsigned int selector,
63 const unsigned int **pins,
64 unsigned int *num_pins)
65 {
66 struct rtd_pinctrl *data = pinctrl_dev_get_drvdata(pcdev);
67
68 *pins = data->info->groups[selector].pins;
69 *num_pins = data->info->groups[selector].num_pins;
70
71 return 0;
72 }
73
74 static void rtd_pinctrl_dbg_show(struct pinctrl_dev *pcdev,
75 struct seq_file *s,
76 unsigned int offset)
77 {
78 struct rtd_pinctrl *data = pinctrl_dev_get_drvdata(pcdev);
79 const struct rtd_pin_desc *mux = &data->info->muxes[offset];
80 const struct rtd_pin_mux_desc *func;
81 u32 val;
82 u32 mask;
83 u32 pin_val;
84 int is_map;
85
86 if (!mux->name) {
87 seq_puts(s, "[not defined]");
88 return;
89 }
90 val = readl_relaxed(data->base + mux->mux_offset);
91 mask = mux->mux_mask;
92 pin_val = val & mask;
93
94 is_map = 0;
95 func = &mux->functions[0];
96 seq_puts(s, "function: ");
97 while (func->name) {
98 if (func->mux_value == pin_val) {
99 is_map = 1;
100 seq_printf(s, "[%s] ", func->name);
101 } else {
102 seq_printf(s, "%s ", func->name);
103 }
104 func++;
105 }
106 if (!is_map)
107 seq_puts(s, "[not defined]");
108 }
109
110 static const struct pinctrl_ops rtd_pinctrl_ops = {
111 .dt_node_to_map = pinconf_generic_dt_node_to_map_all,
112 .dt_free_map = pinctrl_utils_free_map,
113 .get_groups_count = rtd_pinctrl_get_groups_count,
114 .get_group_name = rtd_pinctrl_get_group_name,
115 .get_group_pins = rtd_pinctrl_get_group_pins,
116 .pin_dbg_show = rtd_pinctrl_dbg_show,
117 };
118
119 static int rtd_pinctrl_get_functions_count(struct pinctrl_dev *pcdev)
120 {
121 struct rtd_pinctrl *data = pinctrl_dev_get_drvdata(pcdev);
122
123 return data->info->num_functions;
124 }
125
126 static const char *rtd_pinctrl_get_function_name(struct pinctrl_dev *pcdev,
127 unsigned int selector)
128 {
129 struct rtd_pinctrl *data = pinctrl_dev_get_drvdata(pcdev);
130
131 return data->info->functions[selector].name;
132 }
133
134 static int rtd_pinctrl_get_function_groups(struct pinctrl_dev *pcdev,
135 unsigned int selector,
136 const char * const **groups,
137 unsigned int * const num_groups)
138 {
139 struct rtd_pinctrl *data = pinctrl_dev_get_drvdata(pcdev);
140
141 *groups = data->info->functions[selector].groups;
142 *num_groups = data->info->functions[selector].num_groups;
143
144 return 0;
145 }
146
147 static const struct rtd_pin_desc *rtd_pinctrl_find_mux(struct rtd_pinctrl *data, unsigned int pin)
148 {
149 if (!data->info->muxes[pin].name)
150 return &data->info->muxes[pin];
151
152 return NULL;
153 }
154
155 static int rtd_pinctrl_set_one_mux(struct pinctrl_dev *pcdev,
156 unsigned int pin, const char *func_name)
157 {
158 struct rtd_pinctrl *data = pinctrl_dev_get_drvdata(pcdev);
159 const struct rtd_pin_desc *mux;
160 int ret = 0;
161 int i;
162
163 mux = rtd_pinctrl_find_mux(data, pin);
164 if (!mux)
165 return 0;
166
167 if (!mux->functions) {
168 dev_err(pcdev->dev, "No functions available for pin %s\n", mux->name);
169 return -ENOTSUPP;
170 }
171
172 for (i = 0; mux->functions[i].name; i++) {
173 if (strcmp(mux->functions[i].name, func_name) != 0)
174 continue;
175 ret = regmap_update_bits(data->regmap_pinctrl, mux->mux_offset, mux->mux_mask,
176 mux->functions[i].mux_value);
177 return ret;
178 }
179
> 180 dev_err(pcdev->dev, "No function %s available for pin %s\n", func_name, mux->name);
181
182 return -EINVAL;
183 }
184
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [linusw-pinctrl:devel 15/25] drivers/pinctrl/realtek/pinctrl-rtd.c:180:29: warning: '%s' directive argument is null
2023-09-26 18:47 [linusw-pinctrl:devel 15/25] drivers/pinctrl/realtek/pinctrl-rtd.c:180:29: warning: '%s' directive argument is null kernel test robot
@ 2023-09-27 9:06 ` Linus Walleij
0 siblings, 0 replies; 2+ messages in thread
From: Linus Walleij @ 2023-09-27 9:06 UTC (permalink / raw)
To: kernel test robot; +Cc: Tzuyi Chang, oe-kbuild-all, linux-gpio
On Tue, Sep 26, 2023 at 8:48 PM kernel test robot <lkp@intel.com> wrote:
> drivers/pinctrl/realtek/pinctrl-rtd.c: In function 'rtd_pinctrl_set_one_mux':
> >> drivers/pinctrl/realtek/pinctrl-rtd.c:180:29: warning: '%s' directive argument is null [-Wformat-overflow=]
> 180 | dev_err(pcdev->dev, "No function %s available for pin %s\n", func_name, mux->name);
> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
So:
> 155 static int rtd_pinctrl_set_one_mux(struct pinctrl_dev *pcdev,
> 156 unsigned int pin, const char *func_name)
> 157 {
> 158 struct rtd_pinctrl *data = pinctrl_dev_get_drvdata(pcdev);
> 159 const struct rtd_pin_desc *mux;
> 160 int ret = 0;
> 161 int i;
> 162
> 163 mux = rtd_pinctrl_find_mux(data, pin);
> 164 if (!mux)
> 165 return 0;
> 166
> 167 if (!mux->functions) {
> 168 dev_err(pcdev->dev, "No functions available for pin %s\n", mux->name);
> 169 return -ENOTSUPP;
> 170 }
> 171
> 172 for (i = 0; mux->functions[i].name; i++) {
> 173 if (strcmp(mux->functions[i].name, func_name) != 0)
> 174 continue;
> 175 ret = regmap_update_bits(data->regmap_pinctrl, mux->mux_offset, mux->mux_mask,
> 176 mux->functions[i].mux_value);
> 177 return ret;
> 178 }
> 179
> > 180 dev_err(pcdev->dev, "No function %s available for pin %s\n", func_name, mux->name);
I can't see it, what am I missing? Why would func_name or mux->name be NULL?
Yours,
Linus Walleij
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2023-09-27 9:07 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-09-26 18:47 [linusw-pinctrl:devel 15/25] drivers/pinctrl/realtek/pinctrl-rtd.c:180:29: warning: '%s' directive argument is null kernel test robot
2023-09-27 9:06 ` Linus Walleij
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).