[driver-core:kobject-const 25/27] arch/mips/sgi-ip22/ip22-gio.c:388:22: error: initialization of 'int (*)(const struct device *, struct kobj_uevent_env *)' from incompatible pointer type 'int (*)(struct device *, struct kobj_uevent_env *)'

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

 



tree:   https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core.git kobject-const
head:   f14cb4b015ec0dd52034a4c66fcb581538e51095
commit: d9fe66b89e04a5adc6d116321f79dcb73e4181a7 [25/27] driver core: make struct bus_type.uevent() take a const *
config: mips-buildonly-randconfig-r002-20221024 (attached as .config)
compiler: mips64-linux-gcc (GCC) 12.1.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://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core.git/commit/?id=d9fe66b89e04a5adc6d116321f79dcb73e4181a7
        git remote add driver-core https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core.git
        git fetch --no-tags driver-core kobject-const
        git checkout d9fe66b89e04a5adc6d116321f79dcb73e4181a7
        # save the config file
        mkdir build_dir && cp config build_dir/.config
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=mips SHELL=/bin/bash arch/mips/sgi-ip22/

If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@xxxxxxxxx>

All errors (new ones prefixed by >>):

   arch/mips/sgi-ip22/ip22-gio.c:249:6: warning: no previous prototype for 'ip22_gio_set_64bit' [-Wmissing-prototypes]
     249 | void ip22_gio_set_64bit(int slotno)
         |      ^~~~~~~~~~~~~~~~~~
>> arch/mips/sgi-ip22/ip22-gio.c:388:22: error: initialization of 'int (*)(const struct device *, struct kobj_uevent_env *)' from incompatible pointer type 'int (*)(struct device *, struct kobj_uevent_env *)' [-Werror=incompatible-pointer-types]
     388 |         .uevent    = gio_device_uevent,
         |                      ^~~~~~~~~~~~~~~~~
   arch/mips/sgi-ip22/ip22-gio.c:388:22: note: (near initialization for 'gio_bus_type.uevent')
   arch/mips/sgi-ip22/ip22-gio.c:398:12: warning: no previous prototype for 'ip22_gio_init' [-Wmissing-prototypes]
     398 | int __init ip22_gio_init(void)
         |            ^~~~~~~~~~~~~
   cc1: some warnings being treated as errors


vim +388 arch/mips/sgi-ip22/ip22-gio.c

