[PATCH v13 5/6] drm/loongson: add drm driver for loongson display controller

Sui Jingfeng 15330273260 at 189.cn
Mon Mar 28 09:01:52 UTC 2022


On 2022/3/28 16:51, kernel test robot wrote:
> Hi Sui,
>
> Thank you for the patch! Perhaps something to improve:
>
> [auto build test WARNING on drm/drm-next]
> [also build test WARNING on robh/for-next linus/master v5.17 next-20220328]
> [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/intel-lab-lkp/linux/commits/Sui-Jingfeng/MIPS-Loongson64-dts-update-the-display-controller-device-node/20220328-103101
> base:   git://anongit.freedesktop.org/drm/drm drm-next
> config: microblaze-randconfig-s032-20220328 (https://download.01.org/0day-ci/archive/20220328/202203281653.wiRaycuD-lkp@intel.com/config)
> compiler: microblaze-linux-gcc (GCC) 11.2.0
> reproduce:
>          wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
>          chmod +x ~/bin/make.cross
>          # apt-get install sparse
>          # sparse version: v0.6.4-dirty
>          # https://github.com/intel-lab-lkp/linux/commit/836c0ab646f65b0a8c6574b5d2495c8617e96545
>          git remote add linux-review https://github.com/intel-lab-lkp/linux
>          git fetch --no-tags linux-review Sui-Jingfeng/MIPS-Loongson64-dts-update-the-display-controller-device-node/20220328-103101
>          git checkout 836c0ab646f65b0a8c6574b5d2495c8617e96545
>          # save the config file to linux build tree
>          mkdir build_dir
>          COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=microblaze SHELL=/bin/bash drivers/gpu/drm/loongson/
>
> If you fix the issue, kindly add following tag as appropriate
> Reported-by: kernel test robot <lkp at intel.com>
>
>
> sparse warnings: (new ones prefixed by >>)
>>> drivers/gpu/drm/loongson/lsdc_i2c.c:179:23: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected void [noderef] __iomem *dir_reg @@     got void * @@
>     drivers/gpu/drm/loongson/lsdc_i2c.c:179:23: sparse:     expected void [noderef] __iomem *dir_reg
>     drivers/gpu/drm/loongson/lsdc_i2c.c:179:23: sparse:     got void *
>>> drivers/gpu/drm/loongson/lsdc_i2c.c:180:23: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected void [noderef] __iomem *dat_reg @@     got void * @@
>     drivers/gpu/drm/loongson/lsdc_i2c.c:180:23: sparse:     expected void [noderef] __iomem *dat_reg
>     drivers/gpu/drm/loongson/lsdc_i2c.c:180:23: sparse:     got void *
>     drivers/gpu/drm/loongson/lsdc_i2c.c:252:23: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected void [noderef] __iomem *dir_reg @@     got void * @@
>     drivers/gpu/drm/loongson/lsdc_i2c.c:252:23: sparse:     expected void [noderef] __iomem *dir_reg
>     drivers/gpu/drm/loongson/lsdc_i2c.c:252:23: sparse:     got void *
>     drivers/gpu/drm/loongson/lsdc_i2c.c:253:23: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected void [noderef] __iomem *dat_reg @@     got void * @@
>     drivers/gpu/drm/loongson/lsdc_i2c.c:253:23: sparse:     expected void [noderef] __iomem *dat_reg
>     drivers/gpu/drm/loongson/lsdc_i2c.c:253:23: sparse:     got void *
> --
>>> drivers/gpu/drm/loongson/lsdc_pci_drv.c:185:61: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void *reg_base @@     got void [noderef] __iomem *reg_base @@
>     drivers/gpu/drm/loongson/lsdc_pci_drv.c:185:61: sparse:     expected void *reg_base
>     drivers/gpu/drm/loongson/lsdc_pci_drv.c:185:61: sparse:     got void [noderef] __iomem *reg_base
> --
>>> drivers/gpu/drm/loongson/lsdc_output.c:232:63: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void *reg_base @@     got void [noderef] __iomem *reg_base @@
>     drivers/gpu/drm/loongson/lsdc_output.c:232:63: sparse:     expected void *reg_base
>     drivers/gpu/drm/loongson/lsdc_output.c:232:63: sparse:     got void [noderef] __iomem *reg_base
>
> vim +179 drivers/gpu/drm/loongson/lsdc_i2c.c
>
>     129	
>     130	struct lsdc_i2c *lsdc_of_create_i2c_adapter(struct device *parent,
>     131						    void *reg_base,
>     132						    struct device_node *i2c_np)
>     133	{
>     134		unsigned int udelay = 5;
>     135		unsigned int timeout = 2200;
>     136		int nr = -1;
>     137		struct i2c_adapter *adapter;
>     138		struct lsdc_i2c *li2c;
>     139		u32 sda, scl;
>     140		int ret;
>     141	
>     142		li2c = kzalloc(sizeof(*li2c), GFP_KERNEL);
>     143		if (!li2c)
>     144			return ERR_PTR(-ENOMEM);
>     145	
>     146		spin_lock_init(&li2c->reglock);
>     147	
>     148		ret = of_property_read_u32(i2c_np, "loongson,sda", &sda);
>     149		if (ret) {
>     150			dev_err(parent, "No sda pin number provided\n");
>     151			return ERR_PTR(ret);
>     152		}
>     153	
>     154		ret = of_property_read_u32(i2c_np, "loongson,scl", &scl);
>     155		if (ret) {
>     156			dev_err(parent, "No scl pin number provided\n");
>     157			return ERR_PTR(ret);
>     158		}
>     159	
>     160		ret = of_property_read_u32(i2c_np, "loongson,nr", &nr);
>     161		if (ret) {
>     162			int id;
>     163	
>     164			if (ret == -EINVAL)
>     165				dev_dbg(parent, "no nr provided\n");
>     166	
>     167			id = of_alias_get_id(i2c_np, "i2c");
>     168			if (id >= 0)
>     169				nr = id;
>     170		}
>     171	
>     172		li2c->sda = 1 << sda;
>     173		li2c->scl = 1 << scl;
>     174	
>     175		/* Optional properties which made the driver more flexible */
>     176		of_property_read_u32(i2c_np, "loongson,udelay", &udelay);
>     177		of_property_read_u32(i2c_np, "loongson,timeout", &timeout);
>     178	
>   > 179		li2c->dir_reg = reg_base + LS7A_DC_GPIO_DIR_REG;
>   > 180		li2c->dat_reg = reg_base + LS7A_DC_GPIO_DAT_REG;
>     181	
>     182		li2c->bit.setsda = ls7a_i2c_set_sda;
>     183		li2c->bit.setscl = ls7a_i2c_set_scl;
>     184		li2c->bit.getsda = ls7a_i2c_get_sda;
>     185		li2c->bit.getscl = ls7a_i2c_get_scl;
>     186		li2c->bit.udelay = udelay;
>     187		li2c->bit.timeout = usecs_to_jiffies(timeout);
>     188		li2c->bit.data = li2c;
>     189	
>     190		adapter = &li2c->adapter;
>     191		adapter->algo_data = &li2c->bit;
>     192		adapter->owner = THIS_MODULE;
>     193		adapter->class = I2C_CLASS_DDC;
>     194		adapter->dev.parent = parent;
>     195		adapter->nr = nr;
>     196		adapter->dev.of_node = i2c_np;
>     197	
>     198		snprintf(adapter->name, sizeof(adapter->name), "gpio-i2c-%d", nr);
>     199	
>     200		i2c_set_adapdata(adapter, li2c);
>     201	
>     202		ret = i2c_bit_add_numbered_bus(adapter);
>     203		if (ret) {
>     204			if (i2c_np)
>     205				of_node_put(i2c_np);
>     206	
>     207			kfree(li2c);
>     208			return ERR_PTR(ret);
>     209		}
>     210	
>     211		dev_info(parent, "sda=%u, scl=%u, nr=%d, udelay=%u, timeout=%u\n",
>     212			 li2c->sda, li2c->scl, nr, udelay, timeout);
>     213	
>     214		ret = devm_add_action_or_reset(parent, lsdc_of_release_i2c_adapter, li2c);
>     215		if (ret)
>     216			return NULL;
>     217	
>     218		return li2c;
>     219	}
>     220	

Hi,  my driver will not used on microblaze arch,

what does this warnings means, do i need to fix this?



More information about the dri-devel mailing list