Hi Mauri, Thank you for the patch! Yet something to improve: [auto build test ERROR on gpio/for-next] [also build test ERROR on v5.11 next-20210223] [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] url: https://github.com/0day-ci/linux/commits/Mauri-Sandberg/gpio-driver-for-the-NXP-74HC153-chip/20210224-040026 base: https://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio.git for-next config: s390-allmodconfig (attached as .config) compiler: s390-linux-gcc (GCC) 9.3.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/0day-ci/linux/commit/04cf14b1b4dad0702e35202513962925fdf8113f git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Mauri-Sandberg/gpio-driver-for-the-NXP-74HC153-chip/20210224-040026 git checkout 04cf14b1b4dad0702e35202513962925fdf8113f # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=s390 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot All errors (new ones prefixed by >>): drivers/gpio/gpio-nxp-74hc153.c: In function 'nxp_74hc153_get_value': drivers/gpio/gpio-nxp-74hc153.c:75:36: warning: variable 'pdata' set but not used [-Wunused-but-set-variable] 75 | struct nxp_74hc153_platform_data *pdata; | ^~~~~ drivers/gpio/gpio-nxp-74hc153.c: In function 'nxp_74hc153_probe': >> drivers/gpio/gpio-nxp-74hc153.c:216:4: error: 'struct gpio_chip' has no member named 'of_node' 216 | gc->of_node = np; | ^~ vim +216 drivers/gpio/gpio-nxp-74hc153.c 103 104 static int nxp_74hc153_probe(struct platform_device *pdev) 105 { 106 struct device_node *np = pdev->dev.of_node; 107 struct nxp_74hc153_chip *nxp; 108 struct gpio_chip *gc; 109 int err; 110 unsigned gpio_s0; 111 unsigned gpio_s1; 112 unsigned gpio_1y; 113 unsigned gpio_2y; 114 115 nxp = kzalloc(sizeof(struct nxp_74hc153_chip), GFP_KERNEL); 116 if (nxp == NULL) { 117 dev_err(&pdev->dev, "no memory for private data\n"); 118 return -ENOMEM; 119 } 120 121 gpio_s0 = of_get_named_gpio(np, "gpio-s0", 0); 122 gpio_s1 = of_get_named_gpio(np, "gpio-s1", 0); 123 gpio_1y = of_get_named_gpio(np, "gpio-1y", 0); 124 gpio_2y = of_get_named_gpio(np, "gpio-2y", 0); 125 126 if (!gpio_is_valid(gpio_s0) || !gpio_is_valid(gpio_s1) || 127 !gpio_is_valid(gpio_1y) || !gpio_is_valid(gpio_2y)) { 128 129 dev_err(&pdev->dev, "control GPIO(s) are missing\n"); 130 err = -EINVAL; 131 goto err_free_nxp; 132 } else { 133 nxp->config.gpio_pin_s0 = gpio_s0; 134 nxp->config.gpio_pin_s1 = gpio_s1; 135 nxp->config.gpio_pin_1y = gpio_1y; 136 nxp->config.gpio_pin_2y = gpio_2y; 137 } 138 139 // apply pin configuration 140 err = gpio_request(nxp->config.gpio_pin_s0, dev_name(&pdev->dev)); 141 if (err) { 142 dev_err(&pdev->dev, "unable to claim gpio %u, err=%d\n", 143 nxp->config.gpio_pin_s0, err); 144 goto err_free_nxp; 145 } 146 147 err = gpio_request(nxp->config.gpio_pin_s1, dev_name(&pdev->dev)); 148 if (err) { 149 dev_err(&pdev->dev, "unable to claim gpio %u, err=%d\n", 150 nxp->config.gpio_pin_s1, err); 151 goto err_free_s0; 152 } 153 154 err = gpio_request(nxp->config.gpio_pin_1y, dev_name(&pdev->dev)); 155 if (err) { 156 dev_err(&pdev->dev, "unable to claim gpio %u, err=%d\n", 157 nxp->config.gpio_pin_1y, err); 158 goto err_free_s1; 159 } 160 161 err = gpio_request(nxp->config.gpio_pin_2y, dev_name(&pdev->dev)); 162 if (err) { 163 dev_err(&pdev->dev, "unable to claim gpio %u, err=%d\n", 164 nxp->config.gpio_pin_2y, err); 165 goto err_free_1y; 166 } 167 168 err = gpio_direction_output(nxp->config.gpio_pin_s0, 0); 169 if (err) { 170 dev_err(&pdev->dev, 171 "unable to set direction of gpio %u, err=%d\n", 172 nxp->config.gpio_pin_s0, err); 173 goto err_free_2y; 174 } 175 176 err = gpio_direction_output(nxp->config.gpio_pin_s1, 0); 177 if (err) { 178 dev_err(&pdev->dev, 179 "unable to set direction of gpio %u, err=%d\n", 180 nxp->config.gpio_pin_s1, err); 181 goto err_free_2y; 182 } 183 184 err = gpio_direction_input(nxp->config.gpio_pin_1y); 185 if (err) { 186 dev_err(&pdev->dev, 187 "unable to set direction of gpio %u, err=%d\n", 188 nxp->config.gpio_pin_1y, err); 189 goto err_free_2y; 190 } 191 192 err = gpio_direction_input(nxp->config.gpio_pin_2y); 193 if (err) { 194 dev_err(&pdev->dev, 195 "unable to set direction of gpio %u, err=%d\n", 196 nxp->config.gpio_pin_2y, err); 197 goto err_free_2y; 198 } 199 200 nxp->parent = &pdev->dev; 201 mutex_init(&nxp->lock); 202 203 gc = &nxp->gpio_chip; 204 205 gc->direction_input = nxp_74hc153_direction_input; 206 gc->direction_output = nxp_74hc153_direction_output; 207 gc->get = nxp_74hc153_get_value; 208 gc->set = nxp_74hc153_set_value; 209 gc->can_sleep = 1; 210 211 gc->base = -1; 212 gc->ngpio = NXP_74HC153_NUM_GPIOS; 213 gc->label = dev_name(nxp->parent); 214 gc->parent = nxp->parent; 215 gc->owner = THIS_MODULE; > 216 gc->of_node = np; 217 218 err = gpiochip_add(&nxp->gpio_chip); 219 if (err) { 220 dev_err(&pdev->dev, "unable to add gpio chip, err=%d\n", err); 221 goto err_free_2y; 222 } 223 224 platform_set_drvdata(pdev, nxp); 225 return 0; 226 227 err_free_2y: 228 gpio_free(nxp->config.gpio_pin_2y); 229 err_free_1y: 230 gpio_free(nxp->config.gpio_pin_1y); 231 err_free_s1: 232 gpio_free(nxp->config.gpio_pin_s1); 233 err_free_s0: 234 gpio_free(nxp->config.gpio_pin_s0); 235 err_free_nxp: 236 kfree(nxp); 237 return err; 238 } 239 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org