linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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 --]

  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).