lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [day] [month] [year] [list]
Date:   Sat, 22 Aug 2020 23:01:01 +0800
From:   kernel test robot <lkp@...el.com>
To:     Luc Van Oostenryck <luc.vanoostenryck@...il.com>
Cc:     kbuild-all@...ts.01.org, linux-kernel@...r.kernel.org
Subject: drivers/staging/comedi/drivers/addi_apci_3120.c:164:9: sparse:
 sparse: cast removes address space '__iomem' of expression

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   f873db9acd3c92d4741bc3676c9eb511b2f9a6f6
commit: 670d0a4b10704667765f7d18f7592993d02783aa sparse: use identifiers to define address spaces
date:   9 weeks ago
config: riscv-randconfig-s032-20200822 (attached as .config)
compiler: riscv32-linux-gcc (GCC) 9.3.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.2-191-g10164920-dirty
        git checkout 670d0a4b10704667765f7d18f7592993d02783aa
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=riscv 

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


sparse warnings: (new ones prefixed by >>)

>> drivers/staging/comedi/drivers/addi_apci_3120.c:164:9: sparse: sparse: cast removes address space '__iomem' of expression
>> drivers/staging/comedi/drivers/addi_apci_3120.c:164:9: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] __iomem *addr @@     got void * @@
>> drivers/staging/comedi/drivers/addi_apci_3120.c:164:9: sparse:     expected void volatile [noderef] __iomem *addr
   drivers/staging/comedi/drivers/addi_apci_3120.c:164:9: sparse:     got void *
   drivers/staging/comedi/drivers/addi_apci_3120.c:165:9: sparse: sparse: cast removes address space '__iomem' of expression
   drivers/staging/comedi/drivers/addi_apci_3120.c:165:9: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] __iomem *addr @@     got void * @@
   drivers/staging/comedi/drivers/addi_apci_3120.c:165:9: sparse:     expected void volatile [noderef] __iomem *addr
   drivers/staging/comedi/drivers/addi_apci_3120.c:165:9: sparse:     got void *
   drivers/staging/comedi/drivers/addi_apci_3120.c:167:9: sparse: sparse: cast removes address space '__iomem' of expression
   drivers/staging/comedi/drivers/addi_apci_3120.c:167:9: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] __iomem *addr @@     got void * @@
   drivers/staging/comedi/drivers/addi_apci_3120.c:167:9: sparse:     expected void volatile [noderef] __iomem *addr
   drivers/staging/comedi/drivers/addi_apci_3120.c:167:9: sparse:     got void *
   drivers/staging/comedi/drivers/addi_apci_3120.c:168:9: sparse: sparse: cast removes address space '__iomem' of expression
   drivers/staging/comedi/drivers/addi_apci_3120.c:168:9: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] __iomem *addr @@     got void * @@
   drivers/staging/comedi/drivers/addi_apci_3120.c:168:9: sparse:     expected void volatile [noderef] __iomem *addr
   drivers/staging/comedi/drivers/addi_apci_3120.c:168:9: sparse:     got void *
   drivers/staging/comedi/drivers/addi_apci_3120.c:177:9: sparse: sparse: cast removes address space '__iomem' of expression
   drivers/staging/comedi/drivers/addi_apci_3120.c:177:9: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] __iomem *addr @@     got void * @@
   drivers/staging/comedi/drivers/addi_apci_3120.c:177:9: sparse:     expected void volatile [noderef] __iomem *addr
   drivers/staging/comedi/drivers/addi_apci_3120.c:177:9: sparse:     got void *
   drivers/staging/comedi/drivers/addi_apci_3120.c:185:9: sparse: sparse: cast removes address space '__iomem' of expression
   drivers/staging/comedi/drivers/addi_apci_3120.c:185:9: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] __iomem *addr @@     got void * @@
   drivers/staging/comedi/drivers/addi_apci_3120.c:185:9: sparse:     expected void volatile [noderef] __iomem *addr
   drivers/staging/comedi/drivers/addi_apci_3120.c:185:9: sparse:     got void *
   drivers/staging/comedi/drivers/addi_apci_3120.c:195:9: sparse: sparse: cast removes address space '__iomem' of expression
   drivers/staging/comedi/drivers/addi_apci_3120.c:195:9: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] __iomem *addr @@     got void * @@
   drivers/staging/comedi/drivers/addi_apci_3120.c:195:9: sparse:     expected void volatile [noderef] __iomem *addr
   drivers/staging/comedi/drivers/addi_apci_3120.c:195:9: sparse:     got void *
   drivers/staging/comedi/drivers/addi_apci_3120.c:199:9: sparse: sparse: cast removes address space '__iomem' of expression
   drivers/staging/comedi/drivers/addi_apci_3120.c:199:9: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] __iomem *addr @@     got void * @@
   drivers/staging/comedi/drivers/addi_apci_3120.c:199:9: sparse:     expected void volatile [noderef] __iomem *addr
   drivers/staging/comedi/drivers/addi_apci_3120.c:199:9: sparse:     got void *
   drivers/staging/comedi/drivers/addi_apci_3120.c:310:9: sparse: sparse: cast removes address space '__iomem' of expression