e84de0c6190503 Thomas Bogendoerfer 2011-11-22  248  
e84de0c6190503 Thomas Bogendoerfer 2011-11-22 @249  void ip22_gio_set_64bit(int slotno)
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  250  {
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  251  	u32 tmp = sgimc->giopar;
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  252  
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  253  	switch (slotno) {
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  254  	case 0:
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  255  		tmp |= SGIMC_GIOPAR_GFX64;
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  256  		break;
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  257  	case 1:
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  258  		tmp |= SGIMC_GIOPAR_EXP064;
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  259  		break;
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  260  	case 2:
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  261  		tmp |= SGIMC_GIOPAR_EXP164;
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  262  		break;
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  263  	}
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  264  	sgimc->giopar = tmp;
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  265  }
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  266  
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  267  static int ip22_gio_id(unsigned long addr, u32 *res)
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  268  {
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  269  	u8 tmp8;
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  270  	u8 tmp16;
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  271  	u32 tmp32;
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  272  	u8 *ptr8;
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  273  	u16 *ptr16;
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  274  	u32 *ptr32;
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  275  
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  276  	ptr32 = (void *)CKSEG1ADDR(addr);
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  277  	if (!get_dbe(tmp32, ptr32)) {
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  278  		/*
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  279  		 * We got no DBE, but this doesn't mean anything.
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  280  		 * If GIO is pipelined (which can't be disabled
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  281  		 * for GFX slot) we don't get a DBE, but we see
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  282  		 * the transfer size as data. So we do an 8bit
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  283  		 * and a 16bit access and check whether the common
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  284  		 * data matches
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  285  		 */
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  286  		ptr8 = (void *)CKSEG1ADDR(addr + 3);
1d421ca9d7edba Thomas Bogendoerfer 2014-06-04  287  		if (get_dbe(tmp8, ptr8)) {
1d421ca9d7edba Thomas Bogendoerfer 2014-06-04  288  			/*
1d421ca9d7edba Thomas Bogendoerfer 2014-06-04  289  			 * 32bit access worked, but 8bit doesn't
1d421ca9d7edba Thomas Bogendoerfer 2014-06-04  290  			 * so we don't see phantom reads on
1d421ca9d7edba Thomas Bogendoerfer 2014-06-04  291  			 * a pipelined bus, but a real card which
1d421ca9d7edba Thomas Bogendoerfer 2014-06-04  292  			 * doesn't support 8 bit reads
1d421ca9d7edba Thomas Bogendoerfer 2014-06-04  293  			 */
1d421ca9d7edba Thomas Bogendoerfer 2014-06-04  294  			*res = tmp32;
1d421ca9d7edba Thomas Bogendoerfer 2014-06-04  295  			return 1;
1d421ca9d7edba Thomas Bogendoerfer 2014-06-04  296  		}
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  297  		ptr16 = (void *)CKSEG1ADDR(addr + 2);
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  298  		get_dbe(tmp16, ptr16);
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  299  		if (tmp8 == (tmp16 & 0xff) &&
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  300  		    tmp8 == (tmp32 & 0xff) &&
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  301  		    tmp16 == (tmp32 & 0xffff)) {
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  302  			*res = tmp32;
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  303  			return 1;
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  304  		}
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  305  	}
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  306  	return 0; /* nothing here */
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  307  }
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  308  
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  309  #define HQ2_MYSTERY_OFFS       0x6A07C
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  310  #define NEWPORT_USTATUS_OFFS   0xF133C
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  311  
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  312  static int ip22_is_gr2(unsigned long addr)
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  313  {
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  314  	u32 tmp;
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  315  	u32 *ptr;
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  316  
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  317  	/* HQ2 only allows 32bit accesses */
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  318  	ptr = (void *)CKSEG1ADDR(addr + HQ2_MYSTERY_OFFS);
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  319  	if (!get_dbe(tmp, ptr)) {
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  320  		if (tmp == 0xdeadbeef)
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  321  			return 1;
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  322  	}
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  323  	return 0;
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  324  }
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  325  
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  326  
1d421ca9d7edba Thomas Bogendoerfer 2014-06-04  327  static void ip22_check_gio(int slotno, unsigned long addr, int irq)
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  328  {
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  329  	const char *name = "Unknown";
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  330  	struct gio_device *gio_dev;
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  331  	u32 tmp;
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  332  	__u8 id;
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  333  	int i;
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  334  
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  335  	/* first look for GR2/GR3 by checking mystery register */
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  336  	if (ip22_is_gr2(addr))
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  337  		tmp = 0x7f;
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  338  	else {
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  339  		if (!ip22_gio_id(addr, &tmp)) {
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  340  			/*
1d421ca9d7edba Thomas Bogendoerfer 2014-06-04  341  			 * no GIO signature at start address of slot
1d421ca9d7edba Thomas Bogendoerfer 2014-06-04  342  			 * since Newport doesn't have one, we check if
1d421ca9d7edba Thomas Bogendoerfer 2014-06-04  343  			 * user status register is readable
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  344  			 */
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  345  			if (ip22_gio_id(addr + NEWPORT_USTATUS_OFFS, &tmp))
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  346  				tmp = 0x7e;
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  347  			else
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  348  				tmp = 0;
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  349  		}
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  350  	}
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  351  	if (tmp) {
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  352  		id = GIO_ID(tmp);
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  353  		if (tmp & GIO_32BIT_ID) {
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  354  			if (tmp & GIO_64BIT_IFACE)
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  355  				ip22_gio_set_64bit(slotno);
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  356  		}
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  357  		for (i = 0; i < ARRAY_SIZE(gio_name_table); i++) {
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  358  			if (id == gio_name_table[i].id) {
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  359  				name = gio_name_table[i].name;
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  360  				break;
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  361  			}
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  362  		}
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  363  		printk(KERN_INFO "GIO: slot %d : %s (id %x)\n",
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  364  		       slotno, name, id);
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  365  		gio_dev = kzalloc(sizeof *gio_dev, GFP_KERNEL);
f93e2a100ee73a Xiaoke Wang         2022-03-25  366  		if (!gio_dev)
f93e2a100ee73a Xiaoke Wang         2022-03-25  367  			return;
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  368  		gio_dev->name = name;
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  369  		gio_dev->slotno = slotno;
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  370  		gio_dev->id.id = id;
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  371  		gio_dev->resource.start = addr;
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  372  		gio_dev->resource.end = addr + 0x3fffff;
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  373  		gio_dev->resource.flags = IORESOURCE_MEM;
1d421ca9d7edba Thomas Bogendoerfer 2014-06-04  374  		gio_dev->irq = irq;
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  375  		dev_set_name(&gio_dev->dev, "%d", slotno);
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  376  		gio_device_register(gio_dev);
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  377  	} else
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  378  		printk(KERN_INFO "GIO: slot %d : Empty\n", slotno);
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  379  }
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  380  
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  381  static struct bus_type gio_bus_type = {
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  382  	.name	   = "gio",
136e882fccecea Greg Kroah-Hartman  2017-06-06  383  	.dev_groups = gio_dev_groups,
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  384  	.match	   = gio_bus_match,
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  385  	.probe	   = gio_device_probe,
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  386  	.remove	   = gio_device_remove,
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  387  	.shutdown  = gio_device_shutdown,
e84de0c6190503 Thomas Bogendoerfer 2011-11-22 @388  	.uevent	   = gio_device_uevent,
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  389  };
e84de0c6190503 Thomas Bogendoerfer 2011-11-22  390  

:::::: The code at line 388 was first introduced by commit
:::::: e84de0c61905030a0fe66b7210b6f1bb7c3e1eab MIPS: GIO bus support for SGI IP22/28

:::::: TO: Thomas Bogendoerfer <tsbogend@xxxxxxxxxxxxxxxx>
:::::: CC: Ralf Baechle <ralf@xxxxxxxxxxxxxx>

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp

Attachment: .config.gz
Description: application/gzip

_______________________________________________
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