Re: [PATCH v3 2/3] gpio: pcie-idio-24: Migrate to the regmap API

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

 



Hi William,

I love your patch! Perhaps something to improve:

[auto build test WARNING on 4827aae061337251bb91801b316157a78b845ec7]

url:    https://github.com/intel-lab-lkp/linux/commits/William-Breathitt-Gray/regmap-Pass-irq_drv_data-as-a-parameter-for-set_type_config/20230306-010313
base:   4827aae061337251bb91801b316157a78b845ec7
patch link:    https://lore.kernel.org/r/278e328cd1689a4e331e7515050c12c29f2a4785.1678034378.git.william.gray%40linaro.org
patch subject: [PATCH v3 2/3] gpio: pcie-idio-24: Migrate to the regmap API
config: i386-randconfig-a013 (https://download.01.org/0day-ci/archive/20230306/202303060355.RtbgFd25-lkp@xxxxxxxxx/config)
compiler: clang version 14.0.6 (https://github.com/llvm/llvm-project f28c006a5895fc0e329fe15fead81e37457cb1d1)
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/intel-lab-lkp/linux/commit/e60d5c32ff098c33b1e171190079ed3f40180008
        git remote add linux-review https://github.com/intel-lab-lkp/linux
        git fetch --no-tags linux-review William-Breathitt-Gray/regmap-Pass-irq_drv_data-as-a-parameter-for-set_type_config/20230306-010313
        git checkout e60d5c32ff098c33b1e171190079ed3f40180008
        # save the config file
        mkdir build_dir && cp config build_dir/.config
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=i386 olddefconfig
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=i386 SHELL=/bin/bash drivers/gpio/

If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Link: https://lore.kernel.org/oe-kbuild-all/202303060355.RtbgFd25-lkp@xxxxxxxxx/

All warnings (new ones prefixed by >>):

>> drivers/gpio/gpio-pcie-idio-24.c:365:2: warning: variable 'idio24gpio' is uninitialized when used here [-Wuninitialized]
           idio24gpio->map = devm_regmap_init_mmio(dev, idio_24_regs,
           ^~~~~~~~~~
   drivers/gpio/gpio-pcie-idio-24.c:333:33: note: initialize the variable 'idio24gpio' to silence this warning
           struct idio_24_gpio *idio24gpio;
                                          ^
                                           = NULL
   1 warning generated.


vim +/idio24gpio +365 drivers/gpio/gpio-pcie-idio-24.c

   329	
   330	static int idio_24_probe(struct pci_dev *pdev, const struct pci_device_id *id)
   331	{
   332		struct device *const dev = &pdev->dev;
   333		struct idio_24_gpio *idio24gpio;
   334		int err;
   335		const size_t pci_plx_bar_index = 1;
   336		const size_t pci_bar_index = 2;
   337		const char *const name = pci_name(pdev);
   338		struct gpio_regmap_config gpio_config = {};
   339		void __iomem *pex8311_intcsr;
   340		void __iomem *idio_24_regs;
   341		struct regmap *pex8311_intcsr_map;
   342		struct regmap_irq_chip *chip;
   343		struct regmap_irq_chip_data *chip_data;
   344	
   345		err = pcim_enable_device(pdev);
   346		if (err) {
   347			dev_err(dev, "Failed to enable PCI device (%d)\n", err);
   348			return err;
   349		}
   350	
   351		err = pcim_iomap_regions(pdev, BIT(pci_plx_bar_index) | BIT(pci_bar_index), name);
   352		if (err) {
   353			dev_err(dev, "Unable to map PCI I/O addresses (%d)\n", err);
   354			return err;
   355		}
   356	
   357		pex8311_intcsr = pcim_iomap_table(pdev)[pci_plx_bar_index] + PLX_PEX8311_PCI_LCS_INTCSR;
   358		idio_24_regs = pcim_iomap_table(pdev)[pci_bar_index];
   359	
   360		pex8311_intcsr_map = devm_regmap_init_mmio(dev, pex8311_intcsr,
   361							   &pex8311_intcsr_regmap_config);
   362		if (IS_ERR(pex8311_intcsr_map))
   363			return dev_err_probe(dev, PTR_ERR(pex8311_intcsr_map),
   364					     "Unable to initialize PEX8311 register map\n");
 > 365		idio24gpio->map = devm_regmap_init_mmio(dev, idio_24_regs,
   366						    &idio_24_regmap_config);
   367		if (IS_ERR(idio24gpio->map))
   368			return dev_err_probe(dev, PTR_ERR(idio24gpio->map),
   369					     "Unable to initialize register map\n");
   370	
   371		idio24gpio = devm_kzalloc(dev, sizeof(*idio24gpio), GFP_KERNEL);
   372		if (!idio24gpio)
   373			return -ENOMEM;
   374	
   375		mutex_init(&idio24gpio->lock);
   376	
   377		/* Initialize all IRQ type configuration to IRQ_TYPE_EDGE_BOTH */
   378		idio24gpio->irq_type = GENMASK(7, 0);
   379	
   380		chip = devm_kzalloc(dev, sizeof(*chip), GFP_KERNEL);
   381		if (!chip)
   382			return -ENOMEM;
   383	
   384		chip->name = name;
   385		chip->status_base = IDIO_24_COS_STATUS_BASE;
   386		chip->mask_base = IDIO_24_COS_ENABLE;
   387		chip->ack_base = IDIO_24_COS_STATUS_BASE;
   388		chip->num_regs = 4;
   389		chip->irqs = idio_24_regmap_irqs;
   390		chip->num_irqs = ARRAY_SIZE(idio_24_regmap_irqs);
   391		chip->handle_mask_sync = idio_24_handle_mask_sync;
   392		chip->set_type_config = idio_24_set_type_config;
   393		chip->irq_drv_data = idio24gpio;
   394	
   395		/* Software board reset */
   396		err = regmap_write(idio24gpio->map, IDIO_24_SOFT_RESET, 0);
   397		if (err)
   398			return err;
   399		/*
   400		 * enable PLX PEX8311 internal PCI wire interrupt and local interrupt
   401		 * input
   402		 */
   403		err = regmap_update_bits(pex8311_intcsr_map, 0x0, IDIO_24_ENABLE_IRQ,
   404					 IDIO_24_ENABLE_IRQ);
   405		if (err)
   406			return err;
   407	
   408		err = devm_regmap_add_irq_chip(dev, idio24gpio->map, pdev->irq, 0, 0,
   409					       chip, &chip_data);
   410		if (err)
   411			return dev_err_probe(dev, err, "IRQ registration failed\n");
   412	
   413		gpio_config.parent = dev;
   414		gpio_config.regmap = idio24gpio->map;
   415		gpio_config.ngpio = IDIO_24_NGPIO;
   416		gpio_config.names = idio_24_names;
   417		gpio_config.reg_dat_base = GPIO_REGMAP_ADDR(IDIO_24_OUT_BASE);
   418		gpio_config.reg_set_base = GPIO_REGMAP_ADDR(IDIO_24_OUT_BASE);
   419		gpio_config.reg_dir_out_base = GPIO_REGMAP_ADDR(IDIO_24_CONTROL_REG);
   420		gpio_config.ngpio_per_reg = IDIO_24_NGPIO_PER_REG;
   421		gpio_config.irq_domain = regmap_irq_get_domain(chip_data);
   422		gpio_config.reg_mask_xlate = idio_24_reg_mask_xlate;
   423		gpio_config.drvdata = idio24gpio->map;
   424	
   425		return PTR_ERR_OR_ZERO(devm_gpio_regmap_register(dev, &gpio_config));
   426	}
   427	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests



[Index of Archives]     [Linux SPI]     [Linux Kernel]     [Linux ARM (vger)]     [Linux ARM MSM]     [Linux Omap]     [Linux Arm]     [Linux Tegra]     [Fedora ARM]     [Linux for Samsung SOC]     [eCos]     [Linux Fastboot]     [Gcc Help]     [Git]     [DCCP]     [IETF Announce]     [Security]     [Linux MIPS]     [Yosemite Campsites]

  Powered by Linux