>> drivers/staging/comedi/drivers/addi_apci_3120.c:310:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] __iomem *addr @@     got void * @@
>> drivers/staging/comedi/drivers/addi_apci_3120.c:310:9: sparse:     expected void const volatile [noderef] __iomem *addr
   drivers/staging/comedi/drivers/addi_apci_3120.c:310:9: sparse:     got void *
   drivers/staging/comedi/drivers/addi_apci_3120.c:319:9: sparse: sparse: cast removes address space '__iomem' of expression
   drivers/staging/comedi/drivers/addi_apci_3120.c:319:9: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] __iomem *addr @@     got void * @@
   drivers/staging/comedi/drivers/addi_apci_3120.c:319:9: sparse:     expected void volatile [noderef] __iomem *addr
   drivers/staging/comedi/drivers/addi_apci_3120.c:319:9: sparse:     got void *
   drivers/staging/comedi/drivers/addi_apci_3120.c:322:9: sparse: sparse: cast removes address space '__iomem' of expression
   drivers/staging/comedi/drivers/addi_apci_3120.c:322:9: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] __iomem *addr @@     got void * @@
   drivers/staging/comedi/drivers/addi_apci_3120.c:322:9: sparse:     expected void volatile [noderef] __iomem *addr
   drivers/staging/comedi/drivers/addi_apci_3120.c:322:9: sparse:     got void *
   drivers/staging/comedi/drivers/addi_apci_3120.c:326:17: sparse: sparse: cast removes address space '__iomem' of expression
   drivers/staging/comedi/drivers/addi_apci_3120.c:326:17: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] __iomem *addr @@     got void * @@
   drivers/staging/comedi/drivers/addi_apci_3120.c:326:17: sparse:     expected void volatile [noderef] __iomem *addr
   drivers/staging/comedi/drivers/addi_apci_3120.c:326:17: sparse:     got void *
   drivers/staging/comedi/drivers/addi_apci_3120.c:329:17: sparse: sparse: cast removes address space '__iomem' of expression
   drivers/staging/comedi/drivers/addi_apci_3120.c:329:17: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] __iomem *addr @@     got void * @@
   drivers/staging/comedi/drivers/addi_apci_3120.c:329:17: sparse:     expected void volatile [noderef] __iomem *addr
   drivers/staging/comedi/drivers/addi_apci_3120.c:329:17: sparse:     got void *
   drivers/staging/comedi/drivers/addi_apci_3120.c:340:9: sparse: sparse: cast removes address space '__iomem' of expression
   drivers/staging/comedi/drivers/addi_apci_3120.c:340:9: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] __iomem *addr @@     got void * @@
   drivers/staging/comedi/drivers/addi_apci_3120.c:340:9: sparse:     expected void volatile [noderef] __iomem *addr
   drivers/staging/comedi/drivers/addi_apci_3120.c:340:9: sparse:     got void *
   drivers/staging/comedi/drivers/addi_apci_3120.c:343:15: sparse: sparse: cast removes address space '__iomem' of expression
   drivers/staging/comedi/drivers/addi_apci_3120.c:343:15: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] __iomem *addr @@     got void * @@
   drivers/staging/comedi/drivers/addi_apci_3120.c:343:15: sparse:     expected void const volatile [noderef] __iomem *addr
   drivers/staging/comedi/drivers/addi_apci_3120.c:343:15: sparse:     got void *
   drivers/staging/comedi/drivers/addi_apci_3120.c:347:17: sparse: sparse: cast removes address space '__iomem' of expression
   drivers/staging/comedi/drivers/addi_apci_3120.c:347:17: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] __iomem *addr @@     got void * @@
   drivers/staging/comedi/drivers/addi_apci_3120.c:347:17: sparse:     expected void volatile [noderef] __iomem *addr
   drivers/staging/comedi/drivers/addi_apci_3120.c:347:17: sparse:     got void *
   drivers/staging/comedi/drivers/addi_apci_3120.c:350:25: sparse: sparse: cast removes address space '__iomem' of expression
   drivers/staging/comedi/drivers/addi_apci_3120.c:350:25: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] __iomem *addr @@     got void * @@
   drivers/staging/comedi/drivers/addi_apci_3120.c:350:25: sparse:     expected void const volatile [noderef] __iomem *addr
   drivers/staging/comedi/drivers/addi_apci_3120.c:350:25: sparse:     got void *
   drivers/staging/comedi/drivers/addi_apci_3120.c:363:9: sparse: sparse: cast removes address space '__iomem' of expression
   drivers/staging/comedi/drivers/addi_apci_3120.c:363:9: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] __iomem *addr @@     got void * @@
   drivers/staging/comedi/drivers/addi_apci_3120.c:363:9: sparse:     expected void volatile [noderef] __iomem *addr
   drivers/staging/comedi/drivers/addi_apci_3120.c:363:9: sparse:     got void *
   drivers/staging/comedi/drivers/addi_apci_3120.c:375:9: sparse: sparse: cast removes address space '__iomem' of expression
   drivers/staging/comedi/drivers/addi_apci_3120.c:375:9: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] __iomem *addr @@     got void * @@
   drivers/staging/comedi/drivers/addi_apci_3120.c:375:9: sparse:     expected void volatile [noderef] __iomem *addr
   drivers/staging/comedi/drivers/addi_apci_3120.c:375:9: sparse:     got void *
   drivers/staging/comedi/drivers/addi_apci_3120.c:386:9: sparse: sparse: cast removes address space '__iomem' of expression
   drivers/staging/comedi/drivers/addi_apci_3120.c:386:9: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] __iomem *addr @@     got void * @@
   drivers/staging/comedi/drivers/addi_apci_3120.c:386:9: sparse:     expected void volatile [noderef] __iomem *addr
   drivers/staging/comedi/drivers/addi_apci_3120.c:386:9: sparse:     got void *
   drivers/staging/comedi/drivers/addi_apci_3120.c:409:17: sparse: sparse: cast removes address space '__iomem' of expression
   drivers/staging/comedi/drivers/addi_apci_3120.c:409:17: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] __iomem *addr @@     got void * @@
   drivers/staging/comedi/drivers/addi_apci_3120.c:409:17: sparse:     expected void volatile [noderef] __iomem *addr
   drivers/staging/comedi/drivers/addi_apci_3120.c:409:17: sparse:     got void *
   drivers/staging/comedi/drivers/addi_apci_3120.c:413:9: sparse: sparse: cast removes address space '__iomem' of expression
   drivers/staging/comedi/drivers/addi_apci_3120.c:413:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] __iomem *addr @@     got void * @@
   drivers/staging/comedi/drivers/addi_apci_3120.c:413:9: sparse:     expected void const volatile [noderef] __iomem *addr
   drivers/staging/comedi/drivers/addi_apci_3120.c:413:9: sparse:     got void *
   drivers/staging/comedi/drivers/addi_apci_3120.c:417:9: sparse: sparse: cast removes address space '__iomem' of expression
   drivers/staging/comedi/drivers/addi_apci_3120.c:417:9: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] __iomem *addr @@     got void * @@
   drivers/staging/comedi/drivers/addi_apci_3120.c:417:9: sparse:     expected void volatile [noderef] __iomem *addr
   drivers/staging/comedi/drivers/addi_apci_3120.c:417:9: sparse:     got void *
   drivers/staging/comedi/drivers/addi_apci_3120.c:436:37: sparse: sparse: cast removes address space '__iomem' of expression
   drivers/staging/comedi/drivers/addi_apci_3120.c:436:37: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] __iomem *addr @@     got void * @@
   drivers/staging/comedi/drivers/addi_apci_3120.c:436:37: sparse:     expected void const volatile [noderef] __iomem *addr
   drivers/staging/comedi/drivers/addi_apci_3120.c:436:37: sparse:     got void *
   drivers/staging/comedi/drivers/addi_apci_3120.c:479:18: sparse: sparse: cast removes address space '__iomem' of expression
   drivers/staging/comedi/drivers/addi_apci_3120.c:479:18: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] __iomem *addr @@     got void * @@
   drivers/staging/comedi/drivers/addi_apci_3120.c:479:18: sparse:     expected void const volatile [noderef] __iomem *addr
   drivers/staging/comedi/drivers/addi_apci_3120.c:479:18: sparse:     got void *
   drivers/staging/comedi/drivers/addi_apci_3120.c:480:20: sparse: sparse: cast removes address space '__iomem' of expression
   drivers/staging/comedi/drivers/addi_apci_3120.c:480:20: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] __iomem *addr @@     got void * @@
   drivers/staging/comedi/drivers/addi_apci_3120.c:480:20: sparse:     expected void const volatile [noderef] __iomem *addr
   drivers/staging/comedi/drivers/addi_apci_3120.c:480:20: sparse:     got void *
   drivers/staging/comedi/drivers/addi_apci_3120.c:488:9: sparse: sparse: cast removes address space '__iomem' of expression
   drivers/staging/comedi/drivers/addi_apci_3120.c:488:9: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] __iomem *addr @@     got void * @@
   drivers/staging/comedi/drivers/addi_apci_3120.c:488:9: sparse:     expected void volatile [noderef] __iomem *addr
   drivers/staging/comedi/drivers/addi_apci_3120.c:488:9: sparse:     got void *
   drivers/staging/comedi/drivers/addi_apci_3120.c:504:31: sparse: sparse: cast removes address space '__iomem' of expression
   drivers/staging/comedi/drivers/addi_apci_3120.c:504:31: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] __iomem *addr @@     got void * @@
   drivers/staging/comedi/drivers/addi_apci_3120.c:504:31: sparse:     expected void const volatile [noderef] __iomem *addr
   drivers/staging/comedi/drivers/addi_apci_3120.c:504:31: sparse:     got void *
   drivers/staging/comedi/drivers/addi_apci_3120.c:509:17: sparse: sparse: cast removes address space '__iomem' of expression
   drivers/staging/comedi/drivers/addi_apci_3120.c:509:17: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] __iomem *addr @@     got void * @@
   drivers/staging/comedi/drivers/addi_apci_3120.c:509:17: sparse:     expected void volatile [noderef] __iomem *addr
   drivers/staging/comedi/drivers/addi_apci_3120.c:509:17: sparse:     got void *
   drivers/staging/comedi/drivers/addi_apci_3120.c:522:17: sparse: sparse: cast removes address space '__iomem' of expression
   drivers/staging/comedi/drivers/addi_apci_3120.c:522:17: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] __iomem *addr @@     got void * @@
   drivers/staging/comedi/drivers/addi_apci_3120.c:522:17: sparse:     expected void volatile [noderef] __iomem *addr
   drivers/staging/comedi/drivers/addi_apci_3120.c:522:17: sparse:     got void *
   drivers/staging/comedi/drivers/addi_apci_3120.c:548:9: sparse: sparse: cast removes address space '__iomem' of expression
   drivers/staging/comedi/drivers/addi_apci_3120.c:548:9: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] __iomem *addr @@     got void * @@
   drivers/staging/comedi/drivers/addi_apci_3120.c:548:9: sparse:     expected void volatile [noderef] __iomem *addr
   drivers/staging/comedi/drivers/addi_apci_3120.c:548:9: sparse:     got void *
   drivers/staging/comedi/drivers/addi_apci_3120.c:583:9: sparse: sparse: cast removes address space '__iomem' of expression
   drivers/staging/comedi/drivers/addi_apci_3120.c:583:9: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] __iomem *addr @@     got void * @@
   drivers/staging/comedi/drivers/addi_apci_3120.c:583:9: sparse:     expected void volatile [noderef] __iomem *addr
   drivers/staging/comedi/drivers/addi_apci_3120.c:583:9: sparse:     got void *
   drivers/staging/comedi/drivers/addi_apci_3120.c:668:9: sparse: sparse: cast removes address space '__iomem' of expression
   drivers/staging/comedi/drivers/addi_apci_3120.c:668:9: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] __iomem *addr @@     got void * @@
   drivers/staging/comedi/drivers/addi_apci_3120.c:668:9: sparse:     expected void volatile [noderef] __iomem *addr
   drivers/staging/comedi/drivers/addi_apci_3120.c:668:9: sparse:     got void *
   drivers/staging/comedi/drivers/addi_apci_3120.c:674:9: sparse: sparse: cast removes address space '__iomem' of expression
   drivers/staging/comedi/drivers/addi_apci_3120.c:674:9: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] __iomem *addr @@     got void * @@
   drivers/staging/comedi/drivers/addi_apci_3120.c:674:9: sparse:     expected void volatile [noderef] __iomem *addr
