Re: [PATCH 1/3 v6] input: pwm-beeper: add feature to set volume level

From: kernel test robot
Date: Tue Jan 24 2023 - 08:19:48 EST


Hi Manuel,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on dtor-input/next]
[also build test ERROR on dtor-input/for-linus linus/master v6.2-rc5]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url: https://github.com/intel-lab-lkp/linux/commits/Manuel-Traut/input-pwm-beeper-add-feature-to-set-volume-level/20230124-191549
base: https://git.kernel.org/pub/scm/linux/kernel/git/dtor/input.git next
patch link: https://lore.kernel.org/r/Y8%2B9L7UincSjIaD9%40mt.com
patch subject: [PATCH 1/3 v6] input: pwm-beeper: add feature to set volume level
config: s390-allmodconfig (https://download.01.org/0day-ci/archive/20230124/202301242124.R5AWMFJb-lkp@xxxxxxxxx/config)
compiler: s390-linux-gcc (GCC) 12.1.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/intel-lab-lkp/linux/commit/3468440a8e674e649dcf11e23f3fb3d229555e7c
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Manuel-Traut/input-pwm-beeper-add-feature-to-set-volume-level/20230124-191549
git checkout 3468440a8e674e649dcf11e23f3fb3d229555e7c
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=s390 olddefconfig
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=s390 SHELL=/bin/bash drivers/input/misc/

If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@xxxxxxxxx>

All errors (new ones prefixed by >>):

>> drivers/input/misc/pwm-beeper.c:73:62: error: macro "DEVICE_ATTR_RW" passed 4 arguments, but takes just 1
73 | static DEVICE_ATTR_RW(volume, 0644, volume_show, volume_store);
| ^
In file included from include/linux/input.h:19,
from drivers/input/misc/pwm-beeper.c:11:
include/linux/device.h:131: note: macro "DEVICE_ATTR_RW" defined here
131 | #define DEVICE_ATTR_RW(_name) \
|
>> drivers/input/misc/pwm-beeper.c:73:8: error: type defaults to 'int' in declaration of 'DEVICE_ATTR_RW' [-Werror=implicit-int]
73 | static DEVICE_ATTR_RW(volume, 0644, volume_show, volume_store);
| ^~~~~~~~~~~~~~
>> drivers/input/misc/pwm-beeper.c:77:10: error: 'dev_attr_volume' undeclared here (not in a function); did you mean 'dev_attr_max_volume'?
77 | &dev_attr_volume.attr,
| ^~~~~~~~~~~~~~~
| dev_attr_max_volume
drivers/input/misc/pwm-beeper.c:73:8: warning: 'DEVICE_ATTR_RW' defined but not used [-Wunused-variable]
73 | static DEVICE_ATTR_RW(volume, 0644, volume_show, volume_store);
| ^~~~~~~~~~~~~~
drivers/input/misc/pwm-beeper.c:54:16: warning: 'volume_store' defined but not used [-Wunused-function]
54 | static ssize_t volume_store(struct device *dev,
| ^~~~~~~~~~~~
drivers/input/misc/pwm-beeper.c:38:16: warning: 'volume_show' defined but not used [-Wunused-function]
38 | static ssize_t volume_show(struct device *dev,
| ^~~~~~~~~~~
cc1: some warnings being treated as errors


vim +/DEVICE_ATTR_RW +73 drivers/input/misc/pwm-beeper.c

> 11 #include <linux/input.h>
12 #include <linux/regulator/consumer.h>
13 #include <linux/module.h>
14 #include <linux/kernel.h>
15 #include <linux/of.h>
16 #include <linux/platform_device.h>
17 #include <linux/property.h>
18 #include <linux/pwm.h>
19 #include <linux/slab.h>
20 #include <linux/workqueue.h>
21
22 struct pwm_beeper {
23 struct input_dev *input;
24 struct pwm_device *pwm;
25 struct regulator *amplifier;
26 struct work_struct work;
27 unsigned long period;
28 unsigned int bell_frequency;
29 bool suspended;
30 bool amplifier_on;
31 unsigned int volume;
32 unsigned int *volume_levels;
33 unsigned int max_volume;
34 };
35
36 #define HZ_TO_NANOSECONDS(x) (1000000000UL/(x))
37
38 static ssize_t volume_show(struct device *dev,
39 struct device_attribute *attr, char *buf)
40 {
41 struct pwm_beeper *beeper = dev_get_drvdata(dev);
42
43 return sprintf(buf, "%d\n", beeper->volume);
44 }
45
46 static ssize_t max_volume_show(struct device *dev,
47 struct device_attribute *attr, char *buf)
48 {
49 struct pwm_beeper *beeper = dev_get_drvdata(dev);
50
51 return sprintf(buf, "%d\n", beeper->max_volume);
52 }
53
54 static ssize_t volume_store(struct device *dev,
55 struct device_attribute *attr, const char *buf, size_t count)
56 {
57 int rc;
58 struct pwm_beeper *beeper = dev_get_drvdata(dev);
59 unsigned int volume;
60
61 rc = kstrtouint(buf, 0, &volume);
62 if (rc)
63 return rc;
64
65 if (volume > beeper->max_volume)
66 return -EINVAL;
67 pr_debug("set volume to %u\n", volume);
68 beeper->volume = volume;
69
70 return count;
71 }
72
> 73 static DEVICE_ATTR_RW(volume, 0644, volume_show, volume_store);
74 static DEVICE_ATTR(max_volume, 0644, max_volume_show, NULL);
75
76 static struct attribute *pwm_beeper_attributes[] = {
> 77 &dev_attr_volume.attr,
78 &dev_attr_max_volume.attr,
79 NULL,
80 };
81

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests