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-...@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 <l...@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?

Reply via email to