From: kbuild test robot <lkp@intel.com>
To: Frieder Schrempf <frieder.schrempf@exceet.de>
Cc: kbuild-all@01.org, robh@kernel.org, dmitry.torokhov@gmail.com,
david@lechnology.com, pawel.moll@arm.com,
ijc+devicetree@hellion.org.uk, galak@codeaurora.org,
luis@debethencourt.com, linux-input@vger.kernel.org,
devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
Frieder Schrempf <frieder.schrempf@exceet.de>
Subject: Re: [PATCH v4 3/3] input: pwm-beeper: add devicetree bindings to set volume levels
Date: Fri, 17 Feb 2017 08:14:08 +0800 [thread overview]
Message-ID: <201702170807.JN56MAHc%fengguang.wu@intel.com> (raw)
In-Reply-To: <bd85ff40e5c06a3404e3bc400762ee5ee1f1dedd.1487278130.git.frieder.schrempf@exceet.de>
[-- Attachment #1: Type: text/plain, Size: 9602 bytes --]
Hi Frieder,
[auto build test ERROR on robh/for-next]
[also build test ERROR on v4.10-rc8]
[cannot apply to input/next next-20170216]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
url: https://github.com/0day-ci/linux/commits/Frieder-Schrempf/input-pwm-beeper-add-feature-to-set-volume-level/20170217-064600
base: https://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git for-next
config: x86_64-randconfig-it0-02170238 (attached as .config)
compiler: gcc-4.9 (Debian 4.9.4-2) 4.9.4
reproduce:
# save the attached .config to linux build tree
make ARCH=x86_64
All error/warnings (new ones prefixed by >>):
drivers/input/misc/pwm-beeper.c: In function 'pwm_beeper_probe':
>> drivers/input/misc/pwm-beeper.c:189:9: error: 'struct pwm_beeper' has no member named 'max_volume_level'
beeper->max_volume_level = 1;
^
drivers/input/misc/pwm-beeper.c:191:9: error: 'struct pwm_beeper' has no member named 'max_volume_level'
beeper->max_volume_level = length;
^
In file included from include/uapi/linux/stddef.h:1:0,
from include/linux/stddef.h:4,
from include/uapi/linux/posix_types.h:4,
from include/uapi/linux/types.h:13,
from include/linux/types.h:5,
from include/uapi/linux/sysinfo.h:4,
from include/uapi/linux/kernel.h:4,
from include/linux/cache.h:4,
from include/linux/time.h:4,
from include/linux/input.h:11,
from drivers/input/misc/pwm-beeper.c:20:
drivers/input/misc/pwm-beeper.c:194:12: error: 'struct pwm_beeper' has no member named 'max_volume_level'
if (beeper->max_volume_level > 0) {
^
include/linux/compiler.h:149:30: note: in definition of macro '__trace_if'
if (__builtin_constant_p(!!(cond)) ? !!(cond) : \
^
>> drivers/input/misc/pwm-beeper.c:194:2: note: in expansion of macro 'if'
if (beeper->max_volume_level > 0) {
^
drivers/input/misc/pwm-beeper.c:194:12: error: 'struct pwm_beeper' has no member named 'max_volume_level'
if (beeper->max_volume_level > 0) {
^
include/linux/compiler.h:149:42: note: in definition of macro '__trace_if'
if (__builtin_constant_p(!!(cond)) ? !!(cond) : \
^
>> drivers/input/misc/pwm-beeper.c:194:2: note: in expansion of macro 'if'
if (beeper->max_volume_level > 0) {
^
drivers/input/misc/pwm-beeper.c:194:12: error: 'struct pwm_beeper' has no member named 'max_volume_level'
if (beeper->max_volume_level > 0) {
^
include/linux/compiler.h:160:16: note: in definition of macro '__trace_if'
______r = !!(cond); \
^
>> drivers/input/misc/pwm-beeper.c:194:2: note: in expansion of macro 'if'
if (beeper->max_volume_level > 0) {
^
drivers/input/misc/pwm-beeper.c:196:10: error: 'struct pwm_beeper' has no member named 'max_volume_level'
beeper->max_volume_level;
^
drivers/input/misc/pwm-beeper.c:206:13: error: 'struct pwm_beeper' has no member named 'max_volume_level'
beeper->max_volume_level);
^
drivers/input/misc/pwm-beeper.c:216:19: error: 'struct pwm_beeper' has no member named 'max_volume_level'
value = beeper->max_volume_level - 1;
^
drivers/input/misc/pwm-beeper.c:224:9: error: 'struct pwm_beeper' has no member named 'max_volume_level'
beeper->max_volume_level--;
^
drivers/input/misc/pwm-beeper.c:158:9: warning: unused variable 'size' [-Wunused-variable]
size_t size;
^
vim +189 drivers/input/misc/pwm-beeper.c
14 * You should have received a copy of the GNU General Public License along
15 * with this program; if not, write to the Free Software Foundation, Inc.,
16 * 675 Mass Ave, Cambridge, MA 02139, USA.
17 *
18 */
19
> 20 #include <linux/input.h>
21 #include <linux/module.h>
22 #include <linux/kernel.h>
23 #include <linux/of.h>
24 #include <linux/platform_device.h>
25 #include <linux/pwm.h>
26 #include <linux/slab.h>
27 #include <linux/workqueue.h>
28
29 struct pwm_beeper {
30 struct input_dev *input;
31 struct pwm_device *pwm;
32 struct work_struct work;
33 unsigned long period;
34 unsigned int volume;
35 unsigned int *volume_levels;
36 unsigned int max_volume;
37 };
38
39 #define HZ_TO_NANOSECONDS(x) (1000000000UL/(x))
40
41 static ssize_t beeper_show_volume(struct device *dev,
42 struct device_attribute *attr, char *buf)
43 {
44 struct pwm_beeper *beeper = dev_get_drvdata(dev);
45
46 return sprintf(buf, "%d\n", beeper->volume);
47 }
48
49 static ssize_t beeper_show_max_volume(struct device *dev,
50 struct device_attribute *attr, char *buf)
51 {
52 struct pwm_beeper *beeper = dev_get_drvdata(dev);
53
54 return sprintf(buf, "%d\n", beeper->max_volume);
55 }
56
57 static ssize_t beeper_store_volume(struct device *dev,
58 struct device_attribute *attr, const char *buf, size_t count)
59 {
60 int rc;
61 struct pwm_beeper *beeper = dev_get_drvdata(dev);
62 unsigned int volume;
63
64 rc = kstrtouint(buf, 0, &volume);
65 if (rc)
66 return rc;
67
68 if (volume > beeper->max_volume)
69 return -EINVAL;
70 pr_debug("set volume to %u\n", volume);
71 beeper->volume = volume;
72
73 return count;
74 }
75
76 static DEVICE_ATTR(volume, 0644, beeper_show_volume, beeper_store_volume);
77 static DEVICE_ATTR(max_volume, 0644, beeper_show_max_volume, NULL);
78
79 static struct attribute *pwm_beeper_attributes[] = {
80 &dev_attr_volume.attr,
81 &dev_attr_max_volume.attr,
82 NULL,
83 };
84
85 static struct attribute_group pwm_beeper_attribute_group = {
86 .attrs = pwm_beeper_attributes,
87 };
88
89 static void __pwm_beeper_set(struct pwm_beeper *beeper)
90 {
91 unsigned long period = beeper->period;
92
93 if (period) {
94 pwm_config(beeper->pwm,
95 period / 1000 * beeper->volume_levels[beeper->volume],
96 period);
97 pwm_enable(beeper->pwm);
98 } else
99 pwm_disable(beeper->pwm);
100 }
101
102 static void pwm_beeper_work(struct work_struct *work)
103 {
104 struct pwm_beeper *beeper =
105 container_of(work, struct pwm_beeper, work);
106
107 __pwm_beeper_set(beeper);
108 }
109
110 static int pwm_beeper_event(struct input_dev *input,
111 unsigned int type, unsigned int code, int value)
112 {
113 struct pwm_beeper *beeper = input_get_drvdata(input);
114
115 if (type != EV_SND || value < 0)
116 return -EINVAL;
117
118 switch (code) {
119 case SND_BELL:
120 value = value ? 1000 : 0;
121 break;
122 case SND_TONE:
123 break;
124 default:
125 return -EINVAL;
126 }
127
128 if (value == 0)
129 beeper->period = 0;
130 else
131 beeper->period = HZ_TO_NANOSECONDS(value);
132
133 schedule_work(&beeper->work);
134
135 return 0;
136 }
137
138 static void pwm_beeper_stop(struct pwm_beeper *beeper)
139 {
140 cancel_work_sync(&beeper->work);
141
142 if (beeper->period)
143 pwm_disable(beeper->pwm);
144 }
145
146 static void pwm_beeper_close(struct input_dev *input)
147 {
148 struct pwm_beeper *beeper = input_get_drvdata(input);
149
150 pwm_beeper_stop(beeper);
151 }
152
153 static int pwm_beeper_probe(struct platform_device *pdev)
154 {
155 unsigned long pwm_id = (unsigned long)dev_get_platdata(&pdev->dev);
156 struct pwm_beeper *beeper;
157 int error, length;
158 size_t size;
159 u32 value;
160
161 beeper = kzalloc(sizeof(*beeper), GFP_KERNEL);
162 if (!beeper)
163 return -ENOMEM;
164
165 beeper->pwm = pwm_get(&pdev->dev, NULL);
166 if (IS_ERR(beeper->pwm)) {
167 dev_dbg(&pdev->dev, "unable to request PWM, trying legacy API\n");
168 beeper->pwm = pwm_request(pwm_id, "pwm beeper");
169 }
170
171 if (IS_ERR(beeper->pwm)) {
172 error = PTR_ERR(beeper->pwm);
173 dev_err(&pdev->dev, "Failed to request pwm device: %d\n", error);
174 goto err_free;
175 }
176
177 /*
178 * FIXME: pwm_apply_args() should be removed when switching to
179 * the atomic PWM API.
180 */
181 pwm_apply_args(beeper->pwm);
182
183 INIT_WORK(&beeper->work, pwm_beeper_work);
184
185 /* determine the number of volume levels */
186 length = device_property_read_u32_array(&pdev->dev, "volume-levels", NULL, 0);
187 if (length <= 0) {
188 dev_dbg(&pdev->dev, "no volume levels specified, using max volume\n");
> 189 beeper->max_volume_level = 1;
190 } else
191 beeper->max_volume_level = length;
192
193 /* read volume levels from DT property */
> 194 if (beeper->max_volume_level > 0) {
195 size_t size = sizeof(*beeper->volume_levels) *
196 beeper->max_volume_level;
197
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 29368 bytes --]
next prev parent reply other threads:[~2017-02-17 0:14 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-04-07 15:58 [PATCH 1/1] input: pwm-beeper: add feature to set volume via sysfs Schrempf Frieder
2016-04-11 15:21 ` Rob Herring
2016-10-07 9:00 ` Schrempf Frieder
2016-10-07 9:08 ` [PATCH v2 0/3] input: pwm-beeper: add feature to set volume level Schrempf Frieder
2016-10-07 9:08 ` [PATCH v2 1/3] input: pwm-beeper: add feature to set volume via sysfs Schrempf Frieder
2016-10-07 9:08 ` [PATCH v2 2/3] input: pwm-beeper: add documentation for volume devicetree bindings Schrempf Frieder
2016-10-10 15:20 ` Rob Herring
2016-10-11 8:17 ` Schrempf Frieder
2016-10-11 13:39 ` Rob Herring
2017-01-19 14:40 ` Frieder Schrempf
2017-01-19 15:24 ` [PATCH v3 0/3] input: pwm-beeper: add feature to set volume level Frieder Schrempf
2017-01-19 15:24 ` [PATCH v3 1/3] input: pwm-beeper: add feature to set volume via sysfs Frieder Schrempf
2017-01-19 21:29 ` Dmitry Torokhov
2017-02-16 20:37 ` Frieder Schrempf
2017-01-19 15:24 ` [PATCH v3 2/3] input: pwm-beeper: add documentation for volume devicetree bindings Frieder Schrempf
2017-01-23 14:40 ` Rob Herring
2017-01-19 15:24 ` [PATCH v3 3/3] input: pwm-beeper: add devicetree bindings to set volume levels Frieder Schrempf
2017-01-19 21:30 ` Dmitry Torokhov
2017-02-16 20:40 ` Frieder Schrempf
2017-01-19 21:37 ` [PATCH v3 0/3] input: pwm-beeper: add feature to set volume level Dmitry Torokhov
2017-01-20 19:11 ` David Lechner
2017-02-16 21:15 ` Frieder Schrempf
2017-02-16 21:44 ` David Lechner
2017-02-17 10:01 ` Frieder Schrempf
2017-02-16 21:08 ` [PATCH v4 " Frieder Schrempf
2017-02-16 21:08 ` [PATCH v4 1/3] input: pwm-beeper: add feature to set volume via sysfs Frieder Schrempf
2017-02-16 21:08 ` [PATCH v4 2/3] input: pwm-beeper: add documentation for volume devicetree bindings Frieder Schrempf
2017-02-16 21:08 ` [PATCH v4 3/3] input: pwm-beeper: add devicetree bindings to set volume levels Frieder Schrempf
2017-02-16 23:07 ` kbuild test robot
2017-02-17 0:14 ` kbuild test robot [this message]
2017-02-17 9:54 ` [PATCH v5 0/3] input: pwm-beeper: add feature to set volume level Frieder Schrempf
2017-02-17 9:54 ` [PATCH v5 1/3] input: pwm-beeper: add feature to set volume via sysfs Frieder Schrempf
2017-02-17 9:54 ` [PATCH v5 2/3] input: pwm-beeper: add documentation for volume devicetree bindings Frieder Schrempf
2017-02-17 9:54 ` [PATCH v5 3/3] input: pwm-beeper: add devicetree bindings to set volume levels Frieder Schrempf
2016-10-07 9:08 ` [PATCH v2 " Schrempf Frieder
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=201702170807.JN56MAHc%fengguang.wu@intel.com \
--to=lkp@intel.com \
--cc=david@lechnology.com \
--cc=devicetree@vger.kernel.org \
--cc=dmitry.torokhov@gmail.com \
--cc=frieder.schrempf@exceet.de \
--cc=galak@codeaurora.org \
--cc=ijc+devicetree@hellion.org.uk \
--cc=kbuild-all@01.org \
--cc=linux-input@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=luis@debethencourt.com \
--cc=pawel.moll@arm.com \
--cc=robh@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).