tree:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 7fef2edf7cc753b51f7ccc74993971b0a9c81eca
commit: 71b9114d2c13a648fbe6523dd859e611c316ad90 ARM: s3c: move into a common directory
date: 11 months ago
config: arm-randconfig-s032-20210713 (attached as .config)
compiler: arm-linux-gnueabi-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.3-341-g8af24329-dirty
#
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 71b9114d2c13a648fbe6523dd859e611c316ad90
# 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=arm
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 >>)
arch/arm/mach-s3c/irq-s3c24xx.c:360:39: sparse: sparse: symbol
's3c24xx_handle_irq' was not declared. Should it be static?
> arch/arm/mach-s3c/irq-s3c24xx.c:529:31: sparse: sparse: incorrect
type in initializer (different address spaces) @@ expected void [noderef] __iomem
*base @@ got void * @@
arch/arm/mach-s3c/irq-s3c24xx.c:529:31: sparse:
expected void [noderef] __iomem *base
arch/arm/mach-s3c/irq-s3c24xx.c:529:31: sparse: got void *
> arch/arm/mach-s3c/irq-s3c24xx.c:573:22: sparse: sparse: incorrect
type in assignment (different address spaces) @@ expected void [noderef] __iomem *base
@@ got void * @@
arch/arm/mach-s3c/irq-s3c24xx.c:573:22: sparse: expected
void [noderef] __iomem *base
arch/arm/mach-s3c/irq-s3c24xx.c:573:22: sparse: got void *
arch/arm/mach-s3c/irq-s3c24xx.c:1308:12: sparse: sparse: symbol
's3c2410_init_intc_of' was not declared. Should it be static?
arch/arm/mach-s3c/irq-s3c24xx.c:1330:12: sparse: sparse: symbol
's3c2416_init_intc_of' was not declared. Should it be static?
vim +529 arch/arm/mach-s3c/irq-s3c24xx.c
17453dd2e7df20 arch/arm/mach-s3c24xx/irq.c Heiko Stuebner 2013-03-07 359
17453dd2e7df20 arch/arm/mach-s3c24xx/irq.c Heiko Stuebner 2013-03-07 @360
asmlinkage void __exception_irq_entry s3c24xx_handle_irq(struct pt_regs *regs)
17453dd2e7df20 arch/arm/mach-s3c24xx/irq.c Heiko Stuebner 2013-03-07 361 {
17453dd2e7df20 arch/arm/mach-s3c24xx/irq.c Heiko Stuebner 2013-03-07 362
do {
658dc8fb9cbc77 drivers/irqchip/irq-s3c24xx.c Heiko Stuebner 2013-04-04 363
if (likely(s3c_intc[0]))
f0774d41da0e60 drivers/irqchip/irq-s3c24xx.c Heiko Stuebner 2013-04-04 364
if (s3c24xx_handle_intc(s3c_intc[0], regs, 0))
17453dd2e7df20 arch/arm/mach-s3c24xx/irq.c Heiko Stuebner 2013-03-07 365
continue;
17453dd2e7df20 arch/arm/mach-s3c24xx/irq.c Heiko Stuebner 2013-03-07 366
658dc8fb9cbc77 drivers/irqchip/irq-s3c24xx.c Heiko Stuebner 2013-04-04 367
if (s3c_intc[2])
f0774d41da0e60 drivers/irqchip/irq-s3c24xx.c Heiko Stuebner 2013-04-04 368
if (s3c24xx_handle_intc(s3c_intc[2], regs, 64))
17453dd2e7df20 arch/arm/mach-s3c24xx/irq.c Heiko Stuebner 2013-03-07 369
continue;
17453dd2e7df20 arch/arm/mach-s3c24xx/irq.c Heiko Stuebner 2013-03-07 370
17453dd2e7df20 arch/arm/mach-s3c24xx/irq.c Heiko Stuebner 2013-03-07 371
break;
17453dd2e7df20 arch/arm/mach-s3c24xx/irq.c Heiko Stuebner 2013-03-07 372 }
while (1);
17453dd2e7df20 arch/arm/mach-s3c24xx/irq.c Heiko Stuebner 2013-03-07 373 }
17453dd2e7df20 arch/arm/mach-s3c24xx/irq.c Heiko Stuebner 2013-03-07 374
229fd8ffba57df arch/arm/plat-s3c24xx/irq.c Ben Dooks 2009-08-03 375
#ifdef CONFIG_FIQ
229fd8ffba57df arch/arm/plat-s3c24xx/irq.c Ben Dooks 2009-08-03 376
/**
229fd8ffba57df arch/arm/plat-s3c24xx/irq.c Ben Dooks 2009-08-03 377 *
s3c24xx_set_fiq - set the FIQ routing
229fd8ffba57df arch/arm/plat-s3c24xx/irq.c Ben Dooks 2009-08-03 378 *
@irq: IRQ number to route to FIQ on processor.
cd4bd8f9435ddf arch/arm/mach-s3c24xx/irq-s3c24xx.c Arnd Bergmann 2020-08-06 379 *
@ack_ptr: pointer to a location for storing the bit mask
229fd8ffba57df arch/arm/plat-s3c24xx/irq.c Ben Dooks 2009-08-03 380 *
@on: Whether to route @irq to the FIQ, or to remove the FIQ routing.
229fd8ffba57df arch/arm/plat-s3c24xx/irq.c Ben Dooks 2009-08-03 381
*
229fd8ffba57df arch/arm/plat-s3c24xx/irq.c Ben Dooks 2009-08-03 382 *
Change the state of the IRQ to FIQ routing depending on @irq and @on. If
229fd8ffba57df arch/arm/plat-s3c24xx/irq.c Ben Dooks 2009-08-03 383 *
@on is true, the @irq is checked to see if it can be routed and the
229fd8ffba57df arch/arm/plat-s3c24xx/irq.c Ben Dooks 2009-08-03 384 *
interrupt controller updated to route the IRQ. If @on is false, the FIQ
229fd8ffba57df arch/arm/plat-s3c24xx/irq.c Ben Dooks 2009-08-03 385 *
routing is cleared, regardless of which @irq is specified.
cd4bd8f9435ddf arch/arm/mach-s3c24xx/irq-s3c24xx.c Arnd Bergmann 2020-08-06 386
*
cd4bd8f9435ddf arch/arm/mach-s3c24xx/irq-s3c24xx.c Arnd Bergmann 2020-08-06 387 *
returns the mask value for the register.
229fd8ffba57df arch/arm/plat-s3c24xx/irq.c Ben Dooks 2009-08-03 388
*/
cd4bd8f9435ddf arch/arm/mach-s3c24xx/irq-s3c24xx.c Arnd Bergmann 2020-08-06 389
int s3c24xx_set_fiq(unsigned int irq, u32 *ack_ptr, bool on)
229fd8ffba57df arch/arm/plat-s3c24xx/irq.c Ben Dooks 2009-08-03 390 {
229fd8ffba57df arch/arm/plat-s3c24xx/irq.c Ben Dooks 2009-08-03 391
u32 intmod;
229fd8ffba57df arch/arm/plat-s3c24xx/irq.c Ben Dooks 2009-08-03 392
unsigned offs;
229fd8ffba57df arch/arm/plat-s3c24xx/irq.c Ben Dooks 2009-08-03 393
229fd8ffba57df arch/arm/plat-s3c24xx/irq.c Ben Dooks 2009-08-03 394
if (on) {
229fd8ffba57df arch/arm/plat-s3c24xx/irq.c Ben Dooks 2009-08-03 395
offs = irq - FIQ_START;
229fd8ffba57df arch/arm/plat-s3c24xx/irq.c Ben Dooks 2009-08-03 396
if (offs > 31)
cd4bd8f9435ddf arch/arm/mach-s3c24xx/irq-s3c24xx.c Arnd Bergmann 2020-08-06 397
return 0;
229fd8ffba57df arch/arm/plat-s3c24xx/irq.c Ben Dooks 2009-08-03 398
229fd8ffba57df arch/arm/plat-s3c24xx/irq.c Ben Dooks 2009-08-03 399
intmod = 1 << offs;
229fd8ffba57df arch/arm/plat-s3c24xx/irq.c Ben Dooks 2009-08-03 400 }
else {
229fd8ffba57df arch/arm/plat-s3c24xx/irq.c Ben Dooks 2009-08-03 401
intmod = 0;
229fd8ffba57df arch/arm/plat-s3c24xx/irq.c Ben Dooks 2009-08-03 402
}
229fd8ffba57df arch/arm/plat-s3c24xx/irq.c Ben Dooks 2009-08-03 403
cd4bd8f9435ddf arch/arm/mach-s3c24xx/irq-s3c24xx.c Arnd Bergmann 2020-08-06 404
if (ack_ptr)
cd4bd8f9435ddf arch/arm/mach-s3c24xx/irq-s3c24xx.c Arnd Bergmann 2020-08-06 405
*ack_ptr = intmod;
353332855eef20 drivers/irqchip/irq-s3c24xx.c Ben Dooks 2016-06-21 406
writel_relaxed(intmod, S3C2410_INTMOD);
cd4bd8f9435ddf arch/arm/mach-s3c24xx/irq-s3c24xx.c Arnd Bergmann 2020-08-06 407
cd4bd8f9435ddf arch/arm/mach-s3c24xx/irq-s3c24xx.c Arnd Bergmann 2020-08-06 408
return intmod;
229fd8ffba57df arch/arm/plat-s3c24xx/irq.c Ben Dooks 2009-08-03 409 }
0f13c8248040d6 arch/arm/plat-s3c24xx/irq.c Ben Dooks 2009-12-07 410
0f13c8248040d6 arch/arm/plat-s3c24xx/irq.c Ben Dooks 2009-12-07 411
EXPORT_SYMBOL_GPL(s3c24xx_set_fiq);
229fd8ffba57df arch/arm/plat-s3c24xx/irq.c Ben Dooks 2009-08-03 412
#endif
229fd8ffba57df arch/arm/plat-s3c24xx/irq.c Ben Dooks 2009-08-03 413
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 414
static int s3c24xx_irq_map(struct irq_domain *h, unsigned int virq,
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 415
irq_hw_number_t hw)
a21765a70ec06b arch/arm/plat-s3c24xx/irq.c Ben Dooks 2007-02-11 416 {
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 417
struct s3c_irq_intc *intc = h->host_data;
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 418
struct s3c_irq_data *irq_data = &intc->irqs[hw];
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 419
struct s3c_irq_intc *parent_intc;
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 420
struct s3c_irq_data *parent_irq_data;
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 421
unsigned int irqno;
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 422
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 423
/* attach controller pointer to irq_data */
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 424
irq_data->intc = intc;
f5a25524508e68 drivers/irqchip/irq-s3c24xx.c Heiko Stuebner 2013-04-04 425
irq_data->offset = hw;
a21765a70ec06b arch/arm/plat-s3c24xx/irq.c Ben Dooks 2007-02-11 426
0fe3cb1ea5bf38 arch/arm/mach-s3c24xx/irq.c Heiko Stuebner 2013-03-07 427
parent_intc = intc->parent;
a21765a70ec06b arch/arm/plat-s3c24xx/irq.c Ben Dooks 2007-02-11 428
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 429
/* set handler and flags */
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 430
switch (irq_data->type) {
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 431
case S3C_IRQTYPE_NONE:
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 432
return 0;
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 433
case S3C_IRQTYPE_EINT:
1c8408e3137bcb arch/arm/mach-s3c24xx/irq.c Heiko Stuebner 2013-02-12 434
/* On the S3C2412, the EINT0to3 have a parent irq
1c8408e3137bcb arch/arm/mach-s3c24xx/irq.c Heiko Stuebner 2013-02-12 435
* but need the s3c_irq_eint0t4 chip
1c8408e3137bcb arch/arm/mach-s3c24xx/irq.c Heiko Stuebner 2013-02-12 436
*/
0fe3cb1ea5bf38 arch/arm/mach-s3c24xx/irq.c Heiko Stuebner 2013-03-07 437
if (parent_intc && (!soc_is_s3c2412() || hw >= 4))
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 438
irq_set_chip_and_handler(virq, &s3c_irqext_chip,
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 439
handle_edge_irq);
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 440
else
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 441
irq_set_chip_and_handler(virq, &s3c_irq_eint0t4,
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 442
handle_edge_irq);
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 443
break;
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 444
case S3C_IRQTYPE_EDGE:
0fe3cb1ea5bf38 arch/arm/mach-s3c24xx/irq.c Heiko Stuebner 2013-03-07 445
if (parent_intc || intc->reg_pending == S3C2416_SRCPND2)
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 446
irq_set_chip_and_handler(virq, &s3c_irq_level_chip,
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 447
handle_edge_irq);
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 448
else
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 449
irq_set_chip_and_handler(virq, &s3c_irq_chip,
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 450
handle_edge_irq);
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 451
break;
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 452
case S3C_IRQTYPE_LEVEL:
0fe3cb1ea5bf38 arch/arm/mach-s3c24xx/irq.c Heiko Stuebner 2013-03-07 453
if (parent_intc)
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 454
irq_set_chip_and_handler(virq, &s3c_irq_level_chip,
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 455
handle_level_irq);
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 456
else
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 457
irq_set_chip_and_handler(virq, &s3c_irq_chip,
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 458
handle_level_irq);
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 459
break;
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 460
default:
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 461
pr_err("irq-s3c24xx: unsupported irqtype %d\n", irq_data->type);
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 462
return -EINVAL;
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 463
}
f5a25524508e68 drivers/irqchip/irq-s3c24xx.c Heiko Stuebner 2013-04-04 464
f5a25524508e68 drivers/irqchip/irq-s3c24xx.c Heiko Stuebner 2013-04-04 465
irq_set_chip_data(virq, irq_data);
f5a25524508e68 drivers/irqchip/irq-s3c24xx.c Heiko Stuebner 2013-04-04 466
0fe3cb1ea5bf38 arch/arm/mach-s3c24xx/irq.c Heiko Stuebner 2013-03-07 467
if (parent_intc && irq_data->type != S3C_IRQTYPE_NONE) {
502a29890cb102 arch/arm/mach-s3c24xx/irq.c Heiko Stuebner 2013-03-07 468
if (irq_data->parent_irq > 31) {
502a29890cb102 arch/arm/mach-s3c24xx/irq.c Heiko Stuebner 2013-03-07 469
pr_err("irq-s3c24xx: parent irq %lu is out of range\n",
502a29890cb102 arch/arm/mach-s3c24xx/irq.c Heiko Stuebner 2013-03-07 470
irq_data->parent_irq);
d17cab4451df1f drivers/irqchip/irq-s3c24xx.c Rob Herring 2015-08-29 471
return -EINVAL;
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 472
}
a21765a70ec06b arch/arm/plat-s3c24xx/irq.c Ben Dooks 2007-02-11 473
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 474
parent_irq_data = &parent_intc->irqs[irq_data->parent_irq];
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 475
parent_irq_data->sub_intc = intc;
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 476
parent_irq_data->sub_bits |= (1UL << hw);
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 477
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 478
/* attach the demuxer to the parent irq */
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 479
irqno = irq_find_mapping(parent_intc->domain,
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 480
irq_data->parent_irq);
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 481
if (!irqno) {
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 482
pr_err("irq-s3c24xx: could not find mapping for parent irq %lu\n",
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 483
irq_data->parent_irq);
d17cab4451df1f drivers/irqchip/irq-s3c24xx.c Rob Herring 2015-08-29 484
return -EINVAL;
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 485
}
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 486
irq_set_chained_handler(irqno, s3c_irq_demux);
a21765a70ec06b arch/arm/plat-s3c24xx/irq.c Ben Dooks 2007-02-11 487
}
a21765a70ec06b arch/arm/plat-s3c24xx/irq.c Ben Dooks 2007-02-11 488
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 489
return 0;
a21765a70ec06b arch/arm/plat-s3c24xx/irq.c Ben Dooks 2007-02-11 490 }
a21765a70ec06b arch/arm/plat-s3c24xx/irq.c Ben Dooks 2007-02-11 491
9600973656c697 drivers/irqchip/irq-s3c24xx.c Krzysztof Kozlowski 2015-04-27 492
static const struct irq_domain_ops s3c24xx_irq_ops = {
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 493
.map = s3c24xx_irq_map,
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 494
.xlate = irq_domain_xlate_twocell,
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 495
};
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 496
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 497
static void s3c24xx_clear_intc(struct s3c_irq_intc *intc)
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 498 {
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 499
void __iomem *reg_source;
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 500
unsigned long pend;
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 501
unsigned long last;
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 502
int i;
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 503
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 504
/* if intpnd is set, read the next pending irq from there */
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 505
reg_source = intc->reg_intpnd ? intc->reg_intpnd : intc->reg_pending;
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 506
a21765a70ec06b arch/arm/plat-s3c24xx/irq.c Ben Dooks 2007-02-11 507
last = 0;
a21765a70ec06b arch/arm/plat-s3c24xx/irq.c Ben Dooks 2007-02-11 508
for (i = 0; i < 4; i++) {
353332855eef20 drivers/irqchip/irq-s3c24xx.c Ben Dooks 2016-06-21 509
pend = readl_relaxed(reg_source);
a21765a70ec06b arch/arm/plat-s3c24xx/irq.c Ben Dooks 2007-02-11 510
a21765a70ec06b arch/arm/plat-s3c24xx/irq.c Ben Dooks 2007-02-11 511
if (pend == 0 || pend == last)
a21765a70ec06b arch/arm/plat-s3c24xx/irq.c Ben Dooks 2007-02-11 512
break;
a21765a70ec06b arch/arm/plat-s3c24xx/irq.c Ben Dooks 2007-02-11 513
353332855eef20 drivers/irqchip/irq-s3c24xx.c Ben Dooks 2016-06-21 514
writel_relaxed(pend, intc->reg_pending);
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 515
if (intc->reg_intpnd)
353332855eef20 drivers/irqchip/irq-s3c24xx.c Ben Dooks 2016-06-21 516
writel_relaxed(pend, intc->reg_intpnd);
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 517
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 518
pr_info("irq: clearing pending status %08x\n", (int)pend);
a21765a70ec06b arch/arm/plat-s3c24xx/irq.c Ben Dooks 2007-02-11 519
last = pend;
a21765a70ec06b arch/arm/plat-s3c24xx/irq.c Ben Dooks 2007-02-11 520
}
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 521 }
a21765a70ec06b arch/arm/plat-s3c24xx/irq.c Ben Dooks 2007-02-11 522
bc8fd900c4d460 drivers/irqchip/irq-s3c24xx.c Arnd Bergmann 2013-04-25 523
static struct s3c_irq_intc * __init s3c24xx_init_intc(struct device_node *np,
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 524
struct s3c_irq_data *irq_data,
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 525
struct s3c_irq_intc *parent,
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 526
unsigned long address)
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 527 {
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 528
struct s3c_irq_intc *intc;
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 @529
void __iomem *base = (void *)0xf6000000; /* static mapping */
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 530
int irq_num;
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 531
int irq_start;
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 532
int ret;
a21765a70ec06b arch/arm/plat-s3c24xx/irq.c Ben Dooks 2007-02-11 533
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 534
intc = kzalloc(sizeof(struct s3c_irq_intc), GFP_KERNEL);
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 535
if (!intc)
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 536
return ERR_PTR(-ENOMEM);
a21765a70ec06b arch/arm/plat-s3c24xx/irq.c Ben Dooks 2007-02-11 537
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 538
intc->irqs = irq_data;
a21765a70ec06b arch/arm/plat-s3c24xx/irq.c Ben Dooks 2007-02-11 539
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 540
if (parent)
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 541
intc->parent = parent;
a21765a70ec06b arch/arm/plat-s3c24xx/irq.c Ben Dooks 2007-02-11 542
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 543
/* select the correct data for the controller.
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 544
* Need to hard code the irq num start and offset
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 545
* to preserve the static mapping for now
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 546
*/
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 547
switch (address) {
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 548
case 0x4a000000:
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 549
pr_debug("irq: found main intc\n");
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 550
intc->reg_pending = base;
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 551
intc->reg_mask = base + 0x08;
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 552
intc->reg_intpnd = base + 0x10;
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 553
irq_num = 32;
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 554
irq_start = S3C2410_IRQ(0);
a21765a70ec06b arch/arm/plat-s3c24xx/irq.c Ben Dooks 2007-02-11 555
break;
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 556
case 0x4a000018:
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 557
pr_debug("irq: found subintc\n");
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 558
intc->reg_pending = base + 0x18;
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 559
intc->reg_mask = base + 0x1c;
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 560
irq_num = 29;
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 561
irq_start = S3C2410_IRQSUB(0);
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 562
break;
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 563
case 0x4a000040:
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 564
pr_debug("irq: found intc2\n");
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 565
intc->reg_pending = base + 0x40;
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 566
intc->reg_mask = base + 0x48;
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 567
intc->reg_intpnd = base + 0x50;
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 568
irq_num = 8;
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 569
irq_start = S3C2416_IRQ(0);
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 570
break;
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 571
case 0x560000a4:
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 572
pr_debug("irq: found eintc\n");
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 @573
base = (void *)0xfd000000;
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 574
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 575
intc->reg_mask = base + 0xa4;
646dd2f0a98094 arch/arm/mach-s3c24xx/irq.c Sylwester Nawrocki 2013-04-09 576
intc->reg_pending = base + 0xa8;
5424f2188a76d0 arch/arm/mach-s3c24xx/irq.c Heiko Stuebner 2013-02-12 577
irq_num = 24;
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 578
irq_start = S3C2410_IRQ(32);
a21765a70ec06b arch/arm/plat-s3c24xx/irq.c Ben Dooks 2007-02-11 579
break;
a21765a70ec06b arch/arm/plat-s3c24xx/irq.c Ben Dooks 2007-02-11 580
default:
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 581
pr_err("irq: unsupported controller address\n");
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 582
ret = -EINVAL;
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 583
goto err;
a21765a70ec06b arch/arm/plat-s3c24xx/irq.c Ben Dooks 2007-02-11 584
}
a21765a70ec06b arch/arm/plat-s3c24xx/irq.c Ben Dooks 2007-02-11 585
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 586
/* now that all the data is complete, init the irq-domain */
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 587
s3c24xx_clear_intc(intc);
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 588
intc->domain = irq_domain_add_legacy(np, irq_num, irq_start,
5424f2188a76d0 arch/arm/mach-s3c24xx/irq.c Heiko Stuebner 2013-02-12 589
0, &s3c24xx_irq_ops,
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 590
intc);
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 591
if (!intc->domain) {
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 592
pr_err("irq: could not create irq-domain\n");
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 593
ret = -EINVAL;
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 594
goto err;
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 595
}
a21765a70ec06b arch/arm/plat-s3c24xx/irq.c Ben Dooks 2007-02-11 596
17453dd2e7df20 arch/arm/mach-s3c24xx/irq.c Heiko Stuebner 2013-03-07 597
set_handle_irq(s3c24xx_handle_irq);
17453dd2e7df20 arch/arm/mach-s3c24xx/irq.c Heiko Stuebner 2013-03-07 598
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 599
return intc;
a21765a70ec06b arch/arm/plat-s3c24xx/irq.c Ben Dooks 2007-02-11 600
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 601
err:
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 602
kfree(intc);
1f629b7a3ced8e arch/arm/plat-s3c24xx/irq.c Heiko Stuebner 2013-01-29 603
return ERR_PTR(ret);
a21765a70ec06b arch/arm/plat-s3c24xx/irq.c Ben Dooks 2007-02-11 604 }
a21765a70ec06b arch/arm/plat-s3c24xx/irq.c Ben Dooks 2007-02-11 605
:::::: The code at line 529 was first introduced by commit
:::::: 1f629b7a3ced8e73784a9ae3b0d9039496878f18 ARM: S3C24XX: transform irq handling into
a declarative form
:::::: TO: Heiko Stuebner <heiko(a)sntech.de>
:::::: CC: Kukjin Kim <kgene.kim(a)samsung.com>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org