[xlnx:master 48/53] drivers//gpio/gpio-xilinx.c:68:25: error: field 'mmchip' has incomplete type
From: kbuild test robot <hidden>
Date: 2020-02-24 21:46:24
Also in:
oe-kbuild-all
tree: https://github.com/Xilinx/linux-xlnx master head: 0bf5e5fe96bf3663f5d47e01d7f8d0e4d737e492 commit: 8a0be21c42a2613cc1b9ddb339447b9fe199134b [48/53] Merge remote-tracking branch 'xlnx_rebase_v5.4' into master-next-test config: i386-randconfig-f001-20200224 (attached as .config) compiler: gcc-7 (Debian 7.5.0-5) 7.5.0 reproduce: git checkout 8a0be21c42a2613cc1b9ddb339447b9fe199134b # save the attached .config to linux build tree make ARCH=i386 If you fix the issue, kindly add following tag Reported-by: kbuild test robot <redacted> All error/warnings (new ones prefixed by >>):
quoted
drivers//gpio/gpio-xilinx.c:68:25: error: field 'mmchip' has incomplete type
struct of_mm_gpio_chip mmchip;
^~~~~~
drivers//gpio/gpio-xilinx.c: In function 'xgpio_get':quoted
drivers//gpio/gpio-xilinx.c:94:34: error: implicit declaration of function 'to_of_mm_gpio_chip' [-Werror=implicit-function-declaration]
struct of_mm_gpio_chip *mm_gc = to_of_mm_gpio_chip(gc);
^~~~~~~~~~~~~~~~~~
drivers//gpio/gpio-xilinx.c:94:34: warning: initialization makes pointer from integer without a cast [-Wint-conversion]
In file included from arch/x86/include/asm/bitops.h:16:0,
from include/linux/bitops.h:26,
from drivers//gpio/gpio-xilinx.c:15:quoted
include/linux/kernel.h:994:32: error: dereferencing pointer to incomplete type 'struct of_mm_gpio_chip'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^~~~~~
include/linux/compiler.h:330:9: note: in definition of macro '__compiletime_assert'
if (!(condition)) \
^~~~~~~~~
include/linux/compiler.h:350:2: note: in expansion of macro '_compiletime_assert'
_compiletime_assert(condition, msg, __compiletime_assert_, __LINE__)
^~~~~~~~~~~~~~~~~~~
include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert'
#define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
^~~~~~~~~~~~~~~~~~
include/linux/kernel.h:994:2: note: in expansion of macro 'BUILD_BUG_ON_MSG'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^~~~~~~~~~~~~~~~
include/linux/kernel.h:994:20: note: in expansion of macro '__same_type'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^~~~~~~~~~~quoted
drivers//gpio/gpio-xilinx.c:96:6: note: in expansion of macro 'container_of'
container_of(mm_gc, struct xgpio_instance, mmchip);
^~~~~~~~~~~~
drivers//gpio/gpio-xilinx.c: In function 'xgpio_set':
drivers//gpio/gpio-xilinx.c:115:34: warning: initialization makes pointer from integer without a cast [-Wint-conversion]
struct of_mm_gpio_chip *mm_gc = to_of_mm_gpio_chip(gc);
^~~~~~~~~~~~~~~~~~
drivers//gpio/gpio-xilinx.c: In function 'xgpio_set_multiple':
drivers//gpio/gpio-xilinx.c:147:34: warning: initialization makes pointer from integer without a cast [-Wint-conversion]
struct of_mm_gpio_chip *mm_gc = to_of_mm_gpio_chip(gc);
^~~~~~~~~~~~~~~~~~
drivers//gpio/gpio-xilinx.c: In function 'xgpio_dir_in':
drivers//gpio/gpio-xilinx.c:187:34: warning: initialization makes pointer from integer without a cast [-Wint-conversion]
struct of_mm_gpio_chip *mm_gc = to_of_mm_gpio_chip(gc);
^~~~~~~~~~~~~~~~~~
drivers//gpio/gpio-xilinx.c: In function 'xgpio_dir_out':
drivers//gpio/gpio-xilinx.c:218:34: warning: initialization makes pointer from integer without a cast [-Wint-conversion]
struct of_mm_gpio_chip *mm_gc = to_of_mm_gpio_chip(gc);
^~~~~~~~~~~~~~~~~~
drivers//gpio/gpio-xilinx.c: In function 'xgpio_xlate':
drivers//gpio/gpio-xilinx.c:274:34: warning: initialization makes pointer from integer without a cast [-Wint-conversion]
struct of_mm_gpio_chip *mm_gc = to_of_mm_gpio_chip(gc);
^~~~~~~~~~~~~~~~~~quoted
drivers//gpio/gpio-xilinx.c:277:8: error: 'struct gpio_chip' has no member named 'of_gpio_n_cells'
if (gc->of_gpio_n_cells == 3 && flags)
^~
drivers//gpio/gpio-xilinx.c: In function 'xgpio_to_irq':
drivers//gpio/gpio-xilinx.c:392:34: warning: initialization makes pointer from integer without a cast [-Wint-conversion]
struct of_mm_gpio_chip *mm_gc = to_of_mm_gpio_chip(gc);
^~~~~~~~~~~~~~~~~~
drivers//gpio/gpio-xilinx.c: In function 'xgpio_remove':quoted
drivers//gpio/gpio-xilinx.c:576:2: error: implicit declaration of function 'of_mm_gpiochip_remove'; did you mean 'gpiochip_remove'? [-Werror=implicit-function-declaration]
of_mm_gpiochip_remove(&chip->mmchip);
^~~~~~~~~~~~~~~~~~~~~
gpiochip_remove
drivers//gpio/gpio-xilinx.c: In function 'xgpio_of_probe':quoted
drivers//gpio/gpio-xilinx.c:676:11: error: implicit declaration of function 'of_mm_gpiochip_add'; did you mean 'gpiochip_add'? [-Werror=implicit-function-declaration]
status = of_mm_gpiochip_add(np, &chip->mmchip);
^~~~~~~~~~~~~~~~~~
gpiochip_add
cc1: some warnings being treated as errors
--
drivers/gpio/gpio-xilinx.c:68:25: error: field 'mmchip' has incomplete type
struct of_mm_gpio_chip mmchip;
^~~~~~
drivers/gpio/gpio-xilinx.c: In function 'xgpio_get':
drivers/gpio/gpio-xilinx.c:94:34: error: implicit declaration of function 'to_of_mm_gpio_chip' [-Werror=implicit-function-declaration]
struct of_mm_gpio_chip *mm_gc = to_of_mm_gpio_chip(gc);
^~~~~~~~~~~~~~~~~~
drivers/gpio/gpio-xilinx.c:94:34: warning: initialization makes pointer from integer without a cast [-Wint-conversion]
In file included from arch/x86/include/asm/bitops.h:16:0,
from include/linux/bitops.h:26,
from drivers/gpio/gpio-xilinx.c:15:quoted
include/linux/kernel.h:994:32: error: dereferencing pointer to incomplete type 'struct of_mm_gpio_chip'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^~~~~~
include/linux/compiler.h:330:9: note: in definition of macro '__compiletime_assert'
if (!(condition)) \
^~~~~~~~~
include/linux/compiler.h:350:2: note: in expansion of macro '_compiletime_assert'
_compiletime_assert(condition, msg, __compiletime_assert_, __LINE__)
^~~~~~~~~~~~~~~~~~~
include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert'
#define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
^~~~~~~~~~~~~~~~~~
include/linux/kernel.h:994:2: note: in expansion of macro 'BUILD_BUG_ON_MSG'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^~~~~~~~~~~~~~~~
include/linux/kernel.h:994:20: note: in expansion of macro '__same_type'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^~~~~~~~~~~
drivers/gpio/gpio-xilinx.c:96:6: note: in expansion of macro 'container_of'
container_of(mm_gc, struct xgpio_instance, mmchip);
^~~~~~~~~~~~
drivers/gpio/gpio-xilinx.c: In function 'xgpio_set':
drivers/gpio/gpio-xilinx.c:115:34: warning: initialization makes pointer from integer without a cast [-Wint-conversion]
struct of_mm_gpio_chip *mm_gc = to_of_mm_gpio_chip(gc);
^~~~~~~~~~~~~~~~~~
drivers/gpio/gpio-xilinx.c: In function 'xgpio_set_multiple':
drivers/gpio/gpio-xilinx.c:147:34: warning: initialization makes pointer from integer without a cast [-Wint-conversion]
struct of_mm_gpio_chip *mm_gc = to_of_mm_gpio_chip(gc);
^~~~~~~~~~~~~~~~~~
drivers/gpio/gpio-xilinx.c: In function 'xgpio_dir_in':
drivers/gpio/gpio-xilinx.c:187:34: warning: initialization makes pointer from integer without a cast [-Wint-conversion]
struct of_mm_gpio_chip *mm_gc = to_of_mm_gpio_chip(gc);
^~~~~~~~~~~~~~~~~~
drivers/gpio/gpio-xilinx.c: In function 'xgpio_dir_out':
drivers/gpio/gpio-xilinx.c:218:34: warning: initialization makes pointer from integer without a cast [-Wint-conversion]
struct of_mm_gpio_chip *mm_gc = to_of_mm_gpio_chip(gc);
^~~~~~~~~~~~~~~~~~
drivers/gpio/gpio-xilinx.c: In function 'xgpio_xlate':
drivers/gpio/gpio-xilinx.c:274:34: warning: initialization makes pointer from integer without a cast [-Wint-conversion]
struct of_mm_gpio_chip *mm_gc = to_of_mm_gpio_chip(gc);
^~~~~~~~~~~~~~~~~~
drivers/gpio/gpio-xilinx.c:277:8: error: 'struct gpio_chip' has no member named 'of_gpio_n_cells'
if (gc->of_gpio_n_cells == 3 && flags)
^~
drivers/gpio/gpio-xilinx.c: In function 'xgpio_to_irq':
drivers/gpio/gpio-xilinx.c:392:34: warning: initialization makes pointer from integer without a cast [-Wint-conversion]
struct of_mm_gpio_chip *mm_gc = to_of_mm_gpio_chip(gc);
^~~~~~~~~~~~~~~~~~
drivers/gpio/gpio-xilinx.c: In function 'xgpio_remove':
drivers/gpio/gpio-xilinx.c:576:2: error: implicit declaration of function 'of_mm_gpiochip_remove'; did you mean 'gpiochip_remove'? [-Werror=implicit-function-declaration]
of_mm_gpiochip_remove(&chip->mmchip);
^~~~~~~~~~~~~~~~~~~~~
gpiochip_remove
drivers/gpio/gpio-xilinx.c: In function 'xgpio_of_probe':
drivers/gpio/gpio-xilinx.c:676:11: error: implicit declaration of function 'of_mm_gpiochip_add'; did you mean 'gpiochip_add'? [-Werror=implicit-function-declaration]
status = of_mm_gpiochip_add(np, &chip->mmchip);
^~~~~~~~~~~~~~~~~~
gpiochip_add
cc1: some warnings being treated as errors
vim +/mmchip +68 drivers//gpio/gpio-xilinx.c
e9a98626baf3b3 drivers/gpio/gpio-xilinx.c John Linn 2012-06-29 52
b23d352f6774a3 drivers/gpio/gpio-xilinx.c Michal Simek 2013-05-29 53 /**
b23d352f6774a3 drivers/gpio/gpio-xilinx.c Michal Simek 2013-05-29 54 * struct xgpio_instance - Stores information about GPIO device
8fd1942dec9edd drivers/gpio/gpio-xilinx.c Michal Simek 2013-07-19 55 * @mmchip: OF GPIO chip for memory mapped banks
7c9997cc698ba9 drivers/gpio/gpio-xilinx.c Nava kishore Manne 2018-10-16 56 * @mmchip_dual: Pointer to the OF dual gpio chip
8fd1942dec9edd drivers/gpio/gpio-xilinx.c Michal Simek 2013-07-19 57 * @gpio_state: GPIO state shadow register
8fd1942dec9edd drivers/gpio/gpio-xilinx.c Michal Simek 2013-07-19 58 * @gpio_dir: GPIO direction shadow register
8fd1942dec9edd drivers/gpio/gpio-xilinx.c Michal Simek 2013-07-19 59 * @offset: GPIO channel offset
796ae5e3e4ae5f drivers/gpio/gpio-xilinx.c Michal Simek 2013-07-19 60 * @irq_base: GPIO channel irq base address
796ae5e3e4ae5f drivers/gpio/gpio-xilinx.c Michal Simek 2013-07-19 61 * @irq_enable: GPIO irq enable/disable bitfield
184f4682479b34 drivers/gpio/gpio-xilinx.c Shubhrajyoti Datta 2018-05-03 62 * @no_init: No intitialisation at probe
8fd1942dec9edd drivers/gpio/gpio-xilinx.c Michal Simek 2013-07-19 63 * @gpio_lock: Lock used for synchronization
796ae5e3e4ae5f drivers/gpio/gpio-xilinx.c Michal Simek 2013-07-19 64 * @irq_domain: irq_domain of the controller
34b6b71b142476 drivers/gpio/gpio-xilinx.c Maulik Jodhani 2017-02-10 65 * @clk: clock resource for this driver
b23d352f6774a3 drivers/gpio/gpio-xilinx.c Michal Simek 2013-05-29 66 */
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 67 struct xgpio_instance {
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 @68 struct of_mm_gpio_chip mmchip;
7c9997cc698ba9 drivers/gpio/gpio-xilinx.c Nava kishore Manne 2018-10-16 69 struct of_mm_gpio_chip *mmchip_dual;
b23d352f6774a3 drivers/gpio/gpio-xilinx.c Michal Simek 2013-05-29 70 u32 gpio_state;
b23d352f6774a3 drivers/gpio/gpio-xilinx.c Michal Simek 2013-05-29 71 u32 gpio_dir;
fb2379e7035e98 drivers/gpio/gpio-xilinx.c Michal Simek 2012-10-19 72 u32 offset;
32161b344f3eb8 drivers/gpio/gpio-xilinx.c Michal Simek 2013-09-03 73 int irq_base;
796ae5e3e4ae5f drivers/gpio/gpio-xilinx.c Michal Simek 2013-07-19 74 u32 irq_enable;
184f4682479b34 drivers/gpio/gpio-xilinx.c Shubhrajyoti Datta 2018-05-03 75 bool no_init;
b23d352f6774a3 drivers/gpio/gpio-xilinx.c Michal Simek 2013-05-29 76 spinlock_t gpio_lock;
796ae5e3e4ae5f drivers/gpio/gpio-xilinx.c Michal Simek 2013-07-19 77 struct irq_domain *irq_domain;
34b6b71b142476 drivers/gpio/gpio-xilinx.c Maulik Jodhani 2017-02-10 78 struct clk *clk;
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 79 };
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 80
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 81 /**
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 82 * xgpio_get - Read the specified signal of the GPIO device.
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 83 * @gc: Pointer to gpio_chip device structure.
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 84 * @gpio: GPIO signal number.
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 85 *
8fd1942dec9edd drivers/gpio/gpio-xilinx.c Michal Simek 2013-07-19 86 * This function reads the specified signal of the GPIO device.
8fd1942dec9edd drivers/gpio/gpio-xilinx.c Michal Simek 2013-07-19 87 *
8fd1942dec9edd drivers/gpio/gpio-xilinx.c Michal Simek 2013-07-19 88 * Return:
8fd1942dec9edd drivers/gpio/gpio-xilinx.c Michal Simek 2013-07-19 89 * 0 if direction of GPIO signals is set as input otherwise it
8fd1942dec9edd drivers/gpio/gpio-xilinx.c Michal Simek 2013-07-19 90 * returns negative error value.
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 91 */
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 92 static int xgpio_get(struct gpio_chip *gc, unsigned int gpio)
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 93 {
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 @94 struct of_mm_gpio_chip *mm_gc = to_of_mm_gpio_chip(gc);
fb2379e7035e98 drivers/gpio/gpio-xilinx.c Michal Simek 2012-10-19 95 struct xgpio_instance *chip =
fb2379e7035e98 drivers/gpio/gpio-xilinx.c Michal Simek 2012-10-19 @96 container_of(mm_gc, struct xgpio_instance, mmchip);
fb2379e7035e98 drivers/gpio/gpio-xilinx.c Michal Simek 2012-10-19 97
fb2379e7035e98 drivers/gpio/gpio-xilinx.c Michal Simek 2012-10-19 98 void __iomem *regs = mm_gc->regs + chip->offset;
324c11445a4877 drivers/gpio/gpio-xilinx.c Michal Simek 2012-11-27 99
b23d352f6774a3 drivers/gpio/gpio-xilinx.c Michal Simek 2013-05-29 100 return !!(xgpio_readreg(regs + XGPIO_DATA_OFFSET) & BIT(gpio));
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 101 }
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 102
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 103 /**
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 104 * xgpio_set - Write the specified signal of the GPIO device.
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 105 * @gc: Pointer to gpio_chip device structure.
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 106 * @gpio: GPIO signal number.
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 107 * @val: Value to be written to specified signal.
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 108 *
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 109 * This function writes the specified value in to the specified signal of the
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 110 * GPIO device.
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 111 */
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 112 static void xgpio_set(struct gpio_chip *gc, unsigned int gpio, int val)
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 113 {
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 114 unsigned long flags;
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 115 struct of_mm_gpio_chip *mm_gc = to_of_mm_gpio_chip(gc);
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 116 struct xgpio_instance *chip =
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 117 container_of(mm_gc, struct xgpio_instance, mmchip);
e9a98626baf3b3 drivers/gpio/gpio-xilinx.c John Linn 2012-06-29 118 void __iomem *regs = mm_gc->regs;
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 119
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 120 spin_lock_irqsave(&chip->gpio_lock, flags);
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 121
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 122 /* Write to GPIO signal and set its direction to output */
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 123 if (val)
568fae334bb6ea drivers/gpio/gpio-xilinx.c Michal Simek 2013-06-03 124 chip->gpio_state |= BIT(gpio);
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 125 else
568fae334bb6ea drivers/gpio/gpio-xilinx.c Michal Simek 2013-06-03 126 chip->gpio_state &= ~BIT(gpio);
e9a98626baf3b3 drivers/gpio/gpio-xilinx.c John Linn 2012-06-29 127
fb2379e7035e98 drivers/gpio/gpio-xilinx.c Michal Simek 2012-10-19 128 xgpio_writereg(regs + chip->offset + XGPIO_DATA_OFFSET,
fb2379e7035e98 drivers/gpio/gpio-xilinx.c Michal Simek 2012-10-19 129 chip->gpio_state);
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 130
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 131 spin_unlock_irqrestore(&chip->gpio_lock, flags);
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 132 }
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 133
63bcc8b82965b1 drivers/gpio/gpio-xilinx.c Iban Rodriguez 2016-05-13 134 /**
63bcc8b82965b1 drivers/gpio/gpio-xilinx.c Iban Rodriguez 2016-05-13 135 * xgpio_set_multiple - Write the specified signals of the GPIO device.
63bcc8b82965b1 drivers/gpio/gpio-xilinx.c Iban Rodriguez 2016-05-13 136 * @gc: Pointer to gpio_chip device structure.
63bcc8b82965b1 drivers/gpio/gpio-xilinx.c Iban Rodriguez 2016-05-13 137 * @mask: Mask of the GPIOS to modify.
63bcc8b82965b1 drivers/gpio/gpio-xilinx.c Iban Rodriguez 2016-05-13 138 * @bits: Value to be wrote on each GPIO
63bcc8b82965b1 drivers/gpio/gpio-xilinx.c Iban Rodriguez 2016-05-13 139 *
63bcc8b82965b1 drivers/gpio/gpio-xilinx.c Iban Rodriguez 2016-05-13 140 * This function writes the specified values into the specified signals of the
63bcc8b82965b1 drivers/gpio/gpio-xilinx.c Iban Rodriguez 2016-05-13 141 * GPIO devices.
63bcc8b82965b1 drivers/gpio/gpio-xilinx.c Iban Rodriguez 2016-05-13 142 */
63bcc8b82965b1 drivers/gpio/gpio-xilinx.c Iban Rodriguez 2016-05-13 143 static void xgpio_set_multiple(struct gpio_chip *gc, unsigned long *mask,
63bcc8b82965b1 drivers/gpio/gpio-xilinx.c Iban Rodriguez 2016-05-13 144 unsigned long *bits)
63bcc8b82965b1 drivers/gpio/gpio-xilinx.c Iban Rodriguez 2016-05-13 145 {
63bcc8b82965b1 drivers/gpio/gpio-xilinx.c Iban Rodriguez 2016-05-13 146 unsigned long flags;
63bcc8b82965b1 drivers/gpio/gpio-xilinx.c Iban Rodriguez 2016-05-13 147 struct of_mm_gpio_chip *mm_gc = to_of_mm_gpio_chip(gc);
63bcc8b82965b1 drivers/gpio/gpio-xilinx.c Iban Rodriguez 2016-05-13 148 struct xgpio_instance *chip =
63bcc8b82965b1 drivers/gpio/gpio-xilinx.c Iban Rodriguez 2016-05-13 149 container_of(mm_gc, struct xgpio_instance, mmchip);
63bcc8b82965b1 drivers/gpio/gpio-xilinx.c Iban Rodriguez 2016-05-13 150 void __iomem *regs = mm_gc->regs;
63bcc8b82965b1 drivers/gpio/gpio-xilinx.c Iban Rodriguez 2016-05-13 151 int i;
63bcc8b82965b1 drivers/gpio/gpio-xilinx.c Iban Rodriguez 2016-05-13 152
63bcc8b82965b1 drivers/gpio/gpio-xilinx.c Iban Rodriguez 2016-05-13 153 spin_lock_irqsave(&chip->gpio_lock, flags);
63bcc8b82965b1 drivers/gpio/gpio-xilinx.c Iban Rodriguez 2016-05-13 154
63bcc8b82965b1 drivers/gpio/gpio-xilinx.c Iban Rodriguez 2016-05-13 155 /* Write to GPIO signals */
63bcc8b82965b1 drivers/gpio/gpio-xilinx.c Iban Rodriguez 2016-05-13 156 for (i = 0; i < gc->ngpio; i++) {
63bcc8b82965b1 drivers/gpio/gpio-xilinx.c Iban Rodriguez 2016-05-13 157 if (*mask == 0)
63bcc8b82965b1 drivers/gpio/gpio-xilinx.c Iban Rodriguez 2016-05-13 158 break;
63bcc8b82965b1 drivers/gpio/gpio-xilinx.c Iban Rodriguez 2016-05-13 159 if (__test_and_clear_bit(i, mask)) {
63bcc8b82965b1 drivers/gpio/gpio-xilinx.c Iban Rodriguez 2016-05-13 160 if (test_bit(i, bits))
63bcc8b82965b1 drivers/gpio/gpio-xilinx.c Iban Rodriguez 2016-05-13 161 chip->gpio_state |= BIT(i);
63bcc8b82965b1 drivers/gpio/gpio-xilinx.c Iban Rodriguez 2016-05-13 162 else
63bcc8b82965b1 drivers/gpio/gpio-xilinx.c Iban Rodriguez 2016-05-13 163 chip->gpio_state &= ~BIT(i);
63bcc8b82965b1 drivers/gpio/gpio-xilinx.c Iban Rodriguez 2016-05-13 164 }
63bcc8b82965b1 drivers/gpio/gpio-xilinx.c Iban Rodriguez 2016-05-13 165 }
63bcc8b82965b1 drivers/gpio/gpio-xilinx.c Iban Rodriguez 2016-05-13 166
63bcc8b82965b1 drivers/gpio/gpio-xilinx.c Iban Rodriguez 2016-05-13 167 xgpio_writereg(regs + chip->offset + XGPIO_DATA_OFFSET,
63bcc8b82965b1 drivers/gpio/gpio-xilinx.c Iban Rodriguez 2016-05-13 168 chip->gpio_state);
63bcc8b82965b1 drivers/gpio/gpio-xilinx.c Iban Rodriguez 2016-05-13 169
63bcc8b82965b1 drivers/gpio/gpio-xilinx.c Iban Rodriguez 2016-05-13 170 spin_unlock_irqrestore(&chip->gpio_lock, flags);
63bcc8b82965b1 drivers/gpio/gpio-xilinx.c Iban Rodriguez 2016-05-13 171 }
63bcc8b82965b1 drivers/gpio/gpio-xilinx.c Iban Rodriguez 2016-05-13 172
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 173 /**
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 174 * xgpio_dir_in - Set the direction of the specified GPIO signal as input.
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 175 * @gc: Pointer to gpio_chip device structure.
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 176 * @gpio: GPIO signal number.
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 177 *
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 178 * This function sets the direction of specified GPIO signal as input.
8fd1942dec9edd drivers/gpio/gpio-xilinx.c Michal Simek 2013-07-19 179 *
8fd1942dec9edd drivers/gpio/gpio-xilinx.c Michal Simek 2013-07-19 180 * Return:
8fd1942dec9edd drivers/gpio/gpio-xilinx.c Michal Simek 2013-07-19 181 * 0 - if direction of GPIO signals is set as input
8fd1942dec9edd drivers/gpio/gpio-xilinx.c Michal Simek 2013-07-19 182 * otherwise it returns negative error value.
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 183 */
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 184 static int xgpio_dir_in(struct gpio_chip *gc, unsigned int gpio)
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 185 {
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 186 unsigned long flags;
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 187 struct of_mm_gpio_chip *mm_gc = to_of_mm_gpio_chip(gc);
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 188 struct xgpio_instance *chip =
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 189 container_of(mm_gc, struct xgpio_instance, mmchip);
e9a98626baf3b3 drivers/gpio/gpio-xilinx.c John Linn 2012-06-29 190 void __iomem *regs = mm_gc->regs;
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 191
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 192 spin_lock_irqsave(&chip->gpio_lock, flags);
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 193
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 194 /* Set the GPIO bit in shadow register and set direction as input */
568fae334bb6ea drivers/gpio/gpio-xilinx.c Michal Simek 2013-06-03 195 chip->gpio_dir |= BIT(gpio);
fb2379e7035e98 drivers/gpio/gpio-xilinx.c Michal Simek 2012-10-19 196 xgpio_writereg(regs + chip->offset + XGPIO_TRI_OFFSET, chip->gpio_dir);
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 197
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 198 spin_unlock_irqrestore(&chip->gpio_lock, flags);
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 199
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 200 return 0;
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 201 }
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 202
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 203 /**
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 204 * xgpio_dir_out - Set the direction of the specified GPIO signal as output.
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 205 * @gc: Pointer to gpio_chip device structure.
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 206 * @gpio: GPIO signal number.
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 207 * @val: Value to be written to specified signal.
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 208 *
8fd1942dec9edd drivers/gpio/gpio-xilinx.c Michal Simek 2013-07-19 209 * This function sets the direction of specified GPIO signal as output.
8fd1942dec9edd drivers/gpio/gpio-xilinx.c Michal Simek 2013-07-19 210 *
8fd1942dec9edd drivers/gpio/gpio-xilinx.c Michal Simek 2013-07-19 211 * Return:
8fd1942dec9edd drivers/gpio/gpio-xilinx.c Michal Simek 2013-07-19 212 * If all GPIO signals of GPIO chip is configured as input then it returns
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 213 * error otherwise it returns 0.
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 214 */
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 215 static int xgpio_dir_out(struct gpio_chip *gc, unsigned int gpio, int val)
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 216 {
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 217 unsigned long flags;
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 @218 struct of_mm_gpio_chip *mm_gc = to_of_mm_gpio_chip(gc);
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 219 struct xgpio_instance *chip =
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 220 container_of(mm_gc, struct xgpio_instance, mmchip);
e9a98626baf3b3 drivers/gpio/gpio-xilinx.c John Linn 2012-06-29 221 void __iomem *regs = mm_gc->regs;
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 222
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 223 spin_lock_irqsave(&chip->gpio_lock, flags);
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 224
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 225 /* Write state of GPIO signal */
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 226 if (val)
568fae334bb6ea drivers/gpio/gpio-xilinx.c Michal Simek 2013-06-03 227 chip->gpio_state |= BIT(gpio);
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 228 else
568fae334bb6ea drivers/gpio/gpio-xilinx.c Michal Simek 2013-06-03 229 chip->gpio_state &= ~BIT(gpio);
b23d352f6774a3 drivers/gpio/gpio-xilinx.c Michal Simek 2013-05-29 230 xgpio_writereg(regs + chip->offset + XGPIO_DATA_OFFSET,
b23d352f6774a3 drivers/gpio/gpio-xilinx.c Michal Simek 2013-05-29 231 chip->gpio_state);
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 232
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 233 /* Clear the GPIO bit in shadow register and set direction as output */
568fae334bb6ea drivers/gpio/gpio-xilinx.c Michal Simek 2013-06-03 234 chip->gpio_dir &= ~BIT(gpio);
fb2379e7035e98 drivers/gpio/gpio-xilinx.c Michal Simek 2012-10-19 235 xgpio_writereg(regs + chip->offset + XGPIO_TRI_OFFSET, chip->gpio_dir);
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 236
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 237 spin_unlock_irqrestore(&chip->gpio_lock, flags);
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 238
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 239 return 0;
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 240 }
0bcb6069a6e1af drivers/gpio/xilinx_gpio.c John Linn 2008-11-12 241
:::::: The code at line 68 was first introduced by commit
:::::: 0bcb6069a6e1af5c114a2a8873ec43ada8933596 GPIO: add new Xilinx driver for powerpc
:::::: TO: John Linn [off-list ref]
:::::: CC: Linus Torvalds [off-list ref]
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org Attachments
- .config.gz [application/gzip] 33888 bytes
- (unnamed) [text/plain] 176 bytes · preview