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