Re: [PATCH v2] i2c: bcm-iproc: Add i2c recovery support

From: kernel test robot
Date: Tue Jun 01 2021 - 22:11:47 EST


Hi Chris,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on wsa/i2c/for-next]
[also build test ERROR on v5.13-rc4 next-20210601]
[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/0day-ci/linux/commits/Chris-Packham/i2c-bcm-iproc-Add-i2c-recovery-support/20210602-070900
base: https://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux.git i2c/for-next
config: arm64-randconfig-r003-20210601 (attached as .config)
compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project db26cd30b6dd65e88d786e97a1e453af5cd48966)
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
# install arm64 cross compiling tool for clang build
# apt-get install binutils-aarch64-linux-gnu
# https://github.com/0day-ci/linux/commit/9671d44b08834b225120a1288271bb38c01c1f33
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Chris-Packham/i2c-bcm-iproc-Add-i2c-recovery-support/20210602-070900
git checkout 9671d44b08834b225120a1288271bb38c01c1f33
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=arm64

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

All errors (new ones prefixed by >>):

drivers/i2c/busses/i2c-bcm-iproc.c:1199:3: warning: cast to smaller integer type 'enum bcm_iproc_i2c_type' from 'const void *' [-Wvoid-pointer-to-enum-cast]
(enum bcm_iproc_i2c_type)of_device_get_match_data(&pdev->dev);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/i2c/busses/i2c-bcm-iproc.c:1264:26: error: assigning to 'struct i2c_bus_recovery_info *' from 'const struct i2c_bus_recovery_info *' discards qualifiers [-Werror,-Wincompatible-pointer-types-discards-qualifiers]
adap->bus_recovery_info = &bcm_iproc_recovery_info;
^ ~~~~~~~~~~~~~~~~~~~~~~~~
1 warning and 1 error generated.


vim +1264 drivers/i2c/busses/i2c-bcm-iproc.c

1183
1184 static int bcm_iproc_i2c_probe(struct platform_device *pdev)
1185 {
1186 int irq, ret = 0;
1187 struct bcm_iproc_i2c_dev *iproc_i2c;
1188 struct i2c_adapter *adap;
1189 struct resource *res;
1190
1191 iproc_i2c = devm_kzalloc(&pdev->dev, sizeof(*iproc_i2c),
1192 GFP_KERNEL);
1193 if (!iproc_i2c)
1194 return -ENOMEM;
1195
1196 platform_set_drvdata(pdev, iproc_i2c);
1197 iproc_i2c->device = &pdev->dev;
1198 iproc_i2c->type =
1199 (enum bcm_iproc_i2c_type)of_device_get_match_data(&pdev->dev);
1200 init_completion(&iproc_i2c->done);
1201
1202 res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
1203 iproc_i2c->base = devm_ioremap_resource(iproc_i2c->device, res);
1204 if (IS_ERR(iproc_i2c->base))
1205 return PTR_ERR(iproc_i2c->base);
1206
1207 if (iproc_i2c->type == IPROC_I2C_NIC) {
1208 res = platform_get_resource(pdev, IORESOURCE_MEM, 1);
1209 iproc_i2c->idm_base = devm_ioremap_resource(iproc_i2c->device,
1210 res);
1211 if (IS_ERR(iproc_i2c->idm_base))
1212 return PTR_ERR(iproc_i2c->idm_base);
1213
1214 ret = of_property_read_u32(iproc_i2c->device->of_node,
1215 "brcm,ape-hsls-addr-mask",
1216 &iproc_i2c->ape_addr_mask);
1217 if (ret < 0) {
1218 dev_err(iproc_i2c->device,
1219 "'brcm,ape-hsls-addr-mask' missing\n");
1220 return -EINVAL;
1221 }
1222
1223 spin_lock_init(&iproc_i2c->idm_lock);
1224
1225 /* no slave support */
1226 bcm_iproc_algo.reg_slave = NULL;
1227 bcm_iproc_algo.unreg_slave = NULL;
1228 }
1229
1230 ret = bcm_iproc_i2c_init(iproc_i2c);
1231 if (ret)
1232 return ret;
1233
1234 ret = bcm_iproc_i2c_cfg_speed(iproc_i2c);
1235 if (ret)
1236 return ret;
1237
1238 irq = platform_get_irq(pdev, 0);
1239 if (irq > 0) {
1240 ret = devm_request_irq(iproc_i2c->device, irq,
1241 bcm_iproc_i2c_isr, 0, pdev->name,
1242 iproc_i2c);
1243 if (ret < 0) {
1244 dev_err(iproc_i2c->device,
1245 "unable to request irq %i\n", irq);
1246 return ret;
1247 }
1248
1249 iproc_i2c->irq = irq;
1250 } else {
1251 dev_warn(iproc_i2c->device,
1252 "no irq resource, falling back to poll mode\n");
1253 }
1254
1255 bcm_iproc_i2c_enable_disable(iproc_i2c, true);
1256
1257 adap = &iproc_i2c->adapter;
1258 i2c_set_adapdata(adap, iproc_i2c);
1259 snprintf(adap->name, sizeof(adap->name),
1260 "Broadcom iProc (%s)",
1261 of_node_full_name(iproc_i2c->device->of_node));
1262 adap->algo = &bcm_iproc_algo;
1263 adap->quirks = &bcm_iproc_i2c_quirks;
> 1264 adap->bus_recovery_info = &bcm_iproc_recovery_info;
1265 adap->dev.parent = &pdev->dev;
1266 adap->dev.of_node = pdev->dev.of_node;
1267
1268 return i2c_add_adapter(adap);
1269 }
1270

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx

Attachment: .config.gz
Description: application/gzip