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: openrisc-randconfig-s031-20200821 (attached as .config)
compiler: or1k-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=openrisc
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
sparse warnings: (new ones prefixed by >>)
> drivers/gpio/gpio-mpc8xxx.c:430:27: sparse: sparse: incorrect
type in argument 1 (different address spaces) @@ expected void *addr @@ got void
[noderef] __iomem *regs @@
drivers/gpio/gpio-mpc8xxx.c:430:27: sparse:
expected void *addr
> drivers/gpio/gpio-mpc8xxx.c:430:27: sparse: got void
[noderef] __iomem *regs
drivers/gpio/gpio-mpc8xxx.c:444:27: sparse: sparse:
incorrect type in argument 1 (different address spaces) @@ expected void *addr @@
got void [noderef] __iomem *regs @@
drivers/gpio/gpio-mpc8xxx.c:444:27: sparse: expected void *addr
drivers/gpio/gpio-mpc8xxx.c:444:27: sparse: got void [noderef] __iomem *regs
--
drivers/video/fbdev/pvr2fb.c:336:17: sparse: sparse: cast removes address space
'__iomem' of expression
drivers/video/fbdev/pvr2fb.c:336:17: sparse: sparse: cast removes address space
'__iomem' of expression
drivers/video/fbdev/pvr2fb.c:338:31: sparse: sparse: cast removes address space
'__iomem' of expression
drivers/video/fbdev/pvr2fb.c:345:17: sparse: sparse: cast removes address space
'__iomem' of expression
drivers/video/fbdev/pvr2fb.c:347:17: sparse: sparse: cast removes address space
'__iomem' of expression
drivers/video/fbdev/pvr2fb.c:349:17: sparse: sparse: cast removes address space
'__iomem' of expression
drivers/video/fbdev/pvr2fb.c:540:9: sparse: sparse: cast removes address space
'__iomem' of expression
drivers/video/fbdev/pvr2fb.c:541:9: sparse: sparse: cast removes address space
'__iomem' of expression
drivers/video/fbdev/pvr2fb.c:560:9: sparse: sparse: cast removes address space
'__iomem' of expression
drivers/video/fbdev/pvr2fb.c:569:9: sparse: sparse: cast removes address space
'__iomem' of expression
drivers/video/fbdev/pvr2fb.c:573:9: sparse: sparse: cast removes address space
'__iomem' of expression
drivers/video/fbdev/pvr2fb.c:574:9: sparse: sparse: cast removes address space
'__iomem' of expression
drivers/video/fbdev/pvr2fb.c:579:9: sparse: sparse: cast removes address space
'__iomem' of expression
drivers/video/fbdev/pvr2fb.c:580:9: sparse: sparse: cast removes address space
'__iomem' of expression
drivers/video/fbdev/pvr2fb.c:581:9: sparse: sparse: cast removes address space
'__iomem' of expression
drivers/video/fbdev/pvr2fb.c:584:9: sparse: sparse: cast removes address space
'__iomem' of expression
drivers/video/fbdev/pvr2fb.c:585:9: sparse: sparse: cast removes address space
'__iomem' of expression
drivers/video/fbdev/pvr2fb.c:588:9: sparse: sparse: cast removes address space
'__iomem' of expression
drivers/video/fbdev/pvr2fb.c:591:9: sparse: sparse: cast removes address space
'__iomem' of expression
drivers/video/fbdev/pvr2fb.c:595:9: sparse: sparse: cast removes address space
'__iomem' of expression
drivers/video/fbdev/pvr2fb.c:595:9: sparse: sparse: cast removes address space
'__iomem' of expression
drivers/video/fbdev/pvr2fb.c:596:9: sparse: sparse: cast removes address space
'__iomem' of expression
drivers/video/fbdev/pvr2fb.c:600:9: sparse: sparse: cast removes address space
'__iomem' of expression
drivers/video/fbdev/pvr2fb.c:612:19: sparse: sparse: cast removes address space
'__iomem' of expression
drivers/video/fbdev/pvr2fb.c:614:17: sparse: sparse: cast removes address space
'__iomem' of expression
drivers/video/fbdev/pvr2fb.c:616:17: sparse: sparse: cast removes address space
'__iomem' of expression
drivers/video/fbdev/pvr2fb.c:788:26: sparse: sparse: incorrect type in argument 1
(different address spaces) @@ expected void *s @@ got char [noderef] __iomem
*screen_base @@
drivers/video/fbdev/pvr2fb.c:788:26: sparse: expected void *s
drivers/video/fbdev/pvr2fb.c:788:26: sparse: got char [noderef] __iomem
*screen_base
drivers/video/fbdev/pvr2fb.c:820:15: sparse: sparse: cast removes address space
'__iomem' of expression
> drivers/video/fbdev/pvr2fb.c:847:32: sparse: sparse: incorrect
type in argument 1 (different address spaces) @@ expected void *addr @@ got char
[noderef] __iomem *screen_base @@
drivers/video/fbdev/pvr2fb.c:847:32: sparse:
expected void *addr
drivers/video/fbdev/pvr2fb.c:847:32: sparse: got char [noderef] __iomem
*screen_base
> drivers/video/fbdev/pvr2fb.c:849:28: sparse: sparse: incorrect
type in argument 1 (different address spaces) @@ expected void *addr @@ got void
[noderef] __iomem *mmio_base @@
drivers/video/fbdev/pvr2fb.c:849:28: sparse:
expected void *addr
> drivers/video/fbdev/pvr2fb.c:849:28: sparse: got void
[noderef] __iomem *mmio_base
drivers/video/fbdev/pvr2fb.c:1057:11: sparse:
sparse: Using plain integer as NULL pointer
drivers/video/fbdev/pvr2fb.c:233:9: sparse: sparse: cast removes address space
'__iomem' of expression
drivers/video/fbdev/pvr2fb.c:233:9: sparse: sparse: cast removes address space
'__iomem' of expression
drivers/video/fbdev/pvr2fb.c:240:9: sparse: sparse: cast removes address space
'__iomem' of expression
drivers/video/fbdev/pvr2fb.c:240:9: sparse: sparse: cast removes address space
'__iomem' of expression
--
> drivers/clocksource/timer-fttmr010.c:424:25: sparse: sparse:
incorrect type in argument 1 (different address spaces) @@ expected void *addr @@
got void [noderef] __iomem *base @@
drivers/clocksource/timer-fttmr010.c:424:25:
sparse: expected void *addr
> drivers/clocksource/timer-fttmr010.c:424:25: sparse: got void
[noderef] __iomem *base
drivers/clocksource/timer-fttmr010.c: note: in included
file (through arch/openrisc/include/asm/io.h, include/linux/io.h, include/linux/irq.h,
...):
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:225:22: sparse: sparse: incorrect type in argument 1
(different base types) @@ expected unsigned int [usertype] value @@ got restricted
__le32 [usertype] @@
include/asm-generic/io.h:225:22: sparse: expected unsigned int [usertype] value
include/asm-generic/io.h:225:22: sparse: got restricted __le32 [usertype]
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:225:22: sparse: sparse: incorrect type in argument 1
(different base types) @@ expected unsigned int [usertype] value @@ got restricted
__le32 [usertype] @@
include/asm-generic/io.h:225:22: sparse: expected unsigned int [usertype] value
include/asm-generic/io.h:225:22: sparse: got restricted __le32 [usertype]
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:225:22: sparse: sparse: incorrect type in argument 1
(different base types) @@ expected unsigned int [usertype] value @@ got restricted
__le32 [usertype] @@
include/asm-generic/io.h:225:22: sparse: expected unsigned int [usertype] value
include/asm-generic/io.h:225:22: sparse: got restricted __le32 [usertype]
include/asm-generic/io.h:225:22: sparse: sparse: incorrect type in argument 1
(different base types) @@ expected unsigned int [usertype] value @@ got restricted
__le32 [usertype] @@
include/asm-generic/io.h:225:22: sparse: expected unsigned int [usertype] value
include/asm-generic/io.h:225:22: sparse: got restricted __le32 [usertype]
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:225:22: sparse: sparse: incorrect type in argument 1
(different base types) @@ expected unsigned int [usertype] value @@ got restricted
__le32 [usertype] @@
include/asm-generic/io.h:225:22: sparse: expected unsigned int [usertype] value
include/asm-generic/io.h:225:22: sparse: got restricted __le32 [usertype]
include/asm-generic/io.h:225:22: sparse: sparse: incorrect type in argument 1
(different base types) @@ expected unsigned int [usertype] value @@ got restricted
__le32 [usertype] @@
include/asm-generic/io.h:225:22: sparse: expected unsigned int [usertype] value
include/asm-generic/io.h:225:22: sparse: got restricted __le32 [usertype]
include/asm-generic/io.h:225:22: sparse: sparse: incorrect type in argument 1
(different base types) @@ expected unsigned int [usertype] value @@ got restricted
__le32 [usertype] @@
include/asm-generic/io.h:225:22: sparse: expected unsigned int [usertype] value
include/asm-generic/io.h:225:22: sparse: got restricted __le32 [usertype]
include/asm-generic/io.h:225:22: sparse: sparse: incorrect type in argument 1
(different base types) @@ expected unsigned int [usertype] value @@ got restricted
__le32 [usertype] @@
include/asm-generic/io.h:225:22: sparse: expected unsigned int [usertype] value
include/asm-generic/io.h:225:22: sparse: got restricted __le32 [usertype]
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:225:22: sparse: sparse: incorrect type in argument 1
(different base types) @@ expected unsigned int [usertype] value @@ got restricted
__le32 [usertype] @@
include/asm-generic/io.h:225:22: sparse: expected unsigned int [usertype] value
include/asm-generic/io.h:225:22: sparse: got restricted __le32 [usertype]
include/asm-generic/io.h:225:22: sparse: sparse: incorrect type in argument 1
(different base types) @@ expected unsigned int [usertype] value @@ got restricted
__le32 [usertype] @@
include/asm-generic/io.h:225:22: sparse: expected unsigned int [usertype] value
include/asm-generic/io.h:225:22: sparse: got restricted __le32 [usertype]
include/asm-generic/io.h:225:22: sparse: sparse: incorrect type in argument 1
(different base types) @@ expected unsigned int [usertype] value @@ got restricted
__le32 [usertype] @@
include/asm-generic/io.h:225:22: sparse: expected unsigned int [usertype] value
include/asm-generic/io.h:225:22: sparse: got restricted __le32 [usertype]
include/asm-generic/io.h:225:22: sparse: sparse: incorrect type in argument 1
(different base types) @@ expected unsigned int [usertype] value @@ got restricted
__le32 [usertype] @@
include/asm-generic/io.h:225:22: sparse: expected unsigned int [usertype] value
include/asm-generic/io.h:225:22: sparse: got restricted __le32 [usertype]
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:225:22: sparse: sparse: incorrect type in argument 1
(different base types) @@ expected unsigned int [usertype] value @@ got restricted
__le32 [usertype] @@
include/asm-generic/io.h:225:22: sparse: expected unsigned int [usertype] value
include/asm-generic/io.h:225:22: sparse: got restricted __le32 [usertype]
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:225:22: sparse: sparse: incorrect type in argument 1
(different base types) @@ expected unsigned int [usertype] value @@ got restricted
__le32 [usertype] @@
include/asm-generic/io.h:225:22: sparse: expected unsigned int [usertype] value
include/asm-generic/io.h:225:22: sparse: got restricted __le32 [usertype]
include/asm-generic/io.h:225:22: sparse: sparse: incorrect type in argument 1
(different base types) @@ expected unsigned int [usertype] value @@ got restricted
__le32 [usertype] @@
include/asm-generic/io.h:225:22: sparse: expected unsigned int [usertype] value
include/asm-generic/io.h:225:22: sparse: got restricted __le32 [usertype]
include/asm-generic/io.h:225:22: sparse: sparse: incorrect type in argument 1
(different base types) @@ expected unsigned int [usertype] value @@ got restricted
__le32 [usertype] @@
include/asm-generic/io.h:225:22: sparse: expected unsigned int [usertype] value
include/asm-generic/io.h:225:22: sparse: got restricted __le32 [usertype]
include/asm-generic/io.h:225:22: sparse: sparse: incorrect type in argument 1
(different base types) @@ expected unsigned int [usertype] value @@ got restricted
__le32 [usertype] @@
include/asm-generic/io.h:225:22: sparse: expected unsigned int [usertype] value
include/asm-generic/io.h:225:22: sparse: got restricted __le32 [usertype]
--
> drivers/clocksource/sh_mtu2.c:442:20: sparse: sparse: incorrect
type in argument 1 (different address spaces) @@ expected void *addr @@ got void
[noderef] __iomem *mapbase @@
drivers/clocksource/sh_mtu2.c:442:20: sparse:
expected void *addr
> drivers/clocksource/sh_mtu2.c:442:20: sparse: got void
[noderef] __iomem *mapbase
--
> drivers/usb/musb/musb_dsps.c:910:21: sparse: sparse: incorrect
type in argument 1 (different address spaces) @@ expected void *addr @@ got void
[noderef] __iomem *usbss_base @@
drivers/usb/musb/musb_dsps.c:910:21: sparse:
expected void *addr
> drivers/usb/musb/musb_dsps.c:910:21: sparse: got void
[noderef] __iomem *usbss_base
drivers/usb/musb/musb_dsps.c:921:21: sparse:
sparse: incorrect type in argument 1 (different address spaces) @@ expected void *addr
@@ got void [noderef] __iomem *usbss_base @@
drivers/usb/musb/musb_dsps.c:921:21: sparse: expected void *addr
drivers/usb/musb/musb_dsps.c:921:21: sparse: got void [noderef] __iomem
*usbss_base
#
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit...
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 +430 drivers/gpio/gpio-mpc8xxx.c
e39d5ef678045d arch/powerpc/sysdev/mpc8xxx_gpio.c Anatolij Gustschin 2010-08-09 327
98686d9a52eeea drivers/gpio/gpio-mpc8xxx.c Ricardo Ribalda 2015-01-18 328
static int mpc8xxx_probe(struct platform_device *pdev)
1e16dfc1baa745 arch/powerpc/sysdev/mpc8xxx_gpio.c Peter Korsgaard 2008-09-23 329
{
98686d9a52eeea drivers/gpio/gpio-mpc8xxx.c Ricardo Ribalda 2015-01-18 330
struct device_node *np = pdev->dev.of_node;
1e16dfc1baa745 arch/powerpc/sysdev/mpc8xxx_gpio.c Peter Korsgaard 2008-09-23 331
struct mpc8xxx_gpio_chip *mpc8xxx_gc;
1e16dfc1baa745 arch/powerpc/sysdev/mpc8xxx_gpio.c Peter Korsgaard 2008-09-23 332
struct gpio_chip *gc;
82e39b0d8566fa drivers/gpio/gpio-mpc8xxx.c Uwe Kleine-König 2015-07-16 333
const struct mpc8xxx_gpio_devtype *devtype =
82e39b0d8566fa drivers/gpio/gpio-mpc8xxx.c Uwe Kleine-König 2015-07-16 334
of_device_get_match_data(&pdev->dev);
1e16dfc1baa745 arch/powerpc/sysdev/mpc8xxx_gpio.c Peter Korsgaard 2008-09-23 335
int ret;
1e16dfc1baa745 arch/powerpc/sysdev/mpc8xxx_gpio.c Peter Korsgaard 2008-09-23 336
98686d9a52eeea drivers/gpio/gpio-mpc8xxx.c Ricardo Ribalda 2015-01-18 337
mpc8xxx_gc = devm_kzalloc(&pdev->dev, sizeof(*mpc8xxx_gc), GFP_KERNEL);
98686d9a52eeea drivers/gpio/gpio-mpc8xxx.c Ricardo Ribalda 2015-01-18 338
if (!mpc8xxx_gc)
98686d9a52eeea drivers/gpio/gpio-mpc8xxx.c Ricardo Ribalda 2015-01-18 339
return -ENOMEM;
1e16dfc1baa745 arch/powerpc/sysdev/mpc8xxx_gpio.c Peter Korsgaard 2008-09-23 340
257e10752c13f2 drivers/gpio/gpio-mpc8xxx.c Ricardo Ribalda 2015-01-18 341
platform_set_drvdata(pdev, mpc8xxx_gc);
257e10752c13f2 drivers/gpio/gpio-mpc8xxx.c Ricardo Ribalda 2015-01-18 342
505936131ea71e drivers/gpio/gpio-mpc8xxx.c Alexander Stein 2015-07-21 343
raw_spin_lock_init(&mpc8xxx_gc->lock);
1e16dfc1baa745 arch/powerpc/sysdev/mpc8xxx_gpio.c Peter Korsgaard 2008-09-23 344
42178e2a1e42b4 drivers/gpio/gpio-mpc8xxx.c Liu Gang 2016-02-03 345
mpc8xxx_gc->regs = of_iomap(np, 0);
42178e2a1e42b4 drivers/gpio/gpio-mpc8xxx.c Liu Gang 2016-02-03 346
if (!mpc8xxx_gc->regs)
42178e2a1e42b4 drivers/gpio/gpio-mpc8xxx.c Liu Gang 2016-02-03 347
return -ENOMEM;
42178e2a1e42b4 drivers/gpio/gpio-mpc8xxx.c Liu Gang 2016-02-03 348
42178e2a1e42b4 drivers/gpio/gpio-mpc8xxx.c Liu Gang 2016-02-03 349
gc = &mpc8xxx_gc->gc;
322f6a3182d42d drivers/gpio/gpio-mpc8xxx.c Johnson CH Chen (陳昭勳 2019-11-26 350)
gc->parent = &pdev->dev;
42178e2a1e42b4 drivers/gpio/gpio-mpc8xxx.c Liu Gang 2016-02-03 351
42178e2a1e42b4 drivers/gpio/gpio-mpc8xxx.c Liu Gang 2016-02-03 352
if (of_property_read_bool(np, "little-endian")) {
42178e2a1e42b4 drivers/gpio/gpio-mpc8xxx.c Liu Gang 2016-02-03 353
ret = bgpio_init(gc, &pdev->dev, 4,
42178e2a1e42b4 drivers/gpio/gpio-mpc8xxx.c Liu Gang 2016-02-03 354
mpc8xxx_gc->regs + GPIO_DAT,
42178e2a1e42b4 drivers/gpio/gpio-mpc8xxx.c Liu Gang 2016-02-03 355
NULL, NULL,
42178e2a1e42b4 drivers/gpio/gpio-mpc8xxx.c Liu Gang 2016-02-03 356
mpc8xxx_gc->regs + GPIO_DIR, NULL,
42178e2a1e42b4 drivers/gpio/gpio-mpc8xxx.c Liu Gang 2016-02-03 357
BGPIOF_BIG_ENDIAN);
42178e2a1e42b4 drivers/gpio/gpio-mpc8xxx.c Liu Gang 2016-02-03 358
if (ret)
42178e2a1e42b4 drivers/gpio/gpio-mpc8xxx.c Liu Gang 2016-02-03 359
goto err;
42178e2a1e42b4 drivers/gpio/gpio-mpc8xxx.c Liu Gang 2016-02-03 360
dev_dbg(&pdev->dev, "GPIO registers are LITTLE endian\n");
42178e2a1e42b4 drivers/gpio/gpio-mpc8xxx.c Liu Gang 2016-02-03 361
} else {
42178e2a1e42b4 drivers/gpio/gpio-mpc8xxx.c Liu Gang 2016-02-03 362
ret = bgpio_init(gc, &pdev->dev, 4,
42178e2a1e42b4 drivers/gpio/gpio-mpc8xxx.c Liu Gang 2016-02-03 363
mpc8xxx_gc->regs + GPIO_DAT,
42178e2a1e42b4 drivers/gpio/gpio-mpc8xxx.c Liu Gang 2016-02-03 364
NULL, NULL,
42178e2a1e42b4 drivers/gpio/gpio-mpc8xxx.c Liu Gang 2016-02-03 365
mpc8xxx_gc->regs + GPIO_DIR, NULL,
42178e2a1e42b4 drivers/gpio/gpio-mpc8xxx.c Liu Gang 2016-02-03 366
BGPIOF_BIG_ENDIAN
42178e2a1e42b4 drivers/gpio/gpio-mpc8xxx.c Liu Gang 2016-02-03 367
| BGPIOF_BIG_ENDIAN_BYTE_ORDER);
42178e2a1e42b4 drivers/gpio/gpio-mpc8xxx.c Liu Gang 2016-02-03 368
if (ret)
42178e2a1e42b4 drivers/gpio/gpio-mpc8xxx.c Liu Gang 2016-02-03 369
goto err;
42178e2a1e42b4 drivers/gpio/gpio-mpc8xxx.c Liu Gang 2016-02-03 370
dev_dbg(&pdev->dev, "GPIO registers are BIG endian\n");
42178e2a1e42b4 drivers/gpio/gpio-mpc8xxx.c Liu Gang 2016-02-03 371
}
1e16dfc1baa745 arch/powerpc/sysdev/mpc8xxx_gpio.c Peter Korsgaard 2008-09-23 372
fa4007ca06e4c8 drivers/gpio/gpio-mpc8xxx.c Axel Lin 2016-02-22 373
mpc8xxx_gc->direction_output = gc->direction_output;
82e39b0d8566fa drivers/gpio/gpio-mpc8xxx.c Uwe Kleine-König 2015-07-16 374
82e39b0d8566fa drivers/gpio/gpio-mpc8xxx.c Uwe Kleine-König 2015-07-16 375
if (!devtype)
82e39b0d8566fa drivers/gpio/gpio-mpc8xxx.c Uwe Kleine-König 2015-07-16 376
devtype = &mpc8xxx_gpio_devtype_default;
82e39b0d8566fa drivers/gpio/gpio-mpc8xxx.c Uwe Kleine-König 2015-07-16 377
82e39b0d8566fa drivers/gpio/gpio-mpc8xxx.c Uwe Kleine-König 2015-07-16 378
/*
82e39b0d8566fa drivers/gpio/gpio-mpc8xxx.c Uwe Kleine-König 2015-07-16 379
* It's assumed that only a single type of gpio controller is available
82e39b0d8566fa drivers/gpio/gpio-mpc8xxx.c Uwe Kleine-König 2015-07-16 380
* on the current machine, so overwriting global data is fine.
82e39b0d8566fa drivers/gpio/gpio-mpc8xxx.c Uwe Kleine-König 2015-07-16 381
*/
4e50573f39229d drivers/gpio/gpio-mpc8xxx.c Vladimir Oltean 2019-11-15 382
if (devtype->irq_set_type)
82e39b0d8566fa drivers/gpio/gpio-mpc8xxx.c Uwe Kleine-König 2015-07-16 383
mpc8xxx_irq_chip.irq_set_type = devtype->irq_set_type;
82e39b0d8566fa drivers/gpio/gpio-mpc8xxx.c Uwe Kleine-König 2015-07-16 384
adf32eaa053234 drivers/gpio/gpio-mpc8xxx.c Axel Lin 2016-02-22 385
if (devtype->gpio_dir_out)
adf32eaa053234 drivers/gpio/gpio-mpc8xxx.c Axel Lin 2016-02-22 386
gc->direction_output = devtype->gpio_dir_out;
adf32eaa053234 drivers/gpio/gpio-mpc8xxx.c Axel Lin 2016-02-22 387
if (devtype->gpio_get)
adf32eaa053234 drivers/gpio/gpio-mpc8xxx.c Axel Lin 2016-02-22 388
gc->get = devtype->gpio_get;
adf32eaa053234 drivers/gpio/gpio-mpc8xxx.c Axel Lin 2016-02-22 389
345e5c8a1cc30e arch/powerpc/sysdev/mpc8xxx_gpio.c Peter Korsgaard 2010-01-07 390
gc->to_irq = mpc8xxx_gpio_to_irq;
1e16dfc1baa745 arch/powerpc/sysdev/mpc8xxx_gpio.c Peter Korsgaard 2008-09-23 391
787b64a43f7aca drivers/gpio/gpio-mpc8xxx.c Russell King 2019-11-19 392
if (of_device_is_compatible(np, "fsl,qoriq-gpio"))
787b64a43f7aca drivers/gpio/gpio-mpc8xxx.c Russell King 2019-11-19 393
gc->write_reg(mpc8xxx_gc->regs + GPIO_IBE, 0xffffffff);
787b64a43f7aca drivers/gpio/gpio-mpc8xxx.c Russell King 2019-11-19 394
42178e2a1e42b4 drivers/gpio/gpio-mpc8xxx.c Liu Gang 2016-02-03 395
ret = gpiochip_add_data(gc, mpc8xxx_gc);
42178e2a1e42b4 drivers/gpio/gpio-mpc8xxx.c Liu Gang 2016-02-03 396
if (ret) {
7eb6ce2f272336 drivers/gpio/gpio-mpc8xxx.c Rob Herring 2017-07-18 397
pr_err("%pOF: GPIO chip registration failed with status %d\n",
7eb6ce2f272336 drivers/gpio/gpio-mpc8xxx.c Rob Herring 2017-07-18 398
np, ret);
42178e2a1e42b4 drivers/gpio/gpio-mpc8xxx.c Liu Gang 2016-02-03 399
goto err;
42178e2a1e42b4 drivers/gpio/gpio-mpc8xxx.c Liu Gang 2016-02-03 400
}
1e16dfc1baa745 arch/powerpc/sysdev/mpc8xxx_gpio.c Peter Korsgaard 2008-09-23 401
257e10752c13f2 drivers/gpio/gpio-mpc8xxx.c Ricardo Ribalda 2015-01-18 402
mpc8xxx_gc->irqn = irq_of_parse_and_map(np, 0);
42178e2a1e42b4 drivers/gpio/gpio-mpc8xxx.c Liu Gang 2016-02-03 403
if (!mpc8xxx_gc->irqn)
98686d9a52eeea drivers/gpio/gpio-mpc8xxx.c Ricardo Ribalda 2015-01-18 404
return 0;
345e5c8a1cc30e arch/powerpc/sysdev/mpc8xxx_gpio.c Peter Korsgaard 2010-01-07 405
a8db8cf0d894df drivers/gpio/gpio-mpc8xxx.c Grant Likely 2012-02-14 406
mpc8xxx_gc->irq = irq_domain_add_linear(np, MPC8XXX_GPIO_PINS,
a8db8cf0d894df drivers/gpio/gpio-mpc8xxx.c Grant Likely 2012-02-14 407
&mpc8xxx_gpio_irq_ops, mpc8xxx_gc);
345e5c8a1cc30e arch/powerpc/sysdev/mpc8xxx_gpio.c Peter Korsgaard 2010-01-07 408
if (!mpc8xxx_gc->irq)
98686d9a52eeea drivers/gpio/gpio-mpc8xxx.c Ricardo Ribalda 2015-01-18 409
return 0;
345e5c8a1cc30e arch/powerpc/sysdev/mpc8xxx_gpio.c Peter Korsgaard 2010-01-07 410
345e5c8a1cc30e arch/powerpc/sysdev/mpc8xxx_gpio.c Peter Korsgaard 2010-01-07 411
/* ack and mask all irqs */
cd0d3f58a0ca05 drivers/gpio/gpio-mpc8xxx.c Axel Lin 2016-02-22 412
gc->write_reg(mpc8xxx_gc->regs + GPIO_IER, 0xffffffff);
cd0d3f58a0ca05 drivers/gpio/gpio-mpc8xxx.c Axel Lin 2016-02-22 413
gc->write_reg(mpc8xxx_gc->regs + GPIO_IMR, 0);
bd4bd337039df9 drivers/gpio/gpio-mpc8xxx.c Song Hui 2019-07-18 414
/* enable input buffer */
bd4bd337039df9 drivers/gpio/gpio-mpc8xxx.c Song Hui 2019-07-18 415
if (devtype->gpio_dir_in_init)
bd4bd337039df9 drivers/gpio/gpio-mpc8xxx.c Song Hui 2019-07-18 416
devtype->gpio_dir_in_init(gc);
345e5c8a1cc30e arch/powerpc/sysdev/mpc8xxx_gpio.c Peter Korsgaard 2010-01-07 417
698b8eeaed7287 drivers/gpio/gpio-mpc8xxx.c Song Hui 2019-10-11 418
ret = devm_request_irq(&pdev->dev, mpc8xxx_gc->irqn,
698b8eeaed7287 drivers/gpio/gpio-mpc8xxx.c Song Hui 2019-10-11 419
mpc8xxx_gpio_irq_cascade,
698b8eeaed7287 drivers/gpio/gpio-mpc8xxx.c Song Hui 2019-10-11 420
IRQF_NO_THREAD | IRQF_SHARED, "gpio-cascade",
698b8eeaed7287 drivers/gpio/gpio-mpc8xxx.c Song Hui 2019-10-11 421
mpc8xxx_gc);
698b8eeaed7287 drivers/gpio/gpio-mpc8xxx.c Song Hui 2019-10-11 422
if (ret) {
698b8eeaed7287 drivers/gpio/gpio-mpc8xxx.c Song Hui 2019-10-11 423
dev_err(&pdev->dev, "%s: failed to devm_request_irq(%d), ret = %d\n",
698b8eeaed7287 drivers/gpio/gpio-mpc8xxx.c Song Hui 2019-10-11 424
np->full_name, mpc8xxx_gc->irqn, ret);
698b8eeaed7287 drivers/gpio/gpio-mpc8xxx.c Song Hui 2019-10-11 425
goto err;
698b8eeaed7287 drivers/gpio/gpio-mpc8xxx.c Song Hui 2019-10-11 426
}
698b8eeaed7287 drivers/gpio/gpio-mpc8xxx.c Song Hui 2019-10-11 427
257e10752c13f2 drivers/gpio/gpio-mpc8xxx.c Ricardo Ribalda 2015-01-18 428
return 0;
42178e2a1e42b4 drivers/gpio/gpio-mpc8xxx.c Liu Gang 2016-02-03 429
err:
42178e2a1e42b4 drivers/gpio/gpio-mpc8xxx.c Liu Gang 2016-02-03 @430
iounmap(mpc8xxx_gc->regs);
42178e2a1e42b4 drivers/gpio/gpio-mpc8xxx.c Liu Gang 2016-02-03 431
return ret;
257e10752c13f2 drivers/gpio/gpio-mpc8xxx.c Ricardo Ribalda 2015-01-18 432
}
257e10752c13f2 drivers/gpio/gpio-mpc8xxx.c Ricardo Ribalda 2015-01-18 433
:::::: The code at line 430 was first introduced by commit
:::::: 42178e2a1e42b480ada954750f248b53d3fb5940 drivers/gpio: Switch gpio-mpc8xxx to use
gpio-generic
:::::: TO: Liu Gang <Gang.Liu(a)nxp.com>
:::::: CC: Linus Walleij <linus.walleij(a)linaro.org>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org