--
>> drivers/staging/comedi/drivers/ke_counter.c:54:17: sparse: sparse: cast removes address space '__iomem' of expression
>> drivers/staging/comedi/drivers/ke_counter.c:54:17: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] __iomem *addr @@     got void * @@
>> drivers/staging/comedi/drivers/ke_counter.c:54:17: sparse:     expected void volatile [noderef] __iomem *addr
   drivers/staging/comedi/drivers/ke_counter.c:54:17: sparse:     got void *
   drivers/staging/comedi/drivers/ke_counter.c:55:17: sparse: sparse: cast removes address space '__iomem' of expression
   drivers/staging/comedi/drivers/ke_counter.c:55:17: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] __iomem *addr @@     got void * @@
   drivers/staging/comedi/drivers/ke_counter.c:55:17: sparse:     expected void volatile [noderef] __iomem *addr
   drivers/staging/comedi/drivers/ke_counter.c:55:17: sparse:     got void *
   drivers/staging/comedi/drivers/ke_counter.c:56:17: sparse: sparse: cast removes address space '__iomem' of expression
   drivers/staging/comedi/drivers/ke_counter.c:56:17: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] __iomem *addr @@     got void * @@
   drivers/staging/comedi/drivers/ke_counter.c:56:17: sparse:     expected void volatile [noderef] __iomem *addr
   drivers/staging/comedi/drivers/ke_counter.c:56:17: sparse:     got void *
   drivers/staging/comedi/drivers/ke_counter.c:57:17: sparse: sparse: cast removes address space '__iomem' of expression
   drivers/staging/comedi/drivers/ke_counter.c:57:17: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] __iomem *addr @@     got void * @@
   drivers/staging/comedi/drivers/ke_counter.c:57:17: sparse:     expected void volatile [noderef] __iomem *addr
   drivers/staging/comedi/drivers/ke_counter.c:57:17: sparse:     got void *
   drivers/staging/comedi/drivers/ke_counter.c:74:17: sparse: sparse: cast removes address space '__iomem' of expression
