drivers/input/touchscreen/raspberrypi-ts.c:117:45: sparse: sparse: incorrect type in argument 3 (different address spaces)

From: kernel test robot
Date: Wed Aug 05 2020 - 17:38:22 EST


tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: ecfd7940b8641da6e41ca94eba36876dc2ba827b
commit: 670d0a4b10704667765f7d18f7592993d02783aa sparse: use identifiers to define address spaces
date: 7 weeks ago
config: x86_64-randconfig-s022-20200806 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0
reproduce:
# apt-get install sparse
# sparse version: v0.6.2-117-g8c7aee71-dirty
git checkout 670d0a4b10704667765f7d18f7592993d02783aa
# save the attached .config to linux build tree
make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=x86_64

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


sparse warnings: (new ones prefixed by >>)

>> drivers/input/touchscreen/raspberrypi-ts.c:117:45: sparse: sparse: incorrect type in argument 3 (different address spaces) @@ expected void *cpu_addr @@ got void [noderef] __iomem *fw_regs_va @@
drivers/input/touchscreen/raspberrypi-ts.c:117:45: sparse: expected void *cpu_addr
>> drivers/input/touchscreen/raspberrypi-ts.c:117:45: sparse: got void [noderef] __iomem *fw_regs_va
>> drivers/input/touchscreen/raspberrypi-ts.c:147:24: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected void [noderef] __iomem *fw_regs_va @@ got void * @@
>> drivers/input/touchscreen/raspberrypi-ts.c:147:24: sparse: expected void [noderef] __iomem *fw_regs_va
drivers/input/touchscreen/raspberrypi-ts.c:147:24: sparse: got void *
--
drivers/mtd/nand/raw/hisi504_nand.c:362:26: sparse: sparse: cast removes address space '__iomem' of expression
drivers/mtd/nand/raw/hisi504_nand.c:367:26: sparse: sparse: cast removes address space '__iomem' of expression
>> drivers/mtd/nand/raw/hisi504_nand.c:465:28: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *p @@ got void [noderef] __iomem *mmio @@
drivers/mtd/nand/raw/hisi504_nand.c:465:28: sparse: expected void *p
drivers/mtd/nand/raw/hisi504_nand.c:465:28: sparse: got void [noderef] __iomem *mmio
drivers/mtd/nand/raw/hisi504_nand.c:477:28: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *p @@ got void [noderef] __iomem *mmio @@
drivers/mtd/nand/raw/hisi504_nand.c:477:28: sparse: expected void *p
drivers/mtd/nand/raw/hisi504_nand.c:477:28: sparse: got void [noderef] __iomem *mmio
drivers/mtd/nand/raw/hisi504_nand.c:603:20: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *p @@ got void [noderef] __iomem *mmio @@
drivers/mtd/nand/raw/hisi504_nand.c:603:20: sparse: expected void *p
drivers/mtd/nand/raw/hisi504_nand.c:603:20: sparse: got void [noderef] __iomem *mmio
--
>> drivers/net/ethernet/marvell/octeontx2/af/rvu.c:735:21: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct rvu_fwdata *fwdata @@ got void [noderef] __iomem * @@
drivers/net/ethernet/marvell/octeontx2/af/rvu.c:735:21: sparse: expected struct rvu_fwdata *fwdata
>> drivers/net/ethernet/marvell/octeontx2/af/rvu.c:735:21: sparse: got void [noderef] __iomem *
>> drivers/net/ethernet/marvell/octeontx2/af/rvu.c:741:28: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void volatile [noderef] __iomem *addr @@ got struct rvu_fwdata *fwdata @@
>> drivers/net/ethernet/marvell/octeontx2/af/rvu.c:741:28: sparse: expected void volatile [noderef] __iomem *addr
drivers/net/ethernet/marvell/octeontx2/af/rvu.c:741:28: sparse: got struct rvu_fwdata *fwdata
drivers/net/ethernet/marvell/octeontx2/af/rvu.c:754:28: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void volatile [noderef] __iomem *addr @@ got struct rvu_fwdata *fwdata @@
drivers/net/ethernet/marvell/octeontx2/af/rvu.c:754:28: sparse: expected void volatile [noderef] __iomem *addr
drivers/net/ethernet/marvell/octeontx2/af/rvu.c:754:28: sparse: got struct rvu_fwdata *fwdata
--
>> drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c:840:21: sparse: sparse: cast removes address space '__iomem' of expression

vim +117 drivers/input/touchscreen/raspberrypi-ts.c

