Re: [PATCH v2 1/2] gpio: mediatek: add driver for MT7621

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

 



On Fri, Jun 29, 2018 at 6:52 PM, Sergio Paracuellos
<sergio.paracuellos@xxxxxxxxx> wrote:
> On Fri, Jun 29, 2018 at 6:43 PM, kbuild test robot <lkp@xxxxxxxxx> wrote:
>> Hi Sergio,
>>
>> Thank you for the patch! Yet something to improve:
>>
>> [auto build test ERROR on gpio/for-next]
>> [also build test ERROR on v4.18-rc2 next-20180629]
>> [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/Sergio-Paracuellos/gpio-mediatek-driver-for-gpio-chip-in-MT7621-SoC/20180629-225420
>> base:   https://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio.git for-next
>> config: x86_64-randconfig-s0-06292230 (attached as .config)
>> compiler: gcc-6 (Debian 6.4.0-9) 6.4.0 20171026
>> reproduce:
>>         # save the attached .config to linux build tree
>>         make ARCH=x86_64
>>
>> All errors (new ones prefixed by >>):
>>
>>    drivers/gpio/gpio-mt7621.c: In function 'mediatek_gpio_bank_probe':
>>>> drivers/gpio/gpio-mt7621.c:221:10: error: 'struct gpio_chip' has no member named 'of_node'
>>      rg->chip.of_node = node;
>>              ^
>
> Should I have to add #ifdef CONFIG_OF_GPIO for this line? Is kind of
> ugly hack... Does exist another way to fix this?
>

Ah, this is v2 where the Makefile was wrong... I though it was v3. I
think we can ignore this and see what happen with likely correct v3.

Best regards,
    Sergio Paracuellos

> Thanks,
>     Sergio Paracuellos
>
>>
>> vim +221 drivers/gpio/gpio-mt7621.c
>>
>>    207
>>    208  static int
>>    209  mediatek_gpio_bank_probe(struct platform_device *pdev,
>>    210                           struct device_node *node, int bank)
>>    211  {
>>    212          struct mtk_data *gpio = dev_get_drvdata(&pdev->dev);
>>    213          struct mtk_gc *rg;
>>    214          void __iomem *dat, *set, *ctrl, *diro;
>>    215          int ret;
>>    216
>>    217          rg = &gpio->gc_map[bank];
>>    218          memset(rg, 0, sizeof(*rg));
>>    219
>>    220          spin_lock_init(&rg->lock);
>>  > 221          rg->chip.of_node = node;
>>    222          rg->bank = bank;
>>    223          rg->chip.label = mediatek_gpio_bank_name(rg->bank);
>>    224
>>    225          dat = gpio->gpio_membase + GPIO_REG_DATA + (rg->bank * GPIO_BANK_WIDE);
>>    226          set = gpio->gpio_membase + GPIO_REG_DSET + (rg->bank * GPIO_BANK_WIDE);
>>    227          ctrl = gpio->gpio_membase + GPIO_REG_DCLR + (rg->bank * GPIO_BANK_WIDE);
>>    228          diro = gpio->gpio_membase + GPIO_REG_CTRL + (rg->bank * GPIO_BANK_WIDE);
>>    229
>>    230          ret = bgpio_init(&rg->chip, &pdev->dev, 4,
>>    231                           dat, set, ctrl, diro, NULL, 0);
>>    232          if (ret) {
>>    233                  dev_err(&pdev->dev, "bgpio_init() failed\n");
>>    234                  return ret;
>>    235          }
>>    236
>>    237          ret = devm_gpiochip_add_data(&pdev->dev, &rg->chip, gpio);
>>    238          if (ret < 0) {
>>    239                  dev_err(&pdev->dev, "Could not register gpio %d, ret=%d\n",
>>    240                          rg->chip.ngpio, ret);
>>    241                  return ret;
>>    242          }
>>    243
>>    244          if (gpio->gpio_irq) {
>>    245                  /*
>>    246                   * Manually request the irq here instead of passing
>>    247                   * a flow-handler to gpiochip_set_chained_irqchip,
>>    248                   * because the irq is shared.
>>    249                   */
>>    250                  ret = devm_request_irq(&pdev->dev, gpio->gpio_irq,
>>    251                                         mediatek_gpio_irq_handler, IRQF_SHARED,
>>    252                                         rg->chip.label, &rg->chip);
>>    253
>>    254                  if (ret) {
>>    255                          dev_err(&pdev->dev, "Error requesting IRQ %d: %d\n",
>>    256                                  gpio->gpio_irq, ret);
>>    257                          return ret;
>>    258                  }
>>    259
>>    260                  mediatek_gpio_irq_chip.name = rg->chip.label;
>>    261                  ret = gpiochip_irqchip_add(&rg->chip, &mediatek_gpio_irq_chip,
>>    262                                             0, handle_simple_irq, IRQ_TYPE_NONE);
>>    263                  if (ret) {
>>    264                          dev_err(&pdev->dev, "failed to add gpiochip_irqchip\n");
>>    265                          return ret;
>>    266                  }
>>    267
>>    268                  gpiochip_set_chained_irqchip(&rg->chip, &mediatek_gpio_irq_chip,
>>    269                                               gpio->gpio_irq, NULL);
>>    270          }
>>    271
>>    272          /* set polarity to low for all gpios */
>>    273          mtk_gpio_w32(rg, GPIO_REG_POL, 0);
>>    274
>>    275          dev_info(&pdev->dev, "registering %d gpios\n", rg->chip.ngpio);
>>    276
>>    277          return 0;
>>    278  }
>>    279
>>
>> ---
>> 0-DAY kernel test infrastructure                Open Source Technology Center
>> https://lists.01.org/pipermail/kbuild-all                   Intel Corporation
_______________________________________________
devel mailing list
devel@xxxxxxxxxxxxxxxxxxxxxx
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel



[Index of Archives]     [Linux Driver Backports]     [DMA Engine]     [Linux GPIO]     [Linux SPI]     [Video for Linux]     [Linux USB Devel]     [Linux Coverity]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux