Re: [PATCH 2/2] gpio: arizona: Add support for GPIOs that need to be maintained

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




Hi Charles,

[auto build test ERROR on gpio/for-next]
[also build test ERROR on v4.11-rc5 next-20170407]
[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/Charles-Keepax/mfd-arizona-Add-GPIO-maintain-state-flag/20170408-111119
base:   https://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio.git for-next
config: x86_64-randconfig-x003-201714 (attached as .config)
compiler: gcc-6 (Debian 6.2.0-3) 6.2.0 20160901
reproduce:
        # save the attached .config to linux build tree
        make ARCH=x86_64 

All error/warnings (new ones prefixed by >>):

   drivers//gpio/gpio-arizona.c: In function 'arizona_gpio_direction_in':
   drivers//gpio/gpio-arizona.c:44:3: error: implicit declaration of function 'pm_runtime_mark_last_busy' [-Werror=implicit-function-declaration]
      pm_runtime_mark_last_busy(chip->parent);
      ^~~~~~~~~~~~~~~~~~~~~~~~~
   drivers//gpio/gpio-arizona.c:45:3: error: implicit declaration of function 'pm_runtime_put_autosuspend' [-Werror=implicit-function-declaration]
      pm_runtime_put_autosuspend(chip->parent);
      ^~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers//gpio/gpio-arizona.c: In function 'arizona_gpio_set':
   drivers//gpio/gpio-arizona.c:93:9: error: implicit declaration of function 'pm_runtime_get_sync' [-Werror=implicit-function-declaration]
      ret = pm_runtime_get_sync(chip->parent);
            ^~~~~~~~~~~~~~~~~~~
   drivers//gpio/gpio-arizona.c:96:11: warning: 'return' with a value, in function returning void
       return ret;
              ^~~
   drivers//gpio/gpio-arizona.c:82:13: note: declared here
    static void arizona_gpio_set(struct gpio_chip *chip, unsigned offset, int value)
                ^~~~~~~~~~~~~~~~
   In file included from include/linux/linkage.h:4:0,
                    from include/linux/kernel.h:6,
                    from drivers//gpio/gpio-arizona.c:15:
   drivers//gpio/gpio-arizona.c: In function 'arizona_gpio_of_xlate':
>> drivers//gpio/gpio-arizona.c:115:33: error: 'struct gpio_chip' has no member named 'of_gpio_n_cells'
     if (gpiospec->args_count < chip->of_gpio_n_cells)
                                    ^
   include/linux/compiler.h:160:30: note: in definition of macro '__trace_if'
     if (__builtin_constant_p(!!(cond)) ? !!(cond) :   \
                                 ^~~~
>> drivers//gpio/gpio-arizona.c:115:2: note: in expansion of macro 'if'
     if (gpiospec->args_count < chip->of_gpio_n_cells)
     ^~
>> drivers//gpio/gpio-arizona.c:115:33: error: 'struct gpio_chip' has no member named 'of_gpio_n_cells'
     if (gpiospec->args_count < chip->of_gpio_n_cells)
                                    ^
   include/linux/compiler.h:160:42: note: in definition of macro '__trace_if'
     if (__builtin_constant_p(!!(cond)) ? !!(cond) :   \
                                             ^~~~
>> drivers//gpio/gpio-arizona.c:115:2: note: in expansion of macro 'if'
     if (gpiospec->args_count < chip->of_gpio_n_cells)
     ^~
>> drivers//gpio/gpio-arizona.c:115:33: error: 'struct gpio_chip' has no member named 'of_gpio_n_cells'
     if (gpiospec->args_count < chip->of_gpio_n_cells)
                                    ^
   include/linux/compiler.h:171:16: note: in definition of macro '__trace_if'
      ______r = !!(cond);     \
                   ^~~~
>> drivers//gpio/gpio-arizona.c:115:2: note: in expansion of macro 'if'
     if (gpiospec->args_count < chip->of_gpio_n_cells)
     ^~
   drivers//gpio/gpio-arizona.c: At top level:
>> drivers//gpio/gpio-arizona.c:138:2: error: unknown field 'of_xlate' specified in initializer
     .of_xlate  = arizona_gpio_of_xlate,
     ^
>> drivers//gpio/gpio-arizona.c:138:15: error: initialization from incompatible pointer type [-Werror=incompatible-pointer-types]
     .of_xlate  = arizona_gpio_of_xlate,
                  ^~~~~~~~~~~~~~~~~~~~~
   drivers//gpio/gpio-arizona.c:138:15: note: (near initialization for 'template_chip.read_reg')
>> drivers//gpio/gpio-arizona.c:139:2: error: unknown field 'of_gpio_n_cells' specified in initializer
     .of_gpio_n_cells = 2,
     ^
>> drivers//gpio/gpio-arizona.c:139:21: warning: initialization makes pointer from integer without a cast [-Wint-conversion]
     .of_gpio_n_cells = 2,
                        ^
   drivers//gpio/gpio-arizona.c:139:21: note: (near initialization for 'template_chip.write_reg')
   drivers//gpio/gpio-arizona.c: In function 'arizona_gpio_probe':
   drivers//gpio/gpio-arizona.c:185:2: error: implicit declaration of function 'pm_runtime_enable' [-Werror=implicit-function-declaration]
     pm_runtime_enable(&pdev->dev);
     ^~~~~~~~~~~~~~~~~
   cc1: some warnings being treated as errors

vim +115 drivers//gpio/gpio-arizona.c

     9	 *  under  the terms of  the GNU General  Public License as published by the
    10	 *  Free Software Foundation;  either version 2 of the  License, or (at your
    11	 *  option) any later version.
    12	 *
    13	 */
    14	
  > 15	#include <linux/kernel.h>
    16	#include <linux/slab.h>
    17	#include <linux/module.h>
    18	#include <linux/gpio.h>
    19	#include <linux/platform_device.h>
    20	#include <linux/seq_file.h>
    21	
    22	#include <linux/mfd/arizona/core.h>
    23	#include <linux/mfd/arizona/pdata.h>
    24	#include <linux/mfd/arizona/registers.h>
    25	
    26	#define ARIZONA_GP_STATE_OUTPUT   0x00000001
    27	
    28	struct arizona_gpio {
    29		struct arizona *arizona;
    30		struct gpio_chip gpio_chip;
    31		int status[ARIZONA_MAX_GPIO];
    32	};
    33	
    34	static int arizona_gpio_direction_in(struct gpio_chip *chip, unsigned offset)
    35	{
    36		struct arizona_gpio *arizona_gpio = gpiochip_get_data(chip);
    37		struct arizona *arizona = arizona_gpio->arizona;
    38		int status = arizona_gpio->status[offset];
    39	
    40		status &= (ARIZONA_GP_MAINTAIN | ARIZONA_GP_STATE_OUTPUT);
    41		if (status == (ARIZONA_GP_MAINTAIN | ARIZONA_GP_STATE_OUTPUT)) {
    42			arizona_gpio->status[offset] &= ~ARIZONA_GP_STATE_OUTPUT;
    43	
    44			pm_runtime_mark_last_busy(chip->parent);
    45			pm_runtime_put_autosuspend(chip->parent);
    46		}
    47	
    48		return regmap_update_bits(arizona->regmap, ARIZONA_GPIO1_CTRL + offset,
    49					  ARIZONA_GPN_DIR, ARIZONA_GPN_DIR);
    50	}
    51	
    52	static int arizona_gpio_get(struct gpio_chip *chip, unsigned offset)
    53	{
    54		struct arizona_gpio *arizona_gpio = gpiochip_get_data(chip);
    55		struct arizona *arizona = arizona_gpio->arizona;
    56		unsigned int val;
    57		int ret;
    58	
    59		ret = regmap_read(arizona->regmap, ARIZONA_GPIO1_CTRL + offset, &val);
    60		if (ret < 0)
    61			return ret;
    62	
    63		if (val & ARIZONA_GPN_LVL)
    64			return 1;
    65		else
    66			return 0;
    67	}
    68	
    69	static int arizona_gpio_direction_out(struct gpio_chip *chip,
    70					     unsigned offset, int value)
    71	{
    72		struct arizona_gpio *arizona_gpio = gpiochip_get_data(chip);
    73		struct arizona *arizona = arizona_gpio->arizona;
    74	
    75		if (value)
    76			value = ARIZONA_GPN_LVL;
    77	
    78		return regmap_update_bits(arizona->regmap, ARIZONA_GPIO1_CTRL + offset,
    79					  ARIZONA_GPN_DIR | ARIZONA_GPN_LVL, value);
    80	}
    81	
  > 82	static void arizona_gpio_set(struct gpio_chip *chip, unsigned offset, int value)
    83	{
    84		struct arizona_gpio *arizona_gpio = gpiochip_get_data(chip);
    85		struct arizona *arizona = arizona_gpio->arizona;
    86		int status = arizona_gpio->status[offset];
    87		int ret;
    88	
    89		status &= (ARIZONA_GP_MAINTAIN | ARIZONA_GP_STATE_OUTPUT);
    90		if (status == ARIZONA_GP_MAINTAIN) {
    91			arizona_gpio->status[offset] |= ARIZONA_GP_STATE_OUTPUT;
    92	
    93			ret = pm_runtime_get_sync(chip->parent);
    94			if (ret < 0) {
    95				dev_err(chip->parent, "Failed to resume: %d\n", ret);
    96				return ret;
    97			}
    98		}
    99	
   100		if (value)
   101			value = ARIZONA_GPN_LVL;
   102	
   103		regmap_update_bits(arizona->regmap, ARIZONA_GPIO1_CTRL + offset,
   104				   ARIZONA_GPN_LVL, value);
   105	}
   106	
   107	static int arizona_gpio_of_xlate(struct gpio_chip *chip,
   108					 const struct of_phandle_args *gpiospec,
   109					 u32 *flags)
   110	{
   111		struct arizona_gpio *arizona_gpio = gpiochip_get_data(chip);
   112		u32 offset = gpiospec->args[0];
   113		u32 bits = gpiospec->args[1];
   114	
 > 115		if (gpiospec->args_count < chip->of_gpio_n_cells)
   116			return -EINVAL;
   117	
   118		if (offset >= chip->ngpio)
   119			return -EINVAL;
   120	
   121		if (flags)
   122			*flags = bits & ~ARIZONA_GP_MAINTAIN;
   123	
   124		if (bits & ARIZONA_GP_MAINTAIN)
   125			arizona_gpio->status[offset] |= ARIZONA_GP_MAINTAIN;
   126	
   127		return offset;
   128	}
   129	
   130	static const struct gpio_chip template_chip = {
   131		.label			= "arizona",
   132		.owner			= THIS_MODULE,
   133		.direction_input	= arizona_gpio_direction_in,
   134		.get			= arizona_gpio_get,
   135		.direction_output	= arizona_gpio_direction_out,
   136		.set			= arizona_gpio_set,
   137		.can_sleep		= true,
 > 138		.of_xlate		= arizona_gpio_of_xlate,
 > 139		.of_gpio_n_cells	= 2,
   140	};
   141	
   142	static int arizona_gpio_probe(struct platform_device *pdev)

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Attachment: .config.gz
Description: application/gzip


[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]
  Powered by Linux