summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/arm/Kconfig36
-rw-r--r--arch/arm/mach-at91/Kconfig2
-rw-r--r--arch/arm/mach-bcm/Kconfig7
-rw-r--r--arch/arm/mach-berlin/Kconfig2
-rw-r--r--arch/arm/mach-digicolor/Kconfig2
-rw-r--r--arch/arm/mach-exynos/Kconfig2
-rw-r--r--arch/arm/mach-imx/Kconfig6
-rw-r--r--arch/arm/mach-imx/Makefile4
-rw-r--r--arch/arm/mach-imx/common.h3
-rw-r--r--arch/arm/mach-imx/cpu-imx5.c8
-rw-r--r--arch/arm/mach-imx/cpu.c2
-rw-r--r--arch/arm/mach-imx/devices/Kconfig4
-rw-r--r--arch/arm/mach-imx/devices/platform-mxc_rnga.c53
-rw-r--r--arch/arm/mach-imx/eukrea-baseboards.h42
-rw-r--r--arch/arm/mach-imx/imx27-dt.c1
-rw-r--r--arch/arm/mach-imx/imx31-dt.c12
-rw-r--r--arch/arm/mach-imx/imx35-dt.c10
-rw-r--r--arch/arm/mach-imx/mach-imx50.c1
-rw-r--r--arch/arm/mach-imx/mach-imx51.c1
-rw-r--r--arch/arm/mach-imx/mach-imx53.c1
-rw-r--r--arch/arm/mach-imx/mach-imx6q.c2
-rw-r--r--arch/arm/mach-imx/mach-imx6sl.c2
-rw-r--r--arch/arm/mach-imx/mach-imx6sx.c2
-rw-r--r--arch/arm/mach-imx/mm-imx1.c2
-rw-r--r--arch/arm/mach-imx/mm-imx27.c2
-rw-r--r--arch/arm/mach-imx/mm-imx3.c32
-rw-r--r--arch/arm/mach-imx/mxc.h101
-rw-r--r--arch/arm/mach-imx/pm-imx27.c8
-rw-r--r--arch/arm/mach-imx/pm-imx3.c38
-rw-r--r--arch/arm/mach-imx/system.c58
-rw-r--r--arch/arm/mach-imx/tzic.c10
-rw-r--r--arch/arm/mach-integrator/Kconfig4
-rw-r--r--arch/arm/mach-meson/Kconfig2
-rw-r--r--arch/arm/mach-mmp/Kconfig2
-rw-r--r--arch/arm/mach-moxart/Kconfig2
-rw-r--r--arch/arm/mach-mv78xx0/Kconfig2
-rw-r--r--arch/arm/mach-mvebu/Kconfig4
-rw-r--r--arch/arm/mach-mvebu/coherency.h1
-rw-r--r--arch/arm/mach-mvebu/cpu-reset.c2
-rw-r--r--arch/arm/mach-mvebu/kirkwood-pm.c4
-rw-r--r--arch/arm/mach-mvebu/kirkwood.c2
-rw-r--r--arch/arm/mach-mvebu/pm.c1
-rw-r--r--arch/arm/mach-mvebu/pmsu.c3
-rw-r--r--arch/arm/mach-mvebu/system-controller.c2
-rw-r--r--arch/arm/mach-mxs/Kconfig2
-rw-r--r--arch/arm/mach-nomadik/Kconfig2
-rw-r--r--arch/arm/mach-omap2/Kconfig2
-rw-r--r--arch/arm/mach-orion5x/Kconfig2
-rw-r--r--arch/arm/mach-orion5x/irq.c2
-rw-r--r--arch/arm/mach-oxnas/Kconfig2
-rw-r--r--arch/arm/mach-picoxcell/Kconfig2
-rw-r--r--arch/arm/mach-prima2/Kconfig2
-rw-r--r--arch/arm/mach-rockchip/Kconfig2
-rw-r--r--arch/arm/mach-s3c24xx/Kconfig2
-rw-r--r--arch/arm/mach-s3c24xx/include/mach/regs-gpio.h2
-rw-r--r--arch/arm/mach-s3c24xx/iotiming-s3c2410.c2
-rw-r--r--arch/arm/mach-s3c24xx/mach-n30.c2
-rw-r--r--arch/arm/mach-s3c24xx/mach-osiris-dvs.c2
-rw-r--r--arch/arm/mach-s3c24xx/pll-s3c2410.c3
-rw-r--r--arch/arm/mach-s3c24xx/pll-s3c2440-12000000.c1
-rw-r--r--arch/arm/mach-s3c24xx/pll-s3c2440-16934400.c1
-rw-r--r--arch/arm/mach-s3c64xx/Kconfig2
-rw-r--r--arch/arm/mach-s3c64xx/common.h1
-rw-r--r--arch/arm/mach-s3c64xx/include/mach/map.h2
-rw-r--r--arch/arm/mach-s5pv210/Kconfig2
-rw-r--r--arch/arm/mach-shmobile/Kconfig2
-rw-r--r--arch/arm/mach-spear/Kconfig2
-rw-r--r--arch/arm/mach-sti/Kconfig2
-rw-r--r--arch/arm/mach-sunxi/Kconfig2
-rw-r--r--arch/arm/mach-tegra/Kconfig2
-rw-r--r--arch/arm/mach-tegra/common.h22
-rw-r--r--arch/arm/mach-tegra/cpuidle-tegra114.c1
-rw-r--r--arch/arm/mach-tegra/cpuidle-tegra20.c1
-rw-r--r--arch/arm/mach-tegra/cpuidle-tegra30.c1
-rw-r--r--arch/arm/mach-tegra/cpuidle.h2
-rw-r--r--arch/arm/mach-tegra/hotplug.c1
-rw-r--r--arch/arm/mach-tegra/irq.c1
-rw-r--r--arch/arm/mach-tegra/pm.h2
-rw-r--r--arch/arm/mach-tegra/tegra.c24
-rw-r--r--arch/arm/mach-u300/Kconfig2
-rw-r--r--arch/arm/mach-uniphier/platsmp.c18
-rw-r--r--arch/arm/mach-ux500/Kconfig2
-rw-r--r--arch/arm/mach-vexpress/Kconfig2
-rw-r--r--arch/arm/mach-vexpress/hotplug.c2
-rw-r--r--arch/arm/mach-vexpress/spc.c6
-rw-r--r--arch/arm/mach-vt8500/Kconfig2
-rw-r--r--arch/arm/plat-iop/setup.c4
-rw-r--r--arch/arm/plat-samsung/include/plat/cpu-freq-core.h2
-rw-r--r--arch/arm/plat-samsung/include/plat/fb-s3c2410.h2
-rw-r--r--arch/arm/plat-samsung/include/plat/gpio-cfg.h2
-rw-r--r--arch/arm/plat-samsung/pm-check.c2
-rw-r--r--arch/arm/plat-samsung/watchdog-reset.c2
-rw-r--r--arch/arm/plat-versatile/platsmp.c2
-rw-r--r--drivers/bus/mvebu-mbus.c10
-rw-r--r--drivers/power/reset/vexpress-poweroff.c4
-rw-r--r--include/linux/mbus.h2
96 files changed, 222 insertions, 436 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 4c445fb9c189..9ec5f5588dc5 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -327,7 +327,6 @@ choice
327config ARCH_MULTIPLATFORM 327config ARCH_MULTIPLATFORM
328 bool "Allow multiple platforms to be selected" 328 bool "Allow multiple platforms to be selected"
329 depends on MMU 329 depends on MMU
330 select ARCH_WANT_OPTIONAL_GPIOLIB
331 select ARM_HAS_SG_CHAIN 330 select ARM_HAS_SG_CHAIN
332 select ARM_PATCH_PHYS_VIRT 331 select ARM_PATCH_PHYS_VIRT
333 select AUTO_ZRELADDR 332 select AUTO_ZRELADDR
@@ -342,7 +341,6 @@ config ARCH_MULTIPLATFORM
342config ARM_SINGLE_ARMV7M 341config ARM_SINGLE_ARMV7M
343 bool "ARMv7-M based platforms (Cortex-M0/M3/M4)" 342 bool "ARMv7-M based platforms (Cortex-M0/M3/M4)"
344 depends on !MMU 343 depends on !MMU
345 select ARCH_WANT_OPTIONAL_GPIOLIB
346 select ARM_NVIC 344 select ARM_NVIC
347 select AUTO_ZRELADDR 345 select AUTO_ZRELADDR
348 select CLKSRC_OF 346 select CLKSRC_OF
@@ -356,12 +354,12 @@ config ARM_SINGLE_ARMV7M
356 354
357config ARCH_CLPS711X 355config ARCH_CLPS711X
358 bool "Cirrus Logic CLPS711x/EP721x/EP731x-based" 356 bool "Cirrus Logic CLPS711x/EP721x/EP731x-based"
359 select ARCH_REQUIRE_GPIOLIB
360 select AUTO_ZRELADDR 357 select AUTO_ZRELADDR
361 select COMMON_CLK 358 select COMMON_CLK
362 select CPU_ARM720T 359 select CPU_ARM720T
363 select GENERIC_CLOCKEVENTS 360 select GENERIC_CLOCKEVENTS
364 select CLPS711X_TIMER 361 select CLPS711X_TIMER
362 select GPIOLIB
365 select MFD_SYSCON 363 select MFD_SYSCON
366 select SOC_BUS 364 select SOC_BUS
367 help 365 help
@@ -369,10 +367,10 @@ config ARCH_CLPS711X
369 367
370config ARCH_GEMINI 368config ARCH_GEMINI
371 bool "Cortina Systems Gemini" 369 bool "Cortina Systems Gemini"
372 select ARCH_REQUIRE_GPIOLIB
373 select CLKSRC_MMIO 370 select CLKSRC_MMIO
374 select CPU_FA526 371 select CPU_FA526
375 select GENERIC_CLOCKEVENTS 372 select GENERIC_CLOCKEVENTS
373 select GPIOLIB
376 help 374 help
377 Support for the Cortina Systems Gemini family SoCs 375 Support for the Cortina Systems Gemini family SoCs
378 376
@@ -393,7 +391,6 @@ config ARCH_EBSA110
393config ARCH_EP93XX 391config ARCH_EP93XX
394 bool "EP93xx-based" 392 bool "EP93xx-based"
395 select ARCH_HAS_HOLES_MEMORYMODEL 393 select ARCH_HAS_HOLES_MEMORYMODEL
396 select ARCH_REQUIRE_GPIOLIB
397 select ARM_AMBA 394 select ARM_AMBA
398 select ARM_PATCH_PHYS_VIRT 395 select ARM_PATCH_PHYS_VIRT
399 select ARM_VIC 396 select ARM_VIC
@@ -402,6 +399,7 @@ config ARCH_EP93XX
402 select CLKSRC_MMIO 399 select CLKSRC_MMIO
403 select CPU_ARM920T 400 select CPU_ARM920T
404 select GENERIC_CLOCKEVENTS 401 select GENERIC_CLOCKEVENTS
402 select GPIOLIB
405 help 403 help
406 This enables support for the Cirrus EP93xx series of CPUs. 404 This enables support for the Cirrus EP93xx series of CPUs.
407 405
@@ -442,9 +440,9 @@ config ARCH_IOP13XX
442config ARCH_IOP32X 440config ARCH_IOP32X
443 bool "IOP32x-based" 441 bool "IOP32x-based"
444 depends on MMU 442 depends on MMU
445 select ARCH_REQUIRE_GPIOLIB
446 select CPU_XSCALE 443 select CPU_XSCALE
447 select GPIO_IOP 444 select GPIO_IOP
445 select GPIOLIB
448 select NEED_RET_TO_USER 446 select NEED_RET_TO_USER
449 select PCI 447 select PCI
450 select PLAT_IOP 448 select PLAT_IOP
@@ -455,9 +453,9 @@ config ARCH_IOP32X
455config ARCH_IOP33X 453config ARCH_IOP33X
456 bool "IOP33x-based" 454 bool "IOP33x-based"
457 depends on MMU 455 depends on MMU
458 select ARCH_REQUIRE_GPIOLIB
459 select CPU_XSCALE 456 select CPU_XSCALE
460 select GPIO_IOP 457 select GPIO_IOP
458 select GPIOLIB
461 select NEED_RET_TO_USER 459 select NEED_RET_TO_USER
462 select PCI 460 select PCI
463 select PLAT_IOP 461 select PLAT_IOP
@@ -468,12 +466,12 @@ config ARCH_IXP4XX
468 bool "IXP4xx-based" 466 bool "IXP4xx-based"
469 depends on MMU 467 depends on MMU
470 select ARCH_HAS_DMA_SET_COHERENT_MASK 468 select ARCH_HAS_DMA_SET_COHERENT_MASK
471 select ARCH_REQUIRE_GPIOLIB
472 select ARCH_SUPPORTS_BIG_ENDIAN 469 select ARCH_SUPPORTS_BIG_ENDIAN
473 select CLKSRC_MMIO 470 select CLKSRC_MMIO
474 select CPU_XSCALE 471 select CPU_XSCALE
475 select DMABOUNCE if PCI 472 select DMABOUNCE if PCI
476 select GENERIC_CLOCKEVENTS 473 select GENERIC_CLOCKEVENTS
474 select GPIOLIB
477 select MIGHT_HAVE_PCI 475 select MIGHT_HAVE_PCI
478 select NEED_MACH_IO_H 476 select NEED_MACH_IO_H
479 select USB_EHCI_BIG_ENDIAN_DESC 477 select USB_EHCI_BIG_ENDIAN_DESC
@@ -483,9 +481,9 @@ config ARCH_IXP4XX
483 481
484config ARCH_DOVE 482config ARCH_DOVE
485 bool "Marvell Dove" 483 bool "Marvell Dove"
486 select ARCH_REQUIRE_GPIOLIB
487 select CPU_PJ4 484 select CPU_PJ4
488 select GENERIC_CLOCKEVENTS 485 select GENERIC_CLOCKEVENTS
486 select GPIOLIB
489 select MIGHT_HAVE_PCI 487 select MIGHT_HAVE_PCI
490 select MULTI_IRQ_HANDLER 488 select MULTI_IRQ_HANDLER
491 select MVEBU_MBUS 489 select MVEBU_MBUS
@@ -499,10 +497,10 @@ config ARCH_DOVE
499 497
500config ARCH_KS8695 498config ARCH_KS8695
501 bool "Micrel/Kendin KS8695" 499 bool "Micrel/Kendin KS8695"
502 select ARCH_REQUIRE_GPIOLIB
503 select CLKSRC_MMIO 500 select CLKSRC_MMIO
504 select CPU_ARM922T 501 select CPU_ARM922T
505 select GENERIC_CLOCKEVENTS 502 select GENERIC_CLOCKEVENTS
503 select GPIOLIB
506 select NEED_MACH_MEMORY_H 504 select NEED_MACH_MEMORY_H
507 help 505 help
508 Support for Micrel/Kendin KS8695 "Centaur" (ARM922T) based 506 Support for Micrel/Kendin KS8695 "Centaur" (ARM922T) based
@@ -510,11 +508,11 @@ config ARCH_KS8695
510 508
511config ARCH_W90X900 509config ARCH_W90X900
512 bool "Nuvoton W90X900 CPU" 510 bool "Nuvoton W90X900 CPU"
513 select ARCH_REQUIRE_GPIOLIB
514 select CLKDEV_LOOKUP 511 select CLKDEV_LOOKUP
515 select CLKSRC_MMIO 512 select CLKSRC_MMIO
516 select CPU_ARM926T 513 select CPU_ARM926T
517 select GENERIC_CLOCKEVENTS 514 select GENERIC_CLOCKEVENTS
515 select GPIOLIB
518 help 516 help
519 Support for Nuvoton (Winbond logic dept.) ARM9 processor, 517 Support for Nuvoton (Winbond logic dept.) ARM9 processor,
520 At present, the w90x900 has been renamed nuc900, regarding 518 At present, the w90x900 has been renamed nuc900, regarding
@@ -526,13 +524,13 @@ config ARCH_W90X900
526 524
527config ARCH_LPC32XX 525config ARCH_LPC32XX
528 bool "NXP LPC32XX" 526 bool "NXP LPC32XX"
529 select ARCH_REQUIRE_GPIOLIB
530 select ARM_AMBA 527 select ARM_AMBA
531 select CLKDEV_LOOKUP 528 select CLKDEV_LOOKUP
532 select CLKSRC_LPC32XX 529 select CLKSRC_LPC32XX
533 select COMMON_CLK 530 select COMMON_CLK
534 select CPU_ARM926T 531 select CPU_ARM926T
535 select GENERIC_CLOCKEVENTS 532 select GENERIC_CLOCKEVENTS
533 select GPIOLIB
536 select MULTI_IRQ_HANDLER 534 select MULTI_IRQ_HANDLER
537 select SPARSE_IRQ 535 select SPARSE_IRQ
538 select USE_OF 536 select USE_OF
@@ -543,7 +541,6 @@ config ARCH_PXA
543 bool "PXA2xx/PXA3xx-based" 541 bool "PXA2xx/PXA3xx-based"
544 depends on MMU 542 depends on MMU
545 select ARCH_MTD_XIP 543 select ARCH_MTD_XIP
546 select ARCH_REQUIRE_GPIOLIB
547 select ARM_CPU_SUSPEND if PM 544 select ARM_CPU_SUSPEND if PM
548 select AUTO_ZRELADDR 545 select AUTO_ZRELADDR
549 select COMMON_CLK 546 select COMMON_CLK
@@ -554,6 +551,7 @@ config ARCH_PXA
554 select CPU_XSCALE if !CPU_XSC3 551 select CPU_XSCALE if !CPU_XSC3
555 select GENERIC_CLOCKEVENTS 552 select GENERIC_CLOCKEVENTS
556 select GPIO_PXA 553 select GPIO_PXA
554 select GPIOLIB
557 select HAVE_IDE 555 select HAVE_IDE
558 select IRQ_DOMAIN 556 select IRQ_DOMAIN
559 select MULTI_IRQ_HANDLER 557 select MULTI_IRQ_HANDLER
@@ -584,7 +582,6 @@ config ARCH_RPC
584config ARCH_SA1100 582config ARCH_SA1100
585 bool "SA1100-based" 583 bool "SA1100-based"
586 select ARCH_MTD_XIP 584 select ARCH_MTD_XIP
587 select ARCH_REQUIRE_GPIOLIB
588 select ARCH_SPARSEMEM_ENABLE 585 select ARCH_SPARSEMEM_ENABLE
589 select CLKDEV_LOOKUP 586 select CLKDEV_LOOKUP
590 select CLKSRC_MMIO 587 select CLKSRC_MMIO
@@ -593,6 +590,7 @@ config ARCH_SA1100
593 select CPU_FREQ 590 select CPU_FREQ
594 select CPU_SA1100 591 select CPU_SA1100
595 select GENERIC_CLOCKEVENTS 592 select GENERIC_CLOCKEVENTS
593 select GPIOLIB
596 select HAVE_IDE 594 select HAVE_IDE
597 select IRQ_DOMAIN 595 select IRQ_DOMAIN
598 select ISA 596 select ISA
@@ -604,12 +602,12 @@ config ARCH_SA1100
604 602
605config ARCH_S3C24XX 603config ARCH_S3C24XX
606 bool "Samsung S3C24XX SoCs" 604 bool "Samsung S3C24XX SoCs"
607 select ARCH_REQUIRE_GPIOLIB
608 select ATAGS 605 select ATAGS
609 select CLKDEV_LOOKUP 606 select CLKDEV_LOOKUP
610 select CLKSRC_SAMSUNG_PWM 607 select CLKSRC_SAMSUNG_PWM
611 select GENERIC_CLOCKEVENTS 608 select GENERIC_CLOCKEVENTS
612 select GPIO_SAMSUNG 609 select GPIO_SAMSUNG
610 select GPIOLIB
613 select HAVE_S3C2410_I2C if I2C 611 select HAVE_S3C2410_I2C if I2C
614 select HAVE_S3C2410_WATCHDOG if WATCHDOG 612 select HAVE_S3C2410_WATCHDOG if WATCHDOG
615 select HAVE_S3C_RTC if RTC_CLASS 613 select HAVE_S3C_RTC if RTC_CLASS
@@ -625,12 +623,12 @@ config ARCH_S3C24XX
625config ARCH_DAVINCI 623config ARCH_DAVINCI
626 bool "TI DaVinci" 624 bool "TI DaVinci"
627 select ARCH_HAS_HOLES_MEMORYMODEL 625 select ARCH_HAS_HOLES_MEMORYMODEL
628 select ARCH_REQUIRE_GPIOLIB
629 select CLKDEV_LOOKUP 626 select CLKDEV_LOOKUP
630 select CPU_ARM926T 627 select CPU_ARM926T
631 select GENERIC_ALLOCATOR 628 select GENERIC_ALLOCATOR
632 select GENERIC_CLOCKEVENTS 629 select GENERIC_CLOCKEVENTS
633 select GENERIC_IRQ_CHIP 630 select GENERIC_IRQ_CHIP
631 select GPIOLIB
634 select HAVE_IDE 632 select HAVE_IDE
635 select USE_OF 633 select USE_OF
636 select ZONE_DMA 634 select ZONE_DMA
@@ -642,11 +640,11 @@ config ARCH_OMAP1
642 depends on MMU 640 depends on MMU
643 select ARCH_HAS_HOLES_MEMORYMODEL 641 select ARCH_HAS_HOLES_MEMORYMODEL
644 select ARCH_OMAP 642 select ARCH_OMAP
645 select ARCH_REQUIRE_GPIOLIB
646 select CLKDEV_LOOKUP 643 select CLKDEV_LOOKUP
647 select CLKSRC_MMIO 644 select CLKSRC_MMIO
648 select GENERIC_CLOCKEVENTS 645 select GENERIC_CLOCKEVENTS
649 select GENERIC_IRQ_CHIP 646 select GENERIC_IRQ_CHIP
647 select GPIOLIB
650 select HAVE_IDE 648 select HAVE_IDE
651 select IRQ_DOMAIN 649 select IRQ_DOMAIN
652 select MULTI_IRQ_HANDLER 650 select MULTI_IRQ_HANDLER
@@ -868,7 +866,7 @@ source "arch/arm/mach-zynq/Kconfig"
868config ARCH_EFM32 866config ARCH_EFM32
869 bool "Energy Micro efm32" 867 bool "Energy Micro efm32"
870 depends on ARM_SINGLE_ARMV7M 868 depends on ARM_SINGLE_ARMV7M
871 select ARCH_REQUIRE_GPIOLIB 869 select GPIOLIB
872 help 870 help
873 Support for Energy Micro's (now Silicon Labs) efm32 Giant Gecko 871 Support for Energy Micro's (now Silicon Labs) efm32 Giant Gecko
874 processors. 872 processors.
@@ -901,7 +899,7 @@ config MACH_STM32F429
901 default y 899 default y
902 900
903config ARCH_MPS2 901config ARCH_MPS2
904 bool "ARM MPS2 paltform" 902 bool "ARM MPS2 platform"
905 depends on ARM_SINGLE_ARMV7M 903 depends on ARM_SINGLE_ARMV7M
906 select ARM_AMBA 904 select ARM_AMBA
907 select CLKSRC_MPS2 905 select CLKSRC_MPS2
diff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig
index 08047afdf38e..5204395efda8 100644
--- a/arch/arm/mach-at91/Kconfig
+++ b/arch/arm/mach-at91/Kconfig
@@ -1,8 +1,8 @@
1menuconfig ARCH_AT91 1menuconfig ARCH_AT91
2 bool "Atmel SoCs" 2 bool "Atmel SoCs"
3 depends on ARCH_MULTI_V4T || ARCH_MULTI_V5 || ARCH_MULTI_V7 3 depends on ARCH_MULTI_V4T || ARCH_MULTI_V5 || ARCH_MULTI_V7
4 select ARCH_REQUIRE_GPIOLIB
5 select COMMON_CLK_AT91 4 select COMMON_CLK_AT91
5 select GPIOLIB
6 select PINCTRL 6 select PINCTRL
7 select SOC_BUS 7 select SOC_BUS
8 8
diff --git a/arch/arm/mach-bcm/Kconfig b/arch/arm/mach-bcm/Kconfig
index 4f1709b31822..5f63f513d9c9 100644
--- a/arch/arm/mach-bcm/Kconfig
+++ b/arch/arm/mach-bcm/Kconfig
@@ -17,7 +17,7 @@ config ARCH_BCM_IPROC
17 select ARM_GLOBAL_TIMER 17 select ARM_GLOBAL_TIMER
18 select COMMON_CLK_IPROC 18 select COMMON_CLK_IPROC
19 select CLKSRC_MMIO 19 select CLKSRC_MMIO
20 select ARCH_REQUIRE_GPIOLIB 20 select GPIOLIB
21 select ARM_AMBA 21 select ARM_AMBA
22 select PINCTRL 22 select PINCTRL
23 help 23 help
@@ -80,7 +80,7 @@ comment "KONA architected SoCs"
80 80
81config ARCH_BCM_MOBILE 81config ARCH_BCM_MOBILE
82 bool 82 bool
83 select ARCH_REQUIRE_GPIOLIB 83 select GPIOLIB
84 select ARM_ERRATA_754322 84 select ARM_ERRATA_754322
85 select ARM_ERRATA_775420 85 select ARM_ERRATA_775420
86 select ARM_GIC 86 select ARM_GIC
@@ -138,7 +138,7 @@ comment "Other Architectures"
138config ARCH_BCM2835 138config ARCH_BCM2835
139 bool "Broadcom BCM2835 family" 139 bool "Broadcom BCM2835 family"
140 depends on ARCH_MULTI_V6 || ARCH_MULTI_V7 140 depends on ARCH_MULTI_V6 || ARCH_MULTI_V7
141 select ARCH_REQUIRE_GPIOLIB 141 select GPIOLIB
142 select ARM_AMBA 142 select ARM_AMBA
143 select ARM_ERRATA_411920 if ARCH_MULTI_V6 143 select ARM_ERRATA_411920 if ARCH_MULTI_V6
144 select ARM_TIMER_SP804 144 select ARM_TIMER_SP804
@@ -178,7 +178,6 @@ config ARCH_BRCMSTB
178 select BRCMSTB_L2_IRQ 178 select BRCMSTB_L2_IRQ
179 select BCM7120_L2_IRQ 179 select BCM7120_L2_IRQ
180 select ARCH_DMA_ADDR_T_64BIT if ARM_LPAE 180 select ARCH_DMA_ADDR_T_64BIT if ARM_LPAE
181 select ARCH_WANT_OPTIONAL_GPIOLIB
182 select SOC_BRCMSTB 181 select SOC_BRCMSTB
183 select SOC_BUS 182 select SOC_BUS
184 help 183 help
diff --git a/arch/arm/mach-berlin/Kconfig b/arch/arm/mach-berlin/Kconfig
index ffbfa0bd091b..63ab1d368625 100644
--- a/arch/arm/mach-berlin/Kconfig
+++ b/arch/arm/mach-berlin/Kconfig
@@ -2,11 +2,11 @@ menuconfig ARCH_BERLIN
2 bool "Marvell Berlin SoCs" 2 bool "Marvell Berlin SoCs"
3 depends on ARCH_MULTI_V7 3 depends on ARCH_MULTI_V7
4 select ARCH_HAS_RESET_CONTROLLER 4 select ARCH_HAS_RESET_CONTROLLER
5 select ARCH_REQUIRE_GPIOLIB
6 select ARM_GIC 5 select ARM_GIC
7 select DW_APB_ICTL 6 select DW_APB_ICTL
8 select DW_APB_TIMER_OF 7 select DW_APB_TIMER_OF
9 select GENERIC_IRQ_CHIP 8 select GENERIC_IRQ_CHIP
9 select GPIOLIB
10 select MFD_SYSCON 10 select MFD_SYSCON
11 select PINCTRL 11 select PINCTRL
12 12
diff --git a/arch/arm/mach-digicolor/Kconfig b/arch/arm/mach-digicolor/Kconfig
index fc65b0f1db48..9d05c6c4181d 100644
--- a/arch/arm/mach-digicolor/Kconfig
+++ b/arch/arm/mach-digicolor/Kconfig
@@ -1,10 +1,10 @@
1config ARCH_DIGICOLOR 1config ARCH_DIGICOLOR
2 bool "Conexant Digicolor SoC Support" 2 bool "Conexant Digicolor SoC Support"
3 depends on ARCH_MULTI_V7 3 depends on ARCH_MULTI_V7
4 select ARCH_REQUIRE_GPIOLIB
5 select CLKSRC_MMIO 4 select CLKSRC_MMIO
6 select DIGICOLOR_TIMER 5 select DIGICOLOR_TIMER
7 select GENERIC_IRQ_CHIP 6 select GENERIC_IRQ_CHIP
7 select GPIOLIB
8 select MFD_SYSCON 8 select MFD_SYSCON
9 select PINCTRL 9 select PINCTRL
10 select PINCTRL_DIGICOLOR 10 select PINCTRL_DIGICOLOR
diff --git a/arch/arm/mach-exynos/Kconfig b/arch/arm/mach-exynos/Kconfig
index 20dcf6e904b2..ecf139f31c4c 100644
--- a/arch/arm/mach-exynos/Kconfig
+++ b/arch/arm/mach-exynos/Kconfig
@@ -12,13 +12,13 @@ menuconfig ARCH_EXYNOS
12 depends on ARCH_MULTI_V7 12 depends on ARCH_MULTI_V7
13 select ARCH_HAS_BANDGAP 13 select ARCH_HAS_BANDGAP
14 select ARCH_HAS_HOLES_MEMORYMODEL 14 select ARCH_HAS_HOLES_MEMORYMODEL
15 select ARCH_REQUIRE_GPIOLIB
16 select ARM_AMBA 15 select ARM_AMBA
17 select ARM_GIC 16 select ARM_GIC
18 select COMMON_CLK_SAMSUNG 17 select COMMON_CLK_SAMSUNG
19 select EXYNOS_THERMAL 18 select EXYNOS_THERMAL
20 select EXYNOS_PMU 19 select EXYNOS_PMU
21 select EXYNOS_SROM 20 select EXYNOS_SROM
21 select GPIOLIB
22 select HAVE_ARM_SCU if SMP 22 select HAVE_ARM_SCU if SMP
23 select HAVE_S3C2410_I2C if I2C 23 select HAVE_S3C2410_I2C if I2C
24 select HAVE_S3C2410_WATCHDOG if WATCHDOG 24 select HAVE_S3C2410_WATCHDOG if WATCHDOG
diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig
index dd905b9602a0..ee9a318cab31 100644
--- a/arch/arm/mach-imx/Kconfig
+++ b/arch/arm/mach-imx/Kconfig
@@ -1,10 +1,10 @@
1menuconfig ARCH_MXC 1menuconfig ARCH_MXC
2 bool "Freescale i.MX family" 2 bool "Freescale i.MX family"
3 depends on ARCH_MULTI_V4_V5 || ARCH_MULTI_V6_V7 || ARM_SINGLE_ARMV7M 3 depends on ARCH_MULTI_V4_V5 || ARCH_MULTI_V6_V7 || ARM_SINGLE_ARMV7M
4 select ARCH_REQUIRE_GPIOLIB
5 select ARCH_SUPPORTS_BIG_ENDIAN 4 select ARCH_SUPPORTS_BIG_ENDIAN
6 select CLKSRC_IMX_GPT 5 select CLKSRC_IMX_GPT
7 select GENERIC_IRQ_CHIP 6 select GENERIC_IRQ_CHIP
7 select GPIOLIB
8 select PINCTRL 8 select PINCTRL
9 select PM_OPP if PM 9 select PM_OPP if PM
10 select SOC_BUS 10 select SOC_BUS
@@ -44,9 +44,6 @@ config MXC_USE_EPIT
44 uses the same clocks as the GPT. Anyway, on some systems the GPT 44 uses the same clocks as the GPT. Anyway, on some systems the GPT
45 may be in use for other purposes. 45 may be in use for other purposes.
46 46
47config ARCH_HAS_RNGA
48 bool
49
50config HAVE_IMX_ANATOP 47config HAVE_IMX_ANATOP
51 bool 48 bool
52 49
@@ -90,7 +87,6 @@ config SOC_IMX27
90config SOC_IMX31 87config SOC_IMX31
91 bool 88 bool
92 select CPU_V6 89 select CPU_V6
93 select IMX_HAVE_PLATFORM_MXC_RNGA
94 select MXC_AVIC 90 select MXC_AVIC
95 select SMP_ON_UP if SMP 91 select SMP_ON_UP if SMP
96 92
diff --git a/arch/arm/mach-imx/Makefile b/arch/arm/mach-imx/Makefile
index 9fbe624a5ef9..9f5fffd62702 100644
--- a/arch/arm/mach-imx/Makefile
+++ b/arch/arm/mach-imx/Makefile
@@ -8,8 +8,8 @@ obj-$(CONFIG_SOC_IMX25) += cpu-imx25.o mach-imx25.o pm-imx25.o
8obj-$(CONFIG_SOC_IMX27) += cpu-imx27.o pm-imx27.o 8obj-$(CONFIG_SOC_IMX27) += cpu-imx27.o pm-imx27.o
9obj-$(CONFIG_SOC_IMX27) += mm-imx27.o ehci-imx27.o 9obj-$(CONFIG_SOC_IMX27) += mm-imx27.o ehci-imx27.o
10 10
11obj-$(CONFIG_SOC_IMX31) += mm-imx3.o cpu-imx31.o iomux-imx31.o ehci-imx31.o pm-imx3.o 11obj-$(CONFIG_SOC_IMX31) += mm-imx3.o cpu-imx31.o iomux-imx31.o ehci-imx31.o
12obj-$(CONFIG_SOC_IMX35) += mm-imx3.o cpu-imx35.o ehci-imx35.o pm-imx3.o 12obj-$(CONFIG_SOC_IMX35) += mm-imx3.o cpu-imx35.o ehci-imx35.o
13 13
14imx5-pm-$(CONFIG_PM) += pm-imx5.o 14imx5-pm-$(CONFIG_PM) += pm-imx5.o
15obj-$(CONFIG_SOC_IMX5) += cpu-imx5.o $(imx5-pm-y) 15obj-$(CONFIG_SOC_IMX5) += cpu-imx5.o $(imx5-pm-y)
diff --git a/arch/arm/mach-imx/common.h b/arch/arm/mach-imx/common.h
index 58a38464480d..a8f469333027 100644
--- a/arch/arm/mach-imx/common.h
+++ b/arch/arm/mach-imx/common.h
@@ -32,7 +32,6 @@ void imx27_init_early(void);
32void imx31_init_early(void); 32void imx31_init_early(void);
33void imx35_init_early(void); 33void imx35_init_early(void);
34void mxc_init_irq(void __iomem *); 34void mxc_init_irq(void __iomem *);
35void tzic_init_irq(void);
36void mx1_init_irq(void); 35void mx1_init_irq(void);
37void mx21_init_irq(void); 36void mx21_init_irq(void);
38void mx27_init_irq(void); 37void mx27_init_irq(void);
@@ -55,6 +54,7 @@ struct platform_device *mxc_register_gpio(char *name, int id,
55void mxc_set_cpu_type(unsigned int type); 54void mxc_set_cpu_type(unsigned int type);
56void mxc_restart(enum reboot_mode, const char *); 55void mxc_restart(enum reboot_mode, const char *);
57void mxc_arch_reset_init(void __iomem *); 56void mxc_arch_reset_init(void __iomem *);
57void imx1_reset_init(void __iomem *);
58void imx_set_aips(void __iomem *); 58void imx_set_aips(void __iomem *);
59void imx_aips_allow_unprivileged_access(const char *compat); 59void imx_aips_allow_unprivileged_access(const char *compat);
60int mxc_device_init(void); 60int mxc_device_init(void);
@@ -67,6 +67,7 @@ void imx_gpc_set_arm_power_in_lpm(bool power_off);
67void imx_gpc_set_arm_power_up_timing(u32 sw2iso, u32 sw); 67void imx_gpc_set_arm_power_up_timing(u32 sw2iso, u32 sw);
68void imx_gpc_set_arm_power_down_timing(u32 sw2iso, u32 sw); 68void imx_gpc_set_arm_power_down_timing(u32 sw2iso, u32 sw);
69void imx25_pm_init(void); 69void imx25_pm_init(void);
70void imx27_pm_init(void);
70 71
71enum mxc_cpu_pwr_mode { 72enum mxc_cpu_pwr_mode {
72 WAIT_CLOCKED, /* wfi only */ 73 WAIT_CLOCKED, /* wfi only */
diff --git a/arch/arm/mach-imx/cpu-imx5.c b/arch/arm/mach-imx/cpu-imx5.c
index 3403bac94a31..4f2d1c772f85 100644
--- a/arch/arm/mach-imx/cpu-imx5.c
+++ b/arch/arm/mach-imx/cpu-imx5.c
@@ -60,13 +60,9 @@ static int get_mx51_srev(void)
60/* 60/*
61 * Returns: 61 * Returns:
62 * the silicon revision of the cpu 62 * the silicon revision of the cpu
63 * -EINVAL - not a mx51
64 */ 63 */
65int mx51_revision(void) 64int mx51_revision(void)
66{ 65{
67 if (!cpu_is_mx51())
68 return -EINVAL;
69
70 if (mx5_cpu_rev == -1) 66 if (mx5_cpu_rev == -1)
71 mx5_cpu_rev = get_mx51_srev(); 67 mx5_cpu_rev = get_mx51_srev();
72 68
@@ -112,13 +108,9 @@ static int get_mx53_srev(void)
112/* 108/*
113 * Returns: 109 * Returns:
114 * the silicon revision of the cpu 110 * the silicon revision of the cpu
115 * -EINVAL - not a mx53
116 */ 111 */
117int mx53_revision(void) 112int mx53_revision(void)
118{ 113{
119 if (!cpu_is_mx53())
120 return -EINVAL;
121
122 if (mx5_cpu_rev == -1) 114 if (mx5_cpu_rev == -1)
123 mx5_cpu_rev = get_mx53_srev(); 115 mx5_cpu_rev = get_mx53_srev();
124 116
diff --git a/arch/arm/mach-imx/cpu.c b/arch/arm/mach-imx/cpu.c
index 6a96b7cf468f..b3347d32349f 100644
--- a/arch/arm/mach-imx/cpu.c
+++ b/arch/arm/mach-imx/cpu.c
@@ -10,8 +10,6 @@
10#include "common.h" 10#include "common.h"
11 11
12unsigned int __mxc_cpu_type; 12unsigned int __mxc_cpu_type;
13EXPORT_SYMBOL(__mxc_cpu_type);
14
15static unsigned int imx_soc_revision; 13static unsigned int imx_soc_revision;
16 14
17void mxc_set_cpu_type(unsigned int type) 15void mxc_set_cpu_type(unsigned int type)
diff --git a/arch/arm/mach-imx/devices/Kconfig b/arch/arm/mach-imx/devices/Kconfig
index 3a552989248e..6ffe57267233 100644
--- a/arch/arm/mach-imx/devices/Kconfig
+++ b/arch/arm/mach-imx/devices/Kconfig
@@ -57,10 +57,6 @@ config IMX_HAVE_PLATFORM_MXC_MMC
57config IMX_HAVE_PLATFORM_MXC_NAND 57config IMX_HAVE_PLATFORM_MXC_NAND
58 bool 58 bool
59 59
60config IMX_HAVE_PLATFORM_MXC_RNGA
61 bool
62 select ARCH_HAS_RNGA
63
64config IMX_HAVE_PLATFORM_MXC_RTC 60config IMX_HAVE_PLATFORM_MXC_RTC
65 bool 61 bool
66 62
diff --git a/arch/arm/mach-imx/devices/platform-mxc_rnga.c b/arch/arm/mach-imx/devices/platform-mxc_rnga.c
deleted file mode 100644
index 851fbc8af7a9..000000000000
--- a/arch/arm/mach-imx/devices/platform-mxc_rnga.c
+++ /dev/null
@@ -1,53 +0,0 @@
1/*
2 * Copyright (C) 2010 Pengutronix
3 * Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de>
4 *
5 * This program is free software; you can redistribute it and/or modify it under
6 * the terms of the GNU General Public License version 2 as published by the
7 * Free Software Foundation.
8 */
9#include "../hardware.h"
10#include "devices-common.h"
11
12struct imx_mxc_rnga_data {
13 resource_size_t iobase;
14};
15
16#define imx_mxc_rnga_data_entry_single(soc) \
17 { \
18 .iobase = soc ## _RNGA_BASE_ADDR, \
19 }
20
21#ifdef CONFIG_SOC_IMX31
22static const struct imx_mxc_rnga_data imx31_mxc_rnga_data __initconst =
23 imx_mxc_rnga_data_entry_single(MX31);
24#endif /* ifdef CONFIG_SOC_IMX31 */
25
26static struct platform_device *__init imx_add_mxc_rnga(
27 const struct imx_mxc_rnga_data *data)
28{
29 struct resource res[] = {
30 {
31 .start = data->iobase,
32 .end = data->iobase + SZ_16K - 1,
33 .flags = IORESOURCE_MEM,
34 },
35 };
36 return imx_add_platform_device("mxc_rnga", -1,
37 res, ARRAY_SIZE(res), NULL, 0);
38}
39
40static int __init imxXX_add_mxc_rnga(void)
41{
42 struct platform_device *ret;
43
44#if defined(CONFIG_SOC_IMX31)
45 if (cpu_is_mx31())
46 ret = imx_add_mxc_rnga(&imx31_mxc_rnga_data);
47 else
48#endif /* if defined(CONFIG_SOC_IMX31) */
49 ret = ERR_PTR(-ENODEV);
50
51 return PTR_ERR_OR_ZERO(ret);
52}
53arch_initcall(imxXX_add_mxc_rnga);
diff --git a/arch/arm/mach-imx/eukrea-baseboards.h b/arch/arm/mach-imx/eukrea-baseboards.h
deleted file mode 100644
index bb2c90d65914..000000000000
--- a/arch/arm/mach-imx/eukrea-baseboards.h
+++ /dev/null
@@ -1,42 +0,0 @@
1/*
2 * Copyright (C) 2010 Eric Benard - eric@eukrea.com
3 *
4 * Based on board-pcm038.h which is :
5 * Copyright (C) 2008 Juergen Beisert (kernel@pengutronix.de)
6 *
7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation; either version 2
10 * of the License, or (at your option) any later version.
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19 * MA 02110-1301, USA.
20 */
21
22#ifndef __MACH_EUKREA_BASEBOARDS_H__
23#define __MACH_EUKREA_BASEBOARDS_H__
24
25#ifndef __ASSEMBLY__
26/*
27 * This CPU module needs a baseboard to work. After basic initializing
28 * its own devices, it calls baseboard's init function.
29 * TODO: Add your own baseboard init function and call it from
30 * inside eukrea_cpuimx25_init() or eukrea_cpuimx35_init()
31 *
32 * This example here is for the development board. Refer
33 * mach-mx25/eukrea_mbimxsd-baseboard.c for cpuimx25
34 * mach-mx3/eukrea_mbimxsd-baseboard.c for cpuimx35
35 */
36
37extern void eukrea_mbimxsd25_baseboard_init(void);
38extern void eukrea_mbimxsd35_baseboard_init(void);
39
40#endif
41
42#endif /* __MACH_EUKREA_BASEBOARDS_H__ */
diff --git a/arch/arm/mach-imx/imx27-dt.c b/arch/arm/mach-imx/imx27-dt.c
index 530a728c2acc..a754b8a48f38 100644
--- a/arch/arm/mach-imx/imx27-dt.c
+++ b/arch/arm/mach-imx/imx27-dt.c
@@ -27,5 +27,6 @@ DT_MACHINE_START(IMX27_DT, "Freescale i.MX27 (Device Tree Support)")
27 .map_io = mx27_map_io, 27 .map_io = mx27_map_io,
28 .init_early = imx27_init_early, 28 .init_early = imx27_init_early,
29 .init_irq = mx27_init_irq, 29 .init_irq = mx27_init_irq,
30 .init_late = imx27_pm_init,
30 .dt_compat = imx27_dt_board_compat, 31 .dt_compat = imx27_dt_board_compat,
31MACHINE_END 32MACHINE_END
diff --git a/arch/arm/mach-imx/imx31-dt.c b/arch/arm/mach-imx/imx31-dt.c
index 32100222a017..62e6b4fb5370 100644
--- a/arch/arm/mach-imx/imx31-dt.c
+++ b/arch/arm/mach-imx/imx31-dt.c
@@ -28,10 +28,22 @@ static void __init imx31_dt_timer_init(void)
28 mx31_clocks_init_dt(); 28 mx31_clocks_init_dt();
29} 29}
30 30
31/* FIXME: replace with DT binding */
32static const struct resource imx31_rnga_res[] __initconst = {
33 DEFINE_RES_MEM(MX31_RNGA_BASE_ADDR, SZ_16K),
34};
35
36static void __init imx31_dt_mach_init(void)
37{
38 platform_device_register_simple("mxc_rnga", -1, imx31_rnga_res,
39 ARRAY_SIZE(imx31_rnga_res));
40}
41
31DT_MACHINE_START(IMX31_DT, "Freescale i.MX31 (Device Tree Support)") 42DT_MACHINE_START(IMX31_DT, "Freescale i.MX31 (Device Tree Support)")
32 .map_io = mx31_map_io, 43 .map_io = mx31_map_io,
33 .init_early = imx31_init_early, 44 .init_early = imx31_init_early,
34 .init_irq = mx31_init_irq, 45 .init_irq = mx31_init_irq,
35 .init_time = imx31_dt_timer_init, 46 .init_time = imx31_dt_timer_init,
47 .init_machine = imx31_dt_mach_init,
36 .dt_compat = imx31_dt_board_compat, 48 .dt_compat = imx31_dt_board_compat,
37MACHINE_END 49MACHINE_END
diff --git a/arch/arm/mach-imx/imx35-dt.c b/arch/arm/mach-imx/imx35-dt.c
index e9396037235d..99bb63dedb87 100644
--- a/arch/arm/mach-imx/imx35-dt.c
+++ b/arch/arm/mach-imx/imx35-dt.c
@@ -20,20 +20,16 @@
20#include "common.h" 20#include "common.h"
21#include "mx35.h" 21#include "mx35.h"
22 22
23static void __init imx35_irq_init(void)
24{
25 imx_init_l2cache();
26 mx35_init_irq();
27}
28
29static const char * const imx35_dt_board_compat[] __initconst = { 23static const char * const imx35_dt_board_compat[] __initconst = {
30 "fsl,imx35", 24 "fsl,imx35",
31 NULL 25 NULL
32}; 26};
33 27
34DT_MACHINE_START(IMX35_DT, "Freescale i.MX35 (Device Tree Support)") 28DT_MACHINE_START(IMX35_DT, "Freescale i.MX35 (Device Tree Support)")
29 .l2c_aux_val = 0,
30 .l2c_aux_mask = ~0,
35 .map_io = mx35_map_io, 31 .map_io = mx35_map_io,
36 .init_early = imx35_init_early, 32 .init_early = imx35_init_early,
37 .init_irq = imx35_irq_init, 33 .init_irq = mx35_init_irq,
38 .dt_compat = imx35_dt_board_compat, 34 .dt_compat = imx35_dt_board_compat,
39MACHINE_END 35MACHINE_END
diff --git a/arch/arm/mach-imx/mach-imx50.c b/arch/arm/mach-imx/mach-imx50.c
index ecf58b9e974b..4cab5f61260f 100644
--- a/arch/arm/mach-imx/mach-imx50.c
+++ b/arch/arm/mach-imx/mach-imx50.c
@@ -22,6 +22,5 @@ static const char * const imx50_dt_board_compat[] __initconst = {
22}; 22};
23 23
24DT_MACHINE_START(IMX50_DT, "Freescale i.MX50 (Device Tree Support)") 24DT_MACHINE_START(IMX50_DT, "Freescale i.MX50 (Device Tree Support)")
25 .init_irq = tzic_init_irq,
26 .dt_compat = imx50_dt_board_compat, 25 .dt_compat = imx50_dt_board_compat,
27MACHINE_END 26MACHINE_END
diff --git a/arch/arm/mach-imx/mach-imx51.c b/arch/arm/mach-imx/mach-imx51.c
index ec64de611d90..40564c9b1226 100644
--- a/arch/arm/mach-imx/mach-imx51.c
+++ b/arch/arm/mach-imx/mach-imx51.c
@@ -67,7 +67,6 @@ static const char * const imx51_dt_board_compat[] __initconst = {
67 67
68DT_MACHINE_START(IMX51_DT, "Freescale i.MX51 (Device Tree Support)") 68DT_MACHINE_START(IMX51_DT, "Freescale i.MX51 (Device Tree Support)")
69 .init_early = imx51_init_early, 69 .init_early = imx51_init_early,
70 .init_irq = tzic_init_irq,
71 .init_machine = imx51_dt_init, 70 .init_machine = imx51_dt_init,
72 .init_late = imx51_init_late, 71 .init_late = imx51_init_late,
73 .dt_compat = imx51_dt_board_compat, 72 .dt_compat = imx51_dt_board_compat,
diff --git a/arch/arm/mach-imx/mach-imx53.c b/arch/arm/mach-imx/mach-imx53.c
index 68aec23be016..07c2e8dca494 100644
--- a/arch/arm/mach-imx/mach-imx53.c
+++ b/arch/arm/mach-imx/mach-imx53.c
@@ -47,7 +47,6 @@ static const char * const imx53_dt_board_compat[] __initconst = {
47 47
48DT_MACHINE_START(IMX53_DT, "Freescale i.MX53 (Device Tree Support)") 48DT_MACHINE_START(IMX53_DT, "Freescale i.MX53 (Device Tree Support)")
49 .init_early = imx53_init_early, 49 .init_early = imx53_init_early,
50 .init_irq = tzic_init_irq,
51 .init_machine = imx53_dt_init, 50 .init_machine = imx53_dt_init,
52 .init_late = imx53_init_late, 51 .init_late = imx53_init_late,
53 .dt_compat = imx53_dt_board_compat, 52 .dt_compat = imx53_dt_board_compat,
diff --git a/arch/arm/mach-imx/mach-imx6q.c b/arch/arm/mach-imx/mach-imx6q.c
index e3940707eeb8..68c16d59b808 100644
--- a/arch/arm/mach-imx/mach-imx6q.c
+++ b/arch/arm/mach-imx/mach-imx6q.c
@@ -407,6 +407,8 @@ static const char * const imx6q_dt_compat[] __initconst = {
407}; 407};
408 408
409DT_MACHINE_START(IMX6Q, "Freescale i.MX6 Quad/DualLite (Device Tree)") 409DT_MACHINE_START(IMX6Q, "Freescale i.MX6 Quad/DualLite (Device Tree)")
410 .l2c_aux_val = 0,
411 .l2c_aux_mask = ~0,
410 .smp = smp_ops(imx_smp_ops), 412 .smp = smp_ops(imx_smp_ops),
411 .map_io = imx6q_map_io, 413 .map_io = imx6q_map_io,
412 .init_irq = imx6q_init_irq, 414 .init_irq = imx6q_init_irq,
diff --git a/arch/arm/mach-imx/mach-imx6sl.c b/arch/arm/mach-imx/mach-imx6sl.c
index 37ae87d6e0e9..04084900d810 100644
--- a/arch/arm/mach-imx/mach-imx6sl.c
+++ b/arch/arm/mach-imx/mach-imx6sl.c
@@ -75,6 +75,8 @@ static const char * const imx6sl_dt_compat[] __initconst = {
75}; 75};
76 76
77DT_MACHINE_START(IMX6SL, "Freescale i.MX6 SoloLite (Device Tree)") 77DT_MACHINE_START(IMX6SL, "Freescale i.MX6 SoloLite (Device Tree)")
78 .l2c_aux_val = 0,
79 .l2c_aux_mask = ~0,
78 .init_irq = imx6sl_init_irq, 80 .init_irq = imx6sl_init_irq,
79 .init_machine = imx6sl_init_machine, 81 .init_machine = imx6sl_init_machine,
80 .init_late = imx6sl_init_late, 82 .init_late = imx6sl_init_late,
diff --git a/arch/arm/mach-imx/mach-imx6sx.c b/arch/arm/mach-imx/mach-imx6sx.c
index 107cfc15282b..7f52d9b1e8a4 100644
--- a/arch/arm/mach-imx/mach-imx6sx.c
+++ b/arch/arm/mach-imx/mach-imx6sx.c
@@ -103,6 +103,8 @@ static const char * const imx6sx_dt_compat[] __initconst = {
103}; 103};
104 104
105DT_MACHINE_START(IMX6SX, "Freescale i.MX6 SoloX (Device Tree)") 105DT_MACHINE_START(IMX6SX, "Freescale i.MX6 SoloX (Device Tree)")
106 .l2c_aux_val = 0,
107 .l2c_aux_mask = ~0,
106 .init_irq = imx6sx_init_irq, 108 .init_irq = imx6sx_init_irq,
107 .init_machine = imx6sx_init_machine, 109 .init_machine = imx6sx_init_machine,
108 .dt_compat = imx6sx_dt_compat, 110 .dt_compat = imx6sx_dt_compat,
diff --git a/arch/arm/mach-imx/mm-imx1.c b/arch/arm/mach-imx/mm-imx1.c
index e065fedb3ad4..9a42f19be81e 100644
--- a/arch/arm/mach-imx/mm-imx1.c
+++ b/arch/arm/mach-imx/mm-imx1.c
@@ -50,7 +50,7 @@ void __init mx1_init_irq(void)
50 50
51void __init imx1_soc_init(void) 51void __init imx1_soc_init(void)
52{ 52{
53 mxc_arch_reset_init(MX1_IO_ADDRESS(MX1_WDT_BASE_ADDR)); 53 imx1_reset_init(MX1_IO_ADDRESS(MX1_WDT_BASE_ADDR));
54 mxc_device_init(); 54 mxc_device_init();
55 55
56 mxc_register_gpio("imx1-gpio", 0, MX1_GPIO1_BASE_ADDR, SZ_256, 56 mxc_register_gpio("imx1-gpio", 0, MX1_GPIO1_BASE_ADDR, SZ_256,
diff --git a/arch/arm/mach-imx/mm-imx27.c b/arch/arm/mach-imx/mm-imx27.c
index 7d82a5a5b16b..862b9b7762c7 100644
--- a/arch/arm/mach-imx/mm-imx27.c
+++ b/arch/arm/mach-imx/mm-imx27.c
@@ -98,4 +98,6 @@ void __init imx27_soc_init(void)
98 /* imx27 has the imx21 type audmux */ 98 /* imx27 has the imx21 type audmux */
99 platform_device_register_simple("imx21-audmux", 0, imx27_audmux_res, 99 platform_device_register_simple("imx21-audmux", 0, imx27_audmux_res,
100 ARRAY_SIZE(imx27_audmux_res)); 100 ARRAY_SIZE(imx27_audmux_res));
101
102 imx27_pm_init();
101} 103}
diff --git a/arch/arm/mach-imx/mm-imx3.c b/arch/arm/mach-imx/mm-imx3.c
index 0884ca90d15a..7638a35b3b36 100644
--- a/arch/arm/mach-imx/mm-imx3.c
+++ b/arch/arm/mach-imx/mm-imx3.c
@@ -19,6 +19,7 @@
19#include <linux/mm.h> 19#include <linux/mm.h>
20#include <linux/init.h> 20#include <linux/init.h>
21#include <linux/err.h> 21#include <linux/err.h>
22#include <linux/io.h>
22#include <linux/pinctrl/machine.h> 23#include <linux/pinctrl/machine.h>
23 24
24#include <asm/pgtable.h> 25#include <asm/pgtable.h>
@@ -38,8 +39,6 @@ static void imx3_idle(void)
38{ 39{
39 unsigned long reg = 0; 40 unsigned long reg = 0;
40 41
41 mx3_cpu_lp_set(MX3_WAIT);
42
43 __asm__ __volatile__( 42 __asm__ __volatile__(
44 /* disable I and D cache */ 43 /* disable I and D cache */
45 "mrc p15, 0, %0, c1, c0, 0\n" 44 "mrc p15, 0, %0, c1, c0, 0\n"
@@ -135,11 +134,20 @@ void __init mx31_map_io(void)
135 iotable_init(mx31_io_desc, ARRAY_SIZE(mx31_io_desc)); 134 iotable_init(mx31_io_desc, ARRAY_SIZE(mx31_io_desc));
136} 135}
137 136
137static void imx31_idle(void)
138{
139 int reg = imx_readl(mx3_ccm_base + MXC_CCM_CCMR);
140 reg &= ~MXC_CCM_CCMR_LPM_MASK;
141 imx_writel(reg, mx3_ccm_base + MXC_CCM_CCMR);
142
143 imx3_idle();
144}
145
138void __init imx31_init_early(void) 146void __init imx31_init_early(void)
139{ 147{
140 mxc_set_cpu_type(MXC_CPU_MX31); 148 mxc_set_cpu_type(MXC_CPU_MX31);
141 arch_ioremap_caller = imx3_ioremap_caller; 149 arch_ioremap_caller = imx3_ioremap_caller;
142 arm_pm_idle = imx3_idle; 150 arm_pm_idle = imx31_idle;
143 mx3_ccm_base = MX31_IO_ADDRESS(MX31_CCM_BASE_ADDR); 151 mx3_ccm_base = MX31_IO_ADDRESS(MX31_CCM_BASE_ADDR);
144} 152}
145 153
@@ -167,6 +175,10 @@ static const struct resource imx31_audmux_res[] __initconst = {
167 DEFINE_RES_MEM(MX31_AUDMUX_BASE_ADDR, SZ_16K), 175 DEFINE_RES_MEM(MX31_AUDMUX_BASE_ADDR, SZ_16K),
168}; 176};
169 177
178static const struct resource imx31_rnga_res[] __initconst = {
179 DEFINE_RES_MEM(MX31_RNGA_BASE_ADDR, SZ_16K),
180};
181
170void __init imx31_soc_init(void) 182void __init imx31_soc_init(void)
171{ 183{
172 int to_version = mx31_revision() >> 4; 184 int to_version = mx31_revision() >> 4;
@@ -195,6 +207,8 @@ void __init imx31_soc_init(void)
195 207
196 platform_device_register_simple("imx31-audmux", 0, imx31_audmux_res, 208 platform_device_register_simple("imx31-audmux", 0, imx31_audmux_res,
197 ARRAY_SIZE(imx31_audmux_res)); 209 ARRAY_SIZE(imx31_audmux_res));
210 platform_device_register_simple("mxc_rnga", -1, imx31_rnga_res,
211 ARRAY_SIZE(imx31_rnga_res));
198} 212}
199#endif /* ifdef CONFIG_SOC_IMX31 */ 213#endif /* ifdef CONFIG_SOC_IMX31 */
200 214
@@ -212,11 +226,21 @@ void __init mx35_map_io(void)
212 iotable_init(mx35_io_desc, ARRAY_SIZE(mx35_io_desc)); 226 iotable_init(mx35_io_desc, ARRAY_SIZE(mx35_io_desc));
213} 227}
214 228
229static void imx35_idle(void)
230{
231 int reg = imx_readl(mx3_ccm_base + MXC_CCM_CCMR);
232 reg &= ~MXC_CCM_CCMR_LPM_MASK;
233 reg |= MXC_CCM_CCMR_LPM_WAIT_MX35;
234 imx_writel(reg, mx3_ccm_base + MXC_CCM_CCMR);
235
236 imx3_idle();
237}
238
215void __init imx35_init_early(void) 239void __init imx35_init_early(void)
216{ 240{
217 mxc_set_cpu_type(MXC_CPU_MX35); 241 mxc_set_cpu_type(MXC_CPU_MX35);
218 mxc_iomux_v3_init(MX35_IO_ADDRESS(MX35_IOMUXC_BASE_ADDR)); 242 mxc_iomux_v3_init(MX35_IO_ADDRESS(MX35_IOMUXC_BASE_ADDR));
219 arm_pm_idle = imx3_idle; 243 arm_pm_idle = imx35_idle;
220 arch_ioremap_caller = imx3_ioremap_caller; 244 arch_ioremap_caller = imx3_ioremap_caller;
221 mx3_ccm_base = MX35_IO_ADDRESS(MX35_CCM_BASE_ADDR); 245 mx3_ccm_base = MX35_IO_ADDRESS(MX35_CCM_BASE_ADDR);
222} 246}
diff --git a/arch/arm/mach-imx/mxc.h b/arch/arm/mach-imx/mxc.h
index d32704256781..34f2ff62583c 100644
--- a/arch/arm/mach-imx/mxc.h
+++ b/arch/arm/mach-imx/mxc.h
@@ -45,105 +45,7 @@
45 45
46#ifndef __ASSEMBLY__ 46#ifndef __ASSEMBLY__
47extern unsigned int __mxc_cpu_type; 47extern unsigned int __mxc_cpu_type;
48#endif
49
50#ifdef CONFIG_SOC_IMX1
51# ifdef mxc_cpu_type
52# undef mxc_cpu_type
53# define mxc_cpu_type __mxc_cpu_type
54# else
55# define mxc_cpu_type MXC_CPU_MX1
56# endif
57# define cpu_is_mx1() (mxc_cpu_type == MXC_CPU_MX1)
58#else
59# define cpu_is_mx1() (0)
60#endif
61
62#ifdef CONFIG_SOC_IMX21
63# ifdef mxc_cpu_type
64# undef mxc_cpu_type
65# define mxc_cpu_type __mxc_cpu_type
66# else
67# define mxc_cpu_type MXC_CPU_MX21
68# endif
69# define cpu_is_mx21() (mxc_cpu_type == MXC_CPU_MX21)
70#else
71# define cpu_is_mx21() (0)
72#endif
73 48
74#ifdef CONFIG_SOC_IMX25
75# ifdef mxc_cpu_type
76# undef mxc_cpu_type
77# define mxc_cpu_type __mxc_cpu_type
78# else
79# define mxc_cpu_type MXC_CPU_MX25
80# endif
81# define cpu_is_mx25() (mxc_cpu_type == MXC_CPU_MX25)
82#else
83# define cpu_is_mx25() (0)
84#endif
85
86#ifdef CONFIG_SOC_IMX27
87# ifdef mxc_cpu_type
88# undef mxc_cpu_type
89# define mxc_cpu_type __mxc_cpu_type
90# else
91# define mxc_cpu_type MXC_CPU_MX27
92# endif
93# define cpu_is_mx27() (mxc_cpu_type == MXC_CPU_MX27)
94#else
95# define cpu_is_mx27() (0)
96#endif
97
98#ifdef CONFIG_SOC_IMX31
99# ifdef mxc_cpu_type
100# undef mxc_cpu_type
101# define mxc_cpu_type __mxc_cpu_type
102# else
103# define mxc_cpu_type MXC_CPU_MX31
104# endif
105# define cpu_is_mx31() (mxc_cpu_type == MXC_CPU_MX31)
106#else
107# define cpu_is_mx31() (0)
108#endif
109
110#ifdef CONFIG_SOC_IMX35
111# ifdef mxc_cpu_type
112# undef mxc_cpu_type
113# define mxc_cpu_type __mxc_cpu_type
114# else
115# define mxc_cpu_type MXC_CPU_MX35
116# endif
117# define cpu_is_mx35() (mxc_cpu_type == MXC_CPU_MX35)
118#else
119# define cpu_is_mx35() (0)
120#endif
121
122#ifdef CONFIG_SOC_IMX51
123# ifdef mxc_cpu_type
124# undef mxc_cpu_type
125# define mxc_cpu_type __mxc_cpu_type
126# else
127# define mxc_cpu_type MXC_CPU_MX51
128# endif
129# define cpu_is_mx51() (mxc_cpu_type == MXC_CPU_MX51)
130#else
131# define cpu_is_mx51() (0)
132#endif
133
134#ifdef CONFIG_SOC_IMX53
135# ifdef mxc_cpu_type
136# undef mxc_cpu_type
137# define mxc_cpu_type __mxc_cpu_type
138# else
139# define mxc_cpu_type MXC_CPU_MX53
140# endif
141# define cpu_is_mx53() (mxc_cpu_type == MXC_CPU_MX53)
142#else
143# define cpu_is_mx53() (0)
144#endif
145
146#ifndef __ASSEMBLY__
147#ifdef CONFIG_SOC_IMX6SL 49#ifdef CONFIG_SOC_IMX6SL
148static inline bool cpu_is_imx6sl(void) 50static inline bool cpu_is_imx6sl(void)
149{ 51{
@@ -190,9 +92,6 @@ int tzic_enable_wake(void);
190extern struct cpu_op *(*get_cpu_op)(int *op); 92extern struct cpu_op *(*get_cpu_op)(int *op);
191#endif 93#endif
192 94
193#define cpu_is_mx3() (cpu_is_mx31() || cpu_is_mx35())
194#define cpu_is_mx2() (cpu_is_mx21() || cpu_is_mx27())
195
196#define imx_readl readl_relaxed 95#define imx_readl readl_relaxed
197#define imx_readw readw_relaxed 96#define imx_readw readw_relaxed
198#define imx_writel writel_relaxed 97#define imx_writel writel_relaxed
diff --git a/arch/arm/mach-imx/pm-imx27.c b/arch/arm/mach-imx/pm-imx27.c
index 43096c8990d4..d943535566c8 100644
--- a/arch/arm/mach-imx/pm-imx27.c
+++ b/arch/arm/mach-imx/pm-imx27.c
@@ -37,13 +37,7 @@ static const struct platform_suspend_ops mx27_suspend_ops = {
37 .valid = suspend_valid_only_mem, 37 .valid = suspend_valid_only_mem,
38}; 38};
39 39
40static int __init mx27_pm_init(void) 40void __init imx27_pm_init(void)
41{ 41{
42 if (!cpu_is_mx27())
43 return 0;
44
45 suspend_set_ops(&mx27_suspend_ops); 42 suspend_set_ops(&mx27_suspend_ops);
46 return 0;
47} 43}
48
49device_initcall(mx27_pm_init);
diff --git a/arch/arm/mach-imx/pm-imx3.c b/arch/arm/mach-imx/pm-imx3.c
deleted file mode 100644
index 94c0898751d8..000000000000
--- a/arch/arm/mach-imx/pm-imx3.c
+++ /dev/null
@@ -1,38 +0,0 @@
1/*
2 * Copyright (C) 2012 Freescale Semiconductor, Inc. All Rights Reserved.
3 *
4 * The code contained herein is licensed under the GNU General Public
5 * License. You may obtain a copy of the GNU General Public License
6 * Version 2 or later at the following locations:
7 *
8 * http://www.opensource.org/licenses/gpl-license.html
9 * http://www.gnu.org/copyleft/gpl.html
10 */
11#include <linux/io.h>
12
13#include "common.h"
14#include "crmregs-imx3.h"
15#include "devices/devices-common.h"
16#include "hardware.h"
17
18/*
19 * Set cpu low power mode before WFI instruction. This function is called
20 * mx3 because it can be used for mx31 and mx35.
21 * Currently only WAIT_MODE is supported.
22 */
23void mx3_cpu_lp_set(enum mx3_cpu_pwr_mode mode)
24{
25 int reg = imx_readl(mx3_ccm_base + MXC_CCM_CCMR);
26 reg &= ~MXC_CCM_CCMR_LPM_MASK;
27
28 switch (mode) {
29 case MX3_WAIT:
30 if (cpu_is_mx35())
31 reg |= MXC_CCM_CCMR_LPM_WAIT_MX35;
32 imx_writel(reg, mx3_ccm_base + MXC_CCM_CCMR);
33 break;
34 default:
35 pr_err("Unknown cpu power mode: %d\n", mode);
36 return;
37 }
38}
diff --git a/arch/arm/mach-imx/system.c b/arch/arm/mach-imx/system.c
index 105d1ce4ed9d..c06af650e6b1 100644
--- a/arch/arm/mach-imx/system.c
+++ b/arch/arm/mach-imx/system.c
@@ -34,25 +34,19 @@
34 34
35static void __iomem *wdog_base; 35static void __iomem *wdog_base;
36static struct clk *wdog_clk; 36static struct clk *wdog_clk;
37static int wcr_enable = (1 << 2);
37 38
38/* 39/*
39 * Reset the system. It is called by machine_restart(). 40 * Reset the system. It is called by machine_restart().
40 */ 41 */
41void mxc_restart(enum reboot_mode mode, const char *cmd) 42void mxc_restart(enum reboot_mode mode, const char *cmd)
42{ 43{
43 unsigned int wcr_enable;
44
45 if (!wdog_base) 44 if (!wdog_base)
46 goto reset_fallback; 45 goto reset_fallback;
47 46
48 if (!IS_ERR(wdog_clk)) 47 if (!IS_ERR(wdog_clk))
49 clk_enable(wdog_clk); 48 clk_enable(wdog_clk);
50 49
51 if (cpu_is_mx1())
52 wcr_enable = (1 << 0);
53 else
54 wcr_enable = (1 << 2);
55
56 /* Assert SRS signal */ 50 /* Assert SRS signal */
57 imx_writew(wcr_enable, wdog_base); 51 imx_writew(wcr_enable, wdog_base);
58 /* 52 /*
@@ -89,6 +83,14 @@ void __init mxc_arch_reset_init(void __iomem *base)
89 clk_prepare(wdog_clk); 83 clk_prepare(wdog_clk);
90} 84}
91 85
86#ifdef CONFIG_SOC_IMX1
87void __init imx1_reset_init(void __iomem *base)
88{
89 wcr_enable = (1 << 0);
90 mxc_arch_reset_init(base);
91}
92#endif
93
92#ifdef CONFIG_CACHE_L2X0 94#ifdef CONFIG_CACHE_L2X0
93void __init imx_init_l2cache(void) 95void __init imx_init_l2cache(void)
94{ 96{
@@ -98,38 +100,28 @@ void __init imx_init_l2cache(void)
98 100
99 np = of_find_compatible_node(NULL, NULL, "arm,pl310-cache"); 101 np = of_find_compatible_node(NULL, NULL, "arm,pl310-cache");
100 if (!np) 102 if (!np)
101 goto out; 103 return;
102 104
103 l2x0_base = of_iomap(np, 0); 105 l2x0_base = of_iomap(np, 0);
104 if (!l2x0_base) { 106 if (!l2x0_base)
105 of_node_put(np); 107 goto put_node;
106 goto out;
107 }
108 108
109 if (readl_relaxed(l2x0_base + L2X0_CTRL) & L2X0_CTRL_EN) 109 if (!(readl_relaxed(l2x0_base + L2X0_CTRL) & L2X0_CTRL_EN)) {
110 goto skip_if_enabled; 110 /* Configure the L2 PREFETCH and POWER registers */
111 val = readl_relaxed(l2x0_base + L310_PREFETCH_CTRL);
112 val |= L310_PREFETCH_CTRL_DBL_LINEFILL |
113 L310_PREFETCH_CTRL_INSTR_PREFETCH |
114 L310_PREFETCH_CTRL_DATA_PREFETCH;
111 115
112 /* Configure the L2 PREFETCH and POWER registers */ 116 /* Set perfetch offset to improve performance */
113 val = readl_relaxed(l2x0_base + L310_PREFETCH_CTRL); 117 val &= ~L310_PREFETCH_CTRL_OFFSET_MASK;
114 val |= 0x70800000; 118 val |= 15;
115 /* 119
116 * The L2 cache controller(PL310) version on the i.MX6D/Q is r3p1-50rel0 120 writel_relaxed(val, l2x0_base + L310_PREFETCH_CTRL);
117 * The L2 cache controller(PL310) version on the i.MX6DL/SOLO/SL is r3p2 121 }
118 * But according to ARM PL310 errata: 752271
119 * ID: 752271: Double linefill feature can cause data corruption
120 * Fault Status: Present in: r3p0, r3p1, r3p1-50rel0. Fixed in r3p2
121 * Workaround: The only workaround to this erratum is to disable the
122 * double linefill feature. This is the default behavior.
123 */
124 if (cpu_is_imx6q())
125 val &= ~(1 << 30 | 1 << 23);
126 writel_relaxed(val, l2x0_base + L310_PREFETCH_CTRL);
127 122
128skip_if_enabled:
129 iounmap(l2x0_base); 123 iounmap(l2x0_base);
124put_node:
130 of_node_put(np); 125 of_node_put(np);
131
132out:
133 l2x0_of_init(0, ~0);
134} 126}
135#endif 127#endif
diff --git a/arch/arm/mach-imx/tzic.c b/arch/arm/mach-imx/tzic.c
index ae23d50f7861..a53fdc263a37 100644
--- a/arch/arm/mach-imx/tzic.c
+++ b/arch/arm/mach-imx/tzic.c
@@ -9,12 +9,11 @@
9 * http://www.gnu.org/copyleft/gpl.html 9 * http://www.gnu.org/copyleft/gpl.html
10 */ 10 */
11 11
12#include <linux/module.h>
13#include <linux/moduleparam.h>
14#include <linux/init.h> 12#include <linux/init.h>
15#include <linux/device.h> 13#include <linux/device.h>
16#include <linux/errno.h> 14#include <linux/errno.h>
17#include <linux/io.h> 15#include <linux/io.h>
16#include <linux/irqchip.h>
18#include <linux/irqdomain.h> 17#include <linux/irqdomain.h>
19#include <linux/of.h> 18#include <linux/of.h>
20#include <linux/of_address.h> 19#include <linux/of_address.h>
@@ -153,13 +152,11 @@ static void __exception_irq_entry tzic_handle_irq(struct pt_regs *regs)
153 * interrupts. It registers the interrupt enable and disable functions 152 * interrupts. It registers the interrupt enable and disable functions
154 * to the kernel for each interrupt source. 153 * to the kernel for each interrupt source.
155 */ 154 */
156void __init tzic_init_irq(void) 155static int __init tzic_init_dt(struct device_node *np, struct device_node *p)
157{ 156{
158 struct device_node *np;
159 int irq_base; 157 int irq_base;
160 int i; 158 int i;
161 159
162 np = of_find_compatible_node(NULL, NULL, "fsl,tzic");
163 tzic_base = of_iomap(np, 0); 160 tzic_base = of_iomap(np, 0);
164 WARN_ON(!tzic_base); 161 WARN_ON(!tzic_base);
165 162
@@ -199,7 +196,10 @@ void __init tzic_init_irq(void)
199#endif 196#endif
200 197
201 pr_info("TrustZone Interrupt Controller (TZIC) initialized\n"); 198 pr_info("TrustZone Interrupt Controller (TZIC) initialized\n");
199
200 return 0;
202} 201}
202IRQCHIP_DECLARE(tzic, "fsl,tzic", tzic_init_dt);
203 203
204/** 204/**
205 * tzic_enable_wake() - enable wakeup interrupt 205 * tzic_enable_wake() - enable wakeup interrupt
diff --git a/arch/arm/mach-integrator/Kconfig b/arch/arm/mach-integrator/Kconfig
index 291262e5aeaf..599f973e10d8 100644
--- a/arch/arm/mach-integrator/Kconfig
+++ b/arch/arm/mach-integrator/Kconfig
@@ -32,9 +32,9 @@ config ARCH_INTEGRATOR_AP
32config INTEGRATOR_IMPD1 32config INTEGRATOR_IMPD1
33 bool "Include support for Integrator/IM-PD1" 33 bool "Include support for Integrator/IM-PD1"
34 depends on ARCH_INTEGRATOR_AP 34 depends on ARCH_INTEGRATOR_AP
35 select ARCH_REQUIRE_GPIOLIB
36 select ARM_VIC 35 select ARM_VIC
37 select GPIO_PL061 if GPIOLIB 36 select GPIO_PL061
37 select GPIOLIB
38 help 38 help
39 The IM-PD1 is an add-on logic module for the Integrator which 39 The IM-PD1 is an add-on logic module for the Integrator which
40 allows ARM(R) Ltd PrimeCells to be developed and evaluated. 40 allows ARM(R) Ltd PrimeCells to be developed and evaluated.
diff --git a/arch/arm/mach-meson/Kconfig b/arch/arm/mach-meson/Kconfig
index 31bdd91098b6..fbce42d7390f 100644
--- a/arch/arm/mach-meson/Kconfig
+++ b/arch/arm/mach-meson/Kconfig
@@ -1,7 +1,7 @@
1menuconfig ARCH_MESON 1menuconfig ARCH_MESON
2 bool "Amlogic Meson SoCs" 2 bool "Amlogic Meson SoCs"
3 depends on ARCH_MULTI_V7 3 depends on ARCH_MULTI_V7
4 select ARCH_REQUIRE_GPIOLIB 4 select GPIOLIB
5 select GENERIC_IRQ_CHIP 5 select GENERIC_IRQ_CHIP
6 select ARM_GIC 6 select ARM_GIC
7 select CACHE_L2X0 7 select CACHE_L2X0
diff --git a/arch/arm/mach-mmp/Kconfig b/arch/arm/mach-mmp/Kconfig
index 01c57d369462..94500bed56ab 100644
--- a/arch/arm/mach-mmp/Kconfig
+++ b/arch/arm/mach-mmp/Kconfig
@@ -1,8 +1,8 @@
1menuconfig ARCH_MMP 1menuconfig ARCH_MMP
2 bool "Marvell PXA168/910/MMP2" 2 bool "Marvell PXA168/910/MMP2"
3 depends on ARCH_MULTI_V5 || ARCH_MULTI_V7 3 depends on ARCH_MULTI_V5 || ARCH_MULTI_V7
4 select ARCH_REQUIRE_GPIOLIB
5 select GPIO_PXA 4 select GPIO_PXA
5 select GPIOLIB
6 select PINCTRL 6 select PINCTRL
7 select PLAT_PXA 7 select PLAT_PXA
8 help 8 help
diff --git a/arch/arm/mach-moxart/Kconfig b/arch/arm/mach-moxart/Kconfig
index ddc79cea32d3..f69e28b85e88 100644
--- a/arch/arm/mach-moxart/Kconfig
+++ b/arch/arm/mach-moxart/Kconfig
@@ -5,7 +5,7 @@ menuconfig ARCH_MOXART
5 select ARM_DMA_MEM_BUFFERABLE 5 select ARM_DMA_MEM_BUFFERABLE
6 select MOXART_TIMER 6 select MOXART_TIMER
7 select GENERIC_IRQ_CHIP 7 select GENERIC_IRQ_CHIP
8 select ARCH_REQUIRE_GPIOLIB 8 select GPIOLIB
9 select PHYLIB if NETDEVICES 9 select PHYLIB if NETDEVICES
10 help 10 help
11 Say Y here if you want to run your kernel on hardware with a 11 Say Y here if you want to run your kernel on hardware with a
diff --git a/arch/arm/mach-mv78xx0/Kconfig b/arch/arm/mach-mv78xx0/Kconfig
index c32f85559c65..81c0f08a2684 100644
--- a/arch/arm/mach-mv78xx0/Kconfig
+++ b/arch/arm/mach-mv78xx0/Kconfig
@@ -1,8 +1,8 @@
1menuconfig ARCH_MV78XX0 1menuconfig ARCH_MV78XX0
2 bool "Marvell MV78xx0" 2 bool "Marvell MV78xx0"
3 depends on ARCH_MULTI_V5 3 depends on ARCH_MULTI_V5
4 select ARCH_REQUIRE_GPIOLIB
5 select CPU_FEROCEON 4 select CPU_FEROCEON
5 select GPIOLIB
6 select MVEBU_MBUS 6 select MVEBU_MBUS
7 select PCI 7 select PCI
8 select PLAT_ORION_LEGACY 8 select PLAT_ORION_LEGACY
diff --git a/arch/arm/mach-mvebu/Kconfig b/arch/arm/mach-mvebu/Kconfig
index 348044ea650c..f9b6bd306cfe 100644
--- a/arch/arm/mach-mvebu/Kconfig
+++ b/arch/arm/mach-mvebu/Kconfig
@@ -8,7 +8,7 @@ menuconfig ARCH_MVEBU
8 select SOC_BUS 8 select SOC_BUS
9 select MVEBU_MBUS 9 select MVEBU_MBUS
10 select ZONE_DMA if ARM_LPAE 10 select ZONE_DMA if ARM_LPAE
11 select ARCH_REQUIRE_GPIOLIB 11 select GPIOLIB
12 select PCI_QUIRKS if PCI 12 select PCI_QUIRKS if PCI
13 select OF_ADDRESS_PCI 13 select OF_ADDRESS_PCI
14 14
@@ -119,8 +119,8 @@ config MACH_DOVE
119config MACH_KIRKWOOD 119config MACH_KIRKWOOD
120 bool "Marvell Kirkwood boards" 120 bool "Marvell Kirkwood boards"
121 depends on ARCH_MULTI_V5 121 depends on ARCH_MULTI_V5
122 select ARCH_REQUIRE_GPIOLIB
123 select CPU_FEROCEON 122 select CPU_FEROCEON
123 select GPIOLIB
124 select KIRKWOOD_CLK 124 select KIRKWOOD_CLK
125 select MACH_MVEBU_ANY 125 select MACH_MVEBU_ANY
126 select ORION_IRQCHIP 126 select ORION_IRQCHIP
diff --git a/arch/arm/mach-mvebu/coherency.h b/arch/arm/mach-mvebu/coherency.h
index 54cb7607b526..6067f14263f7 100644
--- a/arch/arm/mach-mvebu/coherency.h
+++ b/arch/arm/mach-mvebu/coherency.h
@@ -14,6 +14,7 @@
14#ifndef __MACH_370_XP_COHERENCY_H 14#ifndef __MACH_370_XP_COHERENCY_H
15#define __MACH_370_XP_COHERENCY_H 15#define __MACH_370_XP_COHERENCY_H
16 16
17extern void __iomem *coherency_base; /* for coherency_ll.S */
17extern unsigned long coherency_phys_base; 18extern unsigned long coherency_phys_base;
18int set_cpu_coherent(void); 19int set_cpu_coherent(void);
19 20
diff --git a/arch/arm/mach-mvebu/cpu-reset.c b/arch/arm/mach-mvebu/cpu-reset.c
index 4a2cadd6b48e..f33a31c6aff8 100644
--- a/arch/arm/mach-mvebu/cpu-reset.c
+++ b/arch/arm/mach-mvebu/cpu-reset.c
@@ -16,6 +16,8 @@
16#include <linux/io.h> 16#include <linux/io.h>
17#include <linux/resource.h> 17#include <linux/resource.h>
18 18
19#include "common.h"
20
19static void __iomem *cpu_reset_base; 21static void __iomem *cpu_reset_base;
20static size_t cpu_reset_size; 22static size_t cpu_reset_size;
21 23
diff --git a/arch/arm/mach-mvebu/kirkwood-pm.c b/arch/arm/mach-mvebu/kirkwood-pm.c
index cbb816f2120c..1e1f879f16ce 100644
--- a/arch/arm/mach-mvebu/kirkwood-pm.c
+++ b/arch/arm/mach-mvebu/kirkwood-pm.c
@@ -18,6 +18,7 @@
18#include <linux/suspend.h> 18#include <linux/suspend.h>
19#include <linux/io.h> 19#include <linux/io.h>
20#include "kirkwood.h" 20#include "kirkwood.h"
21#include "kirkwood-pm.h"
21 22
22static void __iomem *ddr_operation_base; 23static void __iomem *ddr_operation_base;
23static void __iomem *memory_pm_ctrl; 24static void __iomem *memory_pm_ctrl;
@@ -66,11 +67,10 @@ static const struct platform_suspend_ops kirkwood_suspend_ops = {
66 .valid = kirkwood_pm_valid_standby, 67 .valid = kirkwood_pm_valid_standby,
67}; 68};
68 69
69int __init kirkwood_pm_init(void) 70void __init kirkwood_pm_init(void)
70{ 71{
71 ddr_operation_base = ioremap(DDR_OPERATION_BASE, 4); 72 ddr_operation_base = ioremap(DDR_OPERATION_BASE, 4);
72 memory_pm_ctrl = ioremap(MEMORY_PM_CTRL_PHYS, 4); 73 memory_pm_ctrl = ioremap(MEMORY_PM_CTRL_PHYS, 4);
73 74
74 suspend_set_ops(&kirkwood_suspend_ops); 75 suspend_set_ops(&kirkwood_suspend_ops);
75 return 0;
76} 76}
diff --git a/arch/arm/mach-mvebu/kirkwood.c b/arch/arm/mach-mvebu/kirkwood.c
index 8f459ee34e6f..7d9f2fd9e450 100644
--- a/arch/arm/mach-mvebu/kirkwood.c
+++ b/arch/arm/mach-mvebu/kirkwood.c
@@ -150,7 +150,7 @@ eth_fixup_skip:
150 * causes mbus errors (which can occur for example for PCI aborts) to 150 * causes mbus errors (which can occur for example for PCI aborts) to
151 * throw CPU aborts, which we're not set up to deal with. 151 * throw CPU aborts, which we're not set up to deal with.
152 */ 152 */
153void kirkwood_disable_mbus_error_propagation(void) 153static void kirkwood_disable_mbus_error_propagation(void)
154{ 154{
155 void __iomem *cpu_config; 155 void __iomem *cpu_config;
156 156
diff --git a/arch/arm/mach-mvebu/pm.c b/arch/arm/mach-mvebu/pm.c
index 8d32bf762b86..2990c5269b18 100644
--- a/arch/arm/mach-mvebu/pm.c
+++ b/arch/arm/mach-mvebu/pm.c
@@ -23,6 +23,7 @@
23#include <asm/suspend.h> 23#include <asm/suspend.h>
24 24
25#include "coherency.h" 25#include "coherency.h"
26#include "common.h"
26#include "pmsu.h" 27#include "pmsu.h"
27 28
28#define SDRAM_CONFIG_OFFS 0x0 29#define SDRAM_CONFIG_OFFS 0x0
diff --git a/arch/arm/mach-mvebu/pmsu.c b/arch/arm/mach-mvebu/pmsu.c
index b44442338e4e..f39bd51bce18 100644
--- a/arch/arm/mach-mvebu/pmsu.c
+++ b/arch/arm/mach-mvebu/pmsu.c
@@ -25,6 +25,7 @@
25#include <linux/io.h> 25#include <linux/io.h>
26#include <linux/kernel.h> 26#include <linux/kernel.h>
27#include <linux/mbus.h> 27#include <linux/mbus.h>
28#include <linux/mvebu-pmsu.h>
28#include <linux/of_address.h> 29#include <linux/of_address.h>
29#include <linux/of_device.h> 30#include <linux/of_device.h>
30#include <linux/platform_device.h> 31#include <linux/platform_device.h>
@@ -38,7 +39,7 @@
38#include <asm/suspend.h> 39#include <asm/suspend.h>
39#include <asm/tlbflush.h> 40#include <asm/tlbflush.h>
40#include "common.h" 41#include "common.h"
41 42#include "pmsu.h"
42 43
43#define PMSU_BASE_OFFSET 0x100 44#define PMSU_BASE_OFFSET 0x100
44#define PMSU_REG_SIZE 0x1000 45#define PMSU_REG_SIZE 0x1000
diff --git a/arch/arm/mach-mvebu/system-controller.c b/arch/arm/mach-mvebu/system-controller.c
index c6c132acd7a6..76cbc82a7407 100644
--- a/arch/arm/mach-mvebu/system-controller.c
+++ b/arch/arm/mach-mvebu/system-controller.c
@@ -127,7 +127,7 @@ int mvebu_system_controller_get_soc_id(u32 *dev, u32 *rev)
127} 127}
128 128
129#if defined(CONFIG_SMP) && defined(CONFIG_MACH_MVEBU_V7) 129#if defined(CONFIG_SMP) && defined(CONFIG_MACH_MVEBU_V7)
130void mvebu_armada375_smp_wa_init(void) 130static void mvebu_armada375_smp_wa_init(void)
131{ 131{
132 u32 dev, rev; 132 u32 dev, rev;
133 phys_addr_t resume_addr_reg; 133 phys_addr_t resume_addr_reg;
diff --git a/arch/arm/mach-mxs/Kconfig b/arch/arm/mach-mxs/Kconfig
index 68a3a9ec605d..cb429bc6dc0d 100644
--- a/arch/arm/mach-mxs/Kconfig
+++ b/arch/arm/mach-mxs/Kconfig
@@ -15,7 +15,7 @@ config SOC_IMX28
15config ARCH_MXS 15config ARCH_MXS
16 bool "Freescale MXS (i.MX23, i.MX28) support" 16 bool "Freescale MXS (i.MX23, i.MX28) support"
17 depends on ARCH_MULTI_V5 17 depends on ARCH_MULTI_V5
18 select ARCH_REQUIRE_GPIOLIB 18 select GPIOLIB
19 select MXS_TIMER 19 select MXS_TIMER
20 select PINCTRL 20 select PINCTRL
21 select SOC_BUS 21 select SOC_BUS
diff --git a/arch/arm/mach-nomadik/Kconfig b/arch/arm/mach-nomadik/Kconfig
index 3c61096c8627..b7e9801fdaa4 100644
--- a/arch/arm/mach-nomadik/Kconfig
+++ b/arch/arm/mach-nomadik/Kconfig
@@ -1,12 +1,12 @@
1menuconfig ARCH_NOMADIK 1menuconfig ARCH_NOMADIK
2 bool "ST-Ericsson Nomadik" 2 bool "ST-Ericsson Nomadik"
3 depends on ARCH_MULTI_V5 3 depends on ARCH_MULTI_V5
4 select ARCH_REQUIRE_GPIOLIB
5 select ARM_AMBA 4 select ARM_AMBA
6 select ARM_VIC 5 select ARM_VIC
7 select CLKSRC_NOMADIK_MTU 6 select CLKSRC_NOMADIK_MTU
8 select CLKSRC_NOMADIK_MTU_SCHED_CLOCK 7 select CLKSRC_NOMADIK_MTU_SCHED_CLOCK
9 select CPU_ARM926T 8 select CPU_ARM926T
9 select GPIOLIB
10 select MIGHT_HAVE_CACHE_L2X0 10 select MIGHT_HAVE_CACHE_L2X0
11 select PINCTRL 11 select PINCTRL
12 select PINCTRL_NOMADIK 12 select PINCTRL_NOMADIK
diff --git a/arch/arm/mach-omap2/Kconfig b/arch/arm/mach-omap2/Kconfig
index 1a648e9dfaa0..5a0b380a8166 100644
--- a/arch/arm/mach-omap2/Kconfig
+++ b/arch/arm/mach-omap2/Kconfig
@@ -92,9 +92,9 @@ config ARCH_OMAP2PLUS
92 select ARCH_HAS_BANDGAP 92 select ARCH_HAS_BANDGAP
93 select ARCH_HAS_HOLES_MEMORYMODEL 93 select ARCH_HAS_HOLES_MEMORYMODEL
94 select ARCH_OMAP 94 select ARCH_OMAP
95 select ARCH_REQUIRE_GPIOLIB
96 select CLKSRC_MMIO 95 select CLKSRC_MMIO
97 select GENERIC_IRQ_CHIP 96 select GENERIC_IRQ_CHIP
97 select GPIOLIB
98 select MACH_OMAP_GENERIC 98 select MACH_OMAP_GENERIC
99 select MEMORY 99 select MEMORY
100 select MFD_SYSCON 100 select MFD_SYSCON
diff --git a/arch/arm/mach-orion5x/Kconfig b/arch/arm/mach-orion5x/Kconfig
index a2af15822fcb..89bb0fc796bd 100644
--- a/arch/arm/mach-orion5x/Kconfig
+++ b/arch/arm/mach-orion5x/Kconfig
@@ -1,9 +1,9 @@
1menuconfig ARCH_ORION5X 1menuconfig ARCH_ORION5X
2 bool "Marvell Orion" 2 bool "Marvell Orion"
3 depends on MMU && ARCH_MULTI_V5 3 depends on MMU && ARCH_MULTI_V5
4 select ARCH_REQUIRE_GPIOLIB
5 select CPU_FEROCEON 4 select CPU_FEROCEON
6 select GENERIC_CLOCKEVENTS 5 select GENERIC_CLOCKEVENTS
6 select GPIOLIB
7 select MVEBU_MBUS 7 select MVEBU_MBUS
8 select PCI 8 select PCI
9 select PLAT_ORION_LEGACY 9 select PLAT_ORION_LEGACY
diff --git a/arch/arm/mach-orion5x/irq.c b/arch/arm/mach-orion5x/irq.c
index de980ef9cda1..ac4af2283bef 100644
--- a/arch/arm/mach-orion5x/irq.c
+++ b/arch/arm/mach-orion5x/irq.c
@@ -26,7 +26,7 @@ static int __initdata gpio0_irqs[4] = {
26 IRQ_ORION5X_GPIO_24_31, 26 IRQ_ORION5X_GPIO_24_31,
27}; 27};
28 28
29asmlinkage void 29static asmlinkage void
30__exception_irq_entry orion5x_legacy_handle_irq(struct pt_regs *regs) 30__exception_irq_entry orion5x_legacy_handle_irq(struct pt_regs *regs)
31{ 31{
32 u32 stat; 32 u32 stat;
diff --git a/arch/arm/mach-oxnas/Kconfig b/arch/arm/mach-oxnas/Kconfig
index 4fff3c7666df..2dde0acf01fd 100644
--- a/arch/arm/mach-oxnas/Kconfig
+++ b/arch/arm/mach-oxnas/Kconfig
@@ -1,7 +1,7 @@
1menuconfig ARCH_OXNAS 1menuconfig ARCH_OXNAS
2 bool "Oxford Semiconductor OXNAS Family SoCs" 2 bool "Oxford Semiconductor OXNAS Family SoCs"
3 select ARCH_REQUIRE_GPIOLIB
4 select ARCH_HAS_RESET_CONTROLLER 3 select ARCH_HAS_RESET_CONTROLLER
4 select GPIOLIB
5 select PINCTRL 5 select PINCTRL
6 depends on ARCH_MULTI_V5 6 depends on ARCH_MULTI_V5
7 help 7 help
diff --git a/arch/arm/mach-picoxcell/Kconfig b/arch/arm/mach-picoxcell/Kconfig
index aef92ba0eacd..1c8f701526c9 100644
--- a/arch/arm/mach-picoxcell/Kconfig
+++ b/arch/arm/mach-picoxcell/Kconfig
@@ -1,8 +1,8 @@
1config ARCH_PICOXCELL 1config ARCH_PICOXCELL
2 bool "Picochip PicoXcell" 2 bool "Picochip PicoXcell"
3 depends on ARCH_MULTI_V6 3 depends on ARCH_MULTI_V6
4 select ARCH_REQUIRE_GPIOLIB
5 select ARM_VIC 4 select ARM_VIC
6 select DW_APB_TIMER_OF 5 select DW_APB_TIMER_OF
6 select GPIOLIB
7 select HAVE_TCM 7 select HAVE_TCM
8 select NO_IOPORT_MAP 8 select NO_IOPORT_MAP
diff --git a/arch/arm/mach-prima2/Kconfig b/arch/arm/mach-prima2/Kconfig
index 9e938f2961cf..85e874a97337 100644
--- a/arch/arm/mach-prima2/Kconfig
+++ b/arch/arm/mach-prima2/Kconfig
@@ -3,8 +3,8 @@ menuconfig ARCH_SIRF
3 depends on ARCH_MULTI_V7 3 depends on ARCH_MULTI_V7
4 select ARCH_HAS_RESET_CONTROLLER 4 select ARCH_HAS_RESET_CONTROLLER
5 select RESET_CONTROLLER 5 select RESET_CONTROLLER
6 select ARCH_REQUIRE_GPIOLIB
7 select GENERIC_IRQ_CHIP 6 select GENERIC_IRQ_CHIP
7 select GPIOLIB
8 select NO_IOPORT_MAP 8 select NO_IOPORT_MAP
9 select REGMAP 9 select REGMAP
10 select PINCTRL 10 select PINCTRL
diff --git a/arch/arm/mach-rockchip/Kconfig b/arch/arm/mach-rockchip/Kconfig
index cef42fd886d1..9ad84cd01ba0 100644
--- a/arch/arm/mach-rockchip/Kconfig
+++ b/arch/arm/mach-rockchip/Kconfig
@@ -4,10 +4,10 @@ config ARCH_ROCKCHIP
4 select PINCTRL 4 select PINCTRL
5 select PINCTRL_ROCKCHIP 5 select PINCTRL_ROCKCHIP
6 select ARCH_HAS_RESET_CONTROLLER 6 select ARCH_HAS_RESET_CONTROLLER
7 select ARCH_REQUIRE_GPIOLIB
8 select ARM_AMBA 7 select ARM_AMBA
9 select ARM_GIC 8 select ARM_GIC
10 select CACHE_L2X0 9 select CACHE_L2X0
10 select GPIOLIB
11 select HAVE_ARM_ARCH_TIMER 11 select HAVE_ARM_ARCH_TIMER
12 select HAVE_ARM_SCU if SMP 12 select HAVE_ARM_SCU if SMP
13 select HAVE_ARM_TWD if SMP 13 select HAVE_ARM_TWD if SMP
diff --git a/arch/arm/mach-s3c24xx/Kconfig b/arch/arm/mach-s3c24xx/Kconfig
index b91aee406c74..4b1690acb6a5 100644
--- a/arch/arm/mach-s3c24xx/Kconfig
+++ b/arch/arm/mach-s3c24xx/Kconfig
@@ -11,7 +11,7 @@ if ARCH_S3C24XX
11 11
12config PLAT_S3C24XX 12config PLAT_S3C24XX
13 def_bool y 13 def_bool y
14 select ARCH_REQUIRE_GPIOLIB 14 select GPIOLIB
15 select NO_IOPORT_MAP 15 select NO_IOPORT_MAP
16 select S3C_DEV_NAND 16 select S3C_DEV_NAND
17 select IRQ_DOMAIN 17 select IRQ_DOMAIN
diff --git a/arch/arm/mach-s3c24xx/include/mach/regs-gpio.h b/arch/arm/mach-s3c24xx/include/mach/regs-gpio.h
index c6583cfa5835..0d622f3b57a5 100644
--- a/arch/arm/mach-s3c24xx/include/mach/regs-gpio.h
+++ b/arch/arm/mach-s3c24xx/include/mach/regs-gpio.h
@@ -520,7 +520,7 @@
520#define S3C24XX_EXTINT1 S3C24XX_GPIOREG2(0x8C) 520#define S3C24XX_EXTINT1 S3C24XX_GPIOREG2(0x8C)
521#define S3C24XX_EXTINT2 S3C24XX_GPIOREG2(0x90) 521#define S3C24XX_EXTINT2 S3C24XX_GPIOREG2(0x90)
522 522
523/* interrupt filtering conrrol for EINT16..EINT23 */ 523/* interrupt filtering control for EINT16..EINT23 */
524#define S3C2410_EINFLT0 S3C2410_GPIOREG(0x94) 524#define S3C2410_EINFLT0 S3C2410_GPIOREG(0x94)
525#define S3C2410_EINFLT1 S3C2410_GPIOREG(0x98) 525#define S3C2410_EINFLT1 S3C2410_GPIOREG(0x98)
526#define S3C2410_EINFLT2 S3C2410_GPIOREG(0x9C) 526#define S3C2410_EINFLT2 S3C2410_GPIOREG(0x9C)
diff --git a/arch/arm/mach-s3c24xx/iotiming-s3c2410.c b/arch/arm/mach-s3c24xx/iotiming-s3c2410.c
index 4cd13ab6496b..65e5f9cb650f 100644
--- a/arch/arm/mach-s3c24xx/iotiming-s3c2410.c
+++ b/arch/arm/mach-s3c24xx/iotiming-s3c2410.c
@@ -423,7 +423,7 @@ void s3c2410_iotiming_set(struct s3c_cpufreq_config *cfg,
423 * @timings: The IO timing information to fill out. 423 * @timings: The IO timing information to fill out.
424 * 424 *
425 * Calculate the @timings timing information from the current frequency 425 * Calculate the @timings timing information from the current frequency
426 * information in @cfg, and the new frequency configur 426 * information in @cfg, and the new frequency configuration
427 * through all the IO banks, reading the state and then updating @iot 427 * through all the IO banks, reading the state and then updating @iot
428 * as necessary. 428 * as necessary.
429 * 429 *
diff --git a/arch/arm/mach-s3c24xx/mach-n30.c b/arch/arm/mach-s3c24xx/mach-n30.c
index 171c1f11fd22..070a0d0714a5 100644
--- a/arch/arm/mach-s3c24xx/mach-n30.c
+++ b/arch/arm/mach-s3c24xx/mach-n30.c
@@ -522,7 +522,7 @@ static void __init n30_hwinit(void)
522 * 522 *
523 * The pull ups for H6/H7 are enabled on N30 but not on the 523 * The pull ups for H6/H7 are enabled on N30 but not on the
524 * N35/PiN. I suppose is useful for a budget model of the N30 524 * N35/PiN. I suppose is useful for a budget model of the N30
525 * with no bluetooh. It doesn't hurt to have the pull ups 525 * with no bluetooth. It doesn't hurt to have the pull ups
526 * enabled on the N35, so leave them enabled for all models. 526 * enabled on the N35, so leave them enabled for all models.
527 */ 527 */
528 __raw_writel(0x0028aaaa, S3C2410_GPHCON); 528 __raw_writel(0x0028aaaa, S3C2410_GPHCON);
diff --git a/arch/arm/mach-s3c24xx/mach-osiris-dvs.c b/arch/arm/mach-s3c24xx/mach-osiris-dvs.c
index ce2db235dbaf..262ab0744748 100644
--- a/arch/arm/mach-s3c24xx/mach-osiris-dvs.c
+++ b/arch/arm/mach-s3c24xx/mach-osiris-dvs.c
@@ -143,7 +143,7 @@ static int osiris_dvs_remove(struct platform_device *pdev)
143 return 0; 143 return 0;
144} 144}
145 145
146/* the CONFIG_PM block is so small, it isn't worth actaully compiling it 146/* the CONFIG_PM block is so small, it isn't worth actually compiling it
147 * out if the configuration isn't set. */ 147 * out if the configuration isn't set. */
148 148
149static int osiris_dvs_suspend(struct device *dev) 149static int osiris_dvs_suspend(struct device *dev)
diff --git a/arch/arm/mach-s3c24xx/pll-s3c2410.c b/arch/arm/mach-s3c24xx/pll-s3c2410.c
index 5e37d368594b..7ee4924a543d 100644
--- a/arch/arm/mach-s3c24xx/pll-s3c2410.c
+++ b/arch/arm/mach-s3c24xx/pll-s3c2410.c
@@ -32,11 +32,12 @@
32#include <plat/cpu.h> 32#include <plat/cpu.h>
33#include <plat/cpu-freq-core.h> 33#include <plat/cpu-freq-core.h>
34 34
35/* This array should be sorted in ascending order of the frequencies */
35static struct cpufreq_frequency_table pll_vals_12MHz[] = { 36static struct cpufreq_frequency_table pll_vals_12MHz[] = {
36 { .frequency = 34000000, .driver_data = PLLVAL(82, 2, 3), }, 37 { .frequency = 34000000, .driver_data = PLLVAL(82, 2, 3), },
37 { .frequency = 45000000, .driver_data = PLLVAL(82, 1, 3), }, 38 { .frequency = 45000000, .driver_data = PLLVAL(82, 1, 3), },
38 { .frequency = 51000000, .driver_data = PLLVAL(161, 3, 3), },
39 { .frequency = 48000000, .driver_data = PLLVAL(120, 2, 3), }, 39 { .frequency = 48000000, .driver_data = PLLVAL(120, 2, 3), },
40 { .frequency = 51000000, .driver_data = PLLVAL(161, 3, 3), },
40 { .frequency = 56000000, .driver_data = PLLVAL(142, 2, 3), }, 41 { .frequency = 56000000, .driver_data = PLLVAL(142, 2, 3), },
41 { .frequency = 68000000, .driver_data = PLLVAL(82, 2, 2), }, 42 { .frequency = 68000000, .driver_data = PLLVAL(82, 2, 2), },
42 { .frequency = 79000000, .driver_data = PLLVAL(71, 1, 2), }, 43 { .frequency = 79000000, .driver_data = PLLVAL(71, 1, 2), },
diff --git a/arch/arm/mach-s3c24xx/pll-s3c2440-12000000.c b/arch/arm/mach-s3c24xx/pll-s3c2440-12000000.c
index b355fca6cc2e..a3fbfed75e28 100644
--- a/arch/arm/mach-s3c24xx/pll-s3c2440-12000000.c
+++ b/arch/arm/mach-s3c24xx/pll-s3c2440-12000000.c
@@ -20,6 +20,7 @@
20#include <plat/cpu.h> 20#include <plat/cpu.h>
21#include <plat/cpu-freq-core.h> 21#include <plat/cpu-freq-core.h>
22 22
23/* This array should be sorted in ascending order of the frequencies */
23static struct cpufreq_frequency_table s3c2440_plls_12[] = { 24static struct cpufreq_frequency_table s3c2440_plls_12[] = {
24 { .frequency = 75000000, .driver_data = PLLVAL(0x75, 3, 3), }, /* FVco 600.000000 */ 25 { .frequency = 75000000, .driver_data = PLLVAL(0x75, 3, 3), }, /* FVco 600.000000 */
25 { .frequency = 80000000, .driver_data = PLLVAL(0x98, 4, 3), }, /* FVco 640.000000 */ 26 { .frequency = 80000000, .driver_data = PLLVAL(0x98, 4, 3), }, /* FVco 640.000000 */
diff --git a/arch/arm/mach-s3c24xx/pll-s3c2440-16934400.c b/arch/arm/mach-s3c24xx/pll-s3c2440-16934400.c
index be9a248b5ce9..bcff89fd9871 100644
--- a/arch/arm/mach-s3c24xx/pll-s3c2440-16934400.c
+++ b/arch/arm/mach-s3c24xx/pll-s3c2440-16934400.c
@@ -20,6 +20,7 @@
20#include <plat/cpu.h> 20#include <plat/cpu.h>
21#include <plat/cpu-freq-core.h> 21#include <plat/cpu-freq-core.h>
22 22
23/* This array should be sorted in ascending order of the frequencies */
23static struct cpufreq_frequency_table s3c2440_plls_169344[] = { 24static struct cpufreq_frequency_table s3c2440_plls_169344[] = {
24 { .frequency = 78019200, .driver_data = PLLVAL(121, 5, 3), }, /* FVco 624.153600 */ 25 { .frequency = 78019200, .driver_data = PLLVAL(121, 5, 3), }, /* FVco 624.153600 */
25 { .frequency = 84067200, .driver_data = PLLVAL(131, 5, 3), }, /* FVco 672.537600 */ 26 { .frequency = 84067200, .driver_data = PLLVAL(131, 5, 3), }, /* FVco 672.537600 */
diff --git a/arch/arm/mach-s3c64xx/Kconfig b/arch/arm/mach-s3c64xx/Kconfig
index e5c1888fc67b..459214fa20b4 100644
--- a/arch/arm/mach-s3c64xx/Kconfig
+++ b/arch/arm/mach-s3c64xx/Kconfig
@@ -5,12 +5,12 @@
5menuconfig ARCH_S3C64XX 5menuconfig ARCH_S3C64XX
6 bool "Samsung S3C64XX" 6 bool "Samsung S3C64XX"
7 depends on ARCH_MULTI_V6 7 depends on ARCH_MULTI_V6
8 select ARCH_REQUIRE_GPIOLIB
9 select ARM_AMBA 8 select ARM_AMBA
10 select ARM_VIC 9 select ARM_VIC
11 select CLKSRC_SAMSUNG_PWM 10 select CLKSRC_SAMSUNG_PWM
12 select COMMON_CLK_SAMSUNG 11 select COMMON_CLK_SAMSUNG
13 select GPIO_SAMSUNG if ATAGS 12 select GPIO_SAMSUNG if ATAGS
13 select GPIOLIB
14 select HAVE_S3C2410_I2C if I2C 14 select HAVE_S3C2410_I2C if I2C
15 select HAVE_S3C2410_WATCHDOG if WATCHDOG 15 select HAVE_S3C2410_WATCHDOG if WATCHDOG
16 select HAVE_TCM 16 select HAVE_TCM
diff --git a/arch/arm/mach-s3c64xx/common.h b/arch/arm/mach-s3c64xx/common.h
index 9eb864412911..4f204668f00e 100644
--- a/arch/arm/mach-s3c64xx/common.h
+++ b/arch/arm/mach-s3c64xx/common.h
@@ -24,6 +24,7 @@ void s3c64xx_init_io(struct map_desc *mach_desc, int size);
24 24
25void s3c64xx_restart(enum reboot_mode mode, const char *cmd); 25void s3c64xx_restart(enum reboot_mode mode, const char *cmd);
26 26
27struct device_node;
27void s3c64xx_clk_init(struct device_node *np, unsigned long xtal_f, 28void s3c64xx_clk_init(struct device_node *np, unsigned long xtal_f,
28 unsigned long xusbxti_f, bool is_s3c6400, void __iomem *reg_base); 29 unsigned long xusbxti_f, bool is_s3c6400, void __iomem *reg_base);
29void s3c64xx_set_xtal_freq(unsigned long freq); 30void s3c64xx_set_xtal_freq(unsigned long freq);
diff --git a/arch/arm/mach-s3c64xx/include/mach/map.h b/arch/arm/mach-s3c64xx/include/mach/map.h
index f55ccb1ce893..d51873e8f63f 100644
--- a/arch/arm/mach-s3c64xx/include/mach/map.h
+++ b/arch/arm/mach-s3c64xx/include/mach/map.h
@@ -99,7 +99,7 @@
99 99
100#define S3C64XX_PA_USB_HSPHY (0x7C100000) 100#define S3C64XX_PA_USB_HSPHY (0x7C100000)
101 101
102/* compatibiltiy defines. */ 102/* compatibility defines. */
103#define S3C_PA_TIMER S3C64XX_PA_TIMER 103#define S3C_PA_TIMER S3C64XX_PA_TIMER
104#define S3C_PA_HSMMC0 S3C64XX_PA_HSMMC0 104#define S3C_PA_HSMMC0 S3C64XX_PA_HSMMC0
105#define S3C_PA_HSMMC1 S3C64XX_PA_HSMMC1 105#define S3C_PA_HSMMC1 S3C64XX_PA_HSMMC1
diff --git a/arch/arm/mach-s5pv210/Kconfig b/arch/arm/mach-s5pv210/Kconfig
index 13bc9820ff22..4cec11cf5e6f 100644
--- a/arch/arm/mach-s5pv210/Kconfig
+++ b/arch/arm/mach-s5pv210/Kconfig
@@ -11,10 +11,10 @@ config ARCH_S5PV210
11 bool "Samsung S5PV210/S5PC110" 11 bool "Samsung S5PV210/S5PC110"
12 depends on ARCH_MULTI_V7 12 depends on ARCH_MULTI_V7
13 select ARCH_HAS_HOLES_MEMORYMODEL 13 select ARCH_HAS_HOLES_MEMORYMODEL
14 select ARCH_REQUIRE_GPIOLIB
15 select ARM_VIC 14 select ARM_VIC
16 select CLKSRC_SAMSUNG_PWM 15 select CLKSRC_SAMSUNG_PWM
17 select COMMON_CLK_SAMSUNG 16 select COMMON_CLK_SAMSUNG
17 select GPIOLIB
18 select HAVE_S3C2410_I2C if I2C 18 select HAVE_S3C2410_I2C if I2C
19 select HAVE_S3C2410_WATCHDOG if WATCHDOG 19 select HAVE_S3C2410_WATCHDOG if WATCHDOG
20 select HAVE_S3C_RTC if RTC_CLASS 20 select HAVE_S3C_RTC if RTC_CLASS
diff --git a/arch/arm/mach-shmobile/Kconfig b/arch/arm/mach-shmobile/Kconfig
index fe4ccb52f921..108ae2b41819 100644
--- a/arch/arm/mach-shmobile/Kconfig
+++ b/arch/arm/mach-shmobile/Kconfig
@@ -41,7 +41,7 @@ menuconfig ARCH_RENESAS
41 select ARCH_DMA_ADDR_T_64BIT if ARM_LPAE 41 select ARCH_DMA_ADDR_T_64BIT if ARM_LPAE
42 select NO_IOPORT_MAP 42 select NO_IOPORT_MAP
43 select PINCTRL 43 select PINCTRL
44 select ARCH_REQUIRE_GPIOLIB 44 select GPIOLIB
45 select ZONE_DMA if ARM_LPAE 45 select ZONE_DMA if ARM_LPAE
46 46
47if ARCH_RENESAS 47if ARCH_RENESAS
diff --git a/arch/arm/mach-spear/Kconfig b/arch/arm/mach-spear/Kconfig
index ea9ea95630bd..b7260c2b510c 100644
--- a/arch/arm/mach-spear/Kconfig
+++ b/arch/arm/mach-spear/Kconfig
@@ -5,9 +5,9 @@
5menuconfig PLAT_SPEAR 5menuconfig PLAT_SPEAR
6 bool "ST SPEAr Family" 6 bool "ST SPEAr Family"
7 depends on ARCH_MULTI_V7 || ARCH_MULTI_V5 7 depends on ARCH_MULTI_V7 || ARCH_MULTI_V5
8 select ARCH_REQUIRE_GPIOLIB
9 select ARM_AMBA 8 select ARM_AMBA
10 select CLKSRC_MMIO 9 select CLKSRC_MMIO
10 select GPIOLIB
11 11
12if PLAT_SPEAR 12if PLAT_SPEAR
13 13
diff --git a/arch/arm/mach-sti/Kconfig b/arch/arm/mach-sti/Kconfig
index 6f1af29f935d..119e1108b1f8 100644
--- a/arch/arm/mach-sti/Kconfig
+++ b/arch/arm/mach-sti/Kconfig
@@ -10,7 +10,7 @@ menuconfig ARCH_STI
10 select MFD_SYSCON 10 select MFD_SYSCON
11 select ARCH_HAS_RESET_CONTROLLER 11 select ARCH_HAS_RESET_CONTROLLER
12 select HAVE_ARM_SCU if SMP 12 select HAVE_ARM_SCU if SMP
13 select ARCH_REQUIRE_GPIOLIB 13 select GPIOLIB
14 select ARM_ERRATA_754322 14 select ARM_ERRATA_754322
15 select ARM_ERRATA_764369 if SMP 15 select ARM_ERRATA_764369 if SMP
16 select ARM_ERRATA_775420 16 select ARM_ERRATA_775420
diff --git a/arch/arm/mach-sunxi/Kconfig b/arch/arm/mach-sunxi/Kconfig
index c124d658b350..096ed216c6d5 100644
--- a/arch/arm/mach-sunxi/Kconfig
+++ b/arch/arm/mach-sunxi/Kconfig
@@ -1,10 +1,10 @@
1menuconfig ARCH_SUNXI 1menuconfig ARCH_SUNXI
2 bool "Allwinner SoCs" 2 bool "Allwinner SoCs"
3 depends on ARCH_MULTI_V7 3 depends on ARCH_MULTI_V7
4 select ARCH_REQUIRE_GPIOLIB
5 select ARCH_HAS_RESET_CONTROLLER 4 select ARCH_HAS_RESET_CONTROLLER
6 select CLKSRC_MMIO 5 select CLKSRC_MMIO
7 select GENERIC_IRQ_CHIP 6 select GENERIC_IRQ_CHIP
7 select GPIOLIB
8 select PINCTRL 8 select PINCTRL
9 select SUN4I_TIMER 9 select SUN4I_TIMER
10 select RESET_CONTROLLER 10 select RESET_CONTROLLER
diff --git a/arch/arm/mach-tegra/Kconfig b/arch/arm/mach-tegra/Kconfig
index 0fa8b84ed657..329f01c5b6f8 100644
--- a/arch/arm/mach-tegra/Kconfig
+++ b/arch/arm/mach-tegra/Kconfig
@@ -1,11 +1,11 @@
1menuconfig ARCH_TEGRA 1menuconfig ARCH_TEGRA
2 bool "NVIDIA Tegra" 2 bool "NVIDIA Tegra"
3 depends on ARCH_MULTI_V7 3 depends on ARCH_MULTI_V7
4 select ARCH_REQUIRE_GPIOLIB
5 select ARCH_SUPPORTS_TRUSTED_FOUNDATIONS 4 select ARCH_SUPPORTS_TRUSTED_FOUNDATIONS
6 select ARM_AMBA 5 select ARM_AMBA
7 select ARM_GIC 6 select ARM_GIC
8 select CLKSRC_MMIO 7 select CLKSRC_MMIO
8 select GPIOLIB
9 select HAVE_ARM_SCU if SMP 9 select HAVE_ARM_SCU if SMP
10 select HAVE_ARM_TWD if SMP 10 select HAVE_ARM_TWD if SMP
11 select PINCTRL 11 select PINCTRL
diff --git a/arch/arm/mach-tegra/common.h b/arch/arm/mach-tegra/common.h
index 1f6fb808e236..4cc00e993b00 100644
--- a/arch/arm/mach-tegra/common.h
+++ b/arch/arm/mach-tegra/common.h
@@ -1,4 +1,26 @@
1/*
2 * Copyright (c) 2011, ARM Ltd.
3 * Copyright (c) 2013, NVIDIA Corporation. All rights reserved.
4 *
5 * This program is free software; you can redistribute it and/or modify it
6 * under the terms and conditions of the GNU General Public License,
7 * version 2, as published by the Free Software Foundation.
8 *
9 * This program is distributed in the hope it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12 * more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18#ifndef __MACH_TEGRA_COMMON_H
19#define __MACH_TEGRA_COMMON_H
20
1extern const struct smp_operations tegra_smp_ops; 21extern const struct smp_operations tegra_smp_ops;
2 22
3extern int tegra_cpu_kill(unsigned int cpu); 23extern int tegra_cpu_kill(unsigned int cpu);
4extern void tegra_cpu_die(unsigned int cpu); 24extern void tegra_cpu_die(unsigned int cpu);
25
26#endif
diff --git a/arch/arm/mach-tegra/cpuidle-tegra114.c b/arch/arm/mach-tegra/cpuidle-tegra114.c
index 9157546fe68c..d3aa9be16621 100644
--- a/arch/arm/mach-tegra/cpuidle-tegra114.c
+++ b/arch/arm/mach-tegra/cpuidle-tegra114.c
@@ -26,6 +26,7 @@
26#include <asm/suspend.h> 26#include <asm/suspend.h>
27#include <asm/psci.h> 27#include <asm/psci.h>
28 28
29#include "cpuidle.h"
29#include "pm.h" 30#include "pm.h"
30#include "sleep.h" 31#include "sleep.h"
31 32
diff --git a/arch/arm/mach-tegra/cpuidle-tegra20.c b/arch/arm/mach-tegra/cpuidle-tegra20.c
index 7469347b1749..afcee04f2616 100644
--- a/arch/arm/mach-tegra/cpuidle-tegra20.c
+++ b/arch/arm/mach-tegra/cpuidle-tegra20.c
@@ -30,6 +30,7 @@
30#include <asm/smp_plat.h> 30#include <asm/smp_plat.h>
31#include <asm/suspend.h> 31#include <asm/suspend.h>
32 32
33#include "cpuidle.h"
33#include "flowctrl.h" 34#include "flowctrl.h"
34#include "iomap.h" 35#include "iomap.h"
35#include "irq.h" 36#include "irq.h"
diff --git a/arch/arm/mach-tegra/cpuidle-tegra30.c b/arch/arm/mach-tegra/cpuidle-tegra30.c
index 4dbe1dae937c..c1417361e10e 100644
--- a/arch/arm/mach-tegra/cpuidle-tegra30.c
+++ b/arch/arm/mach-tegra/cpuidle-tegra30.c
@@ -30,6 +30,7 @@
30#include <asm/smp_plat.h> 30#include <asm/smp_plat.h>
31#include <asm/suspend.h> 31#include <asm/suspend.h>
32 32
33#include "cpuidle.h"
33#include "pm.h" 34#include "pm.h"
34#include "sleep.h" 35#include "sleep.h"
35 36
diff --git a/arch/arm/mach-tegra/cpuidle.h b/arch/arm/mach-tegra/cpuidle.h
index c017dab60ffa..dd1624d4b294 100644
--- a/arch/arm/mach-tegra/cpuidle.h
+++ b/arch/arm/mach-tegra/cpuidle.h
@@ -23,8 +23,10 @@ void tegra20_cpuidle_pcie_irqs_in_use(void);
23int tegra30_cpuidle_init(void); 23int tegra30_cpuidle_init(void);
24int tegra114_cpuidle_init(void); 24int tegra114_cpuidle_init(void);
25void tegra_cpuidle_init(void); 25void tegra_cpuidle_init(void);
26void tegra_cpuidle_pcie_irqs_in_use(void);
26#else 27#else
27static inline void tegra_cpuidle_init(void) {} 28static inline void tegra_cpuidle_init(void) {}
29static inline void tegra_cpuidle_pcie_irqs_in_use(void) {}
28#endif 30#endif
29 31
30#endif 32#endif
diff --git a/arch/arm/mach-tegra/hotplug.c b/arch/arm/mach-tegra/hotplug.c
index 1b129899a277..8ec707826072 100644
--- a/arch/arm/mach-tegra/hotplug.c
+++ b/arch/arm/mach-tegra/hotplug.c
@@ -17,6 +17,7 @@
17 17
18#include <asm/smp_plat.h> 18#include <asm/smp_plat.h>
19 19
20#include "common.h"
20#include "sleep.h" 21#include "sleep.h"
21 22
22static void (*tegra_hotplug_shutdown)(void); 23static void (*tegra_hotplug_shutdown)(void);
diff --git a/arch/arm/mach-tegra/irq.c b/arch/arm/mach-tegra/irq.c
index 3b9098d27ea5..a69b22d37eed 100644
--- a/arch/arm/mach-tegra/irq.c
+++ b/arch/arm/mach-tegra/irq.c
@@ -29,6 +29,7 @@
29 29
30#include "board.h" 30#include "board.h"
31#include "iomap.h" 31#include "iomap.h"
32#include "irq.h"
32 33
33#define SGI_MASK 0xFFFF 34#define SGI_MASK 0xFFFF
34 35
diff --git a/arch/arm/mach-tegra/pm.h b/arch/arm/mach-tegra/pm.h
index 83bc87583446..717b48f22912 100644
--- a/arch/arm/mach-tegra/pm.h
+++ b/arch/arm/mach-tegra/pm.h
@@ -36,7 +36,7 @@ void tegra30_sleep_core_init(void);
36 36
37void tegra_clear_cpu_in_lp2(void); 37void tegra_clear_cpu_in_lp2(void);
38bool tegra_set_cpu_in_lp2(void); 38bool tegra_set_cpu_in_lp2(void);
39 39int tegra_cpu_do_idle(void);
40void tegra_idle_lp2_last(void); 40void tegra_idle_lp2_last(void);
41extern void (*tegra_tear_down_cpu)(void); 41extern void (*tegra_tear_down_cpu)(void);
42 42
diff --git a/arch/arm/mach-tegra/tegra.c b/arch/arm/mach-tegra/tegra.c
index 6745a657d261..e01cbca196b5 100644
--- a/arch/arm/mach-tegra/tegra.c
+++ b/arch/arm/mach-tegra/tegra.c
@@ -118,32 +118,14 @@ out:
118 of_platform_default_populate(NULL, NULL, parent); 118 of_platform_default_populate(NULL, NULL, parent);
119} 119}
120 120
121static void __init paz00_init(void)
122{
123 if (IS_ENABLED(CONFIG_ARCH_TEGRA_2x_SOC))
124 tegra_paz00_wifikill_init();
125}
126
127static struct {
128 char *machine;
129 void (*init)(void);
130} board_init_funcs[] = {
131 { "compal,paz00", paz00_init },
132};
133
134static void __init tegra_dt_init_late(void) 121static void __init tegra_dt_init_late(void)
135{ 122{
136 int i;
137
138 tegra_init_suspend(); 123 tegra_init_suspend();
139 tegra_cpuidle_init(); 124 tegra_cpuidle_init();
140 125
141 for (i = 0; i < ARRAY_SIZE(board_init_funcs); i++) { 126 if (IS_ENABLED(CONFIG_ARCH_TEGRA_2x_SOC) &&
142 if (of_machine_is_compatible(board_init_funcs[i].machine)) { 127 of_machine_is_compatible("compal,paz00"))
143 board_init_funcs[i].init(); 128 tegra_paz00_wifikill_init();
144 break;
145 }
146 }
147} 129}
148 130
149static const char * const tegra_dt_board_compat[] = { 131static const char * const tegra_dt_board_compat[] = {
diff --git a/arch/arm/mach-u300/Kconfig b/arch/arm/mach-u300/Kconfig
index 4fdc3425ffbd..22dcbf5b76b2 100644
--- a/arch/arm/mach-u300/Kconfig
+++ b/arch/arm/mach-u300/Kconfig
@@ -1,11 +1,11 @@
1menuconfig ARCH_U300 1menuconfig ARCH_U300
2 bool "ST-Ericsson U300 Series" 2 bool "ST-Ericsson U300 Series"
3 depends on ARCH_MULTI_V5 && MMU 3 depends on ARCH_MULTI_V5 && MMU
4 select ARCH_REQUIRE_GPIOLIB
5 select ARM_AMBA 4 select ARM_AMBA
6 select ARM_VIC 5 select ARM_VIC
7 select U300_TIMER 6 select U300_TIMER
8 select CPU_ARM926T 7 select CPU_ARM926T
8 select GPIOLIB
9 select HAVE_TCM 9 select HAVE_TCM
10 select PINCTRL 10 select PINCTRL
11 select PINCTRL_COH901 11 select PINCTRL_COH901
diff --git a/arch/arm/mach-uniphier/platsmp.c b/arch/arm/mach-uniphier/platsmp.c
index e802ca836ec7..9978c41128f6 100644
--- a/arch/arm/mach-uniphier/platsmp.c
+++ b/arch/arm/mach-uniphier/platsmp.c
@@ -101,21 +101,13 @@ static int __init uniphier_smp_prepare_trampoline(unsigned int max_cpus)
101 np = of_find_compatible_node(NULL, NULL, "socionext,uniphier-smpctrl"); 101 np = of_find_compatible_node(NULL, NULL, "socionext,uniphier-smpctrl");
102 ret = of_address_to_resource(np, 0, &res); 102 ret = of_address_to_resource(np, 0, &res);
103 of_node_put(np); 103 of_node_put(np);
104 if (!ret) { 104 if (ret) {
105 rom_rsv2_phys = res.start + UNIPHIER_SMPCTRL_ROM_RSV2; 105 pr_err("failed to get resource of SMP control\n");
106 } else { 106 return ret;
107 /* try old binding too */
108 np = of_find_compatible_node(NULL, NULL,
109 "socionext,uniphier-system-bus-controller");
110 ret = of_address_to_resource(np, 1, &res);
111 of_node_put(np);
112 if (ret) {
113 pr_err("failed to get resource of SMP control\n");
114 return ret;
115 }
116 rom_rsv2_phys = res.start + 0x1000 + UNIPHIER_SMPCTRL_ROM_RSV2;
117 } 107 }
118 108
109 rom_rsv2_phys = res.start + UNIPHIER_SMPCTRL_ROM_RSV2;
110
119 ret = uniphier_smp_copy_trampoline(rom_rsv2_phys); 111 ret = uniphier_smp_copy_trampoline(rom_rsv2_phys);
120 if (ret) 112 if (ret)
121 return ret; 113 return ret;
diff --git a/arch/arm/mach-ux500/Kconfig b/arch/arm/mach-ux500/Kconfig
index 3185081bdb2c..4740ac393297 100644
--- a/arch/arm/mach-ux500/Kconfig
+++ b/arch/arm/mach-ux500/Kconfig
@@ -3,13 +3,13 @@ menuconfig ARCH_U8500
3 depends on ARCH_MULTI_V7 && MMU 3 depends on ARCH_MULTI_V7 && MMU
4 select AB8500_CORE 4 select AB8500_CORE
5 select ABX500_CORE 5 select ABX500_CORE
6 select ARCH_REQUIRE_GPIOLIB
7 select ARM_AMBA 6 select ARM_AMBA
8 select ARM_ERRATA_754322 7 select ARM_ERRATA_754322
9 select ARM_ERRATA_764369 if SMP 8 select ARM_ERRATA_764369 if SMP
10 select ARM_GIC 9 select ARM_GIC
11 select CACHE_L2X0 10 select CACHE_L2X0
12 select CLKSRC_NOMADIK_MTU 11 select CLKSRC_NOMADIK_MTU
12 select GPIOLIB
13 select HAVE_ARM_SCU if SMP 13 select HAVE_ARM_SCU if SMP
14 select HAVE_ARM_TWD if SMP 14 select HAVE_ARM_TWD if SMP
15 select PINCTRL 15 select PINCTRL
diff --git a/arch/arm/mach-vexpress/Kconfig b/arch/arm/mach-vexpress/Kconfig
index 398a297b7e09..7c728ebc0b33 100644
--- a/arch/arm/mach-vexpress/Kconfig
+++ b/arch/arm/mach-vexpress/Kconfig
@@ -1,13 +1,13 @@
1menuconfig ARCH_VEXPRESS 1menuconfig ARCH_VEXPRESS
2 bool "ARM Ltd. Versatile Express family" 2 bool "ARM Ltd. Versatile Express family"
3 depends on ARCH_MULTI_V7 3 depends on ARCH_MULTI_V7
4 select ARCH_REQUIRE_GPIOLIB
5 select ARCH_SUPPORTS_BIG_ENDIAN 4 select ARCH_SUPPORTS_BIG_ENDIAN
6 select ARM_AMBA 5 select ARM_AMBA
7 select ARM_GIC 6 select ARM_GIC
8 select ARM_GLOBAL_TIMER 7 select ARM_GLOBAL_TIMER
9 select ARM_TIMER_SP804 8 select ARM_TIMER_SP804
10 select COMMON_CLK_VERSATILE 9 select COMMON_CLK_VERSATILE
10 select GPIOLIB
11 select HAVE_ARM_SCU if SMP 11 select HAVE_ARM_SCU if SMP
12 select HAVE_ARM_TWD if SMP 12 select HAVE_ARM_TWD if SMP
13 select HAVE_PATA_PLATFORM 13 select HAVE_PATA_PLATFORM
diff --git a/arch/arm/mach-vexpress/hotplug.c b/arch/arm/mach-vexpress/hotplug.c
index f2fafc10a91d..d8f1a05f5e87 100644
--- a/arch/arm/mach-vexpress/hotplug.c
+++ b/arch/arm/mach-vexpress/hotplug.c
@@ -15,6 +15,8 @@
15#include <asm/smp_plat.h> 15#include <asm/smp_plat.h>
16#include <asm/cp15.h> 16#include <asm/cp15.h>
17 17
18#include "core.h"
19
18static inline void cpu_enter_lowpower(void) 20static inline void cpu_enter_lowpower(void)
19{ 21{
20 unsigned int v; 22 unsigned int v;
diff --git a/arch/arm/mach-vexpress/spc.c b/arch/arm/mach-vexpress/spc.c
index 8409cab3f760..fe488523694c 100644
--- a/arch/arm/mach-vexpress/spc.c
+++ b/arch/arm/mach-vexpress/spc.c
@@ -31,6 +31,8 @@
31 31
32#include <asm/cacheflush.h> 32#include <asm/cacheflush.h>
33 33
34#include "spc.h"
35
34#define SPCLOG "vexpress-spc: " 36#define SPCLOG "vexpress-spc: "
35 37
36#define PERF_LVL_A15 0x00 38#define PERF_LVL_A15 0x00
@@ -319,17 +321,15 @@ static int ve_spc_waitforcompletion(int req_type)
319 321
320static int ve_spc_set_performance(int cluster, u32 freq) 322static int ve_spc_set_performance(int cluster, u32 freq)
321{ 323{
322 u32 perf_cfg_reg, perf_stat_reg; 324 u32 perf_cfg_reg;
323 int ret, perf, req_type; 325 int ret, perf, req_type;
324 326
325 if (cluster_is_a15(cluster)) { 327 if (cluster_is_a15(cluster)) {
326 req_type = CA15_DVFS; 328 req_type = CA15_DVFS;
327 perf_cfg_reg = PERF_LVL_A15; 329 perf_cfg_reg = PERF_LVL_A15;
328 perf_stat_reg = PERF_REQ_A15;
329 } else { 330 } else {
330 req_type = CA7_DVFS; 331 req_type = CA7_DVFS;
331 perf_cfg_reg = PERF_LVL_A7; 332 perf_cfg_reg = PERF_LVL_A7;
332 perf_stat_reg = PERF_REQ_A7;
333 } 333 }
334 334
335 perf = ve_spc_find_performance_index(cluster, freq); 335 perf = ve_spc_find_performance_index(cluster, freq);
diff --git a/arch/arm/mach-vt8500/Kconfig b/arch/arm/mach-vt8500/Kconfig
index aaaa24fe4d71..c4f1dba7bd8a 100644
--- a/arch/arm/mach-vt8500/Kconfig
+++ b/arch/arm/mach-vt8500/Kconfig
@@ -1,6 +1,6 @@
1config ARCH_VT8500 1config ARCH_VT8500
2 bool 2 bool
3 select ARCH_REQUIRE_GPIOLIB 3 select GPIOLIB
4 select CLKDEV_LOOKUP 4 select CLKDEV_LOOKUP
5 select VT8500_TIMER 5 select VT8500_TIMER
6 select PINCTRL 6 select PINCTRL
diff --git a/arch/arm/plat-iop/setup.c b/arch/arm/plat-iop/setup.c
index 5b217f460f18..8151bde990e6 100644
--- a/arch/arm/plat-iop/setup.c
+++ b/arch/arm/plat-iop/setup.c
@@ -20,12 +20,12 @@
20 * the IOP3xx OCCDR must be mapped uncached and unbuffered. 20 * the IOP3xx OCCDR must be mapped uncached and unbuffered.
21 */ 21 */
22static struct map_desc iop3xx_std_desc[] __initdata = { 22static struct map_desc iop3xx_std_desc[] __initdata = {
23 { /* mem mapped registers */ 23 { /* mem mapped registers */
24 .virtual = IOP3XX_PERIPHERAL_VIRT_BASE, 24 .virtual = IOP3XX_PERIPHERAL_VIRT_BASE,
25 .pfn = __phys_to_pfn(IOP3XX_PERIPHERAL_PHYS_BASE), 25 .pfn = __phys_to_pfn(IOP3XX_PERIPHERAL_PHYS_BASE),
26 .length = IOP3XX_PERIPHERAL_SIZE, 26 .length = IOP3XX_PERIPHERAL_SIZE,
27 .type = MT_UNCACHED, 27 .type = MT_UNCACHED,
28 }, 28 },
29}; 29};
30 30
31void __init iop3xx_map_io(void) 31void __init iop3xx_map_io(void)
diff --git a/arch/arm/plat-samsung/include/plat/cpu-freq-core.h b/arch/arm/plat-samsung/include/plat/cpu-freq-core.h
index 317c52303288..37cf20e04aff 100644
--- a/arch/arm/plat-samsung/include/plat/cpu-freq-core.h
+++ b/arch/arm/plat-samsung/include/plat/cpu-freq-core.h
@@ -39,7 +39,7 @@ struct s3c2410_iobank_timing {
39 unsigned int tacs; 39 unsigned int tacs;
40 unsigned int tcos; 40 unsigned int tcos;
41 unsigned int tacc; 41 unsigned int tacc;
42 unsigned int tcoh; /* nCS hold afrer nOE/nWE */ 42 unsigned int tcoh; /* nCS hold after nOE/nWE */
43 unsigned int tcah; /* Address hold after nCS */ 43 unsigned int tcah; /* Address hold after nCS */
44 unsigned char nwait_en; /* nWait enabled for bank. */ 44 unsigned char nwait_en; /* nWait enabled for bank. */
45}; 45};
diff --git a/arch/arm/plat-samsung/include/plat/fb-s3c2410.h b/arch/arm/plat-samsung/include/plat/fb-s3c2410.h
index 4e5d9588b5ba..1f2972a74e9f 100644
--- a/arch/arm/plat-samsung/include/plat/fb-s3c2410.h
+++ b/arch/arm/plat-samsung/include/plat/fb-s3c2410.h
@@ -48,7 +48,7 @@ struct s3c2410fb_display {
48 48
49struct s3c2410fb_mach_info { 49struct s3c2410fb_mach_info {
50 50
51 struct s3c2410fb_display *displays; /* attached diplays info */ 51 struct s3c2410fb_display *displays; /* attached displays info */
52 unsigned num_displays; /* number of defined displays */ 52 unsigned num_displays; /* number of defined displays */
53 unsigned default_display; 53 unsigned default_display;
54 54
diff --git a/arch/arm/plat-samsung/include/plat/gpio-cfg.h b/arch/arm/plat-samsung/include/plat/gpio-cfg.h
index b5294eff18b5..21391faab068 100644
--- a/arch/arm/plat-samsung/include/plat/gpio-cfg.h
+++ b/arch/arm/plat-samsung/include/plat/gpio-cfg.h
@@ -35,7 +35,7 @@ struct samsung_gpio_chip;
35 * struct samsung_gpio_cfg GPIO configuration 35 * struct samsung_gpio_cfg GPIO configuration
36 * @cfg_eint: Configuration setting when used for external interrupt source 36 * @cfg_eint: Configuration setting when used for external interrupt source
37 * @get_pull: Read the current pull configuration for the GPIO 37 * @get_pull: Read the current pull configuration for the GPIO
38 * @set_pull: Set the current pull configuraiton for the GPIO 38 * @set_pull: Set the current pull configuration for the GPIO
39 * @set_config: Set the current configuration for the GPIO 39 * @set_config: Set the current configuration for the GPIO
40 * @get_config: Read the current configuration for the GPIO 40 * @get_config: Read the current configuration for the GPIO
41 * 41 *
diff --git a/arch/arm/plat-samsung/pm-check.c b/arch/arm/plat-samsung/pm-check.c
index 70f2f699bed3..d63516374f7c 100644
--- a/arch/arm/plat-samsung/pm-check.c
+++ b/arch/arm/plat-samsung/pm-check.c
@@ -5,7 +5,7 @@
5 * http://armlinux.simtec.co.uk 5 * http://armlinux.simtec.co.uk
6 * Ben Dooks <ben@simtec.co.uk> 6 * Ben Dooks <ben@simtec.co.uk>
7 * 7 *
8 * S3C Power Mangament - suspend/resume memory corruptiuon check. 8 * S3C Power Mangament - suspend/resume memory corruption check.
9 * 9 *
10 * This program is free software; you can redistribute it and/or modify 10 * This program is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License version 2 as 11 * it under the terms of the GNU General Public License version 2 as
diff --git a/arch/arm/plat-samsung/watchdog-reset.c b/arch/arm/plat-samsung/watchdog-reset.c
index 2ecb50bea044..307d8ad96a78 100644
--- a/arch/arm/plat-samsung/watchdog-reset.c
+++ b/arch/arm/plat-samsung/watchdog-reset.c
@@ -3,7 +3,7 @@
3 * Copyright (c) 2008 Simtec Electronics 3 * Copyright (c) 2008 Simtec Electronics
4 * Ben Dooks <ben@simtec.co.uk> 4 * Ben Dooks <ben@simtec.co.uk>
5 * 5 *
6 * Coyright (c) 2013 Tomasz Figa <tomasz.figa@gmail.com> 6 * Copyright (c) 2013 Tomasz Figa <tomasz.figa@gmail.com>
7 * 7 *
8 * Watchdog reset support for Samsung SoCs. 8 * Watchdog reset support for Samsung SoCs.
9 * 9 *
diff --git a/arch/arm/plat-versatile/platsmp.c b/arch/arm/plat-versatile/platsmp.c
index 53feb90c840c..c2366510187a 100644
--- a/arch/arm/plat-versatile/platsmp.c
+++ b/arch/arm/plat-versatile/platsmp.c
@@ -18,6 +18,8 @@
18#include <asm/cacheflush.h> 18#include <asm/cacheflush.h>
19#include <asm/smp_plat.h> 19#include <asm/smp_plat.h>
20 20
21#include <plat/platsmp.h>
22
21/* 23/*
22 * Write pen_release in a way that is guaranteed to be visible to all 24 * Write pen_release in a way that is guaranteed to be visible to all
23 * observers, irrespective of whether they're taking part in coherency 25 * observers, irrespective of whether they're taking part in coherency
diff --git a/drivers/bus/mvebu-mbus.c b/drivers/bus/mvebu-mbus.c
index ce54a0160faa..c7f396903184 100644
--- a/drivers/bus/mvebu-mbus.c
+++ b/drivers/bus/mvebu-mbus.c
@@ -117,7 +117,7 @@ struct mvebu_mbus_soc_data {
117 unsigned int (*win_remap_offset)(const int win); 117 unsigned int (*win_remap_offset)(const int win);
118 void (*setup_cpu_target)(struct mvebu_mbus_state *s); 118 void (*setup_cpu_target)(struct mvebu_mbus_state *s);
119 int (*save_cpu_target)(struct mvebu_mbus_state *s, 119 int (*save_cpu_target)(struct mvebu_mbus_state *s,
120 u32 *store_addr); 120 u32 __iomem *store_addr);
121 int (*show_cpu_target)(struct mvebu_mbus_state *s, 121 int (*show_cpu_target)(struct mvebu_mbus_state *s,
122 struct seq_file *seq, void *v); 122 struct seq_file *seq, void *v);
123}; 123};
@@ -728,7 +728,7 @@ mvebu_mbus_default_setup_cpu_target(struct mvebu_mbus_state *mbus)
728 728
729static int 729static int
730mvebu_mbus_default_save_cpu_target(struct mvebu_mbus_state *mbus, 730mvebu_mbus_default_save_cpu_target(struct mvebu_mbus_state *mbus,
731 u32 *store_addr) 731 u32 __iomem *store_addr)
732{ 732{
733 int i; 733 int i;
734 734
@@ -780,7 +780,7 @@ mvebu_mbus_dove_setup_cpu_target(struct mvebu_mbus_state *mbus)
780 780
781static int 781static int
782mvebu_mbus_dove_save_cpu_target(struct mvebu_mbus_state *mbus, 782mvebu_mbus_dove_save_cpu_target(struct mvebu_mbus_state *mbus,
783 u32 *store_addr) 783 u32 __iomem *store_addr)
784{ 784{
785 int i; 785 int i;
786 786
@@ -796,7 +796,7 @@ mvebu_mbus_dove_save_cpu_target(struct mvebu_mbus_state *mbus,
796 return 4; 796 return 4;
797} 797}
798 798
799int mvebu_mbus_save_cpu_target(u32 *store_addr) 799int mvebu_mbus_save_cpu_target(u32 __iomem *store_addr)
800{ 800{
801 return mbus_state.soc->save_cpu_target(&mbus_state, store_addr); 801 return mbus_state.soc->save_cpu_target(&mbus_state, store_addr);
802} 802}
@@ -1089,7 +1089,7 @@ static void mvebu_mbus_resume(void)
1089 } 1089 }
1090} 1090}
1091 1091
1092struct syscore_ops mvebu_mbus_syscore_ops = { 1092static struct syscore_ops mvebu_mbus_syscore_ops = {
1093 .suspend = mvebu_mbus_suspend, 1093 .suspend = mvebu_mbus_suspend,
1094 .resume = mvebu_mbus_resume, 1094 .resume = mvebu_mbus_resume,
1095}; 1095};
diff --git a/drivers/power/reset/vexpress-poweroff.c b/drivers/power/reset/vexpress-poweroff.c
index 6a9bf7089373..102f95a09460 100644
--- a/drivers/power/reset/vexpress-poweroff.c
+++ b/drivers/power/reset/vexpress-poweroff.c
@@ -74,8 +74,8 @@ static ssize_t vexpress_reset_active_store(struct device *dev,
74 return err ? err : count; 74 return err ? err : count;
75} 75}
76 76
77DEVICE_ATTR(active, S_IRUGO | S_IWUSR, vexpress_reset_active_show, 77static DEVICE_ATTR(active, S_IRUGO | S_IWUSR, vexpress_reset_active_show,
78 vexpress_reset_active_store); 78 vexpress_reset_active_store);
79 79
80 80
81enum vexpress_reset_func { FUNC_RESET, FUNC_SHUTDOWN, FUNC_REBOOT }; 81enum vexpress_reset_func { FUNC_RESET, FUNC_SHUTDOWN, FUNC_REBOOT };
diff --git a/include/linux/mbus.h b/include/linux/mbus.h
index ea34a867caa0..d610232762e3 100644
--- a/include/linux/mbus.h
+++ b/include/linux/mbus.h
@@ -66,7 +66,7 @@ static inline const struct mbus_dram_target_info *mv_mbus_dram_info_nooverlap(vo
66} 66}
67#endif 67#endif
68 68
69int mvebu_mbus_save_cpu_target(u32 *store_addr); 69int mvebu_mbus_save_cpu_target(u32 __iomem *store_addr);
70void mvebu_mbus_get_pcie_mem_aperture(struct resource *res); 70void mvebu_mbus_get_pcie_mem_aperture(struct resource *res);
71void mvebu_mbus_get_pcie_io_aperture(struct resource *res); 71void mvebu_mbus_get_pcie_io_aperture(struct resource *res);
72int mvebu_mbus_get_dram_win_info(phys_addr_t phyaddr, u8 *target, u8 *attr); 72int mvebu_mbus_get_dram_win_info(phys_addr_t phyaddr, u8 *target, u8 *attr);