>> drivers/staging/comedi/drivers/ke_counter.c:74:17: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] __iomem *addr @@     got void * @@
>> drivers/staging/comedi/drivers/ke_counter.c:74:17: sparse:     expected void const volatile [noderef] __iomem *addr
   drivers/staging/comedi/drivers/ke_counter.c:74:17: sparse:     got void *
   drivers/staging/comedi/drivers/ke_counter.c:76:23: sparse: sparse: cast removes address space '__iomem' of expression
   drivers/staging/comedi/drivers/ke_counter.c:76:23: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] __iomem *addr @@     got void * @@
   drivers/staging/comedi/drivers/ke_counter.c:76:23: sparse:     expected void const volatile [noderef] __iomem *addr
   drivers/staging/comedi/drivers/ke_counter.c:76:23: sparse:     got void *
   drivers/staging/comedi/drivers/ke_counter.c:77:25: sparse: sparse: cast removes address space '__iomem' of expression
   drivers/staging/comedi/drivers/ke_counter.c:77:25: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] __iomem *addr @@     got void * @@
   drivers/staging/comedi/drivers/ke_counter.c:77:25: sparse:     expected void const volatile [noderef] __iomem *addr
   drivers/staging/comedi/drivers/ke_counter.c:77:25: sparse:     got void *
   drivers/staging/comedi/drivers/ke_counter.c:78:25: sparse: sparse: cast removes address space '__iomem' of expression
   drivers/staging/comedi/drivers/ke_counter.c:78:25: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] __iomem *addr @@     got void * @@
   drivers/staging/comedi/drivers/ke_counter.c:78:25: sparse:     expected void const volatile [noderef] __iomem *addr
   drivers/staging/comedi/drivers/ke_counter.c:78:25: sparse:     got void *
   drivers/staging/comedi/drivers/ke_counter.c:79:25: sparse: sparse: cast removes address space '__iomem' of expression
   drivers/staging/comedi/drivers/ke_counter.c:79:25: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] __iomem *addr @@     got void * @@
   drivers/staging/comedi/drivers/ke_counter.c:79:25: sparse:     expected void const volatile [noderef] __iomem *addr
   drivers/staging/comedi/drivers/ke_counter.c:79:25: sparse:     got void *
   drivers/staging/comedi/drivers/ke_counter.c:92:17: sparse: sparse: cast removes address space '__iomem' of expression
   drivers/staging/comedi/drivers/ke_counter.c:92:17: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] __iomem *addr @@     got void * @@
   drivers/staging/comedi/drivers/ke_counter.c:92:17: sparse:     expected void volatile [noderef] __iomem *addr
   drivers/staging/comedi/drivers/ke_counter.c:92:17: sparse:     got void *
   drivers/staging/comedi/drivers/ke_counter.c:117:17: sparse: sparse: cast removes address space '__iomem' of expression
   drivers/staging/comedi/drivers/ke_counter.c:117:17: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] __iomem *addr @@     got void * @@
   drivers/staging/comedi/drivers/ke_counter.c:117:17: sparse:     expected void volatile [noderef] __iomem *addr
   drivers/staging/comedi/drivers/ke_counter.c:117:17: sparse:     got void *
   drivers/staging/comedi/drivers/ke_counter.c:120:23: sparse: sparse: cast removes address space '__iomem' of expression
   drivers/staging/comedi/drivers/ke_counter.c:120:23: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] __iomem *addr @@     got void * @@
   drivers/staging/comedi/drivers/ke_counter.c:120:23: sparse:     expected void const volatile [noderef] __iomem *addr
   drivers/staging/comedi/drivers/ke_counter.c:120:23: sparse:     got void *
   drivers/staging/comedi/drivers/ke_counter.c:154:17: sparse: sparse: cast removes address space '__iomem' of expression
   drivers/staging/comedi/drivers/ke_counter.c:154:17: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] __iomem *addr @@     got void * @@
   drivers/staging/comedi/drivers/ke_counter.c:154:17: sparse:     expected void volatile [noderef] __iomem *addr
   drivers/staging/comedi/drivers/ke_counter.c:154:17: sparse:     got void *
   drivers/staging/comedi/drivers/ke_counter.c:195:9: sparse: sparse: cast removes address space '__iomem' of expression
   drivers/staging/comedi/drivers/ke_counter.c:195:9: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] __iomem *addr @@     got void * @@
   drivers/staging/comedi/drivers/ke_counter.c:195:9: sparse:     expected void volatile [noderef] __iomem *addr
   drivers/staging/comedi/drivers/ke_counter.c:195:9: sparse:     got void *

# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=670d0a4b10704667765f7d18f7592993d02783aa
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout 670d0a4b10704667765f7d18f7592993d02783aa
vim +/__iomem +164 drivers/staging/comedi/drivers/addi_apci_3120.c

4e068bec48c6c2 H Hartley Sweeten 2014-10-14  156  
0b7defa70227f7 H Hartley Sweeten 2014-11-04  157  static void apci3120_addon_write(struct comedi_device *dev,
0b7defa70227f7 H Hartley Sweeten 2014-11-04  158  				 unsigned int val, unsigned int reg)
0b7defa70227f7 H Hartley Sweeten 2014-11-04  159  {
0b7defa70227f7 H Hartley Sweeten 2014-11-04  160  	struct apci3120_private *devpriv = dev->private;
0b7defa70227f7 H Hartley Sweeten 2014-11-04  161  
0b7defa70227f7 H Hartley Sweeten 2014-11-04  162  	/* 16-bit interface for AMCC add-on registers */
0b7defa70227f7 H Hartley Sweeten 2014-11-04  163  
0b7defa70227f7 H Hartley Sweeten 2014-11-04 @164  	outw(reg, devpriv->addon + APCI3120_ADDON_ADDR_REG);
0b7defa70227f7 H Hartley Sweeten 2014-11-04  165  	outw(val & 0xffff, devpriv->addon + APCI3120_ADDON_DATA_REG);
0b7defa70227f7 H Hartley Sweeten 2014-11-04  166  
0b7defa70227f7 H Hartley Sweeten 2014-11-04  167  	outw(reg + 2, devpriv->addon + APCI3120_ADDON_ADDR_REG);
0b7defa70227f7 H Hartley Sweeten 2014-11-04  168  	outw((val >> 16) & 0xffff, devpriv->addon + APCI3120_ADDON_DATA_REG);
0b7defa70227f7 H Hartley Sweeten 2014-11-04  169  }
0b7defa70227f7 H Hartley Sweeten 2014-11-04  170  
ee844c51ef0451 H Hartley Sweeten 2014-11-04  171  static void apci3120_init_dma(struct comedi_device *dev,
ee844c51ef0451 H Hartley Sweeten 2014-11-04  172  			      struct apci3120_dmabuf *dmabuf)
ee844c51ef0451 H Hartley Sweeten 2014-11-04  173  {
ee844c51ef0451 H Hartley Sweeten 2014-11-04  174  	struct apci3120_private *devpriv = dev->private;
ee844c51ef0451 H Hartley Sweeten 2014-11-04  175  
ee844c51ef0451 H Hartley Sweeten 2014-11-04  176  	/* AMCC - enable transfer count and reset A2P FIFO */
ee844c51ef0451 H Hartley Sweeten 2014-11-04  177  	outl(AGCSTS_TC_ENABLE | AGCSTS_RESET_A2P_FIFO,
ee844c51ef0451 H Hartley Sweeten 2014-11-04  178  	     devpriv->amcc + AMCC_OP_REG_AGCSTS);
ee844c51ef0451 H Hartley Sweeten 2014-11-04  179  
ee844c51ef0451 H Hartley Sweeten 2014-11-04  180  	/* Add-On - enable transfer count and reset A2P FIFO */
ee844c51ef0451 H Hartley Sweeten 2014-11-04  181  	apci3120_addon_write(dev, AGCSTS_TC_ENABLE | AGCSTS_RESET_A2P_FIFO,
ee844c51ef0451 H Hartley Sweeten 2014-11-04  182  			     AMCC_OP_REG_AGCSTS);
ee844c51ef0451 H Hartley Sweeten 2014-11-04  183  
ee844c51ef0451 H Hartley Sweeten 2014-11-04  184  	/* AMCC - enable transfers and reset A2P flags */
ee844c51ef0451 H Hartley Sweeten 2014-11-04  185  	outl(RESET_A2P_FLAGS | EN_A2P_TRANSFERS,
ee844c51ef0451 H Hartley Sweeten 2014-11-04  186  	     devpriv->amcc + AMCC_OP_REG_MCSR);
ee844c51ef0451 H Hartley Sweeten 2014-11-04  187  
ee844c51ef0451 H Hartley Sweeten 2014-11-04  188  	/* Add-On - DMA start address */
ee844c51ef0451 H Hartley Sweeten 2014-11-04  189  	apci3120_addon_write(dev, dmabuf->hw, AMCC_OP_REG_AMWAR);
ee844c51ef0451 H Hartley Sweeten 2014-11-04  190  
ee844c51ef0451 H Hartley Sweeten 2014-11-04  191  	/* Add-On - Number of acquisitions */
ee844c51ef0451 H Hartley Sweeten 2014-11-04  192  	apci3120_addon_write(dev, dmabuf->use_size, AMCC_OP_REG_AMWTC);
ee844c51ef0451 H Hartley Sweeten 2014-11-04  193  
ee844c51ef0451 H Hartley Sweeten 2014-11-04  194  	/* AMCC - enable write complete (DMA) and set FIFO advance */
ee844c51ef0451 H Hartley Sweeten 2014-11-04 @195  	outl(APCI3120_FIFO_ADVANCE_ON_BYTE_2 | AINT_WRITE_COMPL,
ee844c51ef0451 H Hartley Sweeten 2014-11-04  196  	     devpriv->amcc + AMCC_OP_REG_INTCSR);
ee844c51ef0451 H Hartley Sweeten 2014-11-04  197  
ee844c51ef0451 H Hartley Sweeten 2014-11-04  198  	/* Add-On - enable DMA */
ee844c51ef0451 H Hartley Sweeten 2014-11-04  199  	outw(APCI3120_ADDON_CTRL_AMWEN_ENA | APCI3120_ADDON_CTRL_A2P_FIFO_ENA,
ee844c51ef0451 H Hartley Sweeten 2014-11-04  200  	     devpriv->addon + APCI3120_ADDON_CTRL_REG);
ee844c51ef0451 H Hartley Sweeten 2014-11-04  201  }
ee844c51ef0451 H Hartley Sweeten 2014-11-04  202  
45062492281d2c H Hartley Sweeten 2014-11-04  203  static void apci3120_setup_dma(struct comedi_device *dev,
45062492281d2c H Hartley Sweeten 2014-11-04  204  			       struct comedi_subdevice *s)
45062492281d2c H Hartley Sweeten 2014-11-04  205  {
45062492281d2c H Hartley Sweeten 2014-11-04  206  	struct apci3120_private *devpriv = dev->private;
45062492281d2c H Hartley Sweeten 2014-11-04  207  	struct comedi_cmd *cmd = &s->async->cmd;
45062492281d2c H Hartley Sweeten 2014-11-04  208  	struct apci3120_dmabuf *dmabuf0 = &devpriv->dmabuf[0];
45062492281d2c H Hartley Sweeten 2014-11-04  209  	struct apci3120_dmabuf *dmabuf1 = &devpriv->dmabuf[1];
45062492281d2c H Hartley Sweeten 2014-11-04  210  	unsigned int dmalen0 = dmabuf0->size;
45062492281d2c H Hartley Sweeten 2014-11-04  211  	unsigned int dmalen1 = dmabuf1->size;
45062492281d2c H Hartley Sweeten 2014-11-04  212  	unsigned int scan_bytes;
45062492281d2c H Hartley Sweeten 2014-11-04  213  
45062492281d2c H Hartley Sweeten 2014-11-04  214  	scan_bytes = comedi_samples_to_bytes(s, cmd->scan_end_arg);
45062492281d2c H Hartley Sweeten 2014-11-04  215  
45062492281d2c H Hartley Sweeten 2014-11-04  216  	if (cmd->stop_src == TRIG_COUNT) {
45062492281d2c H Hartley Sweeten 2014-11-04  217  		/*
45062492281d2c H Hartley Sweeten 2014-11-04  218  		 * Must we fill full first buffer? And must we fill
45062492281d2c H Hartley Sweeten 2014-11-04  219  		 * full second buffer when first is once filled?
45062492281d2c H Hartley Sweeten 2014-11-04  220  		 */
45062492281d2c H Hartley Sweeten 2014-11-04  221  		if (dmalen0 > (cmd->stop_arg * scan_bytes))
45062492281d2c H Hartley Sweeten 2014-11-04  222  			dmalen0 = cmd->stop_arg * scan_bytes;
45062492281d2c H Hartley Sweeten 2014-11-04  223  		else if (dmalen1 > (cmd->stop_arg * scan_bytes - dmalen0))
45062492281d2c H Hartley Sweeten 2014-11-04  224  			dmalen1 = cmd->stop_arg * scan_bytes - dmalen0;
45062492281d2c H Hartley Sweeten 2014-11-04  225  	}
45062492281d2c H Hartley Sweeten 2014-11-04  226  
45062492281d2c H Hartley Sweeten 2014-11-04  227  	if (cmd->flags & CMDF_WAKE_EOS) {
45062492281d2c H Hartley Sweeten 2014-11-04  228  		/* don't we want wake up every scan? */
45062492281d2c H Hartley Sweeten 2014-11-04  229  		if (dmalen0 > scan_bytes) {
45062492281d2c H Hartley Sweeten 2014-11-04  230  			dmalen0 = scan_bytes;
45062492281d2c H Hartley Sweeten 2014-11-04  231  			if (cmd->scan_end_arg & 1)
45062492281d2c H Hartley Sweeten 2014-11-04  232  				dmalen0 += 2;
45062492281d2c H Hartley Sweeten 2014-11-04  233  		}
45062492281d2c H Hartley Sweeten 2014-11-04  234  		if (dmalen1 > scan_bytes) {
45062492281d2c H Hartley Sweeten 2014-11-04  235  			dmalen1 = scan_bytes;
45062492281d2c H Hartley Sweeten 2014-11-04  236  			if (cmd->scan_end_arg & 1)
45062492281d2c H Hartley Sweeten 2014-11-04  237  				dmalen1 -= 2;
45062492281d2c H Hartley Sweeten 2014-11-04  238  			if (dmalen1 < 4)
45062492281d2c H Hartley Sweeten 2014-11-04  239  				dmalen1 = 4;
45062492281d2c H Hartley Sweeten 2014-11-04  240  		}
45062492281d2c H Hartley Sweeten 2014-11-04  241  	} else {
45062492281d2c H Hartley Sweeten 2014-11-04  242  		/* isn't output buff smaller that our DMA buff? */
45062492281d2c H Hartley Sweeten 2014-11-04  243  		if (dmalen0 > s->async->prealloc_bufsz)
45062492281d2c H Hartley Sweeten 2014-11-04  244  			dmalen0 = s->async->prealloc_bufsz;
45062492281d2c H Hartley Sweeten 2014-11-04  245  		if (dmalen1 > s->async->prealloc_bufsz)
45062492281d2c H Hartley Sweeten 2014-11-04  246  			dmalen1 = s->async->prealloc_bufsz;
45062492281d2c H Hartley Sweeten 2014-11-04  247  	}
45062492281d2c H Hartley Sweeten 2014-11-04  248  	dmabuf0->use_size = dmalen0;
45062492281d2c H Hartley Sweeten 2014-11-04  249  	dmabuf1->use_size = dmalen1;
45062492281d2c H Hartley Sweeten 2014-11-04  250  
45062492281d2c H Hartley Sweeten 2014-11-04  251  	apci3120_init_dma(dev, dmabuf0);
45062492281d2c H Hartley Sweeten 2014-11-04  252  }
45062492281d2c H Hartley Sweeten 2014-11-04  253  
546bf3382e41b8 H Hartley Sweeten 2014-11-04  254  /*
546bf3382e41b8 H Hartley Sweeten 2014-11-04  255   * There are three timers on the board. They all use the same base
546bf3382e41b8 H Hartley Sweeten 2014-11-04  256   * clock with a fixed prescaler for each timer. The base clock used
546bf3382e41b8 H Hartley Sweeten 2014-11-04  257   * depends on the board version and type.
546bf3382e41b8 H Hartley Sweeten 2014-11-04  258   *
546bf3382e41b8 H Hartley Sweeten 2014-11-04  259   * APCI-3120 Rev A boards OSC = 14.29MHz base clock (~70ns)
546bf3382e41b8 H Hartley Sweeten 2014-11-04  260   * APCI-3120 Rev B boards OSC = 20MHz base clock (50ns)
546bf3382e41b8 H Hartley Sweeten 2014-11-04  261   * APCI-3001 boards OSC = 20MHz base clock (50ns)
546bf3382e41b8 H Hartley Sweeten 2014-11-04  262   *
546bf3382e41b8 H Hartley Sweeten 2014-11-04  263   * The prescalers for each timer are:
546bf3382e41b8 H Hartley Sweeten 2014-11-04  264   * Timer 0 CLK = OSC/10
546bf3382e41b8 H Hartley Sweeten 2014-11-04  265   * Timer 1 CLK = OSC/1000
546bf3382e41b8 H Hartley Sweeten 2014-11-04  266   * Timer 2 CLK = OSC/1000
546bf3382e41b8 H Hartley Sweeten 2014-11-04  267   */
546bf3382e41b8 H Hartley Sweeten 2014-11-04  268  static unsigned int apci3120_ns_to_timer(struct comedi_device *dev,
546bf3382e41b8 H Hartley Sweeten 2014-11-04  269  					 unsigned int timer,
546bf3382e41b8 H Hartley Sweeten 2014-11-04  270  					 unsigned int ns,
546bf3382e41b8 H Hartley Sweeten 2014-11-04  271  					 unsigned int flags)
546bf3382e41b8 H Hartley Sweeten 2014-11-04  272  {
546bf3382e41b8 H Hartley Sweeten 2014-11-04  273  	struct apci3120_private *devpriv = dev->private;
546bf3382e41b8 H Hartley Sweeten 2014-11-04  274  	unsigned int prescale = (timer == 0) ? 10 : 1000;
546bf3382e41b8 H Hartley Sweeten 2014-11-04  275  	unsigned int timer_base = devpriv->osc_base * prescale;
546bf3382e41b8 H Hartley Sweeten 2014-11-04  276  	unsigned int divisor;
546bf3382e41b8 H Hartley Sweeten 2014-11-04  277  
546bf3382e41b8 H Hartley Sweeten 2014-11-04  278  	switch (flags & CMDF_ROUND_MASK) {
546bf3382e41b8 H Hartley Sweeten 2014-11-04  279  	case CMDF_ROUND_UP:
546bf3382e41b8 H Hartley Sweeten 2014-11-04  280  		divisor = DIV_ROUND_UP(ns, timer_base);
546bf3382e41b8 H Hartley Sweeten 2014-11-04  281  		break;
546bf3382e41b8 H Hartley Sweeten 2014-11-04  282  	case CMDF_ROUND_DOWN:
546bf3382e41b8 H Hartley Sweeten 2014-11-04  283  		divisor = ns / timer_base;
546bf3382e41b8 H Hartley Sweeten 2014-11-04  284  		break;
546bf3382e41b8 H Hartley Sweeten 2014-11-04  285  	case CMDF_ROUND_NEAREST:
546bf3382e41b8 H Hartley Sweeten 2014-11-04  286  	default:
546bf3382e41b8 H Hartley Sweeten 2014-11-04  287  		divisor = DIV_ROUND_CLOSEST(ns, timer_base);
546bf3382e41b8 H Hartley Sweeten 2014-11-04  288  		break;
546bf3382e41b8 H Hartley Sweeten 2014-11-04  289  	}
546bf3382e41b8 H Hartley Sweeten 2014-11-04  290  
546bf3382e41b8 H Hartley Sweeten 2014-11-04  291  	if (timer == 2) {
546bf3382e41b8 H Hartley Sweeten 2014-11-04  292  		/* timer 2 is 24-bits */
546bf3382e41b8 H Hartley Sweeten 2014-11-04  293  		if (divisor > 0x00ffffff)
546bf3382e41b8 H Hartley Sweeten 2014-11-04  294  			divisor = 0x00ffffff;
546bf3382e41b8 H Hartley Sweeten 2014-11-04  295  	} else {
546bf3382e41b8 H Hartley Sweeten 2014-11-04  296  		/* timers 0 and 1 are 16-bits */
546bf3382e41b8 H Hartley Sweeten 2014-11-04  297  		if (divisor > 0xffff)
546bf3382e41b8 H Hartley Sweeten 2014-11-04  298  			divisor = 0xffff;
546bf3382e41b8 H Hartley Sweeten 2014-11-04  299  	}
546bf3382e41b8 H Hartley Sweeten 2014-11-04  300  	/* the timers require a minimum divisor of 2 */
546bf3382e41b8 H Hartley Sweeten 2014-11-04  301  	if (divisor < 2)
546bf3382e41b8 H Hartley Sweeten 2014-11-04  302  		divisor = 2;
546bf3382e41b8 H Hartley Sweeten 2014-11-04  303  
546bf3382e41b8 H Hartley Sweeten 2014-11-04  304  	return divisor;
546bf3382e41b8 H Hartley Sweeten 2014-11-04  305  }
546bf3382e41b8 H Hartley Sweeten 2014-11-04  306  
24e18c85e57255 H Hartley Sweeten 2014-11-04  307  static void apci3120_clr_timer2_interrupt(struct comedi_device *dev)
24e18c85e57255 H Hartley Sweeten 2014-11-04  308  {
24e18c85e57255 H Hartley Sweeten 2014-11-04  309  	/* a dummy read of APCI3120_CTR0_REG clears the timer 2 interrupt */
24e18c85e57255 H Hartley Sweeten 2014-11-04 @310  	inb(dev->iobase + APCI3120_CTR0_REG);
24e18c85e57255 H Hartley Sweeten 2014-11-04  311  }
24e18c85e57255 H Hartley Sweeten 2014-11-04  312  

:::::: The code at line 164 was first introduced by commit
:::::: 0b7defa70227f7c7f313e0ea4f0eeb88c5de79a3 staging: comedi: addi_apci_3120: move apci3120_addon_write() to driver

:::::: TO: H Hartley Sweeten <hsweeten@...ionengravers.com>
:::::: CC: Greg Kroah-Hartman <gregkh@...uxfoundation.org>

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

Download attachment ".config.gz" of type "application/gzip" (31738 bytes)

Powered by blists - more mailing lists