0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 111
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 112 static void rpi_ts_dma_cleanup(void *data)
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 113 {
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 114 struct rpi_ts *ts = data;
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 115 struct device *dev = &ts->pdev->dev;
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 116
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 @117 dma_free_coherent(dev, PAGE_SIZE, ts->fw_regs_va, ts->fw_regs_phys);
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 118 }
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 119
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 120 static int rpi_ts_probe(struct platform_device *pdev)
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 121 {
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 122 struct device *dev = &pdev->dev;
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 123 struct device_node *np = dev->of_node;
bd88ce25335d23 Dmitry Torokhov 2019-10-29 124 struct input_dev *input;
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 125 struct device_node *fw_node;
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 126 struct rpi_firmware *fw;
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 127 struct rpi_ts *ts;
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 128 u32 touchbuf;
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 129 int error;
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 130
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 131 fw_node = of_get_parent(np);
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 132 if (!fw_node) {
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 133 dev_err(dev, "Missing firmware node\n");
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 134 return -ENOENT;
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 135 }
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 136
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 137 fw = rpi_firmware_get(fw_node);
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 138 of_node_put(fw_node);
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 139 if (!fw)
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 140 return -EPROBE_DEFER;
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 141
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 142 ts = devm_kzalloc(dev, sizeof(*ts), GFP_KERNEL);
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 143 if (!ts)
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 144 return -ENOMEM;
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 145 ts->pdev = pdev;
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 146
750afb08ca7131 Luis Chamberlain 2019-01-04 @147 ts->fw_regs_va = dma_alloc_coherent(dev, PAGE_SIZE, &ts->fw_regs_phys,
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 148 GFP_KERNEL);
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 149 if (!ts->fw_regs_va) {
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 150 dev_err(dev, "failed to dma_alloc_coherent\n");
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 151 return -ENOMEM;
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 152 }
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 153
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 154 error = devm_add_action_or_reset(dev, rpi_ts_dma_cleanup, ts);
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 155 if (error) {
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 156 dev_err(dev, "failed to devm_add_action_or_reset, %d\n", error);
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 157 return error;
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 158 }
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 159
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 160 touchbuf = (u32)ts->fw_regs_phys;
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 161 error = rpi_firmware_property(fw, RPI_FIRMWARE_FRAMEBUFFER_SET_TOUCHBUF,
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 162 &touchbuf, sizeof(touchbuf));
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 163
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 164 if (error || touchbuf != 0) {
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 165 dev_warn(dev, "Failed to set touchbuf, %d\n", error);
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 166 return error;
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 167 }
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 168
bd88ce25335d23 Dmitry Torokhov 2019-10-29 169 input = devm_input_allocate_device(dev);
bd88ce25335d23 Dmitry Torokhov 2019-10-29 170 if (!input) {
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 171 dev_err(dev, "Failed to allocate input device\n");
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 172 return -ENOMEM;
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 173 }
bd88ce25335d23 Dmitry Torokhov 2019-10-29 174
bd88ce25335d23 Dmitry Torokhov 2019-10-29 175 ts->input = input;
bd88ce25335d23 Dmitry Torokhov 2019-10-29 176 input_set_drvdata(input, ts);
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 177
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 178 input->name = "raspberrypi-ts";
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 179 input->id.bustype = BUS_HOST;
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 180
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 181 input_set_abs_params(input, ABS_MT_POSITION_X, 0,
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 182 RPI_TS_DEFAULT_WIDTH, 0, 0);
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 183 input_set_abs_params(input, ABS_MT_POSITION_Y, 0,
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 184 RPI_TS_DEFAULT_HEIGHT, 0, 0);
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 185 touchscreen_parse_properties(input, true, &ts->prop);
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 186
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 187 error = input_mt_init_slots(input, RPI_TS_MAX_SUPPORTED_POINTS,
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 188 INPUT_MT_DIRECT);
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 189 if (error) {
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 190 dev_err(dev, "could not init mt slots, %d\n", error);
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 191 return error;
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 192 }
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 193
bd88ce25335d23 Dmitry Torokhov 2019-10-29 194 error = input_setup_polling(input, rpi_ts_poll);
bd88ce25335d23 Dmitry Torokhov 2019-10-29 195 if (error) {
bd88ce25335d23 Dmitry Torokhov 2019-10-29 196 dev_err(dev, "could not set up polling mode, %d\n", error);
bd88ce25335d23 Dmitry Torokhov 2019-10-29 197 return error;
bd88ce25335d23 Dmitry Torokhov 2019-10-29 198 }
bd88ce25335d23 Dmitry Torokhov 2019-10-29 199
bd88ce25335d23 Dmitry Torokhov 2019-10-29 200 input_set_poll_interval(input, RPI_TS_POLL_INTERVAL);
bd88ce25335d23 Dmitry Torokhov 2019-10-29 201
bd88ce25335d23 Dmitry Torokhov 2019-10-29 202 error = input_register_device(input);
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 203 if (error) {
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 204 dev_err(dev, "could not register input device, %d\n", error);
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 205 return error;
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 206 }
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 207
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 208 return 0;
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 209 }
0b9f28fed3f70f Nicolas Saenz Julienne 2018-12-21 210

:::::: The code at line 117 was first introduced by commit
:::::: 0b9f28fed3f70ff9a0380fe308739dd72a30a6f6 Input: add official Raspberry Pi's touchscreen driver

:::::: TO: Nicolas Saenz Julienne <nsaenzjulienne@xxxxxxx>
:::::: CC: Dmitry Torokhov <dmitry.torokhov@xxxxxxxxx>

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

Attachment: .config.gz
Description: application/gzip