diff options
236 files changed, 1834 insertions, 2887 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index bf11bf5427da..4ed24b4aa714 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig | |||
@@ -362,37 +362,6 @@ config ARCH_AT91 | |||
362 | This enables support for systems based on Atmel | 362 | This enables support for systems based on Atmel |
363 | AT91RM9200 and AT91SAM9* processors. | 363 | AT91RM9200 and AT91SAM9* processors. |
364 | 364 | ||
365 | config ARCH_BCM2835 | ||
366 | bool "Broadcom BCM2835 family" | ||
367 | select ARCH_REQUIRE_GPIOLIB | ||
368 | select ARM_AMBA | ||
369 | select ARM_ERRATA_411920 | ||
370 | select ARM_TIMER_SP804 | ||
371 | select CLKDEV_LOOKUP | ||
372 | select CLKSRC_OF | ||
373 | select COMMON_CLK | ||
374 | select CPU_V6 | ||
375 | select GENERIC_CLOCKEVENTS | ||
376 | select MULTI_IRQ_HANDLER | ||
377 | select PINCTRL | ||
378 | select PINCTRL_BCM2835 | ||
379 | select SPARSE_IRQ | ||
380 | select USE_OF | ||
381 | help | ||
382 | This enables support for the Broadcom BCM2835 SoC. This SoC is | ||
383 | use in the Raspberry Pi, and Roku 2 devices. | ||
384 | |||
385 | config ARCH_CNS3XXX | ||
386 | bool "Cavium Networks CNS3XXX family" | ||
387 | select ARM_GIC | ||
388 | select CPU_V6K | ||
389 | select GENERIC_CLOCKEVENTS | ||
390 | select MIGHT_HAVE_CACHE_L2X0 | ||
391 | select MIGHT_HAVE_PCI | ||
392 | select PCI_DOMAINS if PCI | ||
393 | help | ||
394 | Support for Cavium Networks CNS3XXX platform. | ||
395 | |||
396 | config ARCH_CLPS711X | 365 | config ARCH_CLPS711X |
397 | bool "Cirrus Logic CLPS711x/EP721x/EP731x-based" | 366 | bool "Cirrus Logic CLPS711x/EP721x/EP731x-based" |
398 | select ARCH_REQUIRE_GPIOLIB | 367 | select ARCH_REQUIRE_GPIOLIB |
@@ -416,21 +385,6 @@ config ARCH_GEMINI | |||
416 | help | 385 | help |
417 | Support for the Cortina Systems Gemini family SoCs | 386 | Support for the Cortina Systems Gemini family SoCs |
418 | 387 | ||
419 | config ARCH_SIRF | ||
420 | bool "CSR SiRF" | ||
421 | select ARCH_REQUIRE_GPIOLIB | ||
422 | select AUTO_ZRELADDR | ||
423 | select COMMON_CLK | ||
424 | select GENERIC_CLOCKEVENTS | ||
425 | select GENERIC_IRQ_CHIP | ||
426 | select MIGHT_HAVE_CACHE_L2X0 | ||
427 | select NO_IOPORT | ||
428 | select PINCTRL | ||
429 | select PINCTRL_SIRF | ||
430 | select USE_OF | ||
431 | help | ||
432 | Support for CSR SiRFprimaII/Marco/Polo platforms | ||
433 | |||
434 | config ARCH_EBSA110 | 388 | config ARCH_EBSA110 |
435 | bool "EBSA-110" | 389 | bool "EBSA-110" |
436 | select ARCH_USES_GETTIMEOFFSET | 390 | select ARCH_USES_GETTIMEOFFSET |
@@ -470,23 +424,6 @@ config ARCH_FOOTBRIDGE | |||
470 | Support for systems based on the DC21285 companion chip | 424 | Support for systems based on the DC21285 companion chip |
471 | ("FootBridge"), such as the Simtec CATS and the Rebel NetWinder. | 425 | ("FootBridge"), such as the Simtec CATS and the Rebel NetWinder. |
472 | 426 | ||
473 | config ARCH_MXS | ||
474 | bool "Freescale MXS-based" | ||
475 | select ARCH_REQUIRE_GPIOLIB | ||
476 | select CLKDEV_LOOKUP | ||
477 | select CLKSRC_MMIO | ||
478 | select CLKSRC_OF | ||
479 | select COMMON_CLK | ||
480 | select GENERIC_CLOCKEVENTS | ||
481 | select HAVE_CLK_PREPARE | ||
482 | select MULTI_IRQ_HANDLER | ||
483 | select PINCTRL | ||
484 | select SPARSE_IRQ | ||
485 | select STMP_DEVICE | ||
486 | select USE_OF | ||
487 | help | ||
488 | Support for Freescale MXS-based family of processors | ||
489 | |||
490 | config ARCH_NETX | 427 | config ARCH_NETX |
491 | bool "Hilscher NetX based" | 428 | bool "Hilscher NetX based" |
492 | select ARM_VIC | 429 | select ARM_VIC |
@@ -659,25 +596,6 @@ config ARCH_LPC32XX | |||
659 | help | 596 | help |
660 | Support for the NXP LPC32XX family of processors | 597 | Support for the NXP LPC32XX family of processors |
661 | 598 | ||
662 | config ARCH_TEGRA | ||
663 | bool "NVIDIA Tegra" | ||
664 | select ARCH_HAS_CPUFREQ | ||
665 | select ARCH_REQUIRE_GPIOLIB | ||
666 | select CLKDEV_LOOKUP | ||
667 | select CLKSRC_MMIO | ||
668 | select CLKSRC_OF | ||
669 | select COMMON_CLK | ||
670 | select GENERIC_CLOCKEVENTS | ||
671 | select HAVE_CLK | ||
672 | select HAVE_SMP | ||
673 | select MIGHT_HAVE_CACHE_L2X0 | ||
674 | select SOC_BUS | ||
675 | select SPARSE_IRQ | ||
676 | select USE_OF | ||
677 | help | ||
678 | This enables support for NVIDIA Tegra based systems (Tegra APX, | ||
679 | Tegra 6xx and Tegra 2 series). | ||
680 | |||
681 | config ARCH_PXA | 599 | config ARCH_PXA |
682 | bool "PXA2xx/PXA3xx-based" | 600 | bool "PXA2xx/PXA3xx-based" |
683 | depends on MMU | 601 | depends on MMU |
@@ -715,6 +633,8 @@ config ARCH_SHMOBILE | |||
715 | bool "Renesas SH-Mobile / R-Mobile" | 633 | bool "Renesas SH-Mobile / R-Mobile" |
716 | select CLKDEV_LOOKUP | 634 | select CLKDEV_LOOKUP |
717 | select GENERIC_CLOCKEVENTS | 635 | select GENERIC_CLOCKEVENTS |
636 | select HAVE_ARM_SCU if SMP | ||
637 | select HAVE_ARM_TWD if LOCAL_TIMERS | ||
718 | select HAVE_CLK | 638 | select HAVE_CLK |
719 | select HAVE_MACH_CLKDEV | 639 | select HAVE_MACH_CLKDEV |
720 | select HAVE_SMP | 640 | select HAVE_SMP |
@@ -900,51 +820,6 @@ config ARCH_U300 | |||
900 | help | 820 | help |
901 | Support for ST-Ericsson U300 series mobile platforms. | 821 | Support for ST-Ericsson U300 series mobile platforms. |
902 | 822 | ||
903 | config ARCH_U8500 | ||
904 | bool "ST-Ericsson U8500 Series" | ||
905 | depends on MMU | ||
906 | select ARCH_HAS_CPUFREQ | ||
907 | select ARCH_REQUIRE_GPIOLIB | ||
908 | select ARM_AMBA | ||
909 | select CLKDEV_LOOKUP | ||
910 | select CPU_V7 | ||
911 | select GENERIC_CLOCKEVENTS | ||
912 | select HAVE_SMP | ||
913 | select MIGHT_HAVE_CACHE_L2X0 | ||
914 | select SPARSE_IRQ | ||
915 | help | ||
916 | Support for ST-Ericsson's Ux500 architecture | ||
917 | |||
918 | config ARCH_NOMADIK | ||
919 | bool "STMicroelectronics Nomadik" | ||
920 | select ARCH_REQUIRE_GPIOLIB | ||
921 | select ARM_AMBA | ||
922 | select ARM_VIC | ||
923 | select CLKSRC_NOMADIK_MTU | ||
924 | select COMMON_CLK | ||
925 | select CPU_ARM926T | ||
926 | select GENERIC_CLOCKEVENTS | ||
927 | select MIGHT_HAVE_CACHE_L2X0 | ||
928 | select USE_OF | ||
929 | select PINCTRL | ||
930 | select PINCTRL_STN8815 | ||
931 | select SPARSE_IRQ | ||
932 | help | ||
933 | Support for the Nomadik platform by ST-Ericsson | ||
934 | |||
935 | config PLAT_SPEAR | ||
936 | bool "ST SPEAr" | ||
937 | select ARCH_HAS_CPUFREQ | ||
938 | select ARCH_REQUIRE_GPIOLIB | ||
939 | select ARM_AMBA | ||
940 | select CLKDEV_LOOKUP | ||
941 | select CLKSRC_MMIO | ||
942 | select COMMON_CLK | ||
943 | select GENERIC_CLOCKEVENTS | ||
944 | select HAVE_CLK | ||
945 | help | ||
946 | Support for ST's SPEAr platform (SPEAr3xx, SPEAr6xx and SPEAr13xx). | ||
947 | |||
948 | config ARCH_DAVINCI | 823 | config ARCH_DAVINCI |
949 | bool "TI DaVinci" | 824 | bool "TI DaVinci" |
950 | select ARCH_HAS_HOLES_MEMORYMODEL | 825 | select ARCH_HAS_HOLES_MEMORYMODEL |
@@ -1036,6 +911,8 @@ source "arch/arm/mach-at91/Kconfig" | |||
1036 | 911 | ||
1037 | source "arch/arm/mach-bcm/Kconfig" | 912 | source "arch/arm/mach-bcm/Kconfig" |
1038 | 913 | ||
914 | source "arch/arm/mach-bcm2835/Kconfig" | ||
915 | |||
1039 | source "arch/arm/mach-clps711x/Kconfig" | 916 | source "arch/arm/mach-clps711x/Kconfig" |
1040 | 917 | ||
1041 | source "arch/arm/mach-cns3xxx/Kconfig" | 918 | source "arch/arm/mach-cns3xxx/Kconfig" |
@@ -1101,7 +978,7 @@ source "arch/arm/plat-samsung/Kconfig" | |||
1101 | 978 | ||
1102 | source "arch/arm/mach-socfpga/Kconfig" | 979 | source "arch/arm/mach-socfpga/Kconfig" |
1103 | 980 | ||
1104 | source "arch/arm/plat-spear/Kconfig" | 981 | source "arch/arm/mach-spear/Kconfig" |
1105 | 982 | ||
1106 | source "arch/arm/mach-s3c24xx/Kconfig" | 983 | source "arch/arm/mach-s3c24xx/Kconfig" |
1107 | 984 | ||
@@ -1528,7 +1405,6 @@ config SMP | |||
1528 | depends on GENERIC_CLOCKEVENTS | 1405 | depends on GENERIC_CLOCKEVENTS |
1529 | depends on HAVE_SMP | 1406 | depends on HAVE_SMP |
1530 | depends on MMU | 1407 | depends on MMU |
1531 | select HAVE_ARM_SCU if !ARCH_MSM_SCORPIONMP | ||
1532 | select USE_GENERIC_SMP_HELPERS | 1408 | select USE_GENERIC_SMP_HELPERS |
1533 | help | 1409 | help |
1534 | This enables support for systems with more than one CPU. If you have | 1410 | This enables support for systems with more than one CPU. If you have |
@@ -1653,7 +1529,6 @@ config LOCAL_TIMERS | |||
1653 | bool "Use local timer interrupts" | 1529 | bool "Use local timer interrupts" |
1654 | depends on SMP | 1530 | depends on SMP |
1655 | default y | 1531 | default y |
1656 | select HAVE_ARM_TWD if (!ARCH_MSM_SCORPIONMP && !EXYNOS4_MCT) | ||
1657 | help | 1532 | help |
1658 | Enable support for local timers on SMP platforms, rather then the | 1533 | Enable support for local timers on SMP platforms, rather then the |
1659 | legacy IPI broadcast method. Local timers allows the system | 1534 | legacy IPI broadcast method. Local timers allows the system |
diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug index 9b31f4311ea2..54d6fdc03e04 100644 --- a/arch/arm/Kconfig.debug +++ b/arch/arm/Kconfig.debug | |||
@@ -89,6 +89,10 @@ choice | |||
89 | bool "Kernel low-level debugging on 9263 and 9g45" | 89 | bool "Kernel low-level debugging on 9263 and 9g45" |
90 | depends on HAVE_AT91_DBGU1 | 90 | depends on HAVE_AT91_DBGU1 |
91 | 91 | ||
92 | config DEBUG_BCM2835 | ||
93 | bool "Kernel low-level debugging on BCM2835 PL011 UART" | ||
94 | depends on ARCH_BCM2835 | ||
95 | |||
92 | config DEBUG_CLPS711X_UART1 | 96 | config DEBUG_CLPS711X_UART1 |
93 | bool "Kernel low-level debugging messages via UART1" | 97 | bool "Kernel low-level debugging messages via UART1" |
94 | depends on ARCH_CLPS711X | 98 | depends on ARCH_CLPS711X |
@@ -103,6 +107,13 @@ choice | |||
103 | Say Y here if you want the debug print routines to direct | 107 | Say Y here if you want the debug print routines to direct |
104 | their output to the second serial port on these devices. | 108 | their output to the second serial port on these devices. |
105 | 109 | ||
110 | config DEBUG_CNS3XXX | ||
111 | bool "Kernel Kernel low-level debugging on Cavium Networks CNS3xxx" | ||
112 | depends on ARCH_CNS3XXX | ||
113 | help | ||
114 | Say Y here if you want the debug print routines to direct | ||
115 | their output to the CNS3xxx UART0. | ||
116 | |||
106 | config DEBUG_DAVINCI_DA8XX_UART1 | 117 | config DEBUG_DAVINCI_DA8XX_UART1 |
107 | bool "Kernel low-level debugging on DaVinci DA8XX using UART1" | 118 | bool "Kernel low-level debugging on DaVinci DA8XX using UART1" |
108 | depends on ARCH_DAVINCI_DA8XX | 119 | depends on ARCH_DAVINCI_DA8XX |
@@ -298,6 +309,13 @@ choice | |||
298 | Say Y here if you want kernel low-level debugging support | 309 | Say Y here if you want kernel low-level debugging support |
299 | on MVEBU based platforms. | 310 | on MVEBU based platforms. |
300 | 311 | ||
312 | config DEBUG_NOMADIK_UART | ||
313 | bool "Kernel low-level debugging messages via NOMADIK UART" | ||
314 | depends on ARCH_NOMADIK | ||
315 | help | ||
316 | Say Y here if you want kernel low-level debugging support | ||
317 | on NOMADIK based platforms. | ||
318 | |||
301 | config DEBUG_OMAP2PLUS_UART | 319 | config DEBUG_OMAP2PLUS_UART |
302 | bool "Kernel low-level debugging messages via OMAP2PLUS UART" | 320 | bool "Kernel low-level debugging messages via OMAP2PLUS UART" |
303 | depends on ARCH_OMAP2PLUS | 321 | depends on ARCH_OMAP2PLUS |
@@ -330,6 +348,7 @@ choice | |||
330 | 348 | ||
331 | config DEBUG_S3C_UART0 | 349 | config DEBUG_S3C_UART0 |
332 | depends on PLAT_SAMSUNG | 350 | depends on PLAT_SAMSUNG |
351 | select DEBUG_EXYNOS_UART if ARCH_EXYNOS | ||
333 | bool "Use S3C UART 0 for low-level debug" | 352 | bool "Use S3C UART 0 for low-level debug" |
334 | help | 353 | help |
335 | Say Y here if you want the debug print routines to direct | 354 | Say Y here if you want the debug print routines to direct |
@@ -341,6 +360,7 @@ choice | |||
341 | 360 | ||
342 | config DEBUG_S3C_UART1 | 361 | config DEBUG_S3C_UART1 |
343 | depends on PLAT_SAMSUNG | 362 | depends on PLAT_SAMSUNG |
363 | select DEBUG_EXYNOS_UART if ARCH_EXYNOS | ||
344 | bool "Use S3C UART 1 for low-level debug" | 364 | bool "Use S3C UART 1 for low-level debug" |
345 | help | 365 | help |
346 | Say Y here if you want the debug print routines to direct | 366 | Say Y here if you want the debug print routines to direct |
@@ -352,6 +372,7 @@ choice | |||
352 | 372 | ||
353 | config DEBUG_S3C_UART2 | 373 | config DEBUG_S3C_UART2 |
354 | depends on PLAT_SAMSUNG | 374 | depends on PLAT_SAMSUNG |
375 | select DEBUG_EXYNOS_UART if ARCH_EXYNOS | ||
355 | bool "Use S3C UART 2 for low-level debug" | 376 | bool "Use S3C UART 2 for low-level debug" |
356 | help | 377 | help |
357 | Say Y here if you want the debug print routines to direct | 378 | Say Y here if you want the debug print routines to direct |
@@ -363,6 +384,7 @@ choice | |||
363 | 384 | ||
364 | config DEBUG_S3C_UART3 | 385 | config DEBUG_S3C_UART3 |
365 | depends on PLAT_SAMSUNG && ARCH_EXYNOS | 386 | depends on PLAT_SAMSUNG && ARCH_EXYNOS |
387 | select DEBUG_EXYNOS_UART | ||
366 | bool "Use S3C UART 3 for low-level debug" | 388 | bool "Use S3C UART 3 for low-level debug" |
367 | help | 389 | help |
368 | Say Y here if you want the debug print routines to direct | 390 | Say Y here if you want the debug print routines to direct |
@@ -414,6 +436,13 @@ choice | |||
414 | Say Y here if you want the debug print routines to direct | 436 | Say Y here if you want the debug print routines to direct |
415 | their output to the uart1 port on SiRFmarco devices. | 437 | their output to the uart1 port on SiRFmarco devices. |
416 | 438 | ||
439 | config DEBUG_UX500_UART | ||
440 | depends on ARCH_U8500 | ||
441 | bool "Use Ux500 UART for low-level debug" | ||
442 | help | ||
443 | Say Y here if you want kernel low-level debugging support | ||
444 | on Ux500 based platforms. | ||
445 | |||
417 | config DEBUG_VEXPRESS_UART0_DETECT | 446 | config DEBUG_VEXPRESS_UART0_DETECT |
418 | bool "Autodetect UART0 on Versatile Express Cortex-A core tiles" | 447 | bool "Autodetect UART0 on Versatile Express Cortex-A core tiles" |
419 | depends on ARCH_VEXPRESS && CPU_CP15_MMU | 448 | depends on ARCH_VEXPRESS && CPU_CP15_MMU |
@@ -485,6 +514,9 @@ choice | |||
485 | 514 | ||
486 | endchoice | 515 | endchoice |
487 | 516 | ||
517 | config DEBUG_EXYNOS_UART | ||
518 | bool | ||
519 | |||
488 | config DEBUG_IMX_UART_PORT | 520 | config DEBUG_IMX_UART_PORT |
489 | int "i.MX Debug UART Port Selection" if DEBUG_IMX1_UART || \ | 521 | int "i.MX Debug UART Port Selection" if DEBUG_IMX1_UART || \ |
490 | DEBUG_IMX25_UART || \ | 522 | DEBUG_IMX25_UART || \ |
@@ -580,6 +612,9 @@ endchoice | |||
580 | 612 | ||
581 | config DEBUG_LL_INCLUDE | 613 | config DEBUG_LL_INCLUDE |
582 | string | 614 | string |
615 | default "debug/bcm2835.S" if DEBUG_BCM2835 | ||
616 | default "debug/cns3xxx.S" if DEBUG_CNS3XXX | ||
617 | default "debug/exynos.S" if DEBUG_EXYNOS_UART | ||
583 | default "debug/icedcc.S" if DEBUG_ICEDCC | 618 | default "debug/icedcc.S" if DEBUG_ICEDCC |
584 | default "debug/imx.S" if DEBUG_IMX1_UART || \ | 619 | default "debug/imx.S" if DEBUG_IMX1_UART || \ |
585 | DEBUG_IMX25_UART || \ | 620 | DEBUG_IMX25_UART || \ |
@@ -591,14 +626,18 @@ config DEBUG_LL_INCLUDE | |||
591 | DEBUG_IMX6Q_UART | 626 | DEBUG_IMX6Q_UART |
592 | default "debug/highbank.S" if DEBUG_HIGHBANK_UART | 627 | default "debug/highbank.S" if DEBUG_HIGHBANK_UART |
593 | default "debug/mvebu.S" if DEBUG_MVEBU_UART | 628 | default "debug/mvebu.S" if DEBUG_MVEBU_UART |
629 | default "debug/mxs.S" if DEBUG_IMX23_UART || DEBUG_IMX28_UART | ||
630 | default "debug/nomadik.S" if DEBUG_NOMADIK_UART | ||
594 | default "debug/omap2plus.S" if DEBUG_OMAP2PLUS_UART | 631 | default "debug/omap2plus.S" if DEBUG_OMAP2PLUS_UART |
595 | default "debug/picoxcell.S" if DEBUG_PICOXCELL_UART | 632 | default "debug/picoxcell.S" if DEBUG_PICOXCELL_UART |
633 | default "debug/sirf.S" if DEBUG_SIRFPRIMA2_UART1 || DEBUG_SIRFMARCO_UART1 | ||
596 | default "debug/socfpga.S" if DEBUG_SOCFPGA_UART | 634 | default "debug/socfpga.S" if DEBUG_SOCFPGA_UART |
597 | default "debug/sunxi.S" if DEBUG_SUNXI_UART0 || DEBUG_SUNXI_UART1 | 635 | default "debug/sunxi.S" if DEBUG_SUNXI_UART0 || DEBUG_SUNXI_UART1 |
598 | default "debug/vexpress.S" if DEBUG_VEXPRESS_UART0_DETECT || \ | 636 | default "debug/vexpress.S" if DEBUG_VEXPRESS_UART0_DETECT || \ |
599 | DEBUG_VEXPRESS_UART0_CA9 || DEBUG_VEXPRESS_UART0_RS1 | 637 | DEBUG_VEXPRESS_UART0_CA9 || DEBUG_VEXPRESS_UART0_RS1 |
600 | default "debug/vt8500.S" if DEBUG_VT8500_UART0 | 638 | default "debug/vt8500.S" if DEBUG_VT8500_UART0 |
601 | default "debug/tegra.S" if DEBUG_TEGRA_UART | 639 | default "debug/tegra.S" if DEBUG_TEGRA_UART |
640 | default "debug/ux500.S" if DEBUG_UX500_UART | ||
602 | default "debug/zynq.S" if DEBUG_ZYNQ_UART0 || DEBUG_ZYNQ_UART1 | 641 | default "debug/zynq.S" if DEBUG_ZYNQ_UART0 || DEBUG_ZYNQ_UART1 |
603 | default "mach/debug-macro.S" | 642 | default "mach/debug-macro.S" |
604 | 643 | ||
diff --git a/arch/arm/Makefile b/arch/arm/Makefile index e4d1d23916b0..47374085befd 100644 --- a/arch/arm/Makefile +++ b/arch/arm/Makefile | |||
@@ -190,9 +190,7 @@ machine-$(CONFIG_ARCH_VT8500) += vt8500 | |||
190 | machine-$(CONFIG_ARCH_W90X900) += w90x900 | 190 | machine-$(CONFIG_ARCH_W90X900) += w90x900 |
191 | machine-$(CONFIG_FOOTBRIDGE) += footbridge | 191 | machine-$(CONFIG_FOOTBRIDGE) += footbridge |
192 | machine-$(CONFIG_ARCH_SOCFPGA) += socfpga | 192 | machine-$(CONFIG_ARCH_SOCFPGA) += socfpga |
193 | machine-$(CONFIG_ARCH_SPEAR13XX) += spear13xx | 193 | machine-$(CONFIG_PLAT_SPEAR) += spear |
194 | machine-$(CONFIG_ARCH_SPEAR3XX) += spear3xx | ||
195 | machine-$(CONFIG_MACH_SPEAR600) += spear6xx | ||
196 | machine-$(CONFIG_ARCH_VIRT) += virt | 194 | machine-$(CONFIG_ARCH_VIRT) += virt |
197 | machine-$(CONFIG_ARCH_ZYNQ) += zynq | 195 | machine-$(CONFIG_ARCH_ZYNQ) += zynq |
198 | machine-$(CONFIG_ARCH_SUNXI) += sunxi | 196 | machine-$(CONFIG_ARCH_SUNXI) += sunxi |
@@ -206,7 +204,6 @@ plat-$(CONFIG_PLAT_ORION) += orion | |||
206 | plat-$(CONFIG_PLAT_PXA) += pxa | 204 | plat-$(CONFIG_PLAT_PXA) += pxa |
207 | plat-$(CONFIG_PLAT_S3C24XX) += samsung | 205 | plat-$(CONFIG_PLAT_S3C24XX) += samsung |
208 | plat-$(CONFIG_PLAT_S5P) += samsung | 206 | plat-$(CONFIG_PLAT_S5P) += samsung |
209 | plat-$(CONFIG_PLAT_SPEAR) += spear | ||
210 | plat-$(CONFIG_PLAT_VERSATILE) += versatile | 207 | plat-$(CONFIG_PLAT_VERSATILE) += versatile |
211 | 208 | ||
212 | ifeq ($(CONFIG_ARCH_EBSA110),y) | 209 | ifeq ($(CONFIG_ARCH_EBSA110),y) |
diff --git a/arch/arm/configs/bcm2835_defconfig b/arch/arm/configs/bcm2835_defconfig index abc7c8d4631b..ce987211a609 100644 --- a/arch/arm/configs/bcm2835_defconfig +++ b/arch/arm/configs/bcm2835_defconfig | |||
@@ -29,6 +29,8 @@ CONFIG_EMBEDDED=y | |||
29 | CONFIG_PROFILING=y | 29 | CONFIG_PROFILING=y |
30 | CONFIG_OPROFILE=y | 30 | CONFIG_OPROFILE=y |
31 | CONFIG_JUMP_LABEL=y | 31 | CONFIG_JUMP_LABEL=y |
32 | CONFIG_ARCH_MULTI_V6=y | ||
33 | # CONFIG_ARCH_MULTI_V7 is not set | ||
32 | CONFIG_ARCH_BCM2835=y | 34 | CONFIG_ARCH_BCM2835=y |
33 | CONFIG_PREEMPT_VOLUNTARY=y | 35 | CONFIG_PREEMPT_VOLUNTARY=y |
34 | CONFIG_AEABI=y | 36 | CONFIG_AEABI=y |
diff --git a/arch/arm/configs/cns3420vb_defconfig b/arch/arm/configs/cns3420vb_defconfig index 313627adf46c..b1ff5cdba9a1 100644 --- a/arch/arm/configs/cns3420vb_defconfig +++ b/arch/arm/configs/cns3420vb_defconfig | |||
@@ -19,8 +19,11 @@ CONFIG_MODULE_FORCE_UNLOAD=y | |||
19 | CONFIG_MODVERSIONS=y | 19 | CONFIG_MODVERSIONS=y |
20 | # CONFIG_BLK_DEV_BSG is not set | 20 | # CONFIG_BLK_DEV_BSG is not set |
21 | CONFIG_IOSCHED_CFQ=m | 21 | CONFIG_IOSCHED_CFQ=m |
22 | CONFIG_ARCH_MULTI_V6=y | ||
23 | #CONFIG_ARCH_MULTI_V7 is not set | ||
22 | CONFIG_ARCH_CNS3XXX=y | 24 | CONFIG_ARCH_CNS3XXX=y |
23 | CONFIG_MACH_CNS3420VB=y | 25 | CONFIG_MACH_CNS3420VB=y |
26 | CONFIG_DEBUG_CNS3XXX=y | ||
24 | CONFIG_AEABI=y | 27 | CONFIG_AEABI=y |
25 | CONFIG_ZBOOT_ROM_TEXT=0x0 | 28 | CONFIG_ZBOOT_ROM_TEXT=0x0 |
26 | CONFIG_ZBOOT_ROM_BSS=0x0 | 29 | CONFIG_ZBOOT_ROM_BSS=0x0 |
diff --git a/arch/arm/configs/multi_v7_defconfig b/arch/arm/configs/multi_v7_defconfig index e31d442343c8..2e67a272df70 100644 --- a/arch/arm/configs/multi_v7_defconfig +++ b/arch/arm/configs/multi_v7_defconfig | |||
@@ -3,13 +3,19 @@ CONFIG_NO_HZ=y | |||
3 | CONFIG_HIGH_RES_TIMERS=y | 3 | CONFIG_HIGH_RES_TIMERS=y |
4 | CONFIG_ARCH_MVEBU=y | 4 | CONFIG_ARCH_MVEBU=y |
5 | CONFIG_MACH_ARMADA_370=y | 5 | CONFIG_MACH_ARMADA_370=y |
6 | CONFIG_ARCH_SIRF=y | ||
6 | CONFIG_MACH_ARMADA_XP=y | 7 | CONFIG_MACH_ARMADA_XP=y |
7 | CONFIG_ARCH_HIGHBANK=y | 8 | CONFIG_ARCH_HIGHBANK=y |
8 | CONFIG_ARCH_SOCFPGA=y | 9 | CONFIG_ARCH_SOCFPGA=y |
9 | CONFIG_ARCH_SUNXI=y | 10 | CONFIG_ARCH_SUNXI=y |
11 | CONFIG_ARCH_WM8850=y | ||
10 | # CONFIG_ARCH_VEXPRESS_CORTEX_A5_A9_ERRATA is not set | 12 | # CONFIG_ARCH_VEXPRESS_CORTEX_A5_A9_ERRATA is not set |
11 | CONFIG_ARCH_ZYNQ=y | 13 | CONFIG_ARCH_ZYNQ=y |
12 | CONFIG_ARM_ERRATA_754322=y | 14 | CONFIG_ARM_ERRATA_754322=y |
15 | CONFIG_PLAT_SPEAR=y | ||
16 | CONFIG_ARCH_SPEAR13XX=y | ||
17 | CONFIG_MACH_SPEAR1310=y | ||
18 | CONFIG_MACH_SPEAR1340=y | ||
13 | CONFIG_SMP=y | 19 | CONFIG_SMP=y |
14 | CONFIG_ARM_ARCH_TIMER=y | 20 | CONFIG_ARM_ARCH_TIMER=y |
15 | CONFIG_AEABI=y | 21 | CONFIG_AEABI=y |
@@ -23,6 +29,7 @@ CONFIG_BLK_DEV_SD=y | |||
23 | CONFIG_ATA=y | 29 | CONFIG_ATA=y |
24 | CONFIG_SATA_HIGHBANK=y | 30 | CONFIG_SATA_HIGHBANK=y |
25 | CONFIG_SATA_MV=y | 31 | CONFIG_SATA_MV=y |
32 | CONFIG_SATA_AHCI_PLATFORM=y | ||
26 | CONFIG_NETDEVICES=y | 33 | CONFIG_NETDEVICES=y |
27 | CONFIG_NET_CALXEDA_XGMAC=y | 34 | CONFIG_NET_CALXEDA_XGMAC=y |
28 | CONFIG_SMSC911X=y | 35 | CONFIG_SMSC911X=y |
@@ -31,17 +38,26 @@ CONFIG_SERIO_AMBAKMI=y | |||
31 | CONFIG_SERIAL_8250=y | 38 | CONFIG_SERIAL_8250=y |
32 | CONFIG_SERIAL_8250_CONSOLE=y | 39 | CONFIG_SERIAL_8250_CONSOLE=y |
33 | CONFIG_SERIAL_8250_DW=y | 40 | CONFIG_SERIAL_8250_DW=y |
41 | CONFIG_KEYBOARD_SPEAR=y | ||
34 | CONFIG_SERIAL_AMBA_PL011=y | 42 | CONFIG_SERIAL_AMBA_PL011=y |
35 | CONFIG_SERIAL_AMBA_PL011_CONSOLE=y | 43 | CONFIG_SERIAL_AMBA_PL011_CONSOLE=y |
36 | CONFIG_SERIAL_OF_PLATFORM=y | 44 | CONFIG_SERIAL_OF_PLATFORM=y |
45 | CONFIG_SERIAL_SIRFSOC=y | ||
46 | CONFIG_SERIAL_SIRFSOC_CONSOLE=y | ||
47 | CONFIG_SERIAL_VT8500=y | ||
48 | CONFIG_SERIAL_VT8500_CONSOLE=y | ||
37 | CONFIG_IPMI_HANDLER=y | 49 | CONFIG_IPMI_HANDLER=y |
38 | CONFIG_IPMI_SI=y | 50 | CONFIG_IPMI_SI=y |
39 | CONFIG_I2C=y | 51 | CONFIG_I2C=y |
40 | CONFIG_I2C_DESIGNWARE_PLATFORM=y | 52 | CONFIG_I2C_DESIGNWARE_PLATFORM=y |
53 | CONFIG_I2C_SIRF=y | ||
41 | CONFIG_SPI=y | 54 | CONFIG_SPI=y |
42 | CONFIG_SPI_PL022=y | 55 | CONFIG_SPI_PL022=y |
56 | CONFIG_SPI_SIRF=y | ||
57 | CONFIG_GPIO_PL061=y | ||
43 | CONFIG_FB=y | 58 | CONFIG_FB=y |
44 | CONFIG_FB_ARMCLCD=y | 59 | CONFIG_FB_ARMCLCD=y |
60 | CONFIG_FB_WM8505=y | ||
45 | CONFIG_FRAMEBUFFER_CONSOLE=y | 61 | CONFIG_FRAMEBUFFER_CONSOLE=y |
46 | CONFIG_USB=y | 62 | CONFIG_USB=y |
47 | CONFIG_USB_ISP1760_HCD=y | 63 | CONFIG_USB_ISP1760_HCD=y |
@@ -50,11 +66,18 @@ CONFIG_MMC=y | |||
50 | CONFIG_MMC_ARMMMCI=y | 66 | CONFIG_MMC_ARMMMCI=y |
51 | CONFIG_MMC_SDHCI=y | 67 | CONFIG_MMC_SDHCI=y |
52 | CONFIG_MMC_SDHCI_PLTFM=y | 68 | CONFIG_MMC_SDHCI_PLTFM=y |
69 | CONFIG_MMC_SDHCI_SPEAR=y | ||
70 | CONFIG_MMC_WMT=y | ||
53 | CONFIG_EDAC=y | 71 | CONFIG_EDAC=y |
54 | CONFIG_EDAC_MM_EDAC=y | 72 | CONFIG_EDAC_MM_EDAC=y |
55 | CONFIG_EDAC_HIGHBANK_MC=y | 73 | CONFIG_EDAC_HIGHBANK_MC=y |
56 | CONFIG_EDAC_HIGHBANK_L2=y | 74 | CONFIG_EDAC_HIGHBANK_L2=y |
57 | CONFIG_RTC_CLASS=y | 75 | CONFIG_RTC_CLASS=y |
58 | CONFIG_RTC_DRV_PL031=y | 76 | CONFIG_RTC_DRV_PL031=y |
77 | CONFIG_RTC_DRV_VT8500=y | ||
78 | CONFIG_PWM=y | ||
79 | CONFIG_PWM_VT8500=y | ||
59 | CONFIG_DMADEVICES=y | 80 | CONFIG_DMADEVICES=y |
60 | CONFIG_PL330_DMA=y | 81 | CONFIG_PL330_DMA=y |
82 | CONFIG_SIRF_DMA=y | ||
83 | CONFIG_DW_DMAC=y | ||
diff --git a/arch/arm/configs/mxs_defconfig b/arch/arm/configs/mxs_defconfig index 7ba48d22bcd9..1d6d8fb7f4a1 100644 --- a/arch/arm/configs/mxs_defconfig +++ b/arch/arm/configs/mxs_defconfig | |||
@@ -22,8 +22,8 @@ CONFIG_MODVERSIONS=y | |||
22 | CONFIG_BLK_DEV_INTEGRITY=y | 22 | CONFIG_BLK_DEV_INTEGRITY=y |
23 | # CONFIG_IOSCHED_DEADLINE is not set | 23 | # CONFIG_IOSCHED_DEADLINE is not set |
24 | # CONFIG_IOSCHED_CFQ is not set | 24 | # CONFIG_IOSCHED_CFQ is not set |
25 | # CONFIG_ARCH_MULTI_V7 is not set | ||
25 | CONFIG_ARCH_MXS=y | 26 | CONFIG_ARCH_MXS=y |
26 | CONFIG_MACH_MXS_DT=y | ||
27 | # CONFIG_ARM_THUMB is not set | 27 | # CONFIG_ARM_THUMB is not set |
28 | CONFIG_PREEMPT_VOLUNTARY=y | 28 | CONFIG_PREEMPT_VOLUNTARY=y |
29 | CONFIG_AEABI=y | 29 | CONFIG_AEABI=y |
diff --git a/arch/arm/configs/nhk8815_defconfig b/arch/arm/configs/nhk8815_defconfig index 86cfd2959c47..b01e7632ed2e 100644 --- a/arch/arm/configs/nhk8815_defconfig +++ b/arch/arm/configs/nhk8815_defconfig | |||
@@ -1,11 +1,9 @@ | |||
1 | CONFIG_EXPERIMENTAL=y | ||
2 | # CONFIG_LOCALVERSION_AUTO is not set | 1 | # CONFIG_LOCALVERSION_AUTO is not set |
3 | # CONFIG_SWAP is not set | 2 | # CONFIG_SWAP is not set |
4 | CONFIG_SYSVIPC=y | 3 | CONFIG_SYSVIPC=y |
5 | CONFIG_IKCONFIG=y | 4 | CONFIG_IKCONFIG=y |
6 | CONFIG_IKCONFIG_PROC=y | 5 | CONFIG_IKCONFIG_PROC=y |
7 | CONFIG_LOG_BUF_SHIFT=14 | 6 | CONFIG_LOG_BUF_SHIFT=14 |
8 | CONFIG_SYSFS_DEPRECATED_V2=y | ||
9 | CONFIG_BLK_DEV_INITRD=y | 7 | CONFIG_BLK_DEV_INITRD=y |
10 | CONFIG_EXPERT=y | 8 | CONFIG_EXPERT=y |
11 | CONFIG_KALLSYMS_ALL=y | 9 | CONFIG_KALLSYMS_ALL=y |
@@ -13,6 +11,7 @@ CONFIG_SLAB=y | |||
13 | CONFIG_MODULES=y | 11 | CONFIG_MODULES=y |
14 | CONFIG_MODULE_UNLOAD=y | 12 | CONFIG_MODULE_UNLOAD=y |
15 | # CONFIG_BLK_DEV_BSG is not set | 13 | # CONFIG_BLK_DEV_BSG is not set |
14 | # CONFIG_ARCH_MULTI_V7 is not set | ||
16 | CONFIG_ARCH_NOMADIK=y | 15 | CONFIG_ARCH_NOMADIK=y |
17 | CONFIG_MACH_NOMADIK_8815NHK=y | 16 | CONFIG_MACH_NOMADIK_8815NHK=y |
18 | CONFIG_PREEMPT=y | 17 | CONFIG_PREEMPT=y |
@@ -20,7 +19,6 @@ CONFIG_AEABI=y | |||
20 | CONFIG_ZBOOT_ROM_TEXT=0x0 | 19 | CONFIG_ZBOOT_ROM_TEXT=0x0 |
21 | CONFIG_ZBOOT_ROM_BSS=0x0 | 20 | CONFIG_ZBOOT_ROM_BSS=0x0 |
22 | CONFIG_FPE_NWFPE=y | 21 | CONFIG_FPE_NWFPE=y |
23 | CONFIG_PM=y | ||
24 | CONFIG_NET=y | 22 | CONFIG_NET=y |
25 | CONFIG_PACKET=y | 23 | CONFIG_PACKET=y |
26 | CONFIG_UNIX=y | 24 | CONFIG_UNIX=y |
@@ -32,14 +30,10 @@ CONFIG_IP_PNP=y | |||
32 | CONFIG_IP_PNP_DHCP=y | 30 | CONFIG_IP_PNP_DHCP=y |
33 | CONFIG_IP_PNP_BOOTP=y | 31 | CONFIG_IP_PNP_BOOTP=y |
34 | CONFIG_NET_IPIP=y | 32 | CONFIG_NET_IPIP=y |
35 | CONFIG_NET_IPGRE=y | ||
36 | CONFIG_NET_IPGRE_BROADCAST=y | ||
37 | CONFIG_IP_MROUTE=y | 33 | CONFIG_IP_MROUTE=y |
38 | # CONFIG_INET_LRO is not set | 34 | # CONFIG_INET_LRO is not set |
39 | # CONFIG_IPV6 is not set | 35 | # CONFIG_IPV6 is not set |
40 | CONFIG_BT=m | 36 | CONFIG_BT=m |
41 | CONFIG_BT_L2CAP=m | ||
42 | CONFIG_BT_SCO=m | ||
43 | CONFIG_BT_RFCOMM=m | 37 | CONFIG_BT_RFCOMM=m |
44 | CONFIG_BT_RFCOMM_TTY=y | 38 | CONFIG_BT_RFCOMM_TTY=y |
45 | CONFIG_BT_BNEP=m | 39 | CONFIG_BT_BNEP=m |
@@ -53,14 +47,16 @@ CONFIG_BT_HCIVHCI=m | |||
53 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | 47 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" |
54 | CONFIG_MTD=y | 48 | CONFIG_MTD=y |
55 | CONFIG_MTD_TESTS=m | 49 | CONFIG_MTD_TESTS=m |
50 | CONFIG_MTD_CMDLINE_PARTS=y | ||
56 | CONFIG_MTD_CHAR=y | 51 | CONFIG_MTD_CHAR=y |
57 | CONFIG_MTD_BLOCK=y | 52 | CONFIG_MTD_BLOCK=y |
58 | CONFIG_MTD_NAND=y | ||
59 | CONFIG_MTD_NAND_ECC_SMC=y | 53 | CONFIG_MTD_NAND_ECC_SMC=y |
54 | CONFIG_MTD_NAND=y | ||
60 | CONFIG_MTD_NAND_FSMC=y | 55 | CONFIG_MTD_NAND_FSMC=y |
61 | CONFIG_MTD_ONENAND=y | 56 | CONFIG_MTD_ONENAND=y |
62 | CONFIG_MTD_ONENAND_VERIFY_WRITE=y | 57 | CONFIG_MTD_ONENAND_VERIFY_WRITE=y |
63 | CONFIG_MTD_ONENAND_GENERIC=y | 58 | CONFIG_MTD_ONENAND_GENERIC=y |
59 | CONFIG_PROC_DEVICETREE=y | ||
64 | CONFIG_BLK_DEV_LOOP=y | 60 | CONFIG_BLK_DEV_LOOP=y |
65 | CONFIG_BLK_DEV_CRYPTOLOOP=y | 61 | CONFIG_BLK_DEV_CRYPTOLOOP=y |
66 | CONFIG_BLK_DEV_RAM=y | 62 | CONFIG_BLK_DEV_RAM=y |
@@ -72,47 +68,48 @@ CONFIG_SCSI_CONSTANTS=y | |||
72 | CONFIG_SCSI_LOGGING=y | 68 | CONFIG_SCSI_LOGGING=y |
73 | CONFIG_SCSI_SCAN_ASYNC=y | 69 | CONFIG_SCSI_SCAN_ASYNC=y |
74 | CONFIG_NETDEVICES=y | 70 | CONFIG_NETDEVICES=y |
71 | CONFIG_NETCONSOLE=m | ||
75 | CONFIG_TUN=y | 72 | CONFIG_TUN=y |
76 | CONFIG_NET_ETHERNET=y | ||
77 | CONFIG_SMC91X=y | 73 | CONFIG_SMC91X=y |
78 | CONFIG_PPP=m | 74 | CONFIG_PPP=m |
79 | CONFIG_PPP_ASYNC=m | ||
80 | CONFIG_PPP_SYNC_TTY=m | ||
81 | CONFIG_PPP_DEFLATE=m | ||
82 | CONFIG_PPP_BSDCOMP=m | 75 | CONFIG_PPP_BSDCOMP=m |
76 | CONFIG_PPP_DEFLATE=m | ||
83 | CONFIG_PPP_MPPE=m | 77 | CONFIG_PPP_MPPE=m |
84 | CONFIG_PPPOE=m | 78 | CONFIG_PPPOE=m |
85 | CONFIG_NETCONSOLE=m | 79 | CONFIG_PPP_ASYNC=m |
80 | CONFIG_PPP_SYNC_TTY=m | ||
86 | # CONFIG_INPUT_MOUSEDEV is not set | 81 | # CONFIG_INPUT_MOUSEDEV is not set |
87 | CONFIG_INPUT_EVDEV=y | 82 | CONFIG_INPUT_EVDEV=y |
88 | # CONFIG_KEYBOARD_ATKBD is not set | 83 | # CONFIG_KEYBOARD_ATKBD is not set |
89 | # CONFIG_MOUSE_PS2 is not set | 84 | # CONFIG_MOUSE_PS2 is not set |
90 | # CONFIG_SERIO is not set | 85 | # CONFIG_SERIO is not set |
86 | # CONFIG_LEGACY_PTYS is not set | ||
91 | CONFIG_SERIAL_AMBA_PL011=y | 87 | CONFIG_SERIAL_AMBA_PL011=y |
92 | CONFIG_SERIAL_AMBA_PL011_CONSOLE=y | 88 | CONFIG_SERIAL_AMBA_PL011_CONSOLE=y |
93 | # CONFIG_LEGACY_PTYS is not set | 89 | CONFIG_HW_RANDOM=y |
94 | # CONFIG_HW_RANDOM is not set | 90 | CONFIG_HW_RANDOM_NOMADIK=y |
95 | CONFIG_I2C=y | ||
96 | CONFIG_I2C_CHARDEV=y | 91 | CONFIG_I2C_CHARDEV=y |
97 | CONFIG_I2C_GPIO=y | 92 | CONFIG_I2C_GPIO=y |
93 | CONFIG_I2C_NOMADIK=y | ||
98 | CONFIG_DEBUG_GPIO=y | 94 | CONFIG_DEBUG_GPIO=y |
99 | CONFIG_PINCTRL_NOMADIK=y | ||
100 | # CONFIG_HWMON is not set | 95 | # CONFIG_HWMON is not set |
101 | # CONFIG_VGA_CONSOLE is not set | 96 | CONFIG_MMC=y |
97 | CONFIG_MMC_CLKGATE=y | ||
98 | CONFIG_MMC_ARMMMCI=y | ||
102 | CONFIG_RTC_CLASS=y | 99 | CONFIG_RTC_CLASS=y |
100 | CONFIG_RTC_DRV_PL031=y | ||
101 | CONFIG_DMADEVICES=y | ||
102 | CONFIG_AMBA_PL08X=y | ||
103 | CONFIG_EXT2_FS=y | 103 | CONFIG_EXT2_FS=y |
104 | CONFIG_EXT3_FS=y | 104 | CONFIG_EXT3_FS=y |
105 | CONFIG_INOTIFY=y | ||
106 | CONFIG_FUSE_FS=y | 105 | CONFIG_FUSE_FS=y |
107 | CONFIG_MSDOS_FS=y | 106 | CONFIG_MSDOS_FS=y |
108 | CONFIG_VFAT_FS=y | 107 | CONFIG_VFAT_FS=y |
109 | CONFIG_TMPFS=y | 108 | CONFIG_TMPFS=y |
110 | CONFIG_JFFS2_FS=y | 109 | CONFIG_JFFS2_FS=y |
111 | CONFIG_NFS_FS=y | 110 | CONFIG_NFS_FS=y |
112 | CONFIG_NFS_V3=y | ||
113 | CONFIG_NFS_V3_ACL=y | 111 | CONFIG_NFS_V3_ACL=y |
114 | CONFIG_ROOT_NFS=y | 112 | CONFIG_ROOT_NFS=y |
115 | CONFIG_SMB_FS=m | ||
116 | CONFIG_CIFS=m | 113 | CONFIG_CIFS=m |
117 | CONFIG_CIFS_WEAK_PW_HASH=y | 114 | CONFIG_CIFS_WEAK_PW_HASH=y |
118 | CONFIG_NLS_CODEPAGE_437=y | 115 | CONFIG_NLS_CODEPAGE_437=y |
@@ -120,12 +117,11 @@ CONFIG_NLS_ASCII=y | |||
120 | CONFIG_NLS_ISO8859_1=y | 117 | CONFIG_NLS_ISO8859_1=y |
121 | CONFIG_NLS_ISO8859_15=y | 118 | CONFIG_NLS_ISO8859_15=y |
122 | # CONFIG_ENABLE_MUST_CHECK is not set | 119 | # CONFIG_ENABLE_MUST_CHECK is not set |
123 | CONFIG_DEBUG_KERNEL=y | 120 | CONFIG_DEBUG_FS=y |
124 | # CONFIG_SCHED_DEBUG is not set | 121 | # CONFIG_SCHED_DEBUG is not set |
125 | # CONFIG_DEBUG_PREEMPT is not set | 122 | # CONFIG_DEBUG_PREEMPT is not set |
126 | # CONFIG_DEBUG_BUGVERBOSE is not set | 123 | # CONFIG_DEBUG_BUGVERBOSE is not set |
127 | CONFIG_DEBUG_INFO=y | 124 | CONFIG_DEBUG_INFO=y |
128 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | ||
129 | CONFIG_CRYPTO_MD5=y | 125 | CONFIG_CRYPTO_MD5=y |
130 | CONFIG_CRYPTO_SHA1=y | 126 | CONFIG_CRYPTO_SHA1=y |
131 | CONFIG_CRYPTO_DES=y | 127 | CONFIG_CRYPTO_DES=y |
diff --git a/arch/arm/configs/spear3xx_defconfig b/arch/arm/configs/spear3xx_defconfig index 865980c5f212..7ff23a077f5d 100644 --- a/arch/arm/configs/spear3xx_defconfig +++ b/arch/arm/configs/spear3xx_defconfig | |||
@@ -6,7 +6,9 @@ CONFIG_MODULES=y | |||
6 | CONFIG_MODULE_UNLOAD=y | 6 | CONFIG_MODULE_UNLOAD=y |
7 | CONFIG_MODVERSIONS=y | 7 | CONFIG_MODVERSIONS=y |
8 | CONFIG_PARTITION_ADVANCED=y | 8 | CONFIG_PARTITION_ADVANCED=y |
9 | # CONFIG_ARCH_MULTI_V7 is not set | ||
9 | CONFIG_PLAT_SPEAR=y | 10 | CONFIG_PLAT_SPEAR=y |
11 | CONFIG_ARCH_SPEAR3XX=y | ||
10 | CONFIG_MACH_SPEAR300=y | 12 | CONFIG_MACH_SPEAR300=y |
11 | CONFIG_MACH_SPEAR310=y | 13 | CONFIG_MACH_SPEAR310=y |
12 | CONFIG_MACH_SPEAR320=y | 14 | CONFIG_MACH_SPEAR320=y |
diff --git a/arch/arm/configs/spear6xx_defconfig b/arch/arm/configs/spear6xx_defconfig index a2a1265f86b6..7822980d7d55 100644 --- a/arch/arm/configs/spear6xx_defconfig +++ b/arch/arm/configs/spear6xx_defconfig | |||
@@ -6,6 +6,7 @@ CONFIG_MODULES=y | |||
6 | CONFIG_MODULE_UNLOAD=y | 6 | CONFIG_MODULE_UNLOAD=y |
7 | CONFIG_MODVERSIONS=y | 7 | CONFIG_MODVERSIONS=y |
8 | CONFIG_PARTITION_ADVANCED=y | 8 | CONFIG_PARTITION_ADVANCED=y |
9 | # CONFIG_ARCH_MULTI_V7 is not set | ||
9 | CONFIG_PLAT_SPEAR=y | 10 | CONFIG_PLAT_SPEAR=y |
10 | CONFIG_ARCH_SPEAR6XX=y | 11 | CONFIG_ARCH_SPEAR6XX=y |
11 | CONFIG_BINFMT_MISC=y | 12 | CONFIG_BINFMT_MISC=y |
diff --git a/arch/arm/mach-bcm2835/include/mach/debug-macro.S b/arch/arm/include/debug/bcm2835.S index 8a161e44ae28..aed9199bd847 100644 --- a/arch/arm/mach-bcm2835/include/mach/debug-macro.S +++ b/arch/arm/include/debug/bcm2835.S | |||
@@ -11,7 +11,8 @@ | |||
11 | * | 11 | * |
12 | */ | 12 | */ |
13 | 13 | ||
14 | #include <mach/bcm2835_soc.h> | 14 | #define BCM2835_DEBUG_PHYS 0x20201000 |
15 | #define BCM2835_DEBUG_VIRT 0xf0201000 | ||
15 | 16 | ||
16 | .macro addruart, rp, rv, tmp | 17 | .macro addruart, rp, rv, tmp |
17 | ldr \rp, =BCM2835_DEBUG_PHYS | 18 | ldr \rp, =BCM2835_DEBUG_PHYS |
diff --git a/arch/arm/mach-cns3xxx/include/mach/debug-macro.S b/arch/arm/include/debug/cns3xxx.S index d04c150baa1c..d04c150baa1c 100644 --- a/arch/arm/mach-cns3xxx/include/mach/debug-macro.S +++ b/arch/arm/include/debug/cns3xxx.S | |||
diff --git a/arch/arm/mach-exynos/include/mach/debug-macro.S b/arch/arm/include/debug/exynos.S index e0c86ea475e7..b17fdb7fbd34 100644 --- a/arch/arm/mach-exynos/include/mach/debug-macro.S +++ b/arch/arm/include/debug/exynos.S | |||
@@ -1,10 +1,7 @@ | |||
1 | /* linux/arch/arm/mach-exynos4/include/mach/debug-macro.S | 1 | /* |
2 | * | ||
3 | * Copyright (c) 2010-2011 Samsung Electronics Co., Ltd. | 2 | * Copyright (c) 2010-2011 Samsung Electronics Co., Ltd. |
4 | * http://www.samsung.com | 3 | * http://www.samsung.com |
5 | * | 4 | * |
6 | * Based on arch/arm/mach-s3c6400/include/mach/debug-macro.S | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify | 5 | * This program is free software; you can redistribute it and/or modify |
9 | * it under the terms of the GNU General Public License version 2 as | 6 | * it under the terms of the GNU General Public License version 2 as |
10 | * published by the Free Software Foundation. | 7 | * published by the Free Software Foundation. |
@@ -12,7 +9,10 @@ | |||
12 | 9 | ||
13 | /* pull in the relevant register and map files. */ | 10 | /* pull in the relevant register and map files. */ |
14 | 11 | ||
15 | #include <mach/map.h> | 12 | #define S3C_ADDR_BASE 0xF6000000 |
13 | #define S3C_VA_UART S3C_ADDR_BASE + 0x01000000 | ||
14 | #define EXYNOS4_PA_UART 0x13800000 | ||
15 | #define EXYNOS5_PA_UART 0x12C00000 | ||
16 | 16 | ||
17 | /* note, for the boot process to work we have to keep the UART | 17 | /* note, for the boot process to work we have to keep the UART |
18 | * virtual address aligned to an 1MiB boundary for the L1 | 18 | * virtual address aligned to an 1MiB boundary for the L1 |
@@ -36,4 +36,4 @@ | |||
36 | #define fifo_full fifo_full_s5pv210 | 36 | #define fifo_full fifo_full_s5pv210 |
37 | #define fifo_level fifo_level_s5pv210 | 37 | #define fifo_level fifo_level_s5pv210 |
38 | 38 | ||
39 | #include <plat/debug-macro.S> | 39 | #include <debug/samsung.S> |
diff --git a/arch/arm/mach-mxs/include/mach/debug-macro.S b/arch/arm/include/debug/mxs.S index d86951551ca1..d86951551ca1 100644 --- a/arch/arm/mach-mxs/include/mach/debug-macro.S +++ b/arch/arm/include/debug/mxs.S | |||
diff --git a/arch/arm/mach-nomadik/include/mach/debug-macro.S b/arch/arm/include/debug/nomadik.S index 735417922ce2..735417922ce2 100644 --- a/arch/arm/mach-nomadik/include/mach/debug-macro.S +++ b/arch/arm/include/debug/nomadik.S | |||
diff --git a/arch/arm/plat-samsung/include/plat/debug-macro.S b/arch/arm/include/debug/samsung.S index f3a9cff6d5d4..f3a9cff6d5d4 100644 --- a/arch/arm/plat-samsung/include/plat/debug-macro.S +++ b/arch/arm/include/debug/samsung.S | |||
diff --git a/arch/arm/mach-prima2/include/mach/uart.h b/arch/arm/include/debug/sirf.S index c10510d01a44..dbf250cf18e6 100644 --- a/arch/arm/mach-prima2/include/mach/uart.h +++ b/arch/arm/include/debug/sirf.S | |||
@@ -1,15 +1,11 @@ | |||
1 | /* | 1 | /* |
2 | * arch/arm/mach-prima2/include/mach/uart.h | 2 | * arch/arm/mach-prima2/include/mach/debug-macro.S |
3 | * | 3 | * |
4 | * Copyright (c) 2011 Cambridge Silicon Radio Limited, a CSR plc group company. | 4 | * Copyright (c) 2011 Cambridge Silicon Radio Limited, a CSR plc group company. |
5 | * | 5 | * |
6 | * Licensed under GPLv2 or later. | 6 | * Licensed under GPLv2 or later. |
7 | */ | 7 | */ |
8 | 8 | ||
9 | #ifndef __MACH_PRIMA2_SIRFSOC_UART_H | ||
10 | #define __MACH_PRIMA2_SIRFSOC_UART_H | ||
11 | |||
12 | /* UART-1: used as serial debug port */ | ||
13 | #if defined(CONFIG_DEBUG_SIRFPRIMA2_UART1) | 9 | #if defined(CONFIG_DEBUG_SIRFPRIMA2_UART1) |
14 | #define SIRFSOC_UART1_PA_BASE 0xb0060000 | 10 | #define SIRFSOC_UART1_PA_BASE 0xb0060000 |
15 | #elif defined(CONFIG_DEBUG_SIRFMARCO_UART1) | 11 | #elif defined(CONFIG_DEBUG_SIRFMARCO_UART1) |
@@ -17,8 +13,8 @@ | |||
17 | #else | 13 | #else |
18 | #define SIRFSOC_UART1_PA_BASE 0 | 14 | #define SIRFSOC_UART1_PA_BASE 0 |
19 | #endif | 15 | #endif |
20 | #define SIRFSOC_UART1_VA_BASE SIRFSOC_VA(0x060000) | 16 | |
21 | #define SIRFSOC_UART1_SIZE SZ_4K | 17 | #define SIRFSOC_UART1_VA_BASE 0xFEC60000 |
22 | 18 | ||
23 | #define SIRFSOC_UART_TXFIFO_STATUS 0x0114 | 19 | #define SIRFSOC_UART_TXFIFO_STATUS 0x0114 |
24 | #define SIRFSOC_UART_TXFIFO_DATA 0x0118 | 20 | #define SIRFSOC_UART_TXFIFO_DATA 0x0118 |
@@ -26,4 +22,21 @@ | |||
26 | #define SIRFSOC_UART1_TXFIFO_FULL (1 << 5) | 22 | #define SIRFSOC_UART1_TXFIFO_FULL (1 << 5) |
27 | #define SIRFSOC_UART1_TXFIFO_EMPTY (1 << 6) | 23 | #define SIRFSOC_UART1_TXFIFO_EMPTY (1 << 6) |
28 | 24 | ||
29 | #endif | 25 | .macro addruart, rp, rv, tmp |
26 | ldr \rp, =SIRFSOC_UART1_PA_BASE @ physical | ||
27 | ldr \rv, =SIRFSOC_UART1_VA_BASE @ virtual | ||
28 | .endm | ||
29 | |||
30 | .macro senduart,rd,rx | ||
31 | str \rd, [\rx, #SIRFSOC_UART_TXFIFO_DATA] | ||
32 | .endm | ||
33 | |||
34 | .macro busyuart,rd,rx | ||
35 | .endm | ||
36 | |||
37 | .macro waituart,rd,rx | ||
38 | 1001: ldr \rd, [\rx, #SIRFSOC_UART_TXFIFO_STATUS] | ||
39 | tst \rd, #SIRFSOC_UART1_TXFIFO_EMPTY | ||
40 | beq 1001b | ||
41 | .endm | ||
42 | |||
diff --git a/arch/arm/include/debug/ux500.S b/arch/arm/include/debug/ux500.S new file mode 100644 index 000000000000..2848857f5b62 --- /dev/null +++ b/arch/arm/include/debug/ux500.S | |||
@@ -0,0 +1,48 @@ | |||
1 | /* | ||
2 | * Debugging macro include header | ||
3 | * | ||
4 | * Copyright (C) 2009 ST-Ericsson | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License version 2 as | ||
8 | * published by the Free Software Foundation. | ||
9 | * | ||
10 | */ | ||
11 | |||
12 | |||
13 | #if CONFIG_UX500_DEBUG_UART > 2 | ||
14 | #error Invalid Ux500 debug UART | ||
15 | #endif | ||
16 | |||
17 | /* | ||
18 | * DEBUG_LL only works if only one SOC is built in. We don't use #else below | ||
19 | * in order to get "__UX500_UART redefined" warnings if more than one SOC is | ||
20 | * built, so that there's some hint during the build that something is wrong. | ||
21 | */ | ||
22 | |||
23 | #ifdef CONFIG_UX500_SOC_DB8500 | ||
24 | #define U8500_UART0_PHYS_BASE (0x80120000) | ||
25 | #define U8500_UART1_PHYS_BASE (0x80121000) | ||
26 | #define U8500_UART2_PHYS_BASE (0x80007000) | ||
27 | #define U8500_UART0_VIRT_BASE (0xa8120000) | ||
28 | #define U8500_UART1_VIRT_BASE (0xa8121000) | ||
29 | #define U8500_UART2_VIRT_BASE (0xa8007000) | ||
30 | #define __UX500_PHYS_UART(n) U8500_UART##n##_PHYS_BASE | ||
31 | #define __UX500_VIRT_UART(n) U8500_UART##n##_VIRT_BASE | ||
32 | #endif | ||
33 | |||
34 | #if !defined(__UX500_PHYS_UART) || !defined(__UX500_VIRT_UART) | ||
35 | #error Unknown SOC | ||
36 | #endif | ||
37 | |||
38 | #define UX500_PHYS_UART(n) __UX500_PHYS_UART(n) | ||
39 | #define UX500_VIRT_UART(n) __UX500_VIRT_UART(n) | ||
40 | #define UART_PHYS_BASE UX500_PHYS_UART(CONFIG_UX500_DEBUG_UART) | ||
41 | #define UART_VIRT_BASE UX500_VIRT_UART(CONFIG_UX500_DEBUG_UART) | ||
42 | |||
43 | .macro addruart, rp, rv, tmp | ||
44 | ldr \rp, =UART_PHYS_BASE @ no, physical address | ||
45 | ldr \rv, =UART_VIRT_BASE @ yes, virtual address | ||
46 | .endm | ||
47 | |||
48 | #include <asm/hardware/debug-pl01x.S> | ||
diff --git a/arch/arm/mach-bcm2835/Kconfig b/arch/arm/mach-bcm2835/Kconfig new file mode 100644 index 000000000000..560045cafc34 --- /dev/null +++ b/arch/arm/mach-bcm2835/Kconfig | |||
@@ -0,0 +1,15 @@ | |||
1 | config ARCH_BCM2835 | ||
2 | bool "Broadcom BCM2835 family" if ARCH_MULTI_V6 | ||
3 | select ARCH_REQUIRE_GPIOLIB | ||
4 | select ARM_AMBA | ||
5 | select ARM_ERRATA_411920 | ||
6 | select ARM_TIMER_SP804 | ||
7 | select CLKDEV_LOOKUP | ||
8 | select CLKSRC_OF | ||
9 | select CPU_V6 | ||
10 | select GENERIC_CLOCKEVENTS | ||
11 | select PINCTRL | ||
12 | select PINCTRL_BCM2835 | ||
13 | help | ||
14 | This enables support for the Broadcom BCM2835 SoC. This SoC is | ||
15 | use in the Raspberry Pi, and Roku 2 devices. | ||
diff --git a/arch/arm/mach-bcm2835/Makefile.boot b/arch/arm/mach-bcm2835/Makefile.boot deleted file mode 100644 index b3271754e9fd..000000000000 --- a/arch/arm/mach-bcm2835/Makefile.boot +++ /dev/null | |||
@@ -1 +0,0 @@ | |||
1 | zreladdr-y := 0x00008000 | ||
diff --git a/arch/arm/mach-bcm2835/bcm2835.c b/arch/arm/mach-bcm2835/bcm2835.c index 6f5785985dd1..740fa9ebe249 100644 --- a/arch/arm/mach-bcm2835/bcm2835.c +++ b/arch/arm/mach-bcm2835/bcm2835.c | |||
@@ -23,8 +23,6 @@ | |||
23 | #include <asm/mach/arch.h> | 23 | #include <asm/mach/arch.h> |
24 | #include <asm/mach/map.h> | 24 | #include <asm/mach/map.h> |
25 | 25 | ||
26 | #include <mach/bcm2835_soc.h> | ||
27 | |||
28 | #define PM_RSTC 0x1c | 26 | #define PM_RSTC 0x1c |
29 | #define PM_RSTS 0x20 | 27 | #define PM_RSTS 0x20 |
30 | #define PM_WDOG 0x24 | 28 | #define PM_WDOG 0x24 |
@@ -34,6 +32,10 @@ | |||
34 | #define PM_RSTC_WRCFG_FULL_RESET 0x00000020 | 32 | #define PM_RSTC_WRCFG_FULL_RESET 0x00000020 |
35 | #define PM_RSTS_HADWRH_SET 0x00000040 | 33 | #define PM_RSTS_HADWRH_SET 0x00000040 |
36 | 34 | ||
35 | #define BCM2835_PERIPH_PHYS 0x20000000 | ||
36 | #define BCM2835_PERIPH_VIRT 0xf0000000 | ||
37 | #define BCM2835_PERIPH_SIZE SZ_16M | ||
38 | |||
37 | static void __iomem *wdt_regs; | 39 | static void __iomem *wdt_regs; |
38 | 40 | ||
39 | /* | 41 | /* |
diff --git a/arch/arm/mach-bcm2835/include/mach/bcm2835_soc.h b/arch/arm/mach-bcm2835/include/mach/bcm2835_soc.h deleted file mode 100644 index d4dfcf7a9cda..000000000000 --- a/arch/arm/mach-bcm2835/include/mach/bcm2835_soc.h +++ /dev/null | |||
@@ -1,29 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2012 Stephen Warren | ||
3 | * | ||
4 | * Derived from code: | ||
5 | * Copyright (C) 2010 Broadcom | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify | ||
8 | * it under the terms of the GNU General Public License as published by | ||
9 | * the Free Software Foundation; either version 2 of the License, or | ||
10 | * (at your option) any later version. | ||
11 | * | ||
12 | * This program is distributed in the hope that it will be useful, | ||
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
15 | * GNU General Public License for more details. | ||
16 | */ | ||
17 | |||
18 | #ifndef __MACH_BCM2835_BCM2835_SOC_H__ | ||
19 | #define __MACH_BCM2835_BCM2835_SOC_H__ | ||
20 | |||
21 | #include <asm/sizes.h> | ||
22 | |||
23 | #define BCM2835_PERIPH_PHYS 0x20000000 | ||
24 | #define BCM2835_PERIPH_VIRT 0xf0000000 | ||
25 | #define BCM2835_PERIPH_SIZE SZ_16M | ||
26 | #define BCM2835_DEBUG_PHYS 0x20201000 | ||
27 | #define BCM2835_DEBUG_VIRT 0xf0201000 | ||
28 | |||
29 | #endif | ||
diff --git a/arch/arm/mach-bcm2835/include/mach/gpio.h b/arch/arm/mach-bcm2835/include/mach/gpio.h deleted file mode 100644 index 40a8c178f10d..000000000000 --- a/arch/arm/mach-bcm2835/include/mach/gpio.h +++ /dev/null | |||
@@ -1 +0,0 @@ | |||
1 | /* empty */ | ||
diff --git a/arch/arm/mach-bcm2835/include/mach/timex.h b/arch/arm/mach-bcm2835/include/mach/timex.h deleted file mode 100644 index 6d021e136ae3..000000000000 --- a/arch/arm/mach-bcm2835/include/mach/timex.h +++ /dev/null | |||
@@ -1,26 +0,0 @@ | |||
1 | /* | ||
2 | * BCM2835 system clock frequency | ||
3 | * | ||
4 | * Copyright (C) 2010 Broadcom | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License as published by | ||
8 | * the Free Software Foundation; either version 2 of the License, or | ||
9 | * (at your option) any later version. | ||
10 | * | ||
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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
19 | */ | ||
20 | |||
21 | #ifndef __ASM_ARCH_TIMEX_H | ||
22 | #define __ASM_ARCH_TIMEX_H | ||
23 | |||
24 | #define CLOCK_TICK_RATE (1000000) | ||
25 | |||
26 | #endif | ||
diff --git a/arch/arm/mach-bcm2835/include/mach/uncompress.h b/arch/arm/mach-bcm2835/include/mach/uncompress.h deleted file mode 100644 index bf86dca3bf71..000000000000 --- a/arch/arm/mach-bcm2835/include/mach/uncompress.h +++ /dev/null | |||
@@ -1,44 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2010 Broadcom | ||
3 | * Copyright (C) 2003 ARM Limited | ||
4 | * | ||
5 | * This program is free software; you can redistribute it and/or modify | ||
6 | * it under the terms of the GNU General Public License as published by | ||
7 | * the Free Software Foundation; either version 2 of the License, or | ||
8 | * (at your option) any later version. | ||
9 | * | ||
10 | * This program is distributed in the hope that it will be useful, | ||
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | * GNU General Public License for more details. | ||
14 | */ | ||
15 | |||
16 | #include <linux/io.h> | ||
17 | #include <linux/amba/serial.h> | ||
18 | #include <mach/bcm2835_soc.h> | ||
19 | |||
20 | #define UART0_BASE BCM2835_DEBUG_PHYS | ||
21 | |||
22 | #define BCM2835_UART_DR IOMEM(UART0_BASE + UART01x_DR) | ||
23 | #define BCM2835_UART_FR IOMEM(UART0_BASE + UART01x_FR) | ||
24 | #define BCM2835_UART_CR IOMEM(UART0_BASE + UART011_CR) | ||
25 | |||
26 | static inline void putc(int c) | ||
27 | { | ||
28 | while (__raw_readl(BCM2835_UART_FR) & UART01x_FR_TXFF) | ||
29 | barrier(); | ||
30 | |||
31 | __raw_writel(c, BCM2835_UART_DR); | ||
32 | } | ||
33 | |||
34 | static inline void flush(void) | ||
35 | { | ||
36 | int fr; | ||
37 | |||
38 | do { | ||
39 | fr = __raw_readl(BCM2835_UART_FR); | ||
40 | barrier(); | ||
41 | } while ((fr & (UART011_FR_TXFE | UART01x_FR_BUSY)) != UART011_FR_TXFE); | ||
42 | } | ||
43 | |||
44 | #define arch_decomp_setup() | ||
diff --git a/arch/arm/mach-cns3xxx/Kconfig b/arch/arm/mach-cns3xxx/Kconfig index 9ebfcc46feb1..dbf0df8bb0ac 100644 --- a/arch/arm/mach-cns3xxx/Kconfig +++ b/arch/arm/mach-cns3xxx/Kconfig | |||
@@ -1,8 +1,20 @@ | |||
1 | config ARCH_CNS3XXX | ||
2 | bool "Cavium Networks CNS3XXX family" if ARCH_MULTI_V6 | ||
3 | select ARM_GIC | ||
4 | select CPU_V6K | ||
5 | select GENERIC_CLOCKEVENTS | ||
6 | select MIGHT_HAVE_CACHE_L2X0 | ||
7 | select MIGHT_HAVE_PCI | ||
8 | select PCI_DOMAINS if PCI | ||
9 | help | ||
10 | Support for Cavium Networks CNS3XXX platform. | ||
11 | |||
1 | menu "CNS3XXX platform type" | 12 | menu "CNS3XXX platform type" |
2 | depends on ARCH_CNS3XXX | 13 | depends on ARCH_CNS3XXX |
3 | 14 | ||
4 | config MACH_CNS3420VB | 15 | config MACH_CNS3420VB |
5 | bool "Support for CNS3420 Validation Board" | 16 | bool "Support for CNS3420 Validation Board" |
17 | depends on ATAGS | ||
6 | help | 18 | help |
7 | Include support for the Cavium Networks CNS3420 MPCore Platform | 19 | Include support for the Cavium Networks CNS3420 MPCore Platform |
8 | Baseboard. | 20 | Baseboard. |
diff --git a/arch/arm/mach-cns3xxx/Makefile b/arch/arm/mach-cns3xxx/Makefile index 11033f1c2e23..a1ff10848698 100644 --- a/arch/arm/mach-cns3xxx/Makefile +++ b/arch/arm/mach-cns3xxx/Makefile | |||
@@ -1,3 +1,5 @@ | |||
1 | obj-$(CONFIG_ARCH_CNS3XXX) += core.o pm.o devices.o | 1 | obj-$(CONFIG_ARCH_CNS3XXX) += cns3xxx.o |
2 | obj-$(CONFIG_PCI) += pcie.o | 2 | cns3xxx-y += core.o pm.o |
3 | obj-$(CONFIG_MACH_CNS3420VB) += cns3420vb.o | 3 | cns3xxx-$(CONFIG_ATAGS) += devices.o |
4 | cns3xxx-$(CONFIG_PCI) += pcie.o | ||
5 | cns3xxx-$(CONFIG_MACH_CNS3420VB) += cns3420vb.o | ||
diff --git a/arch/arm/mach-cns3xxx/cns3420vb.c b/arch/arm/mach-cns3xxx/cns3420vb.c index a71867e1d8d6..ce096d678aa4 100644 --- a/arch/arm/mach-cns3xxx/cns3420vb.c +++ b/arch/arm/mach-cns3xxx/cns3420vb.c | |||
@@ -31,9 +31,8 @@ | |||
31 | #include <asm/mach/arch.h> | 31 | #include <asm/mach/arch.h> |
32 | #include <asm/mach/map.h> | 32 | #include <asm/mach/map.h> |
33 | #include <asm/mach/time.h> | 33 | #include <asm/mach/time.h> |
34 | #include <mach/cns3xxx.h> | 34 | #include "cns3xxx.h" |
35 | #include <mach/irqs.h> | 35 | #include "pm.h" |
36 | #include <mach/pm.h> | ||
37 | #include "core.h" | 36 | #include "core.h" |
38 | #include "devices.h" | 37 | #include "devices.h" |
39 | 38 | ||
@@ -247,6 +246,7 @@ static void __init cns3420_map_io(void) | |||
247 | 246 | ||
248 | MACHINE_START(CNS3420VB, "Cavium Networks CNS3420 Validation Board") | 247 | MACHINE_START(CNS3420VB, "Cavium Networks CNS3420 Validation Board") |
249 | .atag_offset = 0x100, | 248 | .atag_offset = 0x100, |
249 | .nr_irqs = NR_IRQS_CNS3XXX, | ||
250 | .map_io = cns3420_map_io, | 250 | .map_io = cns3420_map_io, |
251 | .init_irq = cns3xxx_init_irq, | 251 | .init_irq = cns3xxx_init_irq, |
252 | .init_time = cns3xxx_timer_init, | 252 | .init_time = cns3xxx_timer_init, |
diff --git a/arch/arm/mach-cns3xxx/include/mach/cns3xxx.h b/arch/arm/mach-cns3xxx/cns3xxx.h index 9b145b1e48ea..a0f5b60662ae 100644 --- a/arch/arm/mach-cns3xxx/include/mach/cns3xxx.h +++ b/arch/arm/mach-cns3xxx/cns3xxx.h | |||
@@ -526,6 +526,8 @@ int cns3xxx_cpu_clock(void); | |||
526 | /* | 526 | /* |
527 | * ARM11 MPCore interrupt sources (primary GIC) | 527 | * ARM11 MPCore interrupt sources (primary GIC) |
528 | */ | 528 | */ |
529 | #define IRQ_TC11MP_GIC_START 32 | ||
530 | |||
529 | #define IRQ_CNS3XXX_PMU (IRQ_TC11MP_GIC_START + 0) | 531 | #define IRQ_CNS3XXX_PMU (IRQ_TC11MP_GIC_START + 0) |
530 | #define IRQ_CNS3XXX_SDIO (IRQ_TC11MP_GIC_START + 1) | 532 | #define IRQ_CNS3XXX_SDIO (IRQ_TC11MP_GIC_START + 1) |
531 | #define IRQ_CNS3XXX_L2CC (IRQ_TC11MP_GIC_START + 2) | 533 | #define IRQ_CNS3XXX_L2CC (IRQ_TC11MP_GIC_START + 2) |
@@ -597,9 +599,4 @@ int cns3xxx_cpu_clock(void); | |||
597 | 599 | ||
598 | #define NR_IRQS_CNS3XXX (IRQ_TC11MP_GIC_START + 64) | 600 | #define NR_IRQS_CNS3XXX (IRQ_TC11MP_GIC_START + 64) |
599 | 601 | ||
600 | #if !defined(NR_IRQS) || (NR_IRQS < NR_IRQS_CNS3XXX) | ||
601 | #undef NR_IRQS | ||
602 | #define NR_IRQS NR_IRQS_CNS3XXX | ||
603 | #endif | ||
604 | |||
605 | #endif /* __MACH_BOARD_CNS3XXX_H */ | 602 | #endif /* __MACH_BOARD_CNS3XXX_H */ |
diff --git a/arch/arm/mach-cns3xxx/core.c b/arch/arm/mach-cns3xxx/core.c index 126f74f6087c..e38b279f402c 100644 --- a/arch/arm/mach-cns3xxx/core.c +++ b/arch/arm/mach-cns3xxx/core.c | |||
@@ -13,12 +13,18 @@ | |||
13 | #include <linux/clockchips.h> | 13 | #include <linux/clockchips.h> |
14 | #include <linux/io.h> | 14 | #include <linux/io.h> |
15 | #include <linux/irqchip/arm-gic.h> | 15 | #include <linux/irqchip/arm-gic.h> |
16 | #include <linux/of_platform.h> | ||
17 | #include <linux/platform_device.h> | ||
18 | #include <linux/usb/ehci_pdriver.h> | ||
19 | #include <linux/usb/ohci_pdriver.h> | ||
20 | #include <asm/mach/arch.h> | ||
16 | #include <asm/mach/map.h> | 21 | #include <asm/mach/map.h> |
17 | #include <asm/mach/time.h> | 22 | #include <asm/mach/time.h> |
18 | #include <asm/mach/irq.h> | 23 | #include <asm/mach/irq.h> |
19 | #include <asm/hardware/cache-l2x0.h> | 24 | #include <asm/hardware/cache-l2x0.h> |
20 | #include <mach/cns3xxx.h> | 25 | #include "cns3xxx.h" |
21 | #include "core.h" | 26 | #include "core.h" |
27 | #include "pm.h" | ||
22 | 28 | ||
23 | static struct map_desc cns3xxx_io_desc[] __initdata = { | 29 | static struct map_desc cns3xxx_io_desc[] __initdata = { |
24 | { | 30 | { |
@@ -256,3 +262,116 @@ void __init cns3xxx_l2x0_init(void) | |||
256 | } | 262 | } |
257 | 263 | ||
258 | #endif /* CONFIG_CACHE_L2X0 */ | 264 | #endif /* CONFIG_CACHE_L2X0 */ |
265 | |||
266 | static int csn3xxx_usb_power_on(struct platform_device *pdev) | ||
267 | { | ||
268 | /* | ||
269 | * EHCI and OHCI share the same clock and power, | ||
270 | * resetting twice would cause the 1st controller been reset. | ||
271 | * Therefore only do power up at the first up device, and | ||
272 | * power down at the last down device. | ||
273 | * | ||
274 | * Set USB AHB INCR length to 16 | ||
275 | */ | ||
276 | if (atomic_inc_return(&usb_pwr_ref) == 1) { | ||
277 | cns3xxx_pwr_power_up(1 << PM_PLL_HM_PD_CTRL_REG_OFFSET_PLL_USB); | ||
278 | cns3xxx_pwr_clk_en(1 << PM_CLK_GATE_REG_OFFSET_USB_HOST); | ||
279 | cns3xxx_pwr_soft_rst(1 << PM_SOFT_RST_REG_OFFST_USB_HOST); | ||
280 | __raw_writel((__raw_readl(MISC_CHIP_CONFIG_REG) | (0X2 << 24)), | ||
281 | MISC_CHIP_CONFIG_REG); | ||
282 | } | ||
283 | |||
284 | return 0; | ||
285 | } | ||
286 | |||
287 | static void csn3xxx_usb_power_off(struct platform_device *pdev) | ||
288 | { | ||
289 | /* | ||
290 | * EHCI and OHCI share the same clock and power, | ||
291 | * resetting twice would cause the 1st controller been reset. | ||
292 | * Therefore only do power up at the first up device, and | ||
293 | * power down at the last down device. | ||
294 | */ | ||
295 | if (atomic_dec_return(&usb_pwr_ref) == 0) | ||
296 | cns3xxx_pwr_clk_dis(1 << PM_CLK_GATE_REG_OFFSET_USB_HOST); | ||
297 | } | ||
298 | |||
299 | static struct usb_ehci_pdata cns3xxx_usb_ehci_pdata = { | ||
300 | .power_on = csn3xxx_usb_power_on, | ||
301 | .power_off = csn3xxx_usb_power_off, | ||
302 | }; | ||
303 | |||
304 | static struct usb_ohci_pdata cns3xxx_usb_ohci_pdata = { | ||
305 | .num_ports = 1, | ||
306 | .power_on = csn3xxx_usb_power_on, | ||
307 | .power_off = csn3xxx_usb_power_off, | ||
308 | }; | ||
309 | |||
310 | static struct of_dev_auxdata cns3xxx_auxdata[] __initconst = { | ||
311 | { "intel,usb-ehci", CNS3XXX_USB_BASE, "ehci-platform", &cns3xxx_usb_ehci_pdata }, | ||
312 | { "intel,usb-ohci", CNS3XXX_USB_OHCI_BASE, "ohci-platform", &cns3xxx_usb_ohci_pdata }, | ||
313 | { "cavium,cns3420-ahci", CNS3XXX_SATA2_BASE, "ahci", NULL }, | ||
314 | { "cavium,cns3420-sdhci", CNS3XXX_SDIO_BASE, "ahci", NULL }, | ||
315 | {}, | ||
316 | }; | ||
317 | |||
318 | static void __init cns3xxx_init(void) | ||
319 | { | ||
320 | struct device_node *dn; | ||
321 | |||
322 | cns3xxx_l2x0_init(); | ||
323 | |||
324 | dn = of_find_compatible_node(NULL, NULL, "cavium,cns3420-ahci"); | ||
325 | if (of_device_is_available(dn)) { | ||
326 | u32 tmp; | ||
327 | |||
328 | tmp = __raw_readl(MISC_SATA_POWER_MODE); | ||
329 | tmp |= 0x1 << 16; /* Disable SATA PHY 0 from SLUMBER Mode */ | ||
330 | tmp |= 0x1 << 17; /* Disable SATA PHY 1 from SLUMBER Mode */ | ||
331 | __raw_writel(tmp, MISC_SATA_POWER_MODE); | ||
332 | |||
333 | /* Enable SATA PHY */ | ||
334 | cns3xxx_pwr_power_up(0x1 << PM_PLL_HM_PD_CTRL_REG_OFFSET_SATA_PHY0); | ||
335 | cns3xxx_pwr_power_up(0x1 << PM_PLL_HM_PD_CTRL_REG_OFFSET_SATA_PHY1); | ||
336 | |||
337 | /* Enable SATA Clock */ | ||
338 | cns3xxx_pwr_clk_en(0x1 << PM_CLK_GATE_REG_OFFSET_SATA); | ||
339 | |||
340 | /* De-Asscer SATA Reset */ | ||
341 | cns3xxx_pwr_soft_rst(CNS3XXX_PWR_SOFTWARE_RST(SATA)); | ||
342 | } | ||
343 | |||
344 | dn = of_find_compatible_node(NULL, NULL, "cavium,cns3420-sdhci"); | ||
345 | if (of_device_is_available(dn)) { | ||
346 | u32 __iomem *gpioa = IOMEM(CNS3XXX_MISC_BASE_VIRT + 0x0014); | ||
347 | u32 gpioa_pins = __raw_readl(gpioa); | ||
348 | |||
349 | /* MMC/SD pins share with GPIOA */ | ||
350 | gpioa_pins |= 0x1fff0004; | ||
351 | __raw_writel(gpioa_pins, gpioa); | ||
352 | |||
353 | cns3xxx_pwr_clk_en(CNS3XXX_PWR_CLK_EN(SDIO)); | ||
354 | cns3xxx_pwr_soft_rst(CNS3XXX_PWR_SOFTWARE_RST(SDIO)); | ||
355 | } | ||
356 | |||
357 | pm_power_off = cns3xxx_power_off; | ||
358 | |||
359 | of_platform_populate(NULL, of_default_bus_match_table, | ||
360 | cns3xxx_auxdata, NULL); | ||
361 | } | ||
362 | |||
363 | static const char *cns3xxx_dt_compat[] __initdata = { | ||
364 | "cavium,cns3410", | ||
365 | "cavium,cns3420", | ||
366 | NULL, | ||
367 | }; | ||
368 | |||
369 | DT_MACHINE_START(CNS3XXX_DT, "Cavium Networks CNS3xxx") | ||
370 | .dt_compat = cns3xxx_dt_compat, | ||
371 | .nr_irqs = NR_IRQS_CNS3XXX, | ||
372 | .map_io = cns3xxx_map_io, | ||
373 | .init_irq = cns3xxx_init_irq, | ||
374 | .init_time = cns3xxx_timer_init, | ||
375 | .init_machine = cns3xxx_init, | ||
376 | .restart = cns3xxx_restart, | ||
377 | MACHINE_END | ||
diff --git a/arch/arm/mach-cns3xxx/devices.c b/arch/arm/mach-cns3xxx/devices.c index 1e40c99b015f..7da78a2451f1 100644 --- a/arch/arm/mach-cns3xxx/devices.c +++ b/arch/arm/mach-cns3xxx/devices.c | |||
@@ -16,9 +16,8 @@ | |||
16 | #include <linux/compiler.h> | 16 | #include <linux/compiler.h> |
17 | #include <linux/dma-mapping.h> | 17 | #include <linux/dma-mapping.h> |
18 | #include <linux/platform_device.h> | 18 | #include <linux/platform_device.h> |
19 | #include <mach/cns3xxx.h> | 19 | #include "cns3xxx.h" |
20 | #include <mach/irqs.h> | 20 | #include "pm.h" |
21 | #include <mach/pm.h> | ||
22 | #include "core.h" | 21 | #include "core.h" |
23 | #include "devices.h" | 22 | #include "devices.h" |
24 | 23 | ||
diff --git a/arch/arm/mach-cns3xxx/include/mach/irqs.h b/arch/arm/mach-cns3xxx/include/mach/irqs.h deleted file mode 100644 index 2ab96f8085c8..000000000000 --- a/arch/arm/mach-cns3xxx/include/mach/irqs.h +++ /dev/null | |||
@@ -1,24 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright 2000 Deep Blue Solutions Ltd. | ||
3 | * Copyright 2003 ARM Limited | ||
4 | * Copyright 2008 Cavium Networks | ||
5 | * | ||
6 | * This file is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License, Version 2, as | ||
8 | * published by the Free Software Foundation. | ||
9 | */ | ||
10 | |||
11 | #ifndef __MACH_IRQS_H | ||
12 | #define __MACH_IRQS_H | ||
13 | |||
14 | #define IRQ_LOCALTIMER 29 | ||
15 | #define IRQ_LOCALWDOG 30 | ||
16 | #define IRQ_TC11MP_GIC_START 32 | ||
17 | |||
18 | #include <mach/cns3xxx.h> | ||
19 | |||
20 | #ifndef NR_IRQS | ||
21 | #error "NR_IRQS not defined by the board-specific files" | ||
22 | #endif | ||
23 | |||
24 | #endif | ||
diff --git a/arch/arm/mach-cns3xxx/include/mach/timex.h b/arch/arm/mach-cns3xxx/include/mach/timex.h deleted file mode 100644 index 1fd04217cacb..000000000000 --- a/arch/arm/mach-cns3xxx/include/mach/timex.h +++ /dev/null | |||
@@ -1,12 +0,0 @@ | |||
1 | /* | ||
2 | * Cavium Networks architecture timex specifications | ||
3 | * | ||
4 | * Copyright 2003 ARM Limited | ||
5 | * Copyright 2008 Cavium Networks | ||
6 | * | ||
7 | * This file is free software; you can redistribute it and/or modify | ||
8 | * it under the terms of the GNU General Public License, Version 2, as | ||
9 | * published by the Free Software Foundation. | ||
10 | */ | ||
11 | |||
12 | #define CLOCK_TICK_RATE (50000000 / 16) | ||
diff --git a/arch/arm/mach-cns3xxx/include/mach/uncompress.h b/arch/arm/mach-cns3xxx/include/mach/uncompress.h deleted file mode 100644 index 7a030b99df84..000000000000 --- a/arch/arm/mach-cns3xxx/include/mach/uncompress.h +++ /dev/null | |||
@@ -1,53 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright 2003 ARM Limited | ||
3 | * Copyright 2008 Cavium Networks | ||
4 | * | ||
5 | * This file is free software; you can redistribute it and/or modify | ||
6 | * it under the terms of the GNU General Public License, Version 2, as | ||
7 | * published by the Free Software Foundation. | ||
8 | */ | ||
9 | |||
10 | #include <asm/mach-types.h> | ||
11 | #include <mach/cns3xxx.h> | ||
12 | |||
13 | #define AMBA_UART_DR(base) (*(volatile unsigned char *)((base) + 0x00)) | ||
14 | #define AMBA_UART_LCRH(base) (*(volatile unsigned char *)((base) + 0x2c)) | ||
15 | #define AMBA_UART_CR(base) (*(volatile unsigned char *)((base) + 0x30)) | ||
16 | #define AMBA_UART_FR(base) (*(volatile unsigned char *)((base) + 0x18)) | ||
17 | |||
18 | /* | ||
19 | * Return the UART base address | ||
20 | */ | ||
21 | static inline unsigned long get_uart_base(void) | ||
22 | { | ||
23 | if (machine_is_cns3420vb()) | ||
24 | return CNS3XXX_UART0_BASE; | ||
25 | else | ||
26 | return 0; | ||
27 | } | ||
28 | |||
29 | /* | ||
30 | * This does not append a newline | ||
31 | */ | ||
32 | static inline void putc(int c) | ||
33 | { | ||
34 | unsigned long base = get_uart_base(); | ||
35 | |||
36 | while (AMBA_UART_FR(base) & (1 << 5)) | ||
37 | barrier(); | ||
38 | |||
39 | AMBA_UART_DR(base) = c; | ||
40 | } | ||
41 | |||
42 | static inline void flush(void) | ||
43 | { | ||
44 | unsigned long base = get_uart_base(); | ||
45 | |||
46 | while (AMBA_UART_FR(base) & (1 << 3)) | ||
47 | barrier(); | ||
48 | } | ||
49 | |||
50 | /* | ||
51 | * nothing to do | ||
52 | */ | ||
53 | #define arch_decomp_setup() | ||
diff --git a/arch/arm/mach-cns3xxx/pcie.c b/arch/arm/mach-cns3xxx/pcie.c index 311328314163..c7b204bff386 100644 --- a/arch/arm/mach-cns3xxx/pcie.c +++ b/arch/arm/mach-cns3xxx/pcie.c | |||
@@ -20,7 +20,7 @@ | |||
20 | #include <linux/interrupt.h> | 20 | #include <linux/interrupt.h> |
21 | #include <linux/ptrace.h> | 21 | #include <linux/ptrace.h> |
22 | #include <asm/mach/map.h> | 22 | #include <asm/mach/map.h> |
23 | #include <mach/cns3xxx.h> | 23 | #include "cns3xxx.h" |
24 | #include "core.h" | 24 | #include "core.h" |
25 | 25 | ||
26 | enum cns3xxx_access_type { | 26 | enum cns3xxx_access_type { |
diff --git a/arch/arm/mach-cns3xxx/pm.c b/arch/arm/mach-cns3xxx/pm.c index 36458080332a..79e3d47aad65 100644 --- a/arch/arm/mach-cns3xxx/pm.c +++ b/arch/arm/mach-cns3xxx/pm.c | |||
@@ -11,8 +11,8 @@ | |||
11 | #include <linux/io.h> | 11 | #include <linux/io.h> |
12 | #include <linux/delay.h> | 12 | #include <linux/delay.h> |
13 | #include <linux/atomic.h> | 13 | #include <linux/atomic.h> |
14 | #include <mach/cns3xxx.h> | 14 | #include "cns3xxx.h" |
15 | #include <mach/pm.h> | 15 | #include "pm.h" |
16 | #include "core.h" | 16 | #include "core.h" |
17 | 17 | ||
18 | void cns3xxx_pwr_clk_en(unsigned int block) | 18 | void cns3xxx_pwr_clk_en(unsigned int block) |
diff --git a/arch/arm/mach-cns3xxx/include/mach/pm.h b/arch/arm/mach-cns3xxx/pm.h index c2588cc991d1..c2588cc991d1 100644 --- a/arch/arm/mach-cns3xxx/include/mach/pm.h +++ b/arch/arm/mach-cns3xxx/pm.h | |||
diff --git a/arch/arm/mach-exynos/Kconfig b/arch/arm/mach-exynos/Kconfig index 42378fb90167..f22f69e2d081 100644 --- a/arch/arm/mach-exynos/Kconfig +++ b/arch/arm/mach-exynos/Kconfig | |||
@@ -14,6 +14,7 @@ menu "SAMSUNG EXYNOS SoCs Support" | |||
14 | config ARCH_EXYNOS4 | 14 | config ARCH_EXYNOS4 |
15 | bool "SAMSUNG EXYNOS4" | 15 | bool "SAMSUNG EXYNOS4" |
16 | default y | 16 | default y |
17 | select HAVE_ARM_SCU if SMP | ||
17 | select HAVE_SMP | 18 | select HAVE_SMP |
18 | select MIGHT_HAVE_CACHE_L2X0 | 19 | select MIGHT_HAVE_CACHE_L2X0 |
19 | help | 20 | help |
@@ -21,6 +22,7 @@ config ARCH_EXYNOS4 | |||
21 | 22 | ||
22 | config ARCH_EXYNOS5 | 23 | config ARCH_EXYNOS5 |
23 | bool "SAMSUNG EXYNOS5" | 24 | bool "SAMSUNG EXYNOS5" |
25 | select HAVE_ARM_SCU if SMP | ||
24 | select HAVE_SMP | 26 | select HAVE_SMP |
25 | help | 27 | help |
26 | Samsung EXYNOS5 (Cortex-A15) SoC based systems | 28 | Samsung EXYNOS5 (Cortex-A15) SoC based systems |
@@ -87,6 +89,19 @@ config EXYNOS4_MCT | |||
87 | help | 89 | help |
88 | Use MCT (Multi Core Timer) as kernel timers | 90 | Use MCT (Multi Core Timer) as kernel timers |
89 | 91 | ||
92 | config EXYNOS_ATAGS | ||
93 | bool "ATAGS based boot for EXYNOS (deprecated)" | ||
94 | depends on !ARCH_MULTIPLATFORM | ||
95 | depends on ATAGS | ||
96 | default y | ||
97 | help | ||
98 | The EXYNOS platform is moving towards being completely probed | ||
99 | through device tree. This enables support for board files using | ||
100 | the traditional ATAGS boot format. | ||
101 | Note that this option is not available for multiplatform builds. | ||
102 | |||
103 | if EXYNOS_ATAGS | ||
104 | |||
90 | config EXYNOS_DEV_DMA | 105 | config EXYNOS_DEV_DMA |
91 | bool | 106 | bool |
92 | help | 107 | help |
@@ -391,6 +406,8 @@ config MACH_SMDK4412 | |||
391 | Machine support for Samsung SMDK4412 | 406 | Machine support for Samsung SMDK4412 |
392 | endif | 407 | endif |
393 | 408 | ||
409 | endif | ||
410 | |||
394 | comment "Flattened Device Tree based board for EXYNOS SoCs" | 411 | comment "Flattened Device Tree based board for EXYNOS SoCs" |
395 | 412 | ||
396 | config MACH_EXYNOS4_DT | 413 | config MACH_EXYNOS4_DT |
diff --git a/arch/arm/mach-exynos/dev-uart.c b/arch/arm/mach-exynos/dev-uart.c index 7c42f4b7c8be..c48aff02c786 100644 --- a/arch/arm/mach-exynos/dev-uart.c +++ b/arch/arm/mach-exynos/dev-uart.c | |||
@@ -20,6 +20,7 @@ | |||
20 | #include <asm/mach/irq.h> | 20 | #include <asm/mach/irq.h> |
21 | #include <mach/hardware.h> | 21 | #include <mach/hardware.h> |
22 | #include <mach/map.h> | 22 | #include <mach/map.h> |
23 | #include <mach/irqs.h> | ||
23 | 24 | ||
24 | #include <plat/devs.h> | 25 | #include <plat/devs.h> |
25 | 26 | ||
diff --git a/arch/arm/mach-exynos/include/mach/irqs.h b/arch/arm/mach-exynos/include/mach/irqs.h index 1f4dc35cd4b9..8bd5dde5fc78 100644 --- a/arch/arm/mach-exynos/include/mach/irqs.h +++ b/arch/arm/mach-exynos/include/mach/irqs.h | |||
@@ -466,7 +466,10 @@ | |||
466 | #define IRQ_TIMER_BASE (IRQ_GPIO_END + 64) | 466 | #define IRQ_TIMER_BASE (IRQ_GPIO_END + 64) |
467 | 467 | ||
468 | /* Set the default NR_IRQS */ | 468 | /* Set the default NR_IRQS */ |
469 | #define EXYNOS_NR_IRQS (IRQ_TIMER_BASE + IRQ_TIMER_COUNT) | ||
469 | 470 | ||
470 | #define NR_IRQS (IRQ_TIMER_BASE + IRQ_TIMER_COUNT) | 471 | #ifndef CONFIG_SPARSE_IRQ |
472 | #define NR_IRQS EXYNOS_NR_IRQS | ||
473 | #endif | ||
471 | 474 | ||
472 | #endif /* __ASM_ARCH_IRQS_H */ | 475 | #endif /* __ASM_ARCH_IRQS_H */ |
diff --git a/arch/arm/mach-exynos/mach-armlex4210.c b/arch/arm/mach-exynos/mach-armlex4210.c index 685f29173afa..2126f3503a3f 100644 --- a/arch/arm/mach-exynos/mach-armlex4210.c +++ b/arch/arm/mach-exynos/mach-armlex4210.c | |||
@@ -25,6 +25,7 @@ | |||
25 | #include <plat/regs-srom.h> | 25 | #include <plat/regs-srom.h> |
26 | #include <plat/sdhci.h> | 26 | #include <plat/sdhci.h> |
27 | 27 | ||
28 | #include <mach/irqs.h> | ||
28 | #include <mach/map.h> | 29 | #include <mach/map.h> |
29 | 30 | ||
30 | #include "common.h" | 31 | #include "common.h" |
diff --git a/arch/arm/mach-exynos/mach-nuri.c b/arch/arm/mach-exynos/mach-nuri.c index 1ea79730187f..ab920e34bd0a 100644 --- a/arch/arm/mach-exynos/mach-nuri.c +++ b/arch/arm/mach-exynos/mach-nuri.c | |||
@@ -53,6 +53,7 @@ | |||
53 | #include <plat/fimc-core.h> | 53 | #include <plat/fimc-core.h> |
54 | #include <plat/camport.h> | 54 | #include <plat/camport.h> |
55 | 55 | ||
56 | #include <mach/irqs.h> | ||
56 | #include <mach/map.h> | 57 | #include <mach/map.h> |
57 | 58 | ||
58 | #include "common.h" | 59 | #include "common.h" |
diff --git a/arch/arm/mach-exynos/mach-origen.c b/arch/arm/mach-exynos/mach-origen.c index bf946931ab32..ec42024dd13f 100644 --- a/arch/arm/mach-exynos/mach-origen.c +++ b/arch/arm/mach-exynos/mach-origen.c | |||
@@ -46,6 +46,7 @@ | |||
46 | #include <plat/hdmi.h> | 46 | #include <plat/hdmi.h> |
47 | 47 | ||
48 | #include <mach/map.h> | 48 | #include <mach/map.h> |
49 | #include <mach/irqs.h> | ||
49 | 50 | ||
50 | #include <drm/exynos_drm.h> | 51 | #include <drm/exynos_drm.h> |
51 | #include "common.h" | 52 | #include "common.h" |
diff --git a/arch/arm/mach-exynos/mach-smdk4x12.c b/arch/arm/mach-exynos/mach-smdk4x12.c index fe6149624b84..5df91236dbb4 100644 --- a/arch/arm/mach-exynos/mach-smdk4x12.c +++ b/arch/arm/mach-exynos/mach-smdk4x12.c | |||
@@ -39,6 +39,7 @@ | |||
39 | #include <plat/regs-serial.h> | 39 | #include <plat/regs-serial.h> |
40 | #include <plat/sdhci.h> | 40 | #include <plat/sdhci.h> |
41 | 41 | ||
42 | #include <mach/irqs.h> | ||
42 | #include <mach/map.h> | 43 | #include <mach/map.h> |
43 | 44 | ||
44 | #include <drm/exynos_drm.h> | 45 | #include <drm/exynos_drm.h> |
diff --git a/arch/arm/mach-exynos/mach-smdkv310.c b/arch/arm/mach-exynos/mach-smdkv310.c index 8270929d7b44..9680e1291065 100644 --- a/arch/arm/mach-exynos/mach-smdkv310.c +++ b/arch/arm/mach-exynos/mach-smdkv310.c | |||
@@ -43,6 +43,7 @@ | |||
43 | #include <plat/clock.h> | 43 | #include <plat/clock.h> |
44 | #include <plat/hdmi.h> | 44 | #include <plat/hdmi.h> |
45 | 45 | ||
46 | #include <mach/irqs.h> | ||
46 | #include <mach/map.h> | 47 | #include <mach/map.h> |
47 | 48 | ||
48 | #include <drm/exynos_drm.h> | 49 | #include <drm/exynos_drm.h> |
diff --git a/arch/arm/mach-exynos/setup-sdhci-gpio.c b/arch/arm/mach-exynos/setup-sdhci-gpio.c index e8d08bf8965a..d5b98c866738 100644 --- a/arch/arm/mach-exynos/setup-sdhci-gpio.c +++ b/arch/arm/mach-exynos/setup-sdhci-gpio.c | |||
@@ -19,8 +19,8 @@ | |||
19 | #include <linux/mmc/host.h> | 19 | #include <linux/mmc/host.h> |
20 | #include <linux/mmc/card.h> | 20 | #include <linux/mmc/card.h> |
21 | 21 | ||
22 | #include <mach/gpio.h> | ||
22 | #include <plat/gpio-cfg.h> | 23 | #include <plat/gpio-cfg.h> |
23 | #include <plat/regs-sdhci.h> | ||
24 | #include <plat/sdhci.h> | 24 | #include <plat/sdhci.h> |
25 | 25 | ||
26 | void exynos4_setup_sdhci0_cfg_gpio(struct platform_device *dev, int width) | 26 | void exynos4_setup_sdhci0_cfg_gpio(struct platform_device *dev, int width) |
diff --git a/arch/arm/mach-highbank/Kconfig b/arch/arm/mach-highbank/Kconfig index 44b12f9c1584..cd9fcb1cd7ab 100644 --- a/arch/arm/mach-highbank/Kconfig +++ b/arch/arm/mach-highbank/Kconfig | |||
@@ -12,6 +12,7 @@ config ARCH_HIGHBANK | |||
12 | select CPU_V7 | 12 | select CPU_V7 |
13 | select GENERIC_CLOCKEVENTS | 13 | select GENERIC_CLOCKEVENTS |
14 | select HAVE_ARM_SCU | 14 | select HAVE_ARM_SCU |
15 | select HAVE_ARM_TWD if LOCAL_TIMERS | ||
15 | select HAVE_SMP | 16 | select HAVE_SMP |
16 | select MAILBOX | 17 | select MAILBOX |
17 | select PL320_MBOX | 18 | select PL320_MBOX |
diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig index 91571a16f986..d58ad4ff8d34 100644 --- a/arch/arm/mach-imx/Kconfig +++ b/arch/arm/mach-imx/Kconfig | |||
@@ -795,7 +795,8 @@ config SOC_IMX6Q | |||
795 | select ARM_GIC | 795 | select ARM_GIC |
796 | select COMMON_CLK | 796 | select COMMON_CLK |
797 | select CPU_V7 | 797 | select CPU_V7 |
798 | select HAVE_ARM_SCU | 798 | select HAVE_ARM_SCU if SMP |
799 | select HAVE_ARM_TWD if LOCAL_TIMERS | ||
799 | select HAVE_CAN_FLEXCAN if CAN | 800 | select HAVE_CAN_FLEXCAN if CAN |
800 | select HAVE_IMX_GPC | 801 | select HAVE_IMX_GPC |
801 | select HAVE_IMX_MMDC | 802 | select HAVE_IMX_MMDC |
diff --git a/arch/arm/mach-msm/Kconfig b/arch/arm/mach-msm/Kconfig index b61908594b47..fceb093b9494 100644 --- a/arch/arm/mach-msm/Kconfig +++ b/arch/arm/mach-msm/Kconfig | |||
@@ -44,10 +44,10 @@ endchoice | |||
44 | 44 | ||
45 | config ARCH_MSM8X60 | 45 | config ARCH_MSM8X60 |
46 | bool "MSM8X60" | 46 | bool "MSM8X60" |
47 | select ARCH_MSM_SCORPIONMP | ||
48 | select ARM_GIC | 47 | select ARM_GIC |
49 | select CPU_V7 | 48 | select CPU_V7 |
50 | select GPIO_MSM_V2 | 49 | select GPIO_MSM_V2 |
50 | select HAVE_SMP | ||
51 | select MSM_GPIOMUX | 51 | select MSM_GPIOMUX |
52 | select MSM_SCM if SMP | 52 | select MSM_SCM if SMP |
53 | select MSM_V2_TLMM | 53 | select MSM_V2_TLMM |
@@ -55,9 +55,9 @@ config ARCH_MSM8X60 | |||
55 | 55 | ||
56 | config ARCH_MSM8960 | 56 | config ARCH_MSM8960 |
57 | bool "MSM8960" | 57 | bool "MSM8960" |
58 | select ARCH_MSM_SCORPIONMP | ||
59 | select ARM_GIC | 58 | select ARM_GIC |
60 | select CPU_V7 | 59 | select CPU_V7 |
60 | select HAVE_SMP | ||
61 | select MSM_GPIOMUX | 61 | select MSM_GPIOMUX |
62 | select MSM_SCM if SMP | 62 | select MSM_SCM if SMP |
63 | select MSM_V2_TLMM | 63 | select MSM_V2_TLMM |
@@ -68,9 +68,6 @@ config MSM_HAS_DEBUG_UART_HS | |||
68 | 68 | ||
69 | config MSM_SOC_REV_A | 69 | config MSM_SOC_REV_A |
70 | bool | 70 | bool |
71 | config ARCH_MSM_SCORPIONMP | ||
72 | bool | ||
73 | select HAVE_SMP | ||
74 | 71 | ||
75 | config ARCH_MSM_ARM11 | 72 | config ARCH_MSM_ARM11 |
76 | bool | 73 | bool |
diff --git a/arch/arm/mach-mxs/Kconfig b/arch/arm/mach-mxs/Kconfig index c4495a13751a..4dc2fbba0ecd 100644 --- a/arch/arm/mach-mxs/Kconfig +++ b/arch/arm/mach-mxs/Kconfig | |||
@@ -1,5 +1,3 @@ | |||
1 | if ARCH_MXS | ||
2 | |||
3 | config SOC_IMX23 | 1 | config SOC_IMX23 |
4 | bool | 2 | bool |
5 | select ARM_AMBA | 3 | select ARM_AMBA |
@@ -17,14 +15,18 @@ config SOC_IMX28 | |||
17 | select HAVE_PWM | 15 | select HAVE_PWM |
18 | select PINCTRL_IMX28 | 16 | select PINCTRL_IMX28 |
19 | 17 | ||
20 | comment "MXS platforms:" | 18 | config ARCH_MXS |
21 | 19 | bool "Freescale MXS (i.MX23, i.MX28) support" | |
22 | config MACH_MXS_DT | 20 | depends on ARCH_MULTI_V5 |
23 | bool "Support MXS platforms from device tree" | 21 | select ARCH_REQUIRE_GPIOLIB |
22 | select CLKDEV_LOOKUP | ||
23 | select CLKSRC_MMIO | ||
24 | select CLKSRC_OF | ||
25 | select GENERIC_CLOCKEVENTS | ||
26 | select HAVE_CLK_PREPARE | ||
27 | select PINCTRL | ||
24 | select SOC_IMX23 | 28 | select SOC_IMX23 |
25 | select SOC_IMX28 | 29 | select SOC_IMX28 |
30 | select STMP_DEVICE | ||
26 | help | 31 | help |
27 | Include support for Freescale MXS platforms(i.MX23 and i.MX28) | 32 | Support for Freescale MXS-based family of processors |
28 | using the device tree for discovery | ||
29 | |||
30 | endif | ||
diff --git a/arch/arm/mach-mxs/Makefile b/arch/arm/mach-mxs/Makefile index 80db7269760e..cc2bf6748ade 100644 --- a/arch/arm/mach-mxs/Makefile +++ b/arch/arm/mach-mxs/Makefile | |||
@@ -1,2 +1,2 @@ | |||
1 | obj-$(CONFIG_PM) += pm.o | 1 | obj-$(CONFIG_PM) += pm.o |
2 | obj-$(CONFIG_MACH_MXS_DT) += mach-mxs.o | 2 | obj-$(CONFIG_ARCH_MXS) += mach-mxs.o |
diff --git a/arch/arm/mach-mxs/Makefile.boot b/arch/arm/mach-mxs/Makefile.boot deleted file mode 100644 index 07b11fe6453f..000000000000 --- a/arch/arm/mach-mxs/Makefile.boot +++ /dev/null | |||
@@ -1 +0,0 @@ | |||
1 | zreladdr-y += 0x40008000 | ||
diff --git a/arch/arm/mach-mxs/include/mach/timex.h b/arch/arm/mach-mxs/include/mach/timex.h deleted file mode 100644 index 734ce8984a64..000000000000 --- a/arch/arm/mach-mxs/include/mach/timex.h +++ /dev/null | |||
@@ -1,21 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright (C) 1999 ARM Limited | ||
3 | * Copyright 2004-2007 Freescale Semiconductor, Inc. All Rights Reserved. | ||
4 | * | ||
5 | * This program is free software; you can redistribute it and/or modify | ||
6 | * it under the terms of the GNU General Public License as published by | ||
7 | * the Free Software Foundation; either version 2 of the License, or | ||
8 | * (at your option) any later version. | ||
9 | * | ||
10 | * This program is distributed in the hope that it will be useful, | ||
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | * GNU General Public License for more details. | ||
14 | */ | ||
15 | |||
16 | #ifndef __MACH_MXS_TIMEX_H__ | ||
17 | #define __MACH_MXS_TIMEX_H__ | ||
18 | |||
19 | #define CLOCK_TICK_RATE 32000 /* 32K */ | ||
20 | |||
21 | #endif /* __MACH_MXS_TIMEX_H__ */ | ||
diff --git a/arch/arm/mach-mxs/include/mach/uncompress.h b/arch/arm/mach-mxs/include/mach/uncompress.h deleted file mode 100644 index 533f5186e200..000000000000 --- a/arch/arm/mach-mxs/include/mach/uncompress.h +++ /dev/null | |||
@@ -1,76 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-mxs/include/mach/uncompress.h | ||
3 | * | ||
4 | * Copyright (C) 1999 ARM Limited | ||
5 | * Copyright (C) Shane Nay (shane@minirl.com) | ||
6 | * Copyright 2010 Freescale Semiconductor, Inc. All Rights Reserved. | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify | ||
9 | * it under the terms of the GNU General Public License as published by | ||
10 | * the Free Software Foundation; either version 2 of the License, or | ||
11 | * (at your option) any later version. | ||
12 | * | ||
13 | * This program is distributed in the hope that it will be useful, | ||
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
16 | * GNU General Public License for more details. | ||
17 | */ | ||
18 | #ifndef __MACH_MXS_UNCOMPRESS_H__ | ||
19 | #define __MACH_MXS_UNCOMPRESS_H__ | ||
20 | |||
21 | unsigned long mxs_duart_base; | ||
22 | |||
23 | #define MXS_DUART(x) (*(volatile unsigned long *)(mxs_duart_base + (x))) | ||
24 | |||
25 | #define MXS_DUART_DR 0x00 | ||
26 | #define MXS_DUART_FR 0x18 | ||
27 | #define MXS_DUART_FR_TXFE (1 << 7) | ||
28 | #define MXS_DUART_CR 0x30 | ||
29 | #define MXS_DUART_CR_UARTEN (1 << 0) | ||
30 | |||
31 | /* | ||
32 | * The following code assumes the serial port has already been | ||
33 | * initialized by the bootloader. If it's not, the output is | ||
34 | * simply discarded. | ||
35 | */ | ||
36 | |||
37 | static void putc(int ch) | ||
38 | { | ||
39 | if (!mxs_duart_base) | ||
40 | return; | ||
41 | if (!(MXS_DUART(MXS_DUART_CR) & MXS_DUART_CR_UARTEN)) | ||
42 | return; | ||
43 | |||
44 | while (!(MXS_DUART(MXS_DUART_FR) & MXS_DUART_FR_TXFE)) | ||
45 | barrier(); | ||
46 | |||
47 | MXS_DUART(MXS_DUART_DR) = ch; | ||
48 | } | ||
49 | |||
50 | static inline void flush(void) | ||
51 | { | ||
52 | } | ||
53 | |||
54 | #define MX23_DUART_BASE_ADDR 0x80070000 | ||
55 | #define MX28_DUART_BASE_ADDR 0x80074000 | ||
56 | #define MXS_DIGCTL_CHIPID 0x8001c310 | ||
57 | |||
58 | static inline void __arch_decomp_setup(unsigned long arch_id) | ||
59 | { | ||
60 | u16 chipid = (*(volatile unsigned long *) MXS_DIGCTL_CHIPID) >> 16; | ||
61 | |||
62 | switch (chipid) { | ||
63 | case 0x3780: | ||
64 | mxs_duart_base = MX23_DUART_BASE_ADDR; | ||
65 | break; | ||
66 | case 0x2800: | ||
67 | mxs_duart_base = MX28_DUART_BASE_ADDR; | ||
68 | break; | ||
69 | default: | ||
70 | break; | ||
71 | } | ||
72 | } | ||
73 | |||
74 | #define arch_decomp_setup() __arch_decomp_setup(arch_id) | ||
75 | |||
76 | #endif /* __MACH_MXS_UNCOMPRESS_H__ */ | ||
diff --git a/arch/arm/mach-mxs/mach-mxs.c b/arch/arm/mach-mxs/mach-mxs.c index 16870bf853b8..b5c1bdd3dcdf 100644 --- a/arch/arm/mach-mxs/mach-mxs.c +++ b/arch/arm/mach-mxs/mach-mxs.c | |||
@@ -32,6 +32,8 @@ | |||
32 | #include <asm/mach/time.h> | 32 | #include <asm/mach/time.h> |
33 | #include <asm/system_misc.h> | 33 | #include <asm/system_misc.h> |
34 | 34 | ||
35 | #include "pm.h" | ||
36 | |||
35 | /* MXS DIGCTL SAIF CLKMUX */ | 37 | /* MXS DIGCTL SAIF CLKMUX */ |
36 | #define MXS_DIGCTL_SAIF_CLKMUX_DIRECT 0x0 | 38 | #define MXS_DIGCTL_SAIF_CLKMUX_DIRECT 0x0 |
37 | #define MXS_DIGCTL_SAIF_CLKMUX_CROSSINPUT 0x1 | 39 | #define MXS_DIGCTL_SAIF_CLKMUX_CROSSINPUT 0x1 |
@@ -607,6 +609,7 @@ DT_MACHINE_START(MXS, "Freescale MXS (Device Tree)") | |||
607 | .handle_irq = icoll_handle_irq, | 609 | .handle_irq = icoll_handle_irq, |
608 | .init_time = mxs_timer_init, | 610 | .init_time = mxs_timer_init, |
609 | .init_machine = mxs_machine_init, | 611 | .init_machine = mxs_machine_init, |
612 | .init_late = mxs_pm_init, | ||
610 | .dt_compat = mxs_dt_compat, | 613 | .dt_compat = mxs_dt_compat, |
611 | .restart = mxs_restart, | 614 | .restart = mxs_restart, |
612 | MACHINE_END | 615 | MACHINE_END |
diff --git a/arch/arm/mach-mxs/pm.c b/arch/arm/mach-mxs/pm.c index a9b4bbcdafb4..b2494d2db2c4 100644 --- a/arch/arm/mach-mxs/pm.c +++ b/arch/arm/mach-mxs/pm.c | |||
@@ -34,9 +34,7 @@ static struct platform_suspend_ops mxs_suspend_ops = { | |||
34 | .valid = suspend_valid_only_mem, | 34 | .valid = suspend_valid_only_mem, |
35 | }; | 35 | }; |
36 | 36 | ||
37 | static int __init mxs_pm_init(void) | 37 | void __init mxs_pm_init(void) |
38 | { | 38 | { |
39 | suspend_set_ops(&mxs_suspend_ops); | 39 | suspend_set_ops(&mxs_suspend_ops); |
40 | return 0; | ||
41 | } | 40 | } |
42 | device_initcall(mxs_pm_init); | ||
diff --git a/arch/arm/mach-mxs/pm.h b/arch/arm/mach-mxs/pm.h new file mode 100644 index 000000000000..f57e7cdece2e --- /dev/null +++ b/arch/arm/mach-mxs/pm.h | |||
@@ -0,0 +1,14 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2013 Freescale Semiconductor, Inc. | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify | ||
5 | * it under the terms of the GNU General Public License version 2 as | ||
6 | * published by the Free Software Foundation. | ||
7 | */ | ||
8 | |||
9 | #ifndef __ARCH_MXS_PM_H | ||
10 | #define __ARCH_MXS_PM_H | ||
11 | |||
12 | void mxs_pm_init(void); | ||
13 | |||
14 | #endif | ||
diff --git a/arch/arm/mach-nomadik/Kconfig b/arch/arm/mach-nomadik/Kconfig index 82226a5d60ef..9b9d105f194c 100644 --- a/arch/arm/mach-nomadik/Kconfig +++ b/arch/arm/mach-nomadik/Kconfig | |||
@@ -1,5 +1,24 @@ | |||
1 | if ARCH_NOMADIK | 1 | config ARCH_NOMADIK |
2 | bool "ST-Ericsson Nomadik" | ||
3 | depends on ARCH_MULTI_V5 | ||
4 | select ARCH_REQUIRE_GPIOLIB | ||
5 | select ARM_AMBA | ||
6 | select ARM_VIC | ||
7 | select CLKSRC_NOMADIK_MTU | ||
8 | select CLKSRC_NOMADIK_MTU_SCHED_CLOCK | ||
9 | select COMMON_CLK | ||
10 | select CPU_ARM926T | ||
11 | select GENERIC_CLOCKEVENTS | ||
12 | select MIGHT_HAVE_CACHE_L2X0 | ||
13 | select PINCTRL | ||
14 | select PINCTRL_NOMADIK | ||
15 | select PINCTRL_STN8815 | ||
16 | select SPARSE_IRQ | ||
17 | select USE_OF | ||
18 | help | ||
19 | Support for the Nomadik platform by ST-Ericsson | ||
2 | 20 | ||
21 | if ARCH_NOMADIK | ||
3 | menu "Nomadik boards" | 22 | menu "Nomadik boards" |
4 | 23 | ||
5 | config MACH_NOMADIK_8815NHK | 24 | config MACH_NOMADIK_8815NHK |
@@ -9,8 +28,8 @@ config MACH_NOMADIK_8815NHK | |||
9 | select I2C_ALGOBIT | 28 | select I2C_ALGOBIT |
10 | 29 | ||
11 | endmenu | 30 | endmenu |
31 | endif | ||
12 | 32 | ||
13 | config NOMADIK_8815 | 33 | config NOMADIK_8815 |
34 | depends on ARCH_NOMADIK | ||
14 | bool | 35 | bool |
15 | |||
16 | endif | ||
diff --git a/arch/arm/mach-nomadik/Makefile.boot b/arch/arm/mach-nomadik/Makefile.boot deleted file mode 100644 index ff0a4b5b0a82..000000000000 --- a/arch/arm/mach-nomadik/Makefile.boot +++ /dev/null | |||
@@ -1,4 +0,0 @@ | |||
1 | zreladdr-y += 0x00008000 | ||
2 | params_phys-y := 0x00000100 | ||
3 | initrd_phys-y := 0x00800000 | ||
4 | |||
diff --git a/arch/arm/mach-nomadik/cpu-8815.c b/arch/arm/mach-nomadik/cpu-8815.c index 21c1aa512640..59f6ff5c9bae 100644 --- a/arch/arm/mach-nomadik/cpu-8815.c +++ b/arch/arm/mach-nomadik/cpu-8815.c | |||
@@ -38,7 +38,6 @@ | |||
38 | #include <linux/gpio.h> | 38 | #include <linux/gpio.h> |
39 | #include <linux/amba/mmci.h> | 39 | #include <linux/amba/mmci.h> |
40 | 40 | ||
41 | #include <mach/irqs.h> | ||
42 | #include <asm/mach/arch.h> | 41 | #include <asm/mach/arch.h> |
43 | #include <asm/mach/map.h> | 42 | #include <asm/mach/map.h> |
44 | #include <asm/mach/time.h> | 43 | #include <asm/mach/time.h> |
diff --git a/arch/arm/mach-nomadik/include/mach/irqs.h b/arch/arm/mach-nomadik/include/mach/irqs.h deleted file mode 100644 index 90ac965a92fe..000000000000 --- a/arch/arm/mach-nomadik/include/mach/irqs.h +++ /dev/null | |||
@@ -1,79 +0,0 @@ | |||
1 | /* | ||
2 | * mach-nomadik/include/mach/irqs.h | ||
3 | * | ||
4 | * Copyright (C) ST Microelectronics | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License as published by | ||
8 | * the Free Software Foundation; either version 2 of the License, or | ||
9 | * (at your option) any later version. | ||
10 | * | ||
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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
19 | */ | ||
20 | #ifndef __ASM_ARCH_IRQS_H | ||
21 | #define __ASM_ARCH_IRQS_H | ||
22 | |||
23 | #define IRQ_VIC_START 32 /* first VIC interrupt is 1 */ | ||
24 | |||
25 | /* | ||
26 | * Interrupt numbers generic for all Nomadik Chip cuts | ||
27 | */ | ||
28 | #define IRQ_WATCHDOG (IRQ_VIC_START+0) | ||
29 | #define IRQ_SOFTINT (IRQ_VIC_START+1) | ||
30 | #define IRQ_CRYPTO (IRQ_VIC_START+2) | ||
31 | #define IRQ_OWM (IRQ_VIC_START+3) | ||
32 | #define IRQ_MTU0 (IRQ_VIC_START+4) | ||
33 | #define IRQ_MTU1 (IRQ_VIC_START+5) | ||
34 | #define IRQ_GPIO0 (IRQ_VIC_START+6) | ||
35 | #define IRQ_GPIO1 (IRQ_VIC_START+7) | ||
36 | #define IRQ_GPIO2 (IRQ_VIC_START+8) | ||
37 | #define IRQ_GPIO3 (IRQ_VIC_START+9) | ||
38 | #define IRQ_RTC_RTT (IRQ_VIC_START+10) | ||
39 | #define IRQ_SSP (IRQ_VIC_START+11) | ||
40 | #define IRQ_UART0 (IRQ_VIC_START+12) | ||
41 | #define IRQ_DMA1 (IRQ_VIC_START+13) | ||
42 | #define IRQ_CLCD_MDIF (IRQ_VIC_START+14) | ||
43 | #define IRQ_DMA0 (IRQ_VIC_START+15) | ||
44 | #define IRQ_PWRFAIL (IRQ_VIC_START+16) | ||
45 | #define IRQ_UART1 (IRQ_VIC_START+17) | ||
46 | #define IRQ_FIRDA (IRQ_VIC_START+18) | ||
47 | #define IRQ_MSP0 (IRQ_VIC_START+19) | ||
48 | #define IRQ_I2C0 (IRQ_VIC_START+20) | ||
49 | #define IRQ_I2C1 (IRQ_VIC_START+21) | ||
50 | #define IRQ_SDMMC (IRQ_VIC_START+22) | ||
51 | #define IRQ_USBOTG (IRQ_VIC_START+23) | ||
52 | #define IRQ_SVA_IT0 (IRQ_VIC_START+24) | ||
53 | #define IRQ_SVA_IT1 (IRQ_VIC_START+25) | ||
54 | #define IRQ_SAA_IT0 (IRQ_VIC_START+26) | ||
55 | #define IRQ_SAA_IT1 (IRQ_VIC_START+27) | ||
56 | #define IRQ_UART2 (IRQ_VIC_START+28) | ||
57 | #define IRQ_MSP2 (IRQ_VIC_START+29) | ||
58 | #define IRQ_L2CC (IRQ_VIC_START+30) | ||
59 | #define IRQ_HPI (IRQ_VIC_START+31) | ||
60 | #define IRQ_SKE (IRQ_VIC_START+32) | ||
61 | #define IRQ_KP (IRQ_VIC_START+33) | ||
62 | #define IRQ_MEMST (IRQ_VIC_START+34) | ||
63 | #define IRQ_SGA_IT (IRQ_VIC_START+35) | ||
64 | #define IRQ_USBM (IRQ_VIC_START+36) | ||
65 | #define IRQ_MSP1 (IRQ_VIC_START+37) | ||
66 | |||
67 | #define NOMADIK_GPIO_OFFSET (IRQ_VIC_START+64) | ||
68 | |||
69 | /* After chip-specific IRQ numbers we have the GPIO ones */ | ||
70 | #define NOMADIK_NR_GPIO 128 /* last 4 not wired to pins */ | ||
71 | #define NOMADIK_GPIO_TO_IRQ(gpio) ((gpio) + NOMADIK_GPIO_OFFSET) | ||
72 | #define NOMADIK_IRQ_TO_GPIO(irq) ((irq) - NOMADIK_GPIO_OFFSET) | ||
73 | #define NOMADIK_NR_IRQS NOMADIK_GPIO_TO_IRQ(NOMADIK_NR_GPIO) | ||
74 | |||
75 | /* Following two are used by entry_macro.S, to access our dual-vic */ | ||
76 | #define VIC_REG_IRQSR0 0 | ||
77 | #define VIC_REG_IRQSR1 0x20 | ||
78 | |||
79 | #endif /* __ASM_ARCH_IRQS_H */ | ||
diff --git a/arch/arm/mach-nomadik/include/mach/timex.h b/arch/arm/mach-nomadik/include/mach/timex.h deleted file mode 100644 index 318b8896ce96..000000000000 --- a/arch/arm/mach-nomadik/include/mach/timex.h +++ /dev/null | |||
@@ -1,6 +0,0 @@ | |||
1 | #ifndef __ASM_ARCH_TIMEX_H | ||
2 | #define __ASM_ARCH_TIMEX_H | ||
3 | |||
4 | #define CLOCK_TICK_RATE 2400000 | ||
5 | |||
6 | #endif | ||
diff --git a/arch/arm/mach-nomadik/include/mach/uncompress.h b/arch/arm/mach-nomadik/include/mach/uncompress.h deleted file mode 100644 index 106fccca2021..000000000000 --- a/arch/arm/mach-nomadik/include/mach/uncompress.h +++ /dev/null | |||
@@ -1,60 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2008 STMicroelectronics | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify | ||
5 | * it under the terms of the GNU General Public License as published by | ||
6 | * the Free Software Foundation; either version 2 of the License, or | ||
7 | * (at your option) any later version. | ||
8 | * | ||
9 | * This program is distributed in the hope that it will be useful, | ||
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | * GNU General Public License for more details. | ||
13 | * | ||
14 | * You should have received a copy of the GNU General Public License | ||
15 | * along with this program; if not, write to the Free Software | ||
16 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
17 | */ | ||
18 | |||
19 | #ifndef __ASM_ARCH_UNCOMPRESS_H | ||
20 | #define __ASM_ARCH_UNCOMPRESS_H | ||
21 | |||
22 | #include <asm/setup.h> | ||
23 | #include <asm/io.h> | ||
24 | |||
25 | /* we need the constants in amba/serial.h, but it refers to amba_device */ | ||
26 | struct amba_device; | ||
27 | #include <linux/amba/serial.h> | ||
28 | |||
29 | #define NOMADIK_UART_DR (void __iomem *)0x101FB000 | ||
30 | #define NOMADIK_UART_LCRH (void __iomem *)0x101FB02c | ||
31 | #define NOMADIK_UART_CR (void __iomem *)0x101FB030 | ||
32 | #define NOMADIK_UART_FR (void __iomem *)0x101FB018 | ||
33 | |||
34 | static void putc(const char c) | ||
35 | { | ||
36 | /* Do nothing if the UART is not enabled. */ | ||
37 | if (!(readb(NOMADIK_UART_CR) & UART01x_CR_UARTEN)) | ||
38 | return; | ||
39 | |||
40 | if (c == '\n') | ||
41 | putc('\r'); | ||
42 | |||
43 | while (readb(NOMADIK_UART_FR) & UART01x_FR_TXFF) | ||
44 | barrier(); | ||
45 | writeb(c, NOMADIK_UART_DR); | ||
46 | } | ||
47 | |||
48 | static void flush(void) | ||
49 | { | ||
50 | if (!(readb(NOMADIK_UART_CR) & UART01x_CR_UARTEN)) | ||
51 | return; | ||
52 | while (readb(NOMADIK_UART_FR) & UART01x_FR_BUSY) | ||
53 | barrier(); | ||
54 | } | ||
55 | |||
56 | static inline void arch_decomp_setup(void) | ||
57 | { | ||
58 | } | ||
59 | |||
60 | #endif /* __ASM_ARCH_UNCOMPRESS_H */ | ||
diff --git a/arch/arm/mach-omap2/Kconfig b/arch/arm/mach-omap2/Kconfig index 5c27c4747469..857b1f097fd8 100644 --- a/arch/arm/mach-omap2/Kconfig +++ b/arch/arm/mach-omap2/Kconfig | |||
@@ -91,6 +91,8 @@ config ARCH_OMAP4 | |||
91 | select ARM_GIC | 91 | select ARM_GIC |
92 | select CACHE_L2X0 | 92 | select CACHE_L2X0 |
93 | select CPU_V7 | 93 | select CPU_V7 |
94 | select HAVE_ARM_SCU if SMP | ||
95 | select HAVE_ARM_TWD if LOCAL_TIMERS | ||
94 | select HAVE_SMP | 96 | select HAVE_SMP |
95 | select LOCAL_TIMERS if SMP | 97 | select LOCAL_TIMERS if SMP |
96 | select OMAP_INTERCONNECT | 98 | select OMAP_INTERCONNECT |
diff --git a/arch/arm/mach-prima2/Kconfig b/arch/arm/mach-prima2/Kconfig index b3be7994a2b1..80ca974b2f82 100644 --- a/arch/arm/mach-prima2/Kconfig +++ b/arch/arm/mach-prima2/Kconfig | |||
@@ -1,3 +1,15 @@ | |||
1 | config ARCH_SIRF | ||
2 | bool "CSR SiRF" if ARCH_MULTI_V7 | ||
3 | select ARCH_REQUIRE_GPIOLIB | ||
4 | select GENERIC_CLOCKEVENTS | ||
5 | select GENERIC_IRQ_CHIP | ||
6 | select MIGHT_HAVE_CACHE_L2X0 | ||
7 | select NO_IOPORT | ||
8 | select PINCTRL | ||
9 | select PINCTRL_SIRF | ||
10 | help | ||
11 | Support for CSR SiRFprimaII/Marco/Polo platforms | ||
12 | |||
1 | if ARCH_SIRF | 13 | if ARCH_SIRF |
2 | 14 | ||
3 | menu "CSR SiRF atlas6/primaII/Marco/Polo Specific Features" | 15 | menu "CSR SiRF atlas6/primaII/Marco/Polo Specific Features" |
@@ -24,6 +36,7 @@ config ARCH_MARCO | |||
24 | default y | 36 | default y |
25 | select ARM_GIC | 37 | select ARM_GIC |
26 | select CPU_V7 | 38 | select CPU_V7 |
39 | select HAVE_ARM_SCU if SMP | ||
27 | select HAVE_SMP | 40 | select HAVE_SMP |
28 | select SMP_ON_UP | 41 | select SMP_ON_UP |
29 | help | 42 | help |
diff --git a/arch/arm/mach-prima2/Makefile b/arch/arm/mach-prima2/Makefile index bfe360cbd177..7a6b4a323125 100644 --- a/arch/arm/mach-prima2/Makefile +++ b/arch/arm/mach-prima2/Makefile | |||
@@ -4,8 +4,7 @@ obj-y += rtciobrg.o | |||
4 | obj-$(CONFIG_DEBUG_LL) += lluart.o | 4 | obj-$(CONFIG_DEBUG_LL) += lluart.o |
5 | obj-$(CONFIG_CACHE_L2X0) += l2x0.o | 5 | obj-$(CONFIG_CACHE_L2X0) += l2x0.o |
6 | obj-$(CONFIG_SUSPEND) += pm.o sleep.o | 6 | obj-$(CONFIG_SUSPEND) += pm.o sleep.o |
7 | obj-$(CONFIG_SIRF_IRQ) += irq.o | ||
8 | obj-$(CONFIG_SMP) += platsmp.o headsmp.o | 7 | obj-$(CONFIG_SMP) += platsmp.o headsmp.o |
9 | obj-$(CONFIG_HOTPLUG_CPU) += hotplug.o | 8 | obj-$(CONFIG_HOTPLUG_CPU) += hotplug.o |
10 | obj-$(CONFIG_ARCH_PRIMA2) += timer-prima2.o | 9 | |
11 | obj-$(CONFIG_ARCH_MARCO) += timer-marco.o | 10 | CFLAGS_hotplug.o += -march=armv7-a |
diff --git a/arch/arm/mach-prima2/common.c b/arch/arm/mach-prima2/common.c index 72efb4ff2803..4f94cd87972a 100644 --- a/arch/arm/mach-prima2/common.c +++ b/arch/arm/mach-prima2/common.c | |||
@@ -6,6 +6,7 @@ | |||
6 | * Licensed under GPLv2 or later. | 6 | * Licensed under GPLv2 or later. |
7 | */ | 7 | */ |
8 | 8 | ||
9 | #include <linux/clocksource.h> | ||
9 | #include <linux/init.h> | 10 | #include <linux/init.h> |
10 | #include <linux/kernel.h> | 11 | #include <linux/kernel.h> |
11 | #include <linux/irqchip.h> | 12 | #include <linux/irqchip.h> |
@@ -31,6 +32,13 @@ void __init sirfsoc_init_late(void) | |||
31 | sirfsoc_pm_init(); | 32 | sirfsoc_pm_init(); |
32 | } | 33 | } |
33 | 34 | ||
35 | static __init void sirfsoc_init_time(void) | ||
36 | { | ||
37 | /* initialize clocking early, we want to set the OS timer */ | ||
38 | sirfsoc_of_clk_init(); | ||
39 | clocksource_of_init(); | ||
40 | } | ||
41 | |||
34 | static __init void sirfsoc_map_io(void) | 42 | static __init void sirfsoc_map_io(void) |
35 | { | 43 | { |
36 | sirfsoc_map_lluart(); | 44 | sirfsoc_map_lluart(); |
@@ -45,12 +53,10 @@ static const char *atlas6_dt_match[] __initdata = { | |||
45 | 53 | ||
46 | DT_MACHINE_START(ATLAS6_DT, "Generic ATLAS6 (Flattened Device Tree)") | 54 | DT_MACHINE_START(ATLAS6_DT, "Generic ATLAS6 (Flattened Device Tree)") |
47 | /* Maintainer: Barry Song <baohua.song@csr.com> */ | 55 | /* Maintainer: Barry Song <baohua.song@csr.com> */ |
56 | .nr_irqs = 128, | ||
48 | .map_io = sirfsoc_map_io, | 57 | .map_io = sirfsoc_map_io, |
49 | .init_irq = sirfsoc_of_irq_init, | 58 | .init_irq = irqchip_init, |
50 | .init_time = sirfsoc_prima2_timer_init, | 59 | .init_time = sirfsoc_init_time, |
51 | #ifdef CONFIG_MULTI_IRQ_HANDLER | ||
52 | .handle_irq = sirfsoc_handle_irq, | ||
53 | #endif | ||
54 | .init_machine = sirfsoc_mach_init, | 60 | .init_machine = sirfsoc_mach_init, |
55 | .init_late = sirfsoc_init_late, | 61 | .init_late = sirfsoc_init_late, |
56 | .dt_compat = atlas6_dt_match, | 62 | .dt_compat = atlas6_dt_match, |
@@ -66,12 +72,10 @@ static const char *prima2_dt_match[] __initdata = { | |||
66 | 72 | ||
67 | DT_MACHINE_START(PRIMA2_DT, "Generic PRIMA2 (Flattened Device Tree)") | 73 | DT_MACHINE_START(PRIMA2_DT, "Generic PRIMA2 (Flattened Device Tree)") |
68 | /* Maintainer: Barry Song <baohua.song@csr.com> */ | 74 | /* Maintainer: Barry Song <baohua.song@csr.com> */ |
75 | .nr_irqs = 128, | ||
69 | .map_io = sirfsoc_map_io, | 76 | .map_io = sirfsoc_map_io, |
70 | .init_irq = sirfsoc_of_irq_init, | 77 | .init_irq = irqchip_init, |
71 | .init_time = sirfsoc_prima2_timer_init, | 78 | .init_time = sirfsoc_init_time, |
72 | #ifdef CONFIG_MULTI_IRQ_HANDLER | ||
73 | .handle_irq = sirfsoc_handle_irq, | ||
74 | #endif | ||
75 | .dma_zone_size = SZ_256M, | 79 | .dma_zone_size = SZ_256M, |
76 | .init_machine = sirfsoc_mach_init, | 80 | .init_machine = sirfsoc_mach_init, |
77 | .init_late = sirfsoc_init_late, | 81 | .init_late = sirfsoc_init_late, |
@@ -91,7 +95,7 @@ DT_MACHINE_START(MARCO_DT, "Generic MARCO (Flattened Device Tree)") | |||
91 | .smp = smp_ops(sirfsoc_smp_ops), | 95 | .smp = smp_ops(sirfsoc_smp_ops), |
92 | .map_io = sirfsoc_map_io, | 96 | .map_io = sirfsoc_map_io, |
93 | .init_irq = irqchip_init, | 97 | .init_irq = irqchip_init, |
94 | .init_time = sirfsoc_marco_timer_init, | 98 | .init_time = sirfsoc_init_time, |
95 | .init_machine = sirfsoc_mach_init, | 99 | .init_machine = sirfsoc_mach_init, |
96 | .init_late = sirfsoc_init_late, | 100 | .init_late = sirfsoc_init_late, |
97 | .dt_compat = marco_dt_match, | 101 | .dt_compat = marco_dt_match, |
diff --git a/arch/arm/mach-prima2/common.h b/arch/arm/mach-prima2/common.h index b7c26b62e4a7..81135cd88e54 100644 --- a/arch/arm/mach-prima2/common.h +++ b/arch/arm/mach-prima2/common.h | |||
@@ -13,8 +13,8 @@ | |||
13 | #include <asm/mach/time.h> | 13 | #include <asm/mach/time.h> |
14 | #include <asm/exception.h> | 14 | #include <asm/exception.h> |
15 | 15 | ||
16 | extern void sirfsoc_prima2_timer_init(void); | 16 | #define SIRFSOC_VA_BASE _AC(0xFEC00000, UL) |
17 | extern void sirfsoc_marco_timer_init(void); | 17 | #define SIRFSOC_VA(x) (SIRFSOC_VA_BASE + ((x) & 0x00FFF000)) |
18 | 18 | ||
19 | extern struct smp_operations sirfsoc_smp_ops; | 19 | extern struct smp_operations sirfsoc_smp_ops; |
20 | extern void sirfsoc_secondary_startup(void); | 20 | extern void sirfsoc_secondary_startup(void); |
diff --git a/arch/arm/mach-prima2/include/mach/clkdev.h b/arch/arm/mach-prima2/include/mach/clkdev.h deleted file mode 100644 index 66932518b1b7..000000000000 --- a/arch/arm/mach-prima2/include/mach/clkdev.h +++ /dev/null | |||
@@ -1,15 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-prima2/include/mach/clkdev.h | ||
3 | * | ||
4 | * Copyright (c) 2011 Cambridge Silicon Radio Limited, a CSR plc group company. | ||
5 | * | ||
6 | * Licensed under GPLv2 or later. | ||
7 | */ | ||
8 | |||
9 | #ifndef __MACH_CLKDEV_H | ||
10 | #define __MACH_CLKDEV_H | ||
11 | |||
12 | #define __clk_get(clk) ({ 1; }) | ||
13 | #define __clk_put(clk) do { } while (0) | ||
14 | |||
15 | #endif | ||
diff --git a/arch/arm/mach-prima2/include/mach/debug-macro.S b/arch/arm/mach-prima2/include/mach/debug-macro.S deleted file mode 100644 index cd97492bb075..000000000000 --- a/arch/arm/mach-prima2/include/mach/debug-macro.S +++ /dev/null | |||
@@ -1,29 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-prima2/include/mach/debug-macro.S | ||
3 | * | ||
4 | * Copyright (c) 2011 Cambridge Silicon Radio Limited, a CSR plc group company. | ||
5 | * | ||
6 | * Licensed under GPLv2 or later. | ||
7 | */ | ||
8 | |||
9 | #include <mach/hardware.h> | ||
10 | #include <mach/uart.h> | ||
11 | |||
12 | .macro addruart, rp, rv, tmp | ||
13 | ldr \rp, =SIRFSOC_UART1_PA_BASE @ physical | ||
14 | ldr \rv, =SIRFSOC_UART1_VA_BASE @ virtual | ||
15 | .endm | ||
16 | |||
17 | .macro senduart,rd,rx | ||
18 | str \rd, [\rx, #SIRFSOC_UART_TXFIFO_DATA] | ||
19 | .endm | ||
20 | |||
21 | .macro busyuart,rd,rx | ||
22 | .endm | ||
23 | |||
24 | .macro waituart,rd,rx | ||
25 | 1001: ldr \rd, [\rx, #SIRFSOC_UART_TXFIFO_STATUS] | ||
26 | tst \rd, #SIRFSOC_UART1_TXFIFO_EMPTY | ||
27 | beq 1001b | ||
28 | .endm | ||
29 | |||
diff --git a/arch/arm/mach-prima2/include/mach/entry-macro.S b/arch/arm/mach-prima2/include/mach/entry-macro.S deleted file mode 100644 index 86434e7a5be9..000000000000 --- a/arch/arm/mach-prima2/include/mach/entry-macro.S +++ /dev/null | |||
@@ -1,22 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-prima2/include/mach/entry-macro.S | ||
3 | * | ||
4 | * Copyright (c) 2011 Cambridge Silicon Radio Limited, a CSR plc group company. | ||
5 | * | ||
6 | * Licensed under GPLv2 or later. | ||
7 | */ | ||
8 | |||
9 | #include <mach/hardware.h> | ||
10 | |||
11 | #define SIRFSOC_INT_ID 0x38 | ||
12 | |||
13 | .macro get_irqnr_preamble, base, tmp | ||
14 | ldr \base, =sirfsoc_intc_base | ||
15 | ldr \base, [\base] | ||
16 | .endm | ||
17 | |||
18 | .macro get_irqnr_and_base, irqnr, irqstat, base, tmp | ||
19 | ldr \irqnr, [\base, #SIRFSOC_INT_ID] @ Get the highest priority irq | ||
20 | cmp \irqnr, #0x40 @ the irq num can't be larger than 0x3f | ||
21 | movges \irqnr, #0 | ||
22 | .endm | ||
diff --git a/arch/arm/mach-prima2/include/mach/hardware.h b/arch/arm/mach-prima2/include/mach/hardware.h deleted file mode 100644 index 105b96964f25..000000000000 --- a/arch/arm/mach-prima2/include/mach/hardware.h +++ /dev/null | |||
@@ -1,15 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-prima2/include/mach/hardware.h | ||
3 | * | ||
4 | * Copyright (c) 2011 Cambridge Silicon Radio Limited, a CSR plc group company. | ||
5 | * | ||
6 | * Licensed under GPLv2 or later. | ||
7 | */ | ||
8 | |||
9 | #ifndef __MACH_HARDWARE_H__ | ||
10 | #define __MACH_HARDWARE_H__ | ||
11 | |||
12 | #include <asm/sizes.h> | ||
13 | #include <mach/map.h> | ||
14 | |||
15 | #endif | ||
diff --git a/arch/arm/mach-prima2/include/mach/irqs.h b/arch/arm/mach-prima2/include/mach/irqs.h deleted file mode 100644 index b778a0f248ed..000000000000 --- a/arch/arm/mach-prima2/include/mach/irqs.h +++ /dev/null | |||
@@ -1,17 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-prima2/include/mach/irqs.h | ||
3 | * | ||
4 | * Copyright (c) 2011 Cambridge Silicon Radio Limited, a CSR plc group company. | ||
5 | * | ||
6 | * Licensed under GPLv2 or later. | ||
7 | */ | ||
8 | |||
9 | #ifndef __ASM_ARCH_IRQS_H | ||
10 | #define __ASM_ARCH_IRQS_H | ||
11 | |||
12 | #define SIRFSOC_INTENAL_IRQ_START 0 | ||
13 | #define SIRFSOC_INTENAL_IRQ_END 127 | ||
14 | #define SIRFSOC_GPIO_IRQ_START (SIRFSOC_INTENAL_IRQ_END + 1) | ||
15 | #define NR_IRQS 288 | ||
16 | |||
17 | #endif | ||
diff --git a/arch/arm/mach-prima2/include/mach/map.h b/arch/arm/mach-prima2/include/mach/map.h deleted file mode 100644 index 6f243532570c..000000000000 --- a/arch/arm/mach-prima2/include/mach/map.h +++ /dev/null | |||
@@ -1,18 +0,0 @@ | |||
1 | /* | ||
2 | * memory & I/O static mapping definitions for CSR SiRFprimaII | ||
3 | * | ||
4 | * Copyright (c) 2011 Cambridge Silicon Radio Limited, a CSR plc group company. | ||
5 | * | ||
6 | * Licensed under GPLv2 or later. | ||
7 | */ | ||
8 | |||
9 | #ifndef __MACH_PRIMA2_MAP_H__ | ||
10 | #define __MACH_PRIMA2_MAP_H__ | ||
11 | |||
12 | #include <linux/const.h> | ||
13 | |||
14 | #define SIRFSOC_VA_BASE _AC(0xFEC00000, UL) | ||
15 | |||
16 | #define SIRFSOC_VA(x) (SIRFSOC_VA_BASE + ((x) & 0x00FFF000)) | ||
17 | |||
18 | #endif | ||
diff --git a/arch/arm/mach-prima2/include/mach/timex.h b/arch/arm/mach-prima2/include/mach/timex.h deleted file mode 100644 index d6f98a75e562..000000000000 --- a/arch/arm/mach-prima2/include/mach/timex.h +++ /dev/null | |||
@@ -1,14 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-prima2/include/mach/timex.h | ||
3 | * | ||
4 | * Copyright (c) 2011 Cambridge Silicon Radio Limited, a CSR plc group company. | ||
5 | * | ||
6 | * Licensed under GPLv2 or later. | ||
7 | */ | ||
8 | |||
9 | #ifndef __MACH_TIMEX_H__ | ||
10 | #define __MACH_TIMEX_H__ | ||
11 | |||
12 | #define CLOCK_TICK_RATE 1000000 | ||
13 | |||
14 | #endif | ||
diff --git a/arch/arm/mach-prima2/include/mach/uncompress.h b/arch/arm/mach-prima2/include/mach/uncompress.h deleted file mode 100644 index d1513a33709a..000000000000 --- a/arch/arm/mach-prima2/include/mach/uncompress.h +++ /dev/null | |||
@@ -1,41 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-prima2/include/mach/uncompress.h | ||
3 | * | ||
4 | * Copyright (c) 2011 Cambridge Silicon Radio Limited, a CSR plc group company. | ||
5 | * | ||
6 | * Licensed under GPLv2 or later. | ||
7 | */ | ||
8 | |||
9 | #ifndef __ASM_ARCH_UNCOMPRESS_H | ||
10 | #define __ASM_ARCH_UNCOMPRESS_H | ||
11 | |||
12 | #include <linux/io.h> | ||
13 | #include <mach/hardware.h> | ||
14 | #include <mach/uart.h> | ||
15 | |||
16 | void arch_decomp_setup(void) | ||
17 | { | ||
18 | } | ||
19 | |||
20 | static __inline__ void putc(char c) | ||
21 | { | ||
22 | /* | ||
23 | * during kernel decompression, all mappings are flat: | ||
24 | * virt_addr == phys_addr | ||
25 | */ | ||
26 | if (!SIRFSOC_UART1_PA_BASE) | ||
27 | return; | ||
28 | |||
29 | while (__raw_readl((void __iomem *)SIRFSOC_UART1_PA_BASE + SIRFSOC_UART_TXFIFO_STATUS) | ||
30 | & SIRFSOC_UART1_TXFIFO_FULL) | ||
31 | barrier(); | ||
32 | |||
33 | __raw_writel(c, (void __iomem *)SIRFSOC_UART1_PA_BASE + SIRFSOC_UART_TXFIFO_DATA); | ||
34 | } | ||
35 | |||
36 | static inline void flush(void) | ||
37 | { | ||
38 | } | ||
39 | |||
40 | #endif | ||
41 | |||
diff --git a/arch/arm/mach-prima2/irq.c b/arch/arm/mach-prima2/irq.c deleted file mode 100644 index 6c0f3e9c43fb..000000000000 --- a/arch/arm/mach-prima2/irq.c +++ /dev/null | |||
@@ -1,129 +0,0 @@ | |||
1 | /* | ||
2 | * interrupt controller support for CSR SiRFprimaII | ||
3 | * | ||
4 | * Copyright (c) 2011 Cambridge Silicon Radio Limited, a CSR plc group company. | ||
5 | * | ||
6 | * Licensed under GPLv2 or later. | ||
7 | */ | ||
8 | |||
9 | #include <linux/init.h> | ||
10 | #include <linux/io.h> | ||
11 | #include <linux/irq.h> | ||
12 | #include <linux/of.h> | ||
13 | #include <linux/of_address.h> | ||
14 | #include <linux/irqdomain.h> | ||
15 | #include <linux/syscore_ops.h> | ||
16 | #include <asm/mach/irq.h> | ||
17 | #include <asm/exception.h> | ||
18 | #include <mach/hardware.h> | ||
19 | |||
20 | #define SIRFSOC_INT_RISC_MASK0 0x0018 | ||
21 | #define SIRFSOC_INT_RISC_MASK1 0x001C | ||
22 | #define SIRFSOC_INT_RISC_LEVEL0 0x0020 | ||
23 | #define SIRFSOC_INT_RISC_LEVEL1 0x0024 | ||
24 | #define SIRFSOC_INIT_IRQ_ID 0x0038 | ||
25 | |||
26 | void __iomem *sirfsoc_intc_base; | ||
27 | |||
28 | static __init void | ||
29 | sirfsoc_alloc_gc(void __iomem *base, unsigned int irq_start, unsigned int num) | ||
30 | { | ||
31 | struct irq_chip_generic *gc; | ||
32 | struct irq_chip_type *ct; | ||
33 | |||
34 | gc = irq_alloc_generic_chip("SIRFINTC", 1, irq_start, base, handle_level_irq); | ||
35 | ct = gc->chip_types; | ||
36 | |||
37 | ct->chip.irq_mask = irq_gc_mask_clr_bit; | ||
38 | ct->chip.irq_unmask = irq_gc_mask_set_bit; | ||
39 | ct->regs.mask = SIRFSOC_INT_RISC_MASK0; | ||
40 | |||
41 | irq_setup_generic_chip(gc, IRQ_MSK(num), IRQ_GC_INIT_MASK_CACHE, IRQ_NOREQUEST, 0); | ||
42 | } | ||
43 | |||
44 | static __init void sirfsoc_irq_init(void) | ||
45 | { | ||
46 | sirfsoc_alloc_gc(sirfsoc_intc_base, 0, 32); | ||
47 | sirfsoc_alloc_gc(sirfsoc_intc_base + 4, 32, | ||
48 | SIRFSOC_INTENAL_IRQ_END + 1 - 32); | ||
49 | |||
50 | writel_relaxed(0, sirfsoc_intc_base + SIRFSOC_INT_RISC_LEVEL0); | ||
51 | writel_relaxed(0, sirfsoc_intc_base + SIRFSOC_INT_RISC_LEVEL1); | ||
52 | |||
53 | writel_relaxed(0, sirfsoc_intc_base + SIRFSOC_INT_RISC_MASK0); | ||
54 | writel_relaxed(0, sirfsoc_intc_base + SIRFSOC_INT_RISC_MASK1); | ||
55 | } | ||
56 | |||
57 | asmlinkage void __exception_irq_entry sirfsoc_handle_irq(struct pt_regs *regs) | ||
58 | { | ||
59 | u32 irqstat, irqnr; | ||
60 | |||
61 | irqstat = readl_relaxed(sirfsoc_intc_base + SIRFSOC_INIT_IRQ_ID); | ||
62 | irqnr = irqstat & 0xff; | ||
63 | |||
64 | handle_IRQ(irqnr, regs); | ||
65 | } | ||
66 | |||
67 | static struct of_device_id intc_ids[] = { | ||
68 | { .compatible = "sirf,prima2-intc" }, | ||
69 | {}, | ||
70 | }; | ||
71 | |||
72 | void __init sirfsoc_of_irq_init(void) | ||
73 | { | ||
74 | struct device_node *np; | ||
75 | |||
76 | np = of_find_matching_node(NULL, intc_ids); | ||
77 | if (!np) | ||
78 | return; | ||
79 | |||
80 | sirfsoc_intc_base = of_iomap(np, 0); | ||
81 | if (!sirfsoc_intc_base) | ||
82 | panic("unable to map intc cpu registers\n"); | ||
83 | |||
84 | irq_domain_add_legacy(np, SIRFSOC_INTENAL_IRQ_END + 1, 0, 0, | ||
85 | &irq_domain_simple_ops, NULL); | ||
86 | |||
87 | of_node_put(np); | ||
88 | |||
89 | sirfsoc_irq_init(); | ||
90 | } | ||
91 | |||
92 | struct sirfsoc_irq_status { | ||
93 | u32 mask0; | ||
94 | u32 mask1; | ||
95 | u32 level0; | ||
96 | u32 level1; | ||
97 | }; | ||
98 | |||
99 | static struct sirfsoc_irq_status sirfsoc_irq_st; | ||
100 | |||
101 | static int sirfsoc_irq_suspend(void) | ||
102 | { | ||
103 | sirfsoc_irq_st.mask0 = readl_relaxed(sirfsoc_intc_base + SIRFSOC_INT_RISC_MASK0); | ||
104 | sirfsoc_irq_st.mask1 = readl_relaxed(sirfsoc_intc_base + SIRFSOC_INT_RISC_MASK1); | ||
105 | sirfsoc_irq_st.level0 = readl_relaxed(sirfsoc_intc_base + SIRFSOC_INT_RISC_LEVEL0); | ||
106 | sirfsoc_irq_st.level1 = readl_relaxed(sirfsoc_intc_base + SIRFSOC_INT_RISC_LEVEL1); | ||
107 | |||
108 | return 0; | ||
109 | } | ||
110 | |||
111 | static void sirfsoc_irq_resume(void) | ||
112 | { | ||
113 | writel_relaxed(sirfsoc_irq_st.mask0, sirfsoc_intc_base + SIRFSOC_INT_RISC_MASK0); | ||
114 | writel_relaxed(sirfsoc_irq_st.mask1, sirfsoc_intc_base + SIRFSOC_INT_RISC_MASK1); | ||
115 | writel_relaxed(sirfsoc_irq_st.level0, sirfsoc_intc_base + SIRFSOC_INT_RISC_LEVEL0); | ||
116 | writel_relaxed(sirfsoc_irq_st.level1, sirfsoc_intc_base + SIRFSOC_INT_RISC_LEVEL1); | ||
117 | } | ||
118 | |||
119 | static struct syscore_ops sirfsoc_irq_syscore_ops = { | ||
120 | .suspend = sirfsoc_irq_suspend, | ||
121 | .resume = sirfsoc_irq_resume, | ||
122 | }; | ||
123 | |||
124 | static int __init sirfsoc_irq_pm_init(void) | ||
125 | { | ||
126 | register_syscore_ops(&sirfsoc_irq_syscore_ops); | ||
127 | return 0; | ||
128 | } | ||
129 | device_initcall(sirfsoc_irq_pm_init); | ||
diff --git a/arch/arm/mach-prima2/lluart.c b/arch/arm/mach-prima2/lluart.c index a89f9b3c8cc5..99c0c927ca4a 100644 --- a/arch/arm/mach-prima2/lluart.c +++ b/arch/arm/mach-prima2/lluart.c | |||
@@ -9,8 +9,18 @@ | |||
9 | #include <linux/kernel.h> | 9 | #include <linux/kernel.h> |
10 | #include <asm/page.h> | 10 | #include <asm/page.h> |
11 | #include <asm/mach/map.h> | 11 | #include <asm/mach/map.h> |
12 | #include <mach/map.h> | 12 | #include "common.h" |
13 | #include <mach/uart.h> | 13 | |
14 | #if defined(CONFIG_DEBUG_SIRFPRIMA2_UART1) | ||
15 | #define SIRFSOC_UART1_PA_BASE 0xb0060000 | ||
16 | #elif defined(CONFIG_DEBUG_SIRFMARCO_UART1) | ||
17 | #define SIRFSOC_UART1_PA_BASE 0xcc060000 | ||
18 | #else | ||
19 | #define SIRFSOC_UART1_PA_BASE 0 | ||
20 | #endif | ||
21 | |||
22 | #define SIRFSOC_UART1_VA_BASE SIRFSOC_VA(0x060000) | ||
23 | #define SIRFSOC_UART1_SIZE SZ_4K | ||
14 | 24 | ||
15 | void __init sirfsoc_map_lluart(void) | 25 | void __init sirfsoc_map_lluart(void) |
16 | { | 26 | { |
diff --git a/arch/arm/mach-prima2/platsmp.c b/arch/arm/mach-prima2/platsmp.c index c7c92e78f0cf..1c3de7bed841 100644 --- a/arch/arm/mach-prima2/platsmp.c +++ b/arch/arm/mach-prima2/platsmp.c | |||
@@ -17,7 +17,6 @@ | |||
17 | #include <asm/smp_scu.h> | 17 | #include <asm/smp_scu.h> |
18 | #include <asm/cacheflush.h> | 18 | #include <asm/cacheflush.h> |
19 | #include <asm/cputype.h> | 19 | #include <asm/cputype.h> |
20 | #include <mach/map.h> | ||
21 | 20 | ||
22 | #include "common.h" | 21 | #include "common.h" |
23 | 22 | ||
diff --git a/arch/arm/mach-realview/Kconfig b/arch/arm/mach-realview/Kconfig index 14c1d47e1abf..d210c0f9c2c4 100644 --- a/arch/arm/mach-realview/Kconfig +++ b/arch/arm/mach-realview/Kconfig | |||
@@ -12,6 +12,8 @@ config REALVIEW_EB_A9MP | |||
12 | bool "Support Multicore Cortex-A9 Tile" | 12 | bool "Support Multicore Cortex-A9 Tile" |
13 | depends on MACH_REALVIEW_EB | 13 | depends on MACH_REALVIEW_EB |
14 | select CPU_V7 | 14 | select CPU_V7 |
15 | select HAVE_ARM_SCU if SMP | ||
16 | select HAVE_ARM_TWD if LOCAL_TIMERS | ||
15 | select HAVE_SMP | 17 | select HAVE_SMP |
16 | select MIGHT_HAVE_CACHE_L2X0 | 18 | select MIGHT_HAVE_CACHE_L2X0 |
17 | help | 19 | help |
@@ -23,6 +25,8 @@ config REALVIEW_EB_ARM11MP | |||
23 | depends on MACH_REALVIEW_EB | 25 | depends on MACH_REALVIEW_EB |
24 | select ARCH_HAS_BARRIERS if SMP | 26 | select ARCH_HAS_BARRIERS if SMP |
25 | select CPU_V6K | 27 | select CPU_V6K |
28 | select HAVE_ARM_SCU if SMP | ||
29 | select HAVE_ARM_TWD if LOCAL_TIMERS | ||
26 | select HAVE_SMP | 30 | select HAVE_SMP |
27 | select MIGHT_HAVE_CACHE_L2X0 | 31 | select MIGHT_HAVE_CACHE_L2X0 |
28 | help | 32 | help |
@@ -43,6 +47,8 @@ config MACH_REALVIEW_PB11MP | |||
43 | select ARCH_HAS_BARRIERS if SMP | 47 | select ARCH_HAS_BARRIERS if SMP |
44 | select ARM_GIC | 48 | select ARM_GIC |
45 | select CPU_V6K | 49 | select CPU_V6K |
50 | select HAVE_ARM_SCU if SMP | ||
51 | select HAVE_ARM_TWD if LOCAL_TIMERS | ||
46 | select HAVE_PATA_PLATFORM | 52 | select HAVE_PATA_PLATFORM |
47 | select HAVE_SMP | 53 | select HAVE_SMP |
48 | select MIGHT_HAVE_CACHE_L2X0 | 54 | select MIGHT_HAVE_CACHE_L2X0 |
@@ -85,6 +91,8 @@ config MACH_REALVIEW_PBX | |||
85 | bool "Support RealView(R) Platform Baseboard Explore" | 91 | bool "Support RealView(R) Platform Baseboard Explore" |
86 | select ARCH_SPARSEMEM_ENABLE if CPU_V7 && !REALVIEW_HIGH_PHYS_OFFSET | 92 | select ARCH_SPARSEMEM_ENABLE if CPU_V7 && !REALVIEW_HIGH_PHYS_OFFSET |
87 | select ARM_GIC | 93 | select ARM_GIC |
94 | select HAVE_ARM_SCU if SMP | ||
95 | select HAVE_ARM_TWD if LOCAL_TIMERS | ||
88 | select HAVE_PATA_PLATFORM | 96 | select HAVE_PATA_PLATFORM |
89 | select HAVE_SMP | 97 | select HAVE_SMP |
90 | select MIGHT_HAVE_CACHE_L2X0 | 98 | select MIGHT_HAVE_CACHE_L2X0 |
diff --git a/arch/arm/mach-s3c24xx/include/mach/debug-macro.S b/arch/arm/mach-s3c24xx/include/mach/debug-macro.S index 13ed33c69113..2558952e3147 100644 --- a/arch/arm/mach-s3c24xx/include/mach/debug-macro.S +++ b/arch/arm/mach-s3c24xx/include/mach/debug-macro.S | |||
@@ -98,4 +98,4 @@ | |||
98 | 98 | ||
99 | /* include the reset of the code which will do the work */ | 99 | /* include the reset of the code which will do the work */ |
100 | 100 | ||
101 | #include <plat/debug-macro.S> | 101 | #include <debug/samsung.S> |
diff --git a/arch/arm/mach-s3c64xx/include/mach/debug-macro.S b/arch/arm/mach-s3c64xx/include/mach/debug-macro.S index c0c076a90f27..dd9ccca5de1f 100644 --- a/arch/arm/mach-s3c64xx/include/mach/debug-macro.S +++ b/arch/arm/mach-s3c64xx/include/mach/debug-macro.S | |||
@@ -35,4 +35,4 @@ | |||
35 | * will be fine with us. | 35 | * will be fine with us. |
36 | */ | 36 | */ |
37 | 37 | ||
38 | #include <plat/debug-macro.S> | 38 | #include <debug/samsung.S> |
diff --git a/arch/arm/mach-s5p64x0/include/mach/debug-macro.S b/arch/arm/mach-s5p64x0/include/mach/debug-macro.S index e80ba3c69814..5e2916fb19a9 100644 --- a/arch/arm/mach-s5p64x0/include/mach/debug-macro.S +++ b/arch/arm/mach-s5p64x0/include/mach/debug-macro.S | |||
@@ -30,4 +30,4 @@ | |||
30 | #endif | 30 | #endif |
31 | .endm | 31 | .endm |
32 | 32 | ||
33 | #include <plat/debug-macro.S> | 33 | #include <debug/samsung.S> |
diff --git a/arch/arm/mach-s5pc100/include/mach/debug-macro.S b/arch/arm/mach-s5pc100/include/mach/debug-macro.S index 694f75937000..66cb7f16bf2a 100644 --- a/arch/arm/mach-s5pc100/include/mach/debug-macro.S +++ b/arch/arm/mach-s5pc100/include/mach/debug-macro.S | |||
@@ -36,4 +36,4 @@ | |||
36 | * will be fine with us. | 36 | * will be fine with us. |
37 | */ | 37 | */ |
38 | 38 | ||
39 | #include <plat/debug-macro.S> | 39 | #include <debug/samsung.S> |
diff --git a/arch/arm/mach-s5pc100/setup-sdhci-gpio.c b/arch/arm/mach-s5pc100/setup-sdhci-gpio.c index 03c02d04c68c..6010c0310cb5 100644 --- a/arch/arm/mach-s5pc100/setup-sdhci-gpio.c +++ b/arch/arm/mach-s5pc100/setup-sdhci-gpio.c | |||
@@ -19,7 +19,6 @@ | |||
19 | #include <linux/mmc/card.h> | 19 | #include <linux/mmc/card.h> |
20 | 20 | ||
21 | #include <plat/gpio-cfg.h> | 21 | #include <plat/gpio-cfg.h> |
22 | #include <plat/regs-sdhci.h> | ||
23 | #include <plat/sdhci.h> | 22 | #include <plat/sdhci.h> |
24 | 23 | ||
25 | void s5pc100_setup_sdhci0_cfg_gpio(struct platform_device *dev, int width) | 24 | void s5pc100_setup_sdhci0_cfg_gpio(struct platform_device *dev, int width) |
diff --git a/arch/arm/mach-s5pv210/include/mach/debug-macro.S b/arch/arm/mach-s5pv210/include/mach/debug-macro.S index 79e55597ab63..80c21996c943 100644 --- a/arch/arm/mach-s5pv210/include/mach/debug-macro.S +++ b/arch/arm/mach-s5pv210/include/mach/debug-macro.S | |||
@@ -38,4 +38,4 @@ | |||
38 | * will be fine with us. | 38 | * will be fine with us. |
39 | */ | 39 | */ |
40 | 40 | ||
41 | #include <plat/debug-macro.S> | 41 | #include <debug/samsung.S> |
diff --git a/arch/arm/mach-s5pv210/setup-sdhci-gpio.c b/arch/arm/mach-s5pv210/setup-sdhci-gpio.c index 3e3ac05bb7b1..0512ada00522 100644 --- a/arch/arm/mach-s5pv210/setup-sdhci-gpio.c +++ b/arch/arm/mach-s5pv210/setup-sdhci-gpio.c | |||
@@ -20,7 +20,6 @@ | |||
20 | #include <linux/mmc/card.h> | 20 | #include <linux/mmc/card.h> |
21 | 21 | ||
22 | #include <plat/gpio-cfg.h> | 22 | #include <plat/gpio-cfg.h> |
23 | #include <plat/regs-sdhci.h> | ||
24 | #include <plat/sdhci.h> | 23 | #include <plat/sdhci.h> |
25 | 24 | ||
26 | void s5pv210_setup_sdhci0_cfg_gpio(struct platform_device *dev, int width) | 25 | void s5pv210_setup_sdhci0_cfg_gpio(struct platform_device *dev, int width) |
diff --git a/arch/arm/mach-spear/Kconfig b/arch/arm/mach-spear/Kconfig new file mode 100644 index 000000000000..442917eedff3 --- /dev/null +++ b/arch/arm/mach-spear/Kconfig | |||
@@ -0,0 +1,105 @@ | |||
1 | # | ||
2 | # SPEAr Platform configuration file | ||
3 | # | ||
4 | |||
5 | menuconfig PLAT_SPEAR | ||
6 | bool "ST SPEAr Family" if ARCH_MULTI_V7 || ARCH_MULTI_V5 | ||
7 | default PLAT_SPEAR_SINGLE | ||
8 | select ARCH_REQUIRE_GPIOLIB | ||
9 | select ARM_AMBA | ||
10 | select CLKDEV_LOOKUP | ||
11 | select CLKSRC_MMIO | ||
12 | select COMMON_CLK | ||
13 | select GENERIC_CLOCKEVENTS | ||
14 | select HAVE_CLK | ||
15 | |||
16 | if PLAT_SPEAR | ||
17 | |||
18 | config ARCH_SPEAR13XX | ||
19 | bool "ST SPEAr13xx" | ||
20 | depends on ARCH_MULTI_V7 || PLAT_SPEAR_SINGLE | ||
21 | select ARCH_HAS_CPUFREQ | ||
22 | select ARM_GIC | ||
23 | select CPU_V7 | ||
24 | select GPIO_SPEAR_SPICS | ||
25 | select HAVE_ARM_SCU if SMP | ||
26 | select HAVE_ARM_TWD if LOCAL_TIMERS | ||
27 | select HAVE_SMP | ||
28 | select MIGHT_HAVE_CACHE_L2X0 | ||
29 | select PINCTRL | ||
30 | select USE_OF | ||
31 | help | ||
32 | Supports for ARM's SPEAR13XX family | ||
33 | |||
34 | if ARCH_SPEAR13XX | ||
35 | |||
36 | config MACH_SPEAR1310 | ||
37 | bool "SPEAr1310 Machine support with Device Tree" | ||
38 | select PINCTRL_SPEAR1310 | ||
39 | help | ||
40 | Supports ST SPEAr1310 machine configured via the device-tree | ||
41 | |||
42 | config MACH_SPEAR1340 | ||
43 | bool "SPEAr1340 Machine support with Device Tree" | ||
44 | select PINCTRL_SPEAR1340 | ||
45 | help | ||
46 | Supports ST SPEAr1340 machine configured via the device-tree | ||
47 | |||
48 | endif #ARCH_SPEAR13XX | ||
49 | |||
50 | config ARCH_SPEAR3XX | ||
51 | bool "ST SPEAr3xx" | ||
52 | depends on ARCH_MULTI_V5 || PLAT_SPEAR_SINGLE | ||
53 | depends on !ARCH_SPEAR13XX | ||
54 | select ARM_VIC | ||
55 | select CPU_ARM926T | ||
56 | select PINCTRL | ||
57 | select USE_OF | ||
58 | help | ||
59 | Supports for ARM's SPEAR3XX family | ||
60 | |||
61 | if ARCH_SPEAR3XX | ||
62 | |||
63 | config MACH_SPEAR300 | ||
64 | bool "SPEAr300 Machine support with Device Tree" | ||
65 | select PINCTRL_SPEAR300 | ||
66 | help | ||
67 | Supports ST SPEAr300 machine configured via the device-tree | ||
68 | |||
69 | config MACH_SPEAR310 | ||
70 | bool "SPEAr310 Machine support with Device Tree" | ||
71 | select PINCTRL_SPEAR310 | ||
72 | help | ||
73 | Supports ST SPEAr310 machine configured via the device-tree | ||
74 | |||
75 | config MACH_SPEAR320 | ||
76 | bool "SPEAr320 Machine support with Device Tree" | ||
77 | select PINCTRL_SPEAR320 | ||
78 | help | ||
79 | Supports ST SPEAr320 machine configured via the device-tree | ||
80 | |||
81 | endif | ||
82 | |||
83 | config ARCH_SPEAR6XX | ||
84 | bool "ST SPEAr6XX" | ||
85 | depends on ARCH_MULTI_V5 || PLAT_SPEAR_SINGLE | ||
86 | depends on !ARCH_SPEAR13XX | ||
87 | select ARM_VIC | ||
88 | select CPU_ARM926T | ||
89 | help | ||
90 | Supports for ARM's SPEAR6XX family | ||
91 | |||
92 | config MACH_SPEAR600 | ||
93 | def_bool y | ||
94 | depends on ARCH_SPEAR6XX | ||
95 | select USE_OF | ||
96 | help | ||
97 | Supports ST SPEAr600 boards configured via the device-treesource "arch/arm/mach-spear6xx/Kconfig" | ||
98 | |||
99 | config ARCH_SPEAR_AUTO | ||
100 | def_bool PLAT_SPEAR_SINGLE | ||
101 | depends on !ARCH_SPEAR13XX && !ARCH_SPEAR6XX | ||
102 | select ARCH_SPEAR3XX | ||
103 | |||
104 | endif | ||
105 | |||
diff --git a/arch/arm/mach-spear/Makefile b/arch/arm/mach-spear/Makefile new file mode 100644 index 000000000000..af9bffb94f1c --- /dev/null +++ b/arch/arm/mach-spear/Makefile | |||
@@ -0,0 +1,26 @@ | |||
1 | # | ||
2 | # SPEAr Platform specific Makefile | ||
3 | # | ||
4 | |||
5 | ccflags-$(CONFIG_ARCH_MULTIPLATFORM) := -I$(srctree)/$(src)/include | ||
6 | |||
7 | # Common support | ||
8 | obj-y := restart.o time.o | ||
9 | |||
10 | obj-$(CONFIG_SMP) += headsmp.o platsmp.o | ||
11 | obj-$(CONFIG_HOTPLUG_CPU) += hotplug.o | ||
12 | |||
13 | obj-$(CONFIG_ARCH_SPEAR13XX) += spear13xx.o | ||
14 | obj-$(CONFIG_MACH_SPEAR1310) += spear1310.o | ||
15 | obj-$(CONFIG_MACH_SPEAR1340) += spear1340.o | ||
16 | |||
17 | obj-$(CONFIG_ARCH_SPEAR3XX) += spear3xx.o | ||
18 | obj-$(CONFIG_ARCH_SPEAR3XX) += pl080.o | ||
19 | obj-$(CONFIG_MACH_SPEAR300) += spear300.o | ||
20 | obj-$(CONFIG_MACH_SPEAR310) += spear310.o | ||
21 | obj-$(CONFIG_MACH_SPEAR320) += spear320.o | ||
22 | |||
23 | obj-$(CONFIG_ARCH_SPEAR6XX) += spear6xx.o | ||
24 | obj-$(CONFIG_ARCH_SPEAR6XX) += pl080.o | ||
25 | |||
26 | CFLAGS_hotplug.o += -march=armv7-a | ||
diff --git a/arch/arm/mach-spear13xx/Makefile.boot b/arch/arm/mach-spear/Makefile.boot index 4674a4c221db..4674a4c221db 100644 --- a/arch/arm/mach-spear13xx/Makefile.boot +++ b/arch/arm/mach-spear/Makefile.boot | |||
diff --git a/arch/arm/mach-spear13xx/include/mach/generic.h b/arch/arm/mach-spear/generic.h index 633e678e01a3..8ba7e75b648d 100644 --- a/arch/arm/mach-spear13xx/include/mach/generic.h +++ b/arch/arm/mach-spear/generic.h | |||
@@ -1,9 +1,8 @@ | |||
1 | /* | 1 | /* |
2 | * arch/arm/mach-spear13xx/include/mach/generic.h | 2 | * spear machine family generic header file |
3 | * | 3 | * |
4 | * spear13xx machine family generic header file | 4 | * Copyright (C) 2009-2012 ST Microelectronics |
5 | * | 5 | * Rajeev Kumar <rajeev-dlh.kumar@st.com> |
6 | * Copyright (C) 2012 ST Microelectronics | ||
7 | * Viresh Kumar <viresh.linux@gmail.com> | 6 | * Viresh Kumar <viresh.linux@gmail.com> |
8 | * | 7 | * |
9 | * This file is licensed under the terms of the GNU General Public | 8 | * This file is licensed under the terms of the GNU General Public |
@@ -15,37 +14,46 @@ | |||
15 | #define __MACH_GENERIC_H | 14 | #define __MACH_GENERIC_H |
16 | 15 | ||
17 | #include <linux/dmaengine.h> | 16 | #include <linux/dmaengine.h> |
17 | #include <linux/amba/pl08x.h> | ||
18 | #include <linux/init.h> | ||
18 | #include <asm/mach/time.h> | 19 | #include <asm/mach/time.h> |
19 | 20 | ||
20 | /* Add spear13xx structure declarations here */ | ||
21 | extern void spear13xx_timer_init(void); | 21 | extern void spear13xx_timer_init(void); |
22 | extern void spear3xx_timer_init(void); | ||
22 | extern struct pl022_ssp_controller pl022_plat_data; | 23 | extern struct pl022_ssp_controller pl022_plat_data; |
24 | extern struct pl08x_platform_data pl080_plat_data; | ||
23 | extern struct dw_dma_platform_data dmac_plat_data; | 25 | extern struct dw_dma_platform_data dmac_plat_data; |
24 | extern struct dw_dma_slave cf_dma_priv; | 26 | extern struct dw_dma_slave cf_dma_priv; |
25 | extern struct dw_dma_slave nand_read_dma_priv; | 27 | extern struct dw_dma_slave nand_read_dma_priv; |
26 | extern struct dw_dma_slave nand_write_dma_priv; | 28 | extern struct dw_dma_slave nand_write_dma_priv; |
29 | bool dw_dma_filter(struct dma_chan *chan, void *slave); | ||
27 | 30 | ||
28 | /* Add spear13xx family function declarations here */ | ||
29 | void __init spear_setup_of_timer(void); | 31 | void __init spear_setup_of_timer(void); |
32 | void __init spear3xx_clk_init(void __iomem *misc_base, | ||
33 | void __iomem *soc_config_base); | ||
34 | void __init spear3xx_map_io(void); | ||
35 | void __init spear3xx_dt_init_irq(void); | ||
36 | void __init spear6xx_clk_init(void __iomem *misc_base); | ||
30 | void __init spear13xx_map_io(void); | 37 | void __init spear13xx_map_io(void); |
31 | void __init spear13xx_l2x0_init(void); | 38 | void __init spear13xx_l2x0_init(void); |
32 | bool dw_dma_filter(struct dma_chan *chan, void *slave); | 39 | |
33 | void spear_restart(char, const char *); | 40 | void spear_restart(char, const char *); |
41 | |||
34 | void spear13xx_secondary_startup(void); | 42 | void spear13xx_secondary_startup(void); |
35 | void __cpuinit spear13xx_cpu_die(unsigned int cpu); | 43 | void __cpuinit spear13xx_cpu_die(unsigned int cpu); |
36 | 44 | ||
37 | extern struct smp_operations spear13xx_smp_ops; | 45 | extern struct smp_operations spear13xx_smp_ops; |
38 | 46 | ||
39 | #ifdef CONFIG_MACH_SPEAR1310 | 47 | #ifdef CONFIG_MACH_SPEAR1310 |
40 | void __init spear1310_clk_init(void); | 48 | void __init spear1310_clk_init(void __iomem *misc_base, void __iomem *ras_base); |
41 | #else | 49 | #else |
42 | static inline void spear1310_clk_init(void) {} | 50 | static inline void spear1310_clk_init(void __iomem *misc_base, void __iomem *ras_base) {} |
43 | #endif | 51 | #endif |
44 | 52 | ||
45 | #ifdef CONFIG_MACH_SPEAR1340 | 53 | #ifdef CONFIG_MACH_SPEAR1340 |
46 | void __init spear1340_clk_init(void); | 54 | void __init spear1340_clk_init(void __iomem *misc_base); |
47 | #else | 55 | #else |
48 | static inline void spear1340_clk_init(void) {} | 56 | static inline void spear1340_clk_init(void __iomem *misc_base) {} |
49 | #endif | 57 | #endif |
50 | 58 | ||
51 | #endif /* __MACH_GENERIC_H */ | 59 | #endif /* __MACH_GENERIC_H */ |
diff --git a/arch/arm/mach-spear13xx/headsmp.S b/arch/arm/mach-spear/headsmp.S index ed85473a047f..ed85473a047f 100644 --- a/arch/arm/mach-spear13xx/headsmp.S +++ b/arch/arm/mach-spear/headsmp.S | |||
diff --git a/arch/arm/mach-spear13xx/hotplug.c b/arch/arm/mach-spear/hotplug.c index a7d2dd11a4f2..a7d2dd11a4f2 100644 --- a/arch/arm/mach-spear13xx/hotplug.c +++ b/arch/arm/mach-spear/hotplug.c | |||
diff --git a/arch/arm/plat-spear/include/plat/debug-macro.S b/arch/arm/mach-spear/include/mach/debug-macro.S index 75b05ad0fbad..75b05ad0fbad 100644 --- a/arch/arm/plat-spear/include/plat/debug-macro.S +++ b/arch/arm/mach-spear/include/mach/debug-macro.S | |||
diff --git a/arch/arm/mach-spear6xx/include/mach/irqs.h b/arch/arm/mach-spear/include/mach/irqs.h index 37a5c411a866..92da0a8c6bce 100644 --- a/arch/arm/mach-spear6xx/include/mach/irqs.h +++ b/arch/arm/mach-spear/include/mach/irqs.h | |||
@@ -1,10 +1,9 @@ | |||
1 | /* | 1 | /* |
2 | * arch/arm/mach-spear6xx/include/mach/irqs.h | 2 | * IRQ helper macros for spear machine family |
3 | * | 3 | * |
4 | * IRQ helper macros for SPEAr6xx machine family | 4 | * Copyright (C) 2009-2012 ST Microelectronics |
5 | * | 5 | * Rajeev Kumar <rajeev-dlh.kumar@st.com> |
6 | * Copyright (C) 2009 ST Microelectronics | 6 | * Viresh Kumar <viresh.linux@gmail.com> |
7 | * Rajeev Kumar<rajeev-dlh.kumar@st.com> | ||
8 | * | 7 | * |
9 | * This file is licensed under the terms of the GNU General Public | 8 | * This file is licensed under the terms of the GNU General Public |
10 | * License version 2. This program is licensed "as is" without any | 9 | * License version 2. This program is licensed "as is" without any |
@@ -14,6 +13,11 @@ | |||
14 | #ifndef __MACH_IRQS_H | 13 | #ifndef __MACH_IRQS_H |
15 | #define __MACH_IRQS_H | 14 | #define __MACH_IRQS_H |
16 | 15 | ||
16 | #ifdef CONFIG_ARCH_SPEAR3XX | ||
17 | #define NR_IRQS 256 | ||
18 | #endif | ||
19 | |||
20 | #ifdef CONFIG_ARCH_SPEAR6XX | ||
17 | /* IRQ definitions */ | 21 | /* IRQ definitions */ |
18 | /* VIC 1 */ | 22 | /* VIC 1 */ |
19 | #define IRQ_VIC_END 64 | 23 | #define IRQ_VIC_END 64 |
@@ -21,5 +25,11 @@ | |||
21 | /* GPIO pins virtual irqs */ | 25 | /* GPIO pins virtual irqs */ |
22 | #define VIRTUAL_IRQS 24 | 26 | #define VIRTUAL_IRQS 24 |
23 | #define NR_IRQS (IRQ_VIC_END + VIRTUAL_IRQS) | 27 | #define NR_IRQS (IRQ_VIC_END + VIRTUAL_IRQS) |
28 | #endif | ||
29 | |||
30 | #ifdef CONFIG_ARCH_SPEAR13XX | ||
31 | #define IRQ_GIC_END 160 | ||
32 | #define NR_IRQS IRQ_GIC_END | ||
33 | #endif | ||
24 | 34 | ||
25 | #endif /* __MACH_IRQS_H */ | 35 | #endif /* __MACH_IRQS_H */ |
diff --git a/arch/arm/mach-spear3xx/include/mach/misc_regs.h b/arch/arm/mach-spear/include/mach/misc_regs.h index 6309bf68d6f8..935639ce59ba 100644 --- a/arch/arm/mach-spear3xx/include/mach/misc_regs.h +++ b/arch/arm/mach-spear/include/mach/misc_regs.h | |||
@@ -16,7 +16,7 @@ | |||
16 | 16 | ||
17 | #include <mach/spear.h> | 17 | #include <mach/spear.h> |
18 | 18 | ||
19 | #define MISC_BASE IOMEM(VA_SPEAR3XX_ICM3_MISC_REG_BASE) | 19 | #define MISC_BASE (VA_SPEAR_ICM3_MISC_REG_BASE) |
20 | #define DMA_CHN_CFG (MISC_BASE + 0x0A0) | 20 | #define DMA_CHN_CFG (MISC_BASE + 0x0A0) |
21 | 21 | ||
22 | #endif /* __MACH_MISC_REGS_H */ | 22 | #endif /* __MACH_MISC_REGS_H */ |
diff --git a/arch/arm/mach-spear/include/mach/spear.h b/arch/arm/mach-spear/include/mach/spear.h new file mode 100644 index 000000000000..374ddc393df1 --- /dev/null +++ b/arch/arm/mach-spear/include/mach/spear.h | |||
@@ -0,0 +1,95 @@ | |||
1 | /* | ||
2 | * SPEAr3xx/6xx Machine family specific definition | ||
3 | * | ||
4 | * Copyright (C) 2009,2012 ST Microelectronics | ||
5 | * Rajeev Kumar<rajeev-dlh.kumar@st.com> | ||
6 | * Viresh Kumar <viresh.linux@gmail.com> | ||
7 | * | ||
8 | * This file is licensed under the terms of the GNU General Public | ||
9 | * License version 2. This program is licensed "as is" without any | ||
10 | * warranty of any kind, whether express or implied. | ||
11 | */ | ||
12 | |||
13 | #ifndef __MACH_SPEAR_H | ||
14 | #define __MACH_SPEAR_H | ||
15 | |||
16 | #include <asm/memory.h> | ||
17 | |||
18 | #if defined(CONFIG_ARCH_SPEAR3XX) || defined (CONFIG_ARCH_SPEAR6XX) | ||
19 | |||
20 | /* ICM1 - Low speed connection */ | ||
21 | #define SPEAR_ICM1_2_BASE UL(0xD0000000) | ||
22 | #define VA_SPEAR_ICM1_2_BASE IOMEM(0xFD000000) | ||
23 | #define SPEAR_ICM1_UART_BASE UL(0xD0000000) | ||
24 | #define VA_SPEAR_ICM1_UART_BASE (VA_SPEAR_ICM1_2_BASE - SPEAR_ICM1_2_BASE + SPEAR_ICM1_UART_BASE) | ||
25 | #define SPEAR3XX_ICM1_SSP_BASE UL(0xD0100000) | ||
26 | |||
27 | /* ML-1, 2 - Multi Layer CPU Subsystem */ | ||
28 | #define SPEAR_ICM3_ML1_2_BASE UL(0xF0000000) | ||
29 | #define VA_SPEAR6XX_ML_CPU_BASE IOMEM(0xF0000000) | ||
30 | |||
31 | /* ICM3 - Basic Subsystem */ | ||
32 | #define SPEAR_ICM3_SMI_CTRL_BASE UL(0xFC000000) | ||
33 | #define VA_SPEAR_ICM3_SMI_CTRL_BASE IOMEM(0xFC000000) | ||
34 | #define SPEAR_ICM3_DMA_BASE UL(0xFC400000) | ||
35 | #define SPEAR_ICM3_SYS_CTRL_BASE UL(0xFCA00000) | ||
36 | #define VA_SPEAR_ICM3_SYS_CTRL_BASE (VA_SPEAR_ICM3_SMI_CTRL_BASE - SPEAR_ICM3_SMI_CTRL_BASE + SPEAR_ICM3_SYS_CTRL_BASE) | ||
37 | #define SPEAR_ICM3_MISC_REG_BASE UL(0xFCA80000) | ||
38 | #define VA_SPEAR_ICM3_MISC_REG_BASE (VA_SPEAR_ICM3_SMI_CTRL_BASE - SPEAR_ICM3_SMI_CTRL_BASE + SPEAR_ICM3_MISC_REG_BASE) | ||
39 | |||
40 | /* Debug uart for linux, will be used for debug and uncompress messages */ | ||
41 | #define SPEAR_DBG_UART_BASE SPEAR_ICM1_UART_BASE | ||
42 | #define VA_SPEAR_DBG_UART_BASE VA_SPEAR_ICM1_UART_BASE | ||
43 | |||
44 | /* Sysctl base for spear platform */ | ||
45 | #define SPEAR_SYS_CTRL_BASE SPEAR_ICM3_SYS_CTRL_BASE | ||
46 | #define VA_SPEAR_SYS_CTRL_BASE VA_SPEAR_ICM3_SYS_CTRL_BASE | ||
47 | #endif /* SPEAR3xx || SPEAR6XX */ | ||
48 | |||
49 | /* SPEAr320 Macros */ | ||
50 | #define SPEAR320_SOC_CONFIG_BASE UL(0xB3000000) | ||
51 | #define VA_SPEAR320_SOC_CONFIG_BASE IOMEM(0xFE000000) | ||
52 | |||
53 | #ifdef CONFIG_ARCH_SPEAR13XX | ||
54 | |||
55 | #define PERIP_GRP2_BASE UL(0xB3000000) | ||
56 | #define VA_PERIP_GRP2_BASE IOMEM(0xFE000000) | ||
57 | #define MCIF_SDHCI_BASE UL(0xB3000000) | ||
58 | #define SYSRAM0_BASE UL(0xB3800000) | ||
59 | #define VA_SYSRAM0_BASE IOMEM(0xFE800000) | ||
60 | #define SYS_LOCATION (VA_SYSRAM0_BASE + 0x600) | ||
61 | |||
62 | #define PERIP_GRP1_BASE UL(0xE0000000) | ||
63 | #define VA_PERIP_GRP1_BASE IOMEM(0xFD000000) | ||
64 | #define UART_BASE UL(0xE0000000) | ||
65 | #define VA_UART_BASE IOMEM(0xFD000000) | ||
66 | #define SSP_BASE UL(0xE0100000) | ||
67 | #define MISC_BASE UL(0xE0700000) | ||
68 | #define VA_MISC_BASE IOMEM(0xFD700000) | ||
69 | |||
70 | #define A9SM_AND_MPMC_BASE UL(0xEC000000) | ||
71 | #define VA_A9SM_AND_MPMC_BASE IOMEM(0xFC000000) | ||
72 | |||
73 | #define SPEAR1310_RAS_BASE UL(0xD8400000) | ||
74 | #define VA_SPEAR1310_RAS_BASE IOMEM(UL(0xFA400000)) | ||
75 | |||
76 | /* A9SM peripheral offsets */ | ||
77 | #define A9SM_PERIP_BASE UL(0xEC800000) | ||
78 | #define VA_A9SM_PERIP_BASE IOMEM(0xFC800000) | ||
79 | #define VA_SCU_BASE (VA_A9SM_PERIP_BASE + 0x00) | ||
80 | |||
81 | #define L2CC_BASE UL(0xED000000) | ||
82 | #define VA_L2CC_BASE IOMEM(UL(0xFB000000)) | ||
83 | |||
84 | /* others */ | ||
85 | #define DMAC0_BASE UL(0xEA800000) | ||
86 | #define DMAC1_BASE UL(0xEB000000) | ||
87 | #define MCIF_CF_BASE UL(0xB2800000) | ||
88 | |||
89 | /* Debug uart for linux, will be used for debug and uncompress messages */ | ||
90 | #define SPEAR_DBG_UART_BASE UART_BASE | ||
91 | #define VA_SPEAR_DBG_UART_BASE VA_UART_BASE | ||
92 | |||
93 | #endif /* SPEAR13XX */ | ||
94 | |||
95 | #endif /* __MACH_SPEAR_H */ | ||
diff --git a/arch/arm/plat-spear/include/plat/timex.h b/arch/arm/mach-spear/include/mach/timex.h index ef95e5b780bd..ef95e5b780bd 100644 --- a/arch/arm/plat-spear/include/plat/timex.h +++ b/arch/arm/mach-spear/include/mach/timex.h | |||
diff --git a/arch/arm/plat-spear/include/plat/uncompress.h b/arch/arm/mach-spear/include/mach/uncompress.h index 51b2dc93e4da..51b2dc93e4da 100644 --- a/arch/arm/plat-spear/include/plat/uncompress.h +++ b/arch/arm/mach-spear/include/mach/uncompress.h | |||
diff --git a/arch/arm/plat-spear/pl080.c b/arch/arm/mach-spear/pl080.c index cfa1199d0f4a..cfa1199d0f4a 100644 --- a/arch/arm/plat-spear/pl080.c +++ b/arch/arm/mach-spear/pl080.c | |||
diff --git a/arch/arm/plat-spear/include/plat/pl080.h b/arch/arm/mach-spear/pl080.h index eb6590ded40d..eb6590ded40d 100644 --- a/arch/arm/plat-spear/include/plat/pl080.h +++ b/arch/arm/mach-spear/pl080.h | |||
diff --git a/arch/arm/mach-spear13xx/platsmp.c b/arch/arm/mach-spear/platsmp.c index 551c69c9a228..9c4c722c954e 100644 --- a/arch/arm/mach-spear13xx/platsmp.c +++ b/arch/arm/mach-spear/platsmp.c | |||
@@ -18,7 +18,7 @@ | |||
18 | #include <asm/cacheflush.h> | 18 | #include <asm/cacheflush.h> |
19 | #include <asm/smp_scu.h> | 19 | #include <asm/smp_scu.h> |
20 | #include <mach/spear.h> | 20 | #include <mach/spear.h> |
21 | #include <mach/generic.h> | 21 | #include "generic.h" |
22 | 22 | ||
23 | static DEFINE_SPINLOCK(boot_lock); | 23 | static DEFINE_SPINLOCK(boot_lock); |
24 | 24 | ||
diff --git a/arch/arm/plat-spear/restart.c b/arch/arm/mach-spear/restart.c index 7d4616d5df11..2b44500bb718 100644 --- a/arch/arm/plat-spear/restart.c +++ b/arch/arm/mach-spear/restart.c | |||
@@ -14,7 +14,7 @@ | |||
14 | #include <linux/amba/sp810.h> | 14 | #include <linux/amba/sp810.h> |
15 | #include <asm/system_misc.h> | 15 | #include <asm/system_misc.h> |
16 | #include <mach/spear.h> | 16 | #include <mach/spear.h> |
17 | #include <mach/generic.h> | 17 | #include "generic.h" |
18 | 18 | ||
19 | #define SPEAR13XX_SYS_SW_RES (VA_MISC_BASE + 0x204) | 19 | #define SPEAR13XX_SYS_SW_RES (VA_MISC_BASE + 0x204) |
20 | void spear_restart(char mode, const char *cmd) | 20 | void spear_restart(char mode, const char *cmd) |
@@ -26,7 +26,8 @@ void spear_restart(char mode, const char *cmd) | |||
26 | /* hardware reset, Use on-chip reset capability */ | 26 | /* hardware reset, Use on-chip reset capability */ |
27 | #ifdef CONFIG_ARCH_SPEAR13XX | 27 | #ifdef CONFIG_ARCH_SPEAR13XX |
28 | writel_relaxed(0x01, SPEAR13XX_SYS_SW_RES); | 28 | writel_relaxed(0x01, SPEAR13XX_SYS_SW_RES); |
29 | #else | 29 | #endif |
30 | #if defined(CONFIG_ARCH_SPEAR3XX) || defined(CONFIG_ARCH_SPEAR6XX) | ||
30 | sysctl_soft_reset((void __iomem *)VA_SPEAR_SYS_CTRL_BASE); | 31 | sysctl_soft_reset((void __iomem *)VA_SPEAR_SYS_CTRL_BASE); |
31 | #endif | 32 | #endif |
32 | } | 33 | } |
diff --git a/arch/arm/mach-spear13xx/spear1310.c b/arch/arm/mach-spear/spear1310.c index 56214d1076ef..ed3b5c287a7b 100644 --- a/arch/arm/mach-spear13xx/spear1310.c +++ b/arch/arm/mach-spear/spear1310.c | |||
@@ -19,7 +19,7 @@ | |||
19 | #include <linux/pata_arasan_cf_data.h> | 19 | #include <linux/pata_arasan_cf_data.h> |
20 | #include <asm/mach/arch.h> | 20 | #include <asm/mach/arch.h> |
21 | #include <asm/mach/map.h> | 21 | #include <asm/mach/map.h> |
22 | #include <mach/generic.h> | 22 | #include "generic.h" |
23 | #include <mach/spear.h> | 23 | #include <mach/spear.h> |
24 | 24 | ||
25 | /* Base addresses */ | 25 | /* Base addresses */ |
@@ -30,8 +30,6 @@ | |||
30 | 30 | ||
31 | #define SPEAR1310_RAS_GRP1_BASE UL(0xD8000000) | 31 | #define SPEAR1310_RAS_GRP1_BASE UL(0xD8000000) |
32 | #define VA_SPEAR1310_RAS_GRP1_BASE UL(0xFA000000) | 32 | #define VA_SPEAR1310_RAS_GRP1_BASE UL(0xFA000000) |
33 | #define SPEAR1310_RAS_BASE UL(0xD8400000) | ||
34 | #define VA_SPEAR1310_RAS_BASE IOMEM(UL(0xFA400000)) | ||
35 | 33 | ||
36 | static struct arasan_cf_pdata cf_pdata = { | 34 | static struct arasan_cf_pdata cf_pdata = { |
37 | .cf_if_clk = CF_IF_CLK_166M, | 35 | .cf_if_clk = CF_IF_CLK_166M, |
diff --git a/arch/arm/mach-spear13xx/spear1340.c b/arch/arm/mach-spear/spear1340.c index 9a28beb2a113..75e38644bbfb 100644 --- a/arch/arm/mach-spear13xx/spear1340.c +++ b/arch/arm/mach-spear/spear1340.c | |||
@@ -20,10 +20,11 @@ | |||
20 | #include <linux/of_platform.h> | 20 | #include <linux/of_platform.h> |
21 | #include <linux/irqchip.h> | 21 | #include <linux/irqchip.h> |
22 | #include <asm/mach/arch.h> | 22 | #include <asm/mach/arch.h> |
23 | #include <mach/dma.h> | 23 | #include "generic.h" |
24 | #include <mach/generic.h> | ||
25 | #include <mach/spear.h> | 24 | #include <mach/spear.h> |
26 | 25 | ||
26 | #include "spear13xx-dma.h" | ||
27 | |||
27 | /* Base addresses */ | 28 | /* Base addresses */ |
28 | #define SPEAR1340_SATA_BASE UL(0xB1000000) | 29 | #define SPEAR1340_SATA_BASE UL(0xB1000000) |
29 | #define SPEAR1340_UART1_BASE UL(0xB4100000) | 30 | #define SPEAR1340_UART1_BASE UL(0xB4100000) |
diff --git a/arch/arm/mach-spear13xx/include/mach/dma.h b/arch/arm/mach-spear/spear13xx-dma.h index d50bdb605925..d50bdb605925 100644 --- a/arch/arm/mach-spear13xx/include/mach/dma.h +++ b/arch/arm/mach-spear/spear13xx-dma.h | |||
diff --git a/arch/arm/mach-spear13xx/spear13xx.c b/arch/arm/mach-spear/spear13xx.c index 25a10191b021..6dd208997176 100644 --- a/arch/arm/mach-spear13xx/spear13xx.c +++ b/arch/arm/mach-spear/spear13xx.c | |||
@@ -21,10 +21,11 @@ | |||
21 | #include <linux/of.h> | 21 | #include <linux/of.h> |
22 | #include <asm/hardware/cache-l2x0.h> | 22 | #include <asm/hardware/cache-l2x0.h> |
23 | #include <asm/mach/map.h> | 23 | #include <asm/mach/map.h> |
24 | #include <mach/dma.h> | 24 | #include "generic.h" |
25 | #include <mach/generic.h> | ||
26 | #include <mach/spear.h> | 25 | #include <mach/spear.h> |
27 | 26 | ||
27 | #include "spear13xx-dma.h" | ||
28 | |||
28 | /* common dw_dma filter routine to be used by peripherals */ | 29 | /* common dw_dma filter routine to be used by peripherals */ |
29 | bool dw_dma_filter(struct dma_chan *chan, void *slave) | 30 | bool dw_dma_filter(struct dma_chan *chan, void *slave) |
30 | { | 31 | { |
@@ -145,9 +146,9 @@ void __init spear13xx_map_io(void) | |||
145 | static void __init spear13xx_clk_init(void) | 146 | static void __init spear13xx_clk_init(void) |
146 | { | 147 | { |
147 | if (of_machine_is_compatible("st,spear1310")) | 148 | if (of_machine_is_compatible("st,spear1310")) |
148 | spear1310_clk_init(); | 149 | spear1310_clk_init(VA_MISC_BASE, VA_SPEAR1310_RAS_BASE); |
149 | else if (of_machine_is_compatible("st,spear1340")) | 150 | else if (of_machine_is_compatible("st,spear1340")) |
150 | spear1340_clk_init(); | 151 | spear1340_clk_init(VA_MISC_BASE); |
151 | else | 152 | else |
152 | pr_err("%s: Unknown machine\n", __func__); | 153 | pr_err("%s: Unknown machine\n", __func__); |
153 | } | 154 | } |
diff --git a/arch/arm/mach-spear3xx/spear300.c b/arch/arm/mach-spear/spear300.c index bbc9b7e9c62c..bac56e845f7a 100644 --- a/arch/arm/mach-spear3xx/spear300.c +++ b/arch/arm/mach-spear/spear300.c | |||
@@ -17,7 +17,7 @@ | |||
17 | #include <linux/irqchip.h> | 17 | #include <linux/irqchip.h> |
18 | #include <linux/of_platform.h> | 18 | #include <linux/of_platform.h> |
19 | #include <asm/mach/arch.h> | 19 | #include <asm/mach/arch.h> |
20 | #include <mach/generic.h> | 20 | #include "generic.h" |
21 | #include <mach/spear.h> | 21 | #include <mach/spear.h> |
22 | 22 | ||
23 | /* DMAC platform data's slave info */ | 23 | /* DMAC platform data's slave info */ |
@@ -185,7 +185,7 @@ struct pl08x_channel_data spear300_dma_info[] = { | |||
185 | static struct of_dev_auxdata spear300_auxdata_lookup[] __initdata = { | 185 | static struct of_dev_auxdata spear300_auxdata_lookup[] __initdata = { |
186 | OF_DEV_AUXDATA("arm,pl022", SPEAR3XX_ICM1_SSP_BASE, NULL, | 186 | OF_DEV_AUXDATA("arm,pl022", SPEAR3XX_ICM1_SSP_BASE, NULL, |
187 | &pl022_plat_data), | 187 | &pl022_plat_data), |
188 | OF_DEV_AUXDATA("arm,pl080", SPEAR3XX_ICM3_DMA_BASE, NULL, | 188 | OF_DEV_AUXDATA("arm,pl080", SPEAR_ICM3_DMA_BASE, NULL, |
189 | &pl080_plat_data), | 189 | &pl080_plat_data), |
190 | {} | 190 | {} |
191 | }; | 191 | }; |
diff --git a/arch/arm/mach-spear3xx/spear310.c b/arch/arm/mach-spear/spear310.c index c13a434a8195..6ffbc63d516d 100644 --- a/arch/arm/mach-spear3xx/spear310.c +++ b/arch/arm/mach-spear/spear310.c | |||
@@ -18,7 +18,7 @@ | |||
18 | #include <linux/irqchip.h> | 18 | #include <linux/irqchip.h> |
19 | #include <linux/of_platform.h> | 19 | #include <linux/of_platform.h> |
20 | #include <asm/mach/arch.h> | 20 | #include <asm/mach/arch.h> |
21 | #include <mach/generic.h> | 21 | #include "generic.h" |
22 | #include <mach/spear.h> | 22 | #include <mach/spear.h> |
23 | 23 | ||
24 | #define SPEAR310_UART1_BASE UL(0xB2000000) | 24 | #define SPEAR310_UART1_BASE UL(0xB2000000) |
@@ -217,7 +217,7 @@ static struct amba_pl011_data spear310_uart_data[] = { | |||
217 | static struct of_dev_auxdata spear310_auxdata_lookup[] __initdata = { | 217 | static struct of_dev_auxdata spear310_auxdata_lookup[] __initdata = { |
218 | OF_DEV_AUXDATA("arm,pl022", SPEAR3XX_ICM1_SSP_BASE, NULL, | 218 | OF_DEV_AUXDATA("arm,pl022", SPEAR3XX_ICM1_SSP_BASE, NULL, |
219 | &pl022_plat_data), | 219 | &pl022_plat_data), |
220 | OF_DEV_AUXDATA("arm,pl080", SPEAR3XX_ICM3_DMA_BASE, NULL, | 220 | OF_DEV_AUXDATA("arm,pl080", SPEAR_ICM3_DMA_BASE, NULL, |
221 | &pl080_plat_data), | 221 | &pl080_plat_data), |
222 | OF_DEV_AUXDATA("arm,pl011", SPEAR310_UART1_BASE, NULL, | 222 | OF_DEV_AUXDATA("arm,pl011", SPEAR310_UART1_BASE, NULL, |
223 | &spear310_uart_data[0]), | 223 | &spear310_uart_data[0]), |
diff --git a/arch/arm/mach-spear3xx/spear320.c b/arch/arm/mach-spear/spear320.c index e1c77079a3e5..6eb3eec65f96 100644 --- a/arch/arm/mach-spear3xx/spear320.c +++ b/arch/arm/mach-spear/spear320.c | |||
@@ -19,7 +19,8 @@ | |||
19 | #include <linux/irqchip.h> | 19 | #include <linux/irqchip.h> |
20 | #include <linux/of_platform.h> | 20 | #include <linux/of_platform.h> |
21 | #include <asm/mach/arch.h> | 21 | #include <asm/mach/arch.h> |
22 | #include <mach/generic.h> | 22 | #include <asm/mach/map.h> |
23 | #include "generic.h" | ||
23 | #include <mach/spear.h> | 24 | #include <mach/spear.h> |
24 | 25 | ||
25 | #define SPEAR320_UART1_BASE UL(0xA3000000) | 26 | #define SPEAR320_UART1_BASE UL(0xA3000000) |
@@ -222,7 +223,7 @@ static struct amba_pl011_data spear320_uart_data[] = { | |||
222 | static struct of_dev_auxdata spear320_auxdata_lookup[] __initdata = { | 223 | static struct of_dev_auxdata spear320_auxdata_lookup[] __initdata = { |
223 | OF_DEV_AUXDATA("arm,pl022", SPEAR3XX_ICM1_SSP_BASE, NULL, | 224 | OF_DEV_AUXDATA("arm,pl022", SPEAR3XX_ICM1_SSP_BASE, NULL, |
224 | &pl022_plat_data), | 225 | &pl022_plat_data), |
225 | OF_DEV_AUXDATA("arm,pl080", SPEAR3XX_ICM3_DMA_BASE, NULL, | 226 | OF_DEV_AUXDATA("arm,pl080", SPEAR_ICM3_DMA_BASE, NULL, |
226 | &pl080_plat_data), | 227 | &pl080_plat_data), |
227 | OF_DEV_AUXDATA("arm,pl022", SPEAR320_SSP0_BASE, NULL, | 228 | OF_DEV_AUXDATA("arm,pl022", SPEAR320_SSP0_BASE, NULL, |
228 | &spear320_ssp_data[0]), | 229 | &spear320_ssp_data[0]), |
@@ -253,7 +254,7 @@ static const char * const spear320_dt_board_compat[] = { | |||
253 | 254 | ||
254 | struct map_desc spear320_io_desc[] __initdata = { | 255 | struct map_desc spear320_io_desc[] __initdata = { |
255 | { | 256 | { |
256 | .virtual = VA_SPEAR320_SOC_CONFIG_BASE, | 257 | .virtual = (unsigned long)VA_SPEAR320_SOC_CONFIG_BASE, |
257 | .pfn = __phys_to_pfn(SPEAR320_SOC_CONFIG_BASE), | 258 | .pfn = __phys_to_pfn(SPEAR320_SOC_CONFIG_BASE), |
258 | .length = SZ_16M, | 259 | .length = SZ_16M, |
259 | .type = MT_DEVICE | 260 | .type = MT_DEVICE |
diff --git a/arch/arm/mach-spear3xx/spear3xx.c b/arch/arm/mach-spear/spear3xx.c index d2b3937c4014..0227c97797cd 100644 --- a/arch/arm/mach-spear3xx/spear3xx.c +++ b/arch/arm/mach-spear/spear3xx.c | |||
@@ -15,10 +15,13 @@ | |||
15 | 15 | ||
16 | #include <linux/amba/pl022.h> | 16 | #include <linux/amba/pl022.h> |
17 | #include <linux/amba/pl080.h> | 17 | #include <linux/amba/pl080.h> |
18 | #include <linux/clk.h> | ||
18 | #include <linux/io.h> | 19 | #include <linux/io.h> |
19 | #include <plat/pl080.h> | 20 | #include <asm/mach/map.h> |
20 | #include <mach/generic.h> | 21 | #include "pl080.h" |
22 | #include "generic.h" | ||
21 | #include <mach/spear.h> | 23 | #include <mach/spear.h> |
24 | #include <mach/misc_regs.h> | ||
22 | 25 | ||
23 | /* ssp device registration */ | 26 | /* ssp device registration */ |
24 | struct pl022_ssp_controller pl022_plat_data = { | 27 | struct pl022_ssp_controller pl022_plat_data = { |
@@ -65,13 +68,13 @@ struct pl08x_platform_data pl080_plat_data = { | |||
65 | */ | 68 | */ |
66 | struct map_desc spear3xx_io_desc[] __initdata = { | 69 | struct map_desc spear3xx_io_desc[] __initdata = { |
67 | { | 70 | { |
68 | .virtual = VA_SPEAR3XX_ICM1_2_BASE, | 71 | .virtual = (unsigned long)VA_SPEAR_ICM1_2_BASE, |
69 | .pfn = __phys_to_pfn(SPEAR3XX_ICM1_2_BASE), | 72 | .pfn = __phys_to_pfn(SPEAR_ICM1_2_BASE), |
70 | .length = SZ_16M, | 73 | .length = SZ_16M, |
71 | .type = MT_DEVICE | 74 | .type = MT_DEVICE |
72 | }, { | 75 | }, { |
73 | .virtual = VA_SPEAR3XX_ICM3_SMI_CTRL_BASE, | 76 | .virtual = (unsigned long)VA_SPEAR_ICM3_SMI_CTRL_BASE, |
74 | .pfn = __phys_to_pfn(SPEAR3XX_ICM3_SMI_CTRL_BASE), | 77 | .pfn = __phys_to_pfn(SPEAR_ICM3_SMI_CTRL_BASE), |
75 | .length = SZ_16M, | 78 | .length = SZ_16M, |
76 | .type = MT_DEVICE | 79 | .type = MT_DEVICE |
77 | }, | 80 | }, |
@@ -88,7 +91,7 @@ void __init spear3xx_timer_init(void) | |||
88 | char pclk_name[] = "pll3_clk"; | 91 | char pclk_name[] = "pll3_clk"; |
89 | struct clk *gpt_clk, *pclk; | 92 | struct clk *gpt_clk, *pclk; |
90 | 93 | ||
91 | spear3xx_clk_init(); | 94 | spear3xx_clk_init(MISC_BASE, VA_SPEAR320_SOC_CONFIG_BASE); |
92 | 95 | ||
93 | /* get the system timer clock */ | 96 | /* get the system timer clock */ |
94 | gpt_clk = clk_get_sys("gpt0", NULL); | 97 | gpt_clk = clk_get_sys("gpt0", NULL); |
diff --git a/arch/arm/mach-spear6xx/spear6xx.c b/arch/arm/mach-spear/spear6xx.c index 8904d8a52d84..ec8eefbbdfad 100644 --- a/arch/arm/mach-spear6xx/spear6xx.c +++ b/arch/arm/mach-spear/spear6xx.c | |||
@@ -24,9 +24,10 @@ | |||
24 | #include <asm/mach/arch.h> | 24 | #include <asm/mach/arch.h> |
25 | #include <asm/mach/time.h> | 25 | #include <asm/mach/time.h> |
26 | #include <asm/mach/map.h> | 26 | #include <asm/mach/map.h> |
27 | #include <plat/pl080.h> | 27 | #include "pl080.h" |
28 | #include <mach/generic.h> | 28 | #include "generic.h" |
29 | #include <mach/spear.h> | 29 | #include <mach/spear.h> |
30 | #include <mach/misc_regs.h> | ||
30 | 31 | ||
31 | /* dmac device registration */ | 32 | /* dmac device registration */ |
32 | static struct pl08x_channel_data spear600_dma_info[] = { | 33 | static struct pl08x_channel_data spear600_dma_info[] = { |
@@ -321,7 +322,7 @@ static struct pl08x_channel_data spear600_dma_info[] = { | |||
321 | }, | 322 | }, |
322 | }; | 323 | }; |
323 | 324 | ||
324 | struct pl08x_platform_data pl080_plat_data = { | 325 | static struct pl08x_platform_data spear6xx_pl080_plat_data = { |
325 | .memcpy_channel = { | 326 | .memcpy_channel = { |
326 | .bus_id = "memcpy", | 327 | .bus_id = "memcpy", |
327 | .cctl_memcpy = | 328 | .cctl_memcpy = |
@@ -350,18 +351,18 @@ struct pl08x_platform_data pl080_plat_data = { | |||
350 | */ | 351 | */ |
351 | struct map_desc spear6xx_io_desc[] __initdata = { | 352 | struct map_desc spear6xx_io_desc[] __initdata = { |
352 | { | 353 | { |
353 | .virtual = VA_SPEAR6XX_ML_CPU_BASE, | 354 | .virtual = (unsigned long)VA_SPEAR6XX_ML_CPU_BASE, |
354 | .pfn = __phys_to_pfn(SPEAR6XX_ML_CPU_BASE), | 355 | .pfn = __phys_to_pfn(SPEAR_ICM3_ML1_2_BASE), |
355 | .length = 2 * SZ_16M, | 356 | .length = 2 * SZ_16M, |
356 | .type = MT_DEVICE | 357 | .type = MT_DEVICE |
357 | }, { | 358 | }, { |
358 | .virtual = VA_SPEAR6XX_ICM1_BASE, | 359 | .virtual = (unsigned long)VA_SPEAR_ICM1_2_BASE, |
359 | .pfn = __phys_to_pfn(SPEAR6XX_ICM1_BASE), | 360 | .pfn = __phys_to_pfn(SPEAR_ICM1_2_BASE), |
360 | .length = SZ_16M, | 361 | .length = SZ_16M, |
361 | .type = MT_DEVICE | 362 | .type = MT_DEVICE |
362 | }, { | 363 | }, { |
363 | .virtual = VA_SPEAR6XX_ICM3_SMI_CTRL_BASE, | 364 | .virtual = (unsigned long)VA_SPEAR_ICM3_SMI_CTRL_BASE, |
364 | .pfn = __phys_to_pfn(SPEAR6XX_ICM3_SMI_CTRL_BASE), | 365 | .pfn = __phys_to_pfn(SPEAR_ICM3_SMI_CTRL_BASE), |
365 | .length = SZ_16M, | 366 | .length = SZ_16M, |
366 | .type = MT_DEVICE | 367 | .type = MT_DEVICE |
367 | }, | 368 | }, |
@@ -378,7 +379,7 @@ void __init spear6xx_timer_init(void) | |||
378 | char pclk_name[] = "pll3_clk"; | 379 | char pclk_name[] = "pll3_clk"; |
379 | struct clk *gpt_clk, *pclk; | 380 | struct clk *gpt_clk, *pclk; |
380 | 381 | ||
381 | spear6xx_clk_init(); | 382 | spear6xx_clk_init(MISC_BASE); |
382 | 383 | ||
383 | /* get the system timer clock */ | 384 | /* get the system timer clock */ |
384 | gpt_clk = clk_get_sys("gpt0", NULL); | 385 | gpt_clk = clk_get_sys("gpt0", NULL); |
@@ -404,8 +405,8 @@ void __init spear6xx_timer_init(void) | |||
404 | 405 | ||
405 | /* Add auxdata to pass platform data */ | 406 | /* Add auxdata to pass platform data */ |
406 | struct of_dev_auxdata spear6xx_auxdata_lookup[] __initdata = { | 407 | struct of_dev_auxdata spear6xx_auxdata_lookup[] __initdata = { |
407 | OF_DEV_AUXDATA("arm,pl080", SPEAR6XX_ICM3_DMA_BASE, NULL, | 408 | OF_DEV_AUXDATA("arm,pl080", SPEAR_ICM3_DMA_BASE, NULL, |
408 | &pl080_plat_data), | 409 | &spear6xx_pl080_plat_data), |
409 | {} | 410 | {} |
410 | }; | 411 | }; |
411 | 412 | ||
diff --git a/arch/arm/plat-spear/time.c b/arch/arm/mach-spear/time.c index bd5c53cd6962..d449673e40f7 100644 --- a/arch/arm/plat-spear/time.c +++ b/arch/arm/mach-spear/time.c | |||
@@ -23,7 +23,7 @@ | |||
23 | #include <linux/time.h> | 23 | #include <linux/time.h> |
24 | #include <linux/irq.h> | 24 | #include <linux/irq.h> |
25 | #include <asm/mach/time.h> | 25 | #include <asm/mach/time.h> |
26 | #include <mach/generic.h> | 26 | #include "generic.h" |
27 | 27 | ||
28 | /* | 28 | /* |
29 | * We would use TIMER0 and TIMER1 as clockevent and clocksource. | 29 | * We would use TIMER0 and TIMER1 as clockevent and clocksource. |
diff --git a/arch/arm/mach-spear13xx/Kconfig b/arch/arm/mach-spear13xx/Kconfig deleted file mode 100644 index eaadc66d96b3..000000000000 --- a/arch/arm/mach-spear13xx/Kconfig +++ /dev/null | |||
@@ -1,20 +0,0 @@ | |||
1 | # | ||
2 | # SPEAr13XX Machine configuration file | ||
3 | # | ||
4 | |||
5 | if ARCH_SPEAR13XX | ||
6 | |||
7 | menu "SPEAr13xx Implementations" | ||
8 | config MACH_SPEAR1310 | ||
9 | bool "SPEAr1310 Machine support with Device Tree" | ||
10 | select PINCTRL_SPEAR1310 | ||
11 | help | ||
12 | Supports ST SPEAr1310 machine configured via the device-tree | ||
13 | |||
14 | config MACH_SPEAR1340 | ||
15 | bool "SPEAr1340 Machine support with Device Tree" | ||
16 | select PINCTRL_SPEAR1340 | ||
17 | help | ||
18 | Supports ST SPEAr1340 machine configured via the device-tree | ||
19 | endmenu | ||
20 | endif #ARCH_SPEAR13XX | ||
diff --git a/arch/arm/mach-spear13xx/Makefile b/arch/arm/mach-spear13xx/Makefile deleted file mode 100644 index 3435ea78c15d..000000000000 --- a/arch/arm/mach-spear13xx/Makefile +++ /dev/null | |||
@@ -1,10 +0,0 @@ | |||
1 | # | ||
2 | # Makefile for SPEAr13XX machine series | ||
3 | # | ||
4 | |||
5 | obj-$(CONFIG_SMP) += headsmp.o platsmp.o | ||
6 | obj-$(CONFIG_HOTPLUG_CPU) += hotplug.o | ||
7 | |||
8 | obj-$(CONFIG_ARCH_SPEAR13XX) += spear13xx.o | ||
9 | obj-$(CONFIG_MACH_SPEAR1310) += spear1310.o | ||
10 | obj-$(CONFIG_MACH_SPEAR1340) += spear1340.o | ||
diff --git a/arch/arm/mach-spear13xx/include/mach/debug-macro.S b/arch/arm/mach-spear13xx/include/mach/debug-macro.S deleted file mode 100644 index 9e3ae6bfe50d..000000000000 --- a/arch/arm/mach-spear13xx/include/mach/debug-macro.S +++ /dev/null | |||
@@ -1,14 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-spear13xx/include/mach/debug-macro.S | ||
3 | * | ||
4 | * Debugging macro include header spear13xx machine family | ||
5 | * | ||
6 | * Copyright (C) 2012 ST Microelectronics | ||
7 | * Viresh Kumar <viresh.linux@gmail.com> | ||
8 | * | ||
9 | * This file is licensed under the terms of the GNU General Public | ||
10 | * License version 2. This program is licensed "as is" without any | ||
11 | * warranty of any kind, whether express or implied. | ||
12 | */ | ||
13 | |||
14 | #include <plat/debug-macro.S> | ||
diff --git a/arch/arm/mach-spear13xx/include/mach/hardware.h b/arch/arm/mach-spear13xx/include/mach/hardware.h deleted file mode 100644 index 40a8c178f10d..000000000000 --- a/arch/arm/mach-spear13xx/include/mach/hardware.h +++ /dev/null | |||
@@ -1 +0,0 @@ | |||
1 | /* empty */ | ||
diff --git a/arch/arm/mach-spear13xx/include/mach/irqs.h b/arch/arm/mach-spear13xx/include/mach/irqs.h deleted file mode 100644 index 271a62b4cd31..000000000000 --- a/arch/arm/mach-spear13xx/include/mach/irqs.h +++ /dev/null | |||
@@ -1,20 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-spear13xx/include/mach/irqs.h | ||
3 | * | ||
4 | * IRQ helper macros for spear13xx machine family | ||
5 | * | ||
6 | * Copyright (C) 2012 ST Microelectronics | ||
7 | * Viresh Kumar <viresh.linux@gmail.com> | ||
8 | * | ||
9 | * This file is licensed under the terms of the GNU General Public | ||
10 | * License version 2. This program is licensed "as is" without any | ||
11 | * warranty of any kind, whether express or implied. | ||
12 | */ | ||
13 | |||
14 | #ifndef __MACH_IRQS_H | ||
15 | #define __MACH_IRQS_H | ||
16 | |||
17 | #define IRQ_GIC_END 160 | ||
18 | #define NR_IRQS IRQ_GIC_END | ||
19 | |||
20 | #endif /* __MACH_IRQS_H */ | ||
diff --git a/arch/arm/mach-spear13xx/include/mach/spear.h b/arch/arm/mach-spear13xx/include/mach/spear.h deleted file mode 100644 index 7cfa6818865a..000000000000 --- a/arch/arm/mach-spear13xx/include/mach/spear.h +++ /dev/null | |||
@@ -1,54 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-spear13xx/include/mach/spear.h | ||
3 | * | ||
4 | * spear13xx Machine family specific definition | ||
5 | * | ||
6 | * Copyright (C) 2012 ST Microelectronics | ||
7 | * Viresh Kumar <viresh.linux@gmail.com> | ||
8 | * | ||
9 | * This file is licensed under the terms of the GNU General Public | ||
10 | * License version 2. This program is licensed "as is" without any | ||
11 | * warranty of any kind, whether express or implied. | ||
12 | */ | ||
13 | |||
14 | #ifndef __MACH_SPEAR13XX_H | ||
15 | #define __MACH_SPEAR13XX_H | ||
16 | |||
17 | #include <asm/memory.h> | ||
18 | |||
19 | #define PERIP_GRP2_BASE UL(0xB3000000) | ||
20 | #define VA_PERIP_GRP2_BASE IOMEM(0xFE000000) | ||
21 | #define MCIF_SDHCI_BASE UL(0xB3000000) | ||
22 | #define SYSRAM0_BASE UL(0xB3800000) | ||
23 | #define VA_SYSRAM0_BASE IOMEM(0xFE800000) | ||
24 | #define SYS_LOCATION (VA_SYSRAM0_BASE + 0x600) | ||
25 | |||
26 | #define PERIP_GRP1_BASE UL(0xE0000000) | ||
27 | #define VA_PERIP_GRP1_BASE IOMEM(0xFD000000) | ||
28 | #define UART_BASE UL(0xE0000000) | ||
29 | #define VA_UART_BASE IOMEM(0xFD000000) | ||
30 | #define SSP_BASE UL(0xE0100000) | ||
31 | #define MISC_BASE UL(0xE0700000) | ||
32 | #define VA_MISC_BASE IOMEM(0xFD700000) | ||
33 | |||
34 | #define A9SM_AND_MPMC_BASE UL(0xEC000000) | ||
35 | #define VA_A9SM_AND_MPMC_BASE IOMEM(0xFC000000) | ||
36 | |||
37 | /* A9SM peripheral offsets */ | ||
38 | #define A9SM_PERIP_BASE UL(0xEC800000) | ||
39 | #define VA_A9SM_PERIP_BASE IOMEM(0xFC800000) | ||
40 | #define VA_SCU_BASE (VA_A9SM_PERIP_BASE + 0x00) | ||
41 | |||
42 | #define L2CC_BASE UL(0xED000000) | ||
43 | #define VA_L2CC_BASE IOMEM(UL(0xFB000000)) | ||
44 | |||
45 | /* others */ | ||
46 | #define DMAC0_BASE UL(0xEA800000) | ||
47 | #define DMAC1_BASE UL(0xEB000000) | ||
48 | #define MCIF_CF_BASE UL(0xB2800000) | ||
49 | |||
50 | /* Debug uart for linux, will be used for debug and uncompress messages */ | ||
51 | #define SPEAR_DBG_UART_BASE UART_BASE | ||
52 | #define VA_SPEAR_DBG_UART_BASE VA_UART_BASE | ||
53 | |||
54 | #endif /* __MACH_SPEAR13XX_H */ | ||
diff --git a/arch/arm/mach-spear13xx/include/mach/timex.h b/arch/arm/mach-spear13xx/include/mach/timex.h deleted file mode 100644 index 3a58b8284a6a..000000000000 --- a/arch/arm/mach-spear13xx/include/mach/timex.h +++ /dev/null | |||
@@ -1,19 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-spear3xx/include/mach/timex.h | ||
3 | * | ||
4 | * SPEAr3XX machine family specific timex definitions | ||
5 | * | ||
6 | * Copyright (C) 2012 ST Microelectronics | ||
7 | * Viresh Kumar <viresh.linux@gmail.com> | ||
8 | * | ||
9 | * This file is licensed under the terms of the GNU General Public | ||
10 | * License version 2. This program is licensed "as is" without any | ||
11 | * warranty of any kind, whether express or implied. | ||
12 | */ | ||
13 | |||
14 | #ifndef __MACH_TIMEX_H | ||
15 | #define __MACH_TIMEX_H | ||
16 | |||
17 | #include <plat/timex.h> | ||
18 | |||
19 | #endif /* __MACH_TIMEX_H */ | ||
diff --git a/arch/arm/mach-spear13xx/include/mach/uncompress.h b/arch/arm/mach-spear13xx/include/mach/uncompress.h deleted file mode 100644 index 70fe72f05dea..000000000000 --- a/arch/arm/mach-spear13xx/include/mach/uncompress.h +++ /dev/null | |||
@@ -1,19 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-spear13xx/include/mach/uncompress.h | ||
3 | * | ||
4 | * Serial port stubs for kernel decompress status messages | ||
5 | * | ||
6 | * Copyright (C) 2012 ST Microelectronics | ||
7 | * Viresh Kumar <viresh.linux@gmail.com> | ||
8 | * | ||
9 | * This file is licensed under the terms of the GNU General Public | ||
10 | * License version 2. This program is licensed "as is" without any | ||
11 | * warranty of any kind, whether express or implied. | ||
12 | */ | ||
13 | |||
14 | #ifndef __MACH_UNCOMPRESS_H | ||
15 | #define __MACH_UNCOMPRESS_H | ||
16 | |||
17 | #include <plat/uncompress.h> | ||
18 | |||
19 | #endif /* __MACH_UNCOMPRESS_H */ | ||
diff --git a/arch/arm/mach-spear3xx/Kconfig b/arch/arm/mach-spear3xx/Kconfig deleted file mode 100644 index 8bd37291fa4f..000000000000 --- a/arch/arm/mach-spear3xx/Kconfig +++ /dev/null | |||
@@ -1,26 +0,0 @@ | |||
1 | # | ||
2 | # SPEAr3XX Machine configuration file | ||
3 | # | ||
4 | |||
5 | if ARCH_SPEAR3XX | ||
6 | |||
7 | menu "SPEAr3xx Implementations" | ||
8 | config MACH_SPEAR300 | ||
9 | bool "SPEAr300 Machine support with Device Tree" | ||
10 | select PINCTRL_SPEAR300 | ||
11 | help | ||
12 | Supports ST SPEAr300 machine configured via the device-tree | ||
13 | |||
14 | config MACH_SPEAR310 | ||
15 | bool "SPEAr310 Machine support with Device Tree" | ||
16 | select PINCTRL_SPEAR310 | ||
17 | help | ||
18 | Supports ST SPEAr310 machine configured via the device-tree | ||
19 | |||
20 | config MACH_SPEAR320 | ||
21 | bool "SPEAr320 Machine support with Device Tree" | ||
22 | select PINCTRL_SPEAR320 | ||
23 | help | ||
24 | Supports ST SPEAr320 machine configured via the device-tree | ||
25 | endmenu | ||
26 | endif #ARCH_SPEAR3XX | ||
diff --git a/arch/arm/mach-spear3xx/Makefile b/arch/arm/mach-spear3xx/Makefile deleted file mode 100644 index 8d12faa178fd..000000000000 --- a/arch/arm/mach-spear3xx/Makefile +++ /dev/null | |||
@@ -1,15 +0,0 @@ | |||
1 | # | ||
2 | # Makefile for SPEAr3XX machine series | ||
3 | # | ||
4 | |||
5 | # common files | ||
6 | obj-$(CONFIG_ARCH_SPEAR3XX) += spear3xx.o | ||
7 | |||
8 | # spear300 specific files | ||
9 | obj-$(CONFIG_MACH_SPEAR300) += spear300.o | ||
10 | |||
11 | # spear310 specific files | ||
12 | obj-$(CONFIG_MACH_SPEAR310) += spear310.o | ||
13 | |||
14 | # spear320 specific files | ||
15 | obj-$(CONFIG_MACH_SPEAR320) += spear320.o | ||
diff --git a/arch/arm/mach-spear3xx/Makefile.boot b/arch/arm/mach-spear3xx/Makefile.boot deleted file mode 100644 index 4674a4c221db..000000000000 --- a/arch/arm/mach-spear3xx/Makefile.boot +++ /dev/null | |||
@@ -1,3 +0,0 @@ | |||
1 | zreladdr-y += 0x00008000 | ||
2 | params_phys-y := 0x00000100 | ||
3 | initrd_phys-y := 0x00800000 | ||
diff --git a/arch/arm/mach-spear3xx/include/mach/debug-macro.S b/arch/arm/mach-spear3xx/include/mach/debug-macro.S deleted file mode 100644 index 0a6381fad5d9..000000000000 --- a/arch/arm/mach-spear3xx/include/mach/debug-macro.S +++ /dev/null | |||
@@ -1,14 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-spear3xx/include/mach/debug-macro.S | ||
3 | * | ||
4 | * Debugging macro include header spear3xx machine family | ||
5 | * | ||
6 | * Copyright (C) 2009 ST Microelectronics | ||
7 | * Viresh Kumar<viresh.linux@gmail.com> | ||
8 | * | ||
9 | * This file is licensed under the terms of the GNU General Public | ||
10 | * License version 2. This program is licensed "as is" without any | ||
11 | * warranty of any kind, whether express or implied. | ||
12 | */ | ||
13 | |||
14 | #include <plat/debug-macro.S> | ||
diff --git a/arch/arm/mach-spear3xx/include/mach/generic.h b/arch/arm/mach-spear3xx/include/mach/generic.h deleted file mode 100644 index df310799e416..000000000000 --- a/arch/arm/mach-spear3xx/include/mach/generic.h +++ /dev/null | |||
@@ -1,36 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-spear3xx/generic.h | ||
3 | * | ||
4 | * SPEAr3XX machine family generic header file | ||
5 | * | ||
6 | * Copyright (C) 2009 ST Microelectronics | ||
7 | * Viresh Kumar<viresh.linux@gmail.com> | ||
8 | * | ||
9 | * This file is licensed under the terms of the GNU General Public | ||
10 | * License version 2. This program is licensed "as is" without any | ||
11 | * warranty of any kind, whether express or implied. | ||
12 | */ | ||
13 | |||
14 | #ifndef __MACH_GENERIC_H | ||
15 | #define __MACH_GENERIC_H | ||
16 | |||
17 | #include <linux/amba/pl08x.h> | ||
18 | #include <linux/init.h> | ||
19 | #include <linux/platform_device.h> | ||
20 | #include <linux/amba/bus.h> | ||
21 | #include <asm/mach/time.h> | ||
22 | #include <asm/mach/map.h> | ||
23 | |||
24 | /* Add spear3xx family device structure declarations here */ | ||
25 | extern void spear3xx_timer_init(void); | ||
26 | extern struct pl022_ssp_controller pl022_plat_data; | ||
27 | extern struct pl08x_platform_data pl080_plat_data; | ||
28 | |||
29 | /* Add spear3xx family function declarations here */ | ||
30 | void __init spear_setup_of_timer(void); | ||
31 | void __init spear3xx_clk_init(void); | ||
32 | void __init spear3xx_map_io(void); | ||
33 | |||
34 | void spear_restart(char, const char *); | ||
35 | |||
36 | #endif /* __MACH_GENERIC_H */ | ||
diff --git a/arch/arm/mach-spear3xx/include/mach/hardware.h b/arch/arm/mach-spear3xx/include/mach/hardware.h deleted file mode 100644 index 40a8c178f10d..000000000000 --- a/arch/arm/mach-spear3xx/include/mach/hardware.h +++ /dev/null | |||
@@ -1 +0,0 @@ | |||
1 | /* empty */ | ||
diff --git a/arch/arm/mach-spear3xx/include/mach/irqs.h b/arch/arm/mach-spear3xx/include/mach/irqs.h deleted file mode 100644 index f95e5b2b6686..000000000000 --- a/arch/arm/mach-spear3xx/include/mach/irqs.h +++ /dev/null | |||
@@ -1,19 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-spear3xx/include/mach/irqs.h | ||
3 | * | ||
4 | * IRQ helper macros for SPEAr3xx machine family | ||
5 | * | ||
6 | * Copyright (C) 2009 ST Microelectronics | ||
7 | * Viresh Kumar <viresh.linux@gmail.com> | ||
8 | * | ||
9 | * This file is licensed under the terms of the GNU General Public | ||
10 | * License version 2. This program is licensed "as is" without any | ||
11 | * warranty of any kind, whether express or implied. | ||
12 | */ | ||
13 | |||
14 | #ifndef __MACH_IRQS_H | ||
15 | #define __MACH_IRQS_H | ||
16 | |||
17 | #define NR_IRQS 256 | ||
18 | |||
19 | #endif /* __MACH_IRQS_H */ | ||
diff --git a/arch/arm/mach-spear3xx/include/mach/spear.h b/arch/arm/mach-spear3xx/include/mach/spear.h deleted file mode 100644 index 8cca95193d4d..000000000000 --- a/arch/arm/mach-spear3xx/include/mach/spear.h +++ /dev/null | |||
@@ -1,60 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-spear3xx/include/mach/spear.h | ||
3 | * | ||
4 | * SPEAr3xx Machine family specific definition | ||
5 | * | ||
6 | * Copyright (C) 2009 ST Microelectronics | ||
7 | * Viresh Kumar <viresh.linux@gmail.com> | ||
8 | * | ||
9 | * This file is licensed under the terms of the GNU General Public | ||
10 | * License version 2. This program is licensed "as is" without any | ||
11 | * warranty of any kind, whether express or implied. | ||
12 | */ | ||
13 | |||
14 | #ifndef __MACH_SPEAR3XX_H | ||
15 | #define __MACH_SPEAR3XX_H | ||
16 | |||
17 | #include <asm/memory.h> | ||
18 | |||
19 | /* ICM1 - Low speed connection */ | ||
20 | #define SPEAR3XX_ICM1_2_BASE UL(0xD0000000) | ||
21 | #define VA_SPEAR3XX_ICM1_2_BASE UL(0xFD000000) | ||
22 | #define SPEAR3XX_ICM1_UART_BASE UL(0xD0000000) | ||
23 | #define VA_SPEAR3XX_ICM1_UART_BASE (VA_SPEAR3XX_ICM1_2_BASE | SPEAR3XX_ICM1_UART_BASE) | ||
24 | #define SPEAR3XX_ICM1_SSP_BASE UL(0xD0100000) | ||
25 | |||
26 | /* ML1 - Multi Layer CPU Subsystem */ | ||
27 | #define SPEAR3XX_ICM3_ML1_2_BASE UL(0xF0000000) | ||
28 | #define VA_SPEAR6XX_ML_CPU_BASE UL(0xF0000000) | ||
29 | |||
30 | /* ICM3 - Basic Subsystem */ | ||
31 | #define SPEAR3XX_ICM3_SMI_CTRL_BASE UL(0xFC000000) | ||
32 | #define VA_SPEAR3XX_ICM3_SMI_CTRL_BASE UL(0xFC000000) | ||
33 | #define SPEAR3XX_ICM3_DMA_BASE UL(0xFC400000) | ||
34 | #define SPEAR3XX_ICM3_SYS_CTRL_BASE UL(0xFCA00000) | ||
35 | #define VA_SPEAR3XX_ICM3_SYS_CTRL_BASE (VA_SPEAR3XX_ICM3_SMI_CTRL_BASE | SPEAR3XX_ICM3_SYS_CTRL_BASE) | ||
36 | #define SPEAR3XX_ICM3_MISC_REG_BASE UL(0xFCA80000) | ||
37 | #define VA_SPEAR3XX_ICM3_MISC_REG_BASE (VA_SPEAR3XX_ICM3_SMI_CTRL_BASE | SPEAR3XX_ICM3_MISC_REG_BASE) | ||
38 | |||
39 | /* Debug uart for linux, will be used for debug and uncompress messages */ | ||
40 | #define SPEAR_DBG_UART_BASE SPEAR3XX_ICM1_UART_BASE | ||
41 | #define VA_SPEAR_DBG_UART_BASE VA_SPEAR3XX_ICM1_UART_BASE | ||
42 | |||
43 | /* Sysctl base for spear platform */ | ||
44 | #define SPEAR_SYS_CTRL_BASE SPEAR3XX_ICM3_SYS_CTRL_BASE | ||
45 | #define VA_SPEAR_SYS_CTRL_BASE VA_SPEAR3XX_ICM3_SYS_CTRL_BASE | ||
46 | |||
47 | /* SPEAr320 Macros */ | ||
48 | #define SPEAR320_SOC_CONFIG_BASE UL(0xB3000000) | ||
49 | #define VA_SPEAR320_SOC_CONFIG_BASE UL(0xFE000000) | ||
50 | #define SPEAR320_CONTROL_REG IOMEM(VA_SPEAR320_SOC_CONFIG_BASE) | ||
51 | #define SPEAR320_EXT_CTRL_REG IOMEM(VA_SPEAR320_SOC_CONFIG_BASE + 0x0018) | ||
52 | #define SPEAR320_UARTX_PCLK_MASK 0x1 | ||
53 | #define SPEAR320_UART2_PCLK_SHIFT 8 | ||
54 | #define SPEAR320_UART3_PCLK_SHIFT 9 | ||
55 | #define SPEAR320_UART4_PCLK_SHIFT 10 | ||
56 | #define SPEAR320_UART5_PCLK_SHIFT 11 | ||
57 | #define SPEAR320_UART6_PCLK_SHIFT 12 | ||
58 | #define SPEAR320_RS485_PCLK_SHIFT 13 | ||
59 | |||
60 | #endif /* __MACH_SPEAR3XX_H */ | ||
diff --git a/arch/arm/mach-spear3xx/include/mach/timex.h b/arch/arm/mach-spear3xx/include/mach/timex.h deleted file mode 100644 index 9f5d08bd0c44..000000000000 --- a/arch/arm/mach-spear3xx/include/mach/timex.h +++ /dev/null | |||
@@ -1,19 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-spear3xx/include/mach/timex.h | ||
3 | * | ||
4 | * SPEAr3XX machine family specific timex definitions | ||
5 | * | ||
6 | * Copyright (C) 2009 ST Microelectronics | ||
7 | * Viresh Kumar <viresh.linux@gmail.com> | ||
8 | * | ||
9 | * This file is licensed under the terms of the GNU General Public | ||
10 | * License version 2. This program is licensed "as is" without any | ||
11 | * warranty of any kind, whether express or implied. | ||
12 | */ | ||
13 | |||
14 | #ifndef __MACH_TIMEX_H | ||
15 | #define __MACH_TIMEX_H | ||
16 | |||
17 | #include <plat/timex.h> | ||
18 | |||
19 | #endif /* __MACH_TIMEX_H */ | ||
diff --git a/arch/arm/mach-spear3xx/include/mach/uncompress.h b/arch/arm/mach-spear3xx/include/mach/uncompress.h deleted file mode 100644 index b909b011f7c8..000000000000 --- a/arch/arm/mach-spear3xx/include/mach/uncompress.h +++ /dev/null | |||
@@ -1,19 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-spear3xx/include/mach/uncompress.h | ||
3 | * | ||
4 | * Serial port stubs for kernel decompress status messages | ||
5 | * | ||
6 | * Copyright (C) 2009 ST Microelectronics | ||
7 | * Viresh Kumar <viresh.linux@gmail.com> | ||
8 | * | ||
9 | * This file is licensed under the terms of the GNU General Public | ||
10 | * License version 2. This program is licensed "as is" without any | ||
11 | * warranty of any kind, whether express or implied. | ||
12 | */ | ||
13 | |||
14 | #ifndef __MACH_UNCOMPRESS_H | ||
15 | #define __MACH_UNCOMPRESS_H | ||
16 | |||
17 | #include <plat/uncompress.h> | ||
18 | |||
19 | #endif /* __MACH_UNCOMPRESS_H */ | ||
diff --git a/arch/arm/mach-spear6xx/Kconfig b/arch/arm/mach-spear6xx/Kconfig deleted file mode 100644 index 339f397dea70..000000000000 --- a/arch/arm/mach-spear6xx/Kconfig +++ /dev/null | |||
@@ -1,10 +0,0 @@ | |||
1 | # | ||
2 | # SPEAr6XX Machine configuration file | ||
3 | # | ||
4 | |||
5 | config MACH_SPEAR600 | ||
6 | def_bool y | ||
7 | depends on ARCH_SPEAR6XX | ||
8 | select USE_OF | ||
9 | help | ||
10 | Supports ST SPEAr600 boards configured via the device-tree | ||
diff --git a/arch/arm/mach-spear6xx/Makefile b/arch/arm/mach-spear6xx/Makefile deleted file mode 100644 index 898831d93f37..000000000000 --- a/arch/arm/mach-spear6xx/Makefile +++ /dev/null | |||
@@ -1,6 +0,0 @@ | |||
1 | # | ||
2 | # Makefile for SPEAr6XX machine series | ||
3 | # | ||
4 | |||
5 | # common files | ||
6 | obj-y += spear6xx.o | ||
diff --git a/arch/arm/mach-spear6xx/Makefile.boot b/arch/arm/mach-spear6xx/Makefile.boot deleted file mode 100644 index 4674a4c221db..000000000000 --- a/arch/arm/mach-spear6xx/Makefile.boot +++ /dev/null | |||
@@ -1,3 +0,0 @@ | |||
1 | zreladdr-y += 0x00008000 | ||
2 | params_phys-y := 0x00000100 | ||
3 | initrd_phys-y := 0x00800000 | ||
diff --git a/arch/arm/mach-spear6xx/include/mach/debug-macro.S b/arch/arm/mach-spear6xx/include/mach/debug-macro.S deleted file mode 100644 index 0f3ea39edd96..000000000000 --- a/arch/arm/mach-spear6xx/include/mach/debug-macro.S +++ /dev/null | |||
@@ -1,14 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-spear6xx/include/mach/debug-macro.S | ||
3 | * | ||
4 | * Debugging macro include header for SPEAr6xx machine family | ||
5 | * | ||
6 | * Copyright (C) 2009 ST Microelectronics | ||
7 | * Rajeev Kumar<rajeev-dlh.kumar@st.com> | ||
8 | * | ||
9 | * This file is licensed under the terms of the GNU General Public | ||
10 | * License version 2. This program is licensed "as is" without any | ||
11 | * warranty of any kind, whether express or implied. | ||
12 | */ | ||
13 | |||
14 | #include <plat/debug-macro.S> | ||
diff --git a/arch/arm/mach-spear6xx/include/mach/generic.h b/arch/arm/mach-spear6xx/include/mach/generic.h deleted file mode 100644 index 65514b159370..000000000000 --- a/arch/arm/mach-spear6xx/include/mach/generic.h +++ /dev/null | |||
@@ -1,23 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-spear6xx/include/mach/generic.h | ||
3 | * | ||
4 | * SPEAr6XX machine family specific generic header file | ||
5 | * | ||
6 | * Copyright (C) 2009 ST Microelectronics | ||
7 | * Rajeev Kumar<rajeev-dlh.kumar@st.com> | ||
8 | * | ||
9 | * This file is licensed under the terms of the GNU General Public | ||
10 | * License version 2. This program is licensed "as is" without any | ||
11 | * warranty of any kind, whether express or implied. | ||
12 | */ | ||
13 | |||
14 | #ifndef __MACH_GENERIC_H | ||
15 | #define __MACH_GENERIC_H | ||
16 | |||
17 | #include <linux/init.h> | ||
18 | |||
19 | void __init spear_setup_of_timer(void); | ||
20 | void spear_restart(char, const char *); | ||
21 | void __init spear6xx_clk_init(void); | ||
22 | |||
23 | #endif /* __MACH_GENERIC_H */ | ||
diff --git a/arch/arm/mach-spear6xx/include/mach/hardware.h b/arch/arm/mach-spear6xx/include/mach/hardware.h deleted file mode 100644 index 40a8c178f10d..000000000000 --- a/arch/arm/mach-spear6xx/include/mach/hardware.h +++ /dev/null | |||
@@ -1 +0,0 @@ | |||
1 | /* empty */ | ||
diff --git a/arch/arm/mach-spear6xx/include/mach/misc_regs.h b/arch/arm/mach-spear6xx/include/mach/misc_regs.h deleted file mode 100644 index c34acc201d34..000000000000 --- a/arch/arm/mach-spear6xx/include/mach/misc_regs.h +++ /dev/null | |||
@@ -1,22 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-spear6xx/include/mach/misc_regs.h | ||
3 | * | ||
4 | * Miscellaneous registers definitions for SPEAr6xx machine family | ||
5 | * | ||
6 | * Copyright (C) 2009 ST Microelectronics | ||
7 | * Viresh Kumar <viresh.linux@gmail.com> | ||
8 | * | ||
9 | * This file is licensed under the terms of the GNU General Public | ||
10 | * License version 2. This program is licensed "as is" without any | ||
11 | * warranty of any kind, whether express or implied. | ||
12 | */ | ||
13 | |||
14 | #ifndef __MACH_MISC_REGS_H | ||
15 | #define __MACH_MISC_REGS_H | ||
16 | |||
17 | #include <mach/spear.h> | ||
18 | |||
19 | #define MISC_BASE IOMEM(VA_SPEAR6XX_ICM3_MISC_REG_BASE) | ||
20 | #define DMA_CHN_CFG (MISC_BASE + 0x0A0) | ||
21 | |||
22 | #endif /* __MACH_MISC_REGS_H */ | ||
diff --git a/arch/arm/mach-spear6xx/include/mach/spear.h b/arch/arm/mach-spear6xx/include/mach/spear.h deleted file mode 100644 index cb8ed2f4dc85..000000000000 --- a/arch/arm/mach-spear6xx/include/mach/spear.h +++ /dev/null | |||
@@ -1,46 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-spear6xx/include/mach/spear.h | ||
3 | * | ||
4 | * SPEAr6xx Machine family specific definition | ||
5 | * | ||
6 | * Copyright (C) 2009 ST Microelectronics | ||
7 | * Rajeev Kumar<rajeev-dlh.kumar@st.com> | ||
8 | * | ||
9 | * This file is licensed under the terms of the GNU General Public | ||
10 | * License version 2. This program is licensed "as is" without any | ||
11 | * warranty of any kind, whether express or implied. | ||
12 | */ | ||
13 | |||
14 | #ifndef __MACH_SPEAR6XX_H | ||
15 | #define __MACH_SPEAR6XX_H | ||
16 | |||
17 | #include <asm/memory.h> | ||
18 | |||
19 | /* ICM1 - Low speed connection */ | ||
20 | #define SPEAR6XX_ICM1_BASE UL(0xD0000000) | ||
21 | #define VA_SPEAR6XX_ICM1_BASE UL(0xFD000000) | ||
22 | #define SPEAR6XX_ICM1_UART0_BASE UL(0xD0000000) | ||
23 | #define VA_SPEAR6XX_ICM1_UART0_BASE (VA_SPEAR6XX_ICM1_2_BASE | SPEAR6XX_ICM1_UART0_BASE) | ||
24 | |||
25 | /* ML-1, 2 - Multi Layer CPU Subsystem */ | ||
26 | #define SPEAR6XX_ML_CPU_BASE UL(0xF0000000) | ||
27 | #define VA_SPEAR6XX_ML_CPU_BASE UL(0xF0000000) | ||
28 | |||
29 | /* ICM3 - Basic Subsystem */ | ||
30 | #define SPEAR6XX_ICM3_SMI_CTRL_BASE UL(0xFC000000) | ||
31 | #define VA_SPEAR6XX_ICM3_SMI_CTRL_BASE UL(0xFC000000) | ||
32 | #define SPEAR6XX_ICM3_DMA_BASE UL(0xFC400000) | ||
33 | #define SPEAR6XX_ICM3_SYS_CTRL_BASE UL(0xFCA00000) | ||
34 | #define VA_SPEAR6XX_ICM3_SYS_CTRL_BASE (VA_SPEAR6XX_ICM3_SMI_CTRL_BASE | SPEAR6XX_ICM3_SYS_CTRL_BASE) | ||
35 | #define SPEAR6XX_ICM3_MISC_REG_BASE UL(0xFCA80000) | ||
36 | #define VA_SPEAR6XX_ICM3_MISC_REG_BASE (VA_SPEAR6XX_ICM3_SMI_CTRL_BASE | SPEAR6XX_ICM3_MISC_REG_BASE) | ||
37 | |||
38 | /* Debug uart for linux, will be used for debug and uncompress messages */ | ||
39 | #define SPEAR_DBG_UART_BASE SPEAR6XX_ICM1_UART0_BASE | ||
40 | #define VA_SPEAR_DBG_UART_BASE VA_SPEAR6XX_ICM1_UART0_BASE | ||
41 | |||
42 | /* Sysctl base for spear platform */ | ||
43 | #define SPEAR_SYS_CTRL_BASE SPEAR6XX_ICM3_SYS_CTRL_BASE | ||
44 | #define VA_SPEAR_SYS_CTRL_BASE VA_SPEAR6XX_ICM3_SYS_CTRL_BASE | ||
45 | |||
46 | #endif /* __MACH_SPEAR6XX_H */ | ||
diff --git a/arch/arm/mach-spear6xx/include/mach/timex.h b/arch/arm/mach-spear6xx/include/mach/timex.h deleted file mode 100644 index ac1c5b005695..000000000000 --- a/arch/arm/mach-spear6xx/include/mach/timex.h +++ /dev/null | |||
@@ -1,19 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-spear6xx/include/mach/timex.h | ||
3 | * | ||
4 | * SPEAr6XX machine family specific timex definitions | ||
5 | * | ||
6 | * Copyright (C) 2009 ST Microelectronics | ||
7 | * Rajeev Kumar<rajeev-dlh.kumar@st.com> | ||
8 | * | ||
9 | * This file is licensed under the terms of the GNU General Public | ||
10 | * License version 2. This program is licensed "as is" without any | ||
11 | * warranty of any kind, whether express or implied. | ||
12 | */ | ||
13 | |||
14 | #ifndef __MACH_TIMEX_H | ||
15 | #define __MACH_TIMEX_H | ||
16 | |||
17 | #include <plat/timex.h> | ||
18 | |||
19 | #endif /* __MACH_TIMEX_H */ | ||
diff --git a/arch/arm/mach-spear6xx/include/mach/uncompress.h b/arch/arm/mach-spear6xx/include/mach/uncompress.h deleted file mode 100644 index 77f0765e21e1..000000000000 --- a/arch/arm/mach-spear6xx/include/mach/uncompress.h +++ /dev/null | |||
@@ -1,19 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-spear6xx/include/mach/uncompress.h | ||
3 | * | ||
4 | * Serial port stubs for kernel decompress status messages | ||
5 | * | ||
6 | * Copyright (C) 2009 ST Microelectronics | ||
7 | * Rajeev Kumar<rajeev-dlh.kumar@st.com> | ||
8 | * | ||
9 | * This file is licensed under the terms of the GNU General Public | ||
10 | * License version 2. This program is licensed "as is" without any | ||
11 | * warranty of any kind, whether express or implied. | ||
12 | */ | ||
13 | |||
14 | #ifndef __MACH_UNCOMPRESS_H | ||
15 | #define __MACH_UNCOMPRESS_H | ||
16 | |||
17 | #include <plat/uncompress.h> | ||
18 | |||
19 | #endif /* __MACH_UNCOMPRESS_H */ | ||
diff --git a/arch/arm/mach-tegra/Kconfig b/arch/arm/mach-tegra/Kconfig index dbc653ea851c..20c3b372cdf5 100644 --- a/arch/arm/mach-tegra/Kconfig +++ b/arch/arm/mach-tegra/Kconfig | |||
@@ -1,13 +1,30 @@ | |||
1 | if ARCH_TEGRA | 1 | config ARCH_TEGRA |
2 | bool "NVIDIA Tegra" if ARCH_MULTI_V7 | ||
3 | select ARCH_HAS_CPUFREQ | ||
4 | select ARCH_REQUIRE_GPIOLIB | ||
5 | select CLKDEV_LOOKUP | ||
6 | select CLKSRC_MMIO | ||
7 | select CLKSRC_OF | ||
8 | select COMMON_CLK | ||
9 | select GENERIC_CLOCKEVENTS | ||
10 | select HAVE_ARM_SCU if SMP | ||
11 | select HAVE_ARM_TWD if LOCAL_TIMERS | ||
12 | select HAVE_CLK | ||
13 | select HAVE_SMP | ||
14 | select MIGHT_HAVE_CACHE_L2X0 | ||
15 | select SOC_BUS | ||
16 | select SPARSE_IRQ | ||
17 | select USE_OF | ||
18 | help | ||
19 | This enables support for NVIDIA Tegra based systems. | ||
2 | 20 | ||
3 | comment "NVIDIA Tegra options" | 21 | menu "NVIDIA Tegra options" |
22 | depends on ARCH_TEGRA | ||
4 | 23 | ||
5 | config ARCH_TEGRA_2x_SOC | 24 | config ARCH_TEGRA_2x_SOC |
6 | bool "Enable support for Tegra20 family" | 25 | bool "Enable support for Tegra20 family" |
7 | select ARCH_NEEDS_CPU_IDLE_COUPLED if SMP | 26 | select ARCH_NEEDS_CPU_IDLE_COUPLED if SMP |
8 | select ARM_ERRATA_720789 | 27 | select ARM_ERRATA_720789 |
9 | select ARM_ERRATA_742230 if SMP | ||
10 | select ARM_ERRATA_751472 | ||
11 | select ARM_ERRATA_754327 if SMP | 28 | select ARM_ERRATA_754327 if SMP |
12 | select ARM_ERRATA_764369 if SMP | 29 | select ARM_ERRATA_764369 if SMP |
13 | select ARM_GIC | 30 | select ARM_GIC |
@@ -26,8 +43,6 @@ config ARCH_TEGRA_2x_SOC | |||
26 | 43 | ||
27 | config ARCH_TEGRA_3x_SOC | 44 | config ARCH_TEGRA_3x_SOC |
28 | bool "Enable support for Tegra30 family" | 45 | bool "Enable support for Tegra30 family" |
29 | select ARM_ERRATA_743622 | ||
30 | select ARM_ERRATA_751472 | ||
31 | select ARM_ERRATA_754322 | 46 | select ARM_ERRATA_754322 |
32 | select ARM_ERRATA_764369 if SMP | 47 | select ARM_ERRATA_764369 if SMP |
33 | select ARM_GIC | 48 | select ARM_GIC |
@@ -71,4 +86,4 @@ config TEGRA_AHB | |||
71 | config TEGRA_EMC_SCALING_ENABLE | 86 | config TEGRA_EMC_SCALING_ENABLE |
72 | bool "Enable scaling the memory frequency" | 87 | bool "Enable scaling the memory frequency" |
73 | 88 | ||
74 | endif | 89 | endmenu |
diff --git a/arch/arm/mach-tegra/Makefile b/arch/arm/mach-tegra/Makefile index b78f0d71b328..d011f0ad49c4 100644 --- a/arch/arm/mach-tegra/Makefile +++ b/arch/arm/mach-tegra/Makefile | |||
@@ -1,3 +1,5 @@ | |||
1 | asflags-y += -march=armv7-a | ||
2 | |||
1 | obj-y += common.o | 3 | obj-y += common.o |
2 | obj-y += io.o | 4 | obj-y += io.o |
3 | obj-y += irq.o | 5 | obj-y += irq.o |
diff --git a/arch/arm/mach-tegra/Makefile.boot b/arch/arm/mach-tegra/Makefile.boot deleted file mode 100644 index 29433816233c..000000000000 --- a/arch/arm/mach-tegra/Makefile.boot +++ /dev/null | |||
@@ -1,3 +0,0 @@ | |||
1 | zreladdr-$(CONFIG_ARCH_TEGRA_2x_SOC) += 0x00008000 | ||
2 | params_phys-$(CONFIG_ARCH_TEGRA_2x_SOC) := 0x00000100 | ||
3 | initrd_phys-$(CONFIG_ARCH_TEGRA_2x_SOC) := 0x00800000 | ||
diff --git a/arch/arm/mach-tegra/board.h b/arch/arm/mach-tegra/board.h index 60431de585ca..1787327fae3a 100644 --- a/arch/arm/mach-tegra/board.h +++ b/arch/arm/mach-tegra/board.h | |||
@@ -40,6 +40,7 @@ int tegra_clk_debugfs_init(void); | |||
40 | static inline int tegra_clk_debugfs_init(void) { return 0; } | 40 | static inline int tegra_clk_debugfs_init(void) { return 0; } |
41 | #endif | 41 | #endif |
42 | 42 | ||
43 | int __init tegra_powergate_init(void); | ||
43 | #if defined(CONFIG_ARCH_TEGRA_2x_SOC) && defined(CONFIG_DEBUG_FS) | 44 | #if defined(CONFIG_ARCH_TEGRA_2x_SOC) && defined(CONFIG_DEBUG_FS) |
44 | int __init tegra_powergate_debugfs_init(void); | 45 | int __init tegra_powergate_debugfs_init(void); |
45 | #else | 46 | #else |
diff --git a/arch/arm/mach-tegra/common.c b/arch/arm/mach-tegra/common.c index eb1f3c8c74cc..9f852c6fe5b9 100644 --- a/arch/arm/mach-tegra/common.c +++ b/arch/arm/mach-tegra/common.c | |||
@@ -27,8 +27,6 @@ | |||
27 | 27 | ||
28 | #include <asm/hardware/cache-l2x0.h> | 28 | #include <asm/hardware/cache-l2x0.h> |
29 | 29 | ||
30 | #include <mach/powergate.h> | ||
31 | |||
32 | #include "board.h" | 30 | #include "board.h" |
33 | #include "common.h" | 31 | #include "common.h" |
34 | #include "fuse.h" | 32 | #include "fuse.h" |
diff --git a/arch/arm/mach-tegra/include/mach/timex.h b/arch/arm/mach-tegra/include/mach/timex.h deleted file mode 100644 index a44ccbdb7dbf..000000000000 --- a/arch/arm/mach-tegra/include/mach/timex.h +++ /dev/null | |||
@@ -1,26 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-tegra/include/mach/timex.h | ||
3 | * | ||
4 | * Copyright (C) 2010 Google, Inc. | ||
5 | * | ||
6 | * Author: | ||
7 | * Colin Cross <ccross@google.com> | ||
8 | * Erik Gilling <konkers@google.com> | ||
9 | * | ||
10 | * This software is licensed under the terms of the GNU General Public | ||
11 | * License version 2, as published by the Free Software Foundation, and | ||
12 | * may be copied, distributed, and modified under those terms. | ||
13 | * | ||
14 | * This program is distributed in the hope that it will be useful, | ||
15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
17 | * GNU General Public License for more details. | ||
18 | * | ||
19 | */ | ||
20 | |||
21 | #ifndef __MACH_TEGRA_TIMEX_H | ||
22 | #define __MACH_TEGRA_TIMEX_H | ||
23 | |||
24 | #define CLOCK_TICK_RATE 1000000 | ||
25 | |||
26 | #endif | ||
diff --git a/arch/arm/mach-tegra/include/mach/uncompress.h b/arch/arm/mach-tegra/include/mach/uncompress.h deleted file mode 100644 index 08386418196f..000000000000 --- a/arch/arm/mach-tegra/include/mach/uncompress.h +++ /dev/null | |||
@@ -1,175 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-tegra/include/mach/uncompress.h | ||
3 | * | ||
4 | * Copyright (C) 2010 Google, Inc. | ||
5 | * Copyright (C) 2011 Google, Inc. | ||
6 | * Copyright (C) 2011-2012 NVIDIA CORPORATION. All Rights Reserved. | ||
7 | * | ||
8 | * Author: | ||
9 | * Colin Cross <ccross@google.com> | ||
10 | * Erik Gilling <konkers@google.com> | ||
11 | * Doug Anderson <dianders@chromium.org> | ||
12 | * Stephen Warren <swarren@nvidia.com> | ||
13 | * | ||
14 | * This software is licensed under the terms of the GNU General Public | ||
15 | * License version 2, as published by the Free Software Foundation, and | ||
16 | * may be copied, distributed, and modified under those terms. | ||
17 | * | ||
18 | * This program is distributed in the hope that it will be useful, | ||
19 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
20 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
21 | * GNU General Public License for more details. | ||
22 | * | ||
23 | */ | ||
24 | |||
25 | #ifndef __MACH_TEGRA_UNCOMPRESS_H | ||
26 | #define __MACH_TEGRA_UNCOMPRESS_H | ||
27 | |||
28 | #include <linux/types.h> | ||
29 | #include <linux/serial_reg.h> | ||
30 | |||
31 | #include "../../iomap.h" | ||
32 | |||
33 | #define BIT(x) (1 << (x)) | ||
34 | #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0])) | ||
35 | |||
36 | #define DEBUG_UART_SHIFT 2 | ||
37 | |||
38 | volatile u8 *uart; | ||
39 | |||
40 | static void putc(int c) | ||
41 | { | ||
42 | if (uart == NULL) | ||
43 | return; | ||
44 | |||
45 | while (!(uart[UART_LSR << DEBUG_UART_SHIFT] & UART_LSR_THRE)) | ||
46 | barrier(); | ||
47 | uart[UART_TX << DEBUG_UART_SHIFT] = c; | ||
48 | } | ||
49 | |||
50 | static inline void flush(void) | ||
51 | { | ||
52 | } | ||
53 | |||
54 | static const struct { | ||
55 | u32 base; | ||
56 | u32 reset_reg; | ||
57 | u32 clock_reg; | ||
58 | u32 bit; | ||
59 | } uarts[] = { | ||
60 | { | ||
61 | TEGRA_UARTA_BASE, | ||
62 | TEGRA_CLK_RESET_BASE + 0x04, | ||
63 | TEGRA_CLK_RESET_BASE + 0x10, | ||
64 | 6, | ||
65 | }, | ||
66 | { | ||
67 | TEGRA_UARTB_BASE, | ||
68 | TEGRA_CLK_RESET_BASE + 0x04, | ||
69 | TEGRA_CLK_RESET_BASE + 0x10, | ||
70 | 7, | ||
71 | }, | ||
72 | { | ||
73 | TEGRA_UARTC_BASE, | ||
74 | TEGRA_CLK_RESET_BASE + 0x08, | ||
75 | TEGRA_CLK_RESET_BASE + 0x14, | ||
76 | 23, | ||
77 | }, | ||
78 | { | ||
79 | TEGRA_UARTD_BASE, | ||
80 | TEGRA_CLK_RESET_BASE + 0x0c, | ||
81 | TEGRA_CLK_RESET_BASE + 0x18, | ||
82 | 1, | ||
83 | }, | ||
84 | { | ||
85 | TEGRA_UARTE_BASE, | ||
86 | TEGRA_CLK_RESET_BASE + 0x0c, | ||
87 | TEGRA_CLK_RESET_BASE + 0x18, | ||
88 | 2, | ||
89 | }, | ||
90 | }; | ||
91 | |||
92 | static inline bool uart_clocked(int i) | ||
93 | { | ||
94 | if (*(u8 *)uarts[i].reset_reg & BIT(uarts[i].bit)) | ||
95 | return false; | ||
96 | |||
97 | if (!(*(u8 *)uarts[i].clock_reg & BIT(uarts[i].bit))) | ||
98 | return false; | ||
99 | |||
100 | return true; | ||
101 | } | ||
102 | |||
103 | #ifdef CONFIG_TEGRA_DEBUG_UART_AUTO_ODMDATA | ||
104 | int auto_odmdata(void) | ||
105 | { | ||
106 | volatile u32 *pmc = (volatile u32 *)TEGRA_PMC_BASE; | ||
107 | u32 odmdata = pmc[0xa0 / 4]; | ||
108 | |||
109 | /* | ||
110 | * Bits 19:18 are the console type: 0=default, 1=none, 2==DCC, 3==UART | ||
111 | * Some boards apparently swap the last two values, but we don't have | ||
112 | * any way of catering for that here, so we just accept either. If this | ||
113 | * doesn't make sense for your board, just don't enable this feature. | ||
114 | * | ||
115 | * Bits 17:15 indicate the UART to use, 0/1/2/3/4 are UART A/B/C/D/E. | ||
116 | */ | ||
117 | |||
118 | switch ((odmdata >> 18) & 3) { | ||
119 | case 2: | ||
120 | case 3: | ||
121 | break; | ||
122 | default: | ||
123 | return -1; | ||
124 | } | ||
125 | |||
126 | return (odmdata >> 15) & 7; | ||
127 | } | ||
128 | #endif | ||
129 | |||
130 | /* | ||
131 | * Setup before decompression. This is where we do UART selection for | ||
132 | * earlyprintk and init the uart_base register. | ||
133 | */ | ||
134 | static inline void arch_decomp_setup(void) | ||
135 | { | ||
136 | int uart_id; | ||
137 | volatile u32 *apb_misc = (volatile u32 *)TEGRA_APB_MISC_BASE; | ||
138 | u32 chip, div; | ||
139 | |||
140 | #if defined(CONFIG_TEGRA_DEBUG_UART_AUTO_ODMDATA) | ||
141 | uart_id = auto_odmdata(); | ||
142 | #elif defined(CONFIG_TEGRA_DEBUG_UARTA) | ||
143 | uart_id = 0; | ||
144 | #elif defined(CONFIG_TEGRA_DEBUG_UARTB) | ||
145 | uart_id = 1; | ||
146 | #elif defined(CONFIG_TEGRA_DEBUG_UARTC) | ||
147 | uart_id = 2; | ||
148 | #elif defined(CONFIG_TEGRA_DEBUG_UARTD) | ||
149 | uart_id = 3; | ||
150 | #elif defined(CONFIG_TEGRA_DEBUG_UARTE) | ||
151 | uart_id = 4; | ||
152 | #endif | ||
153 | |||
154 | if (uart_id < 0 || uart_id >= ARRAY_SIZE(uarts) || | ||
155 | !uart_clocked(uart_id)) | ||
156 | uart = NULL; | ||
157 | else | ||
158 | uart = (volatile u8 *)uarts[uart_id].base; | ||
159 | |||
160 | if (uart == NULL) | ||
161 | return; | ||
162 | |||
163 | chip = (apb_misc[0x804 / 4] >> 8) & 0xff; | ||
164 | if (chip == 0x20) | ||
165 | div = 0x0075; | ||
166 | else | ||
167 | div = 0x00dd; | ||
168 | |||
169 | uart[UART_LCR << DEBUG_UART_SHIFT] |= UART_LCR_DLAB; | ||
170 | uart[UART_DLL << DEBUG_UART_SHIFT] = div & 0xff; | ||
171 | uart[UART_DLM << DEBUG_UART_SHIFT] = div >> 8; | ||
172 | uart[UART_LCR << DEBUG_UART_SHIFT] = 3; | ||
173 | } | ||
174 | |||
175 | #endif | ||
diff --git a/arch/arm/mach-tegra/pcie.c b/arch/arm/mach-tegra/pcie.c index b60165f1ca02..46144a19a7e7 100644 --- a/arch/arm/mach-tegra/pcie.c +++ b/arch/arm/mach-tegra/pcie.c | |||
@@ -34,12 +34,11 @@ | |||
34 | #include <linux/delay.h> | 34 | #include <linux/delay.h> |
35 | #include <linux/export.h> | 35 | #include <linux/export.h> |
36 | #include <linux/clk/tegra.h> | 36 | #include <linux/clk/tegra.h> |
37 | #include <linux/tegra-powergate.h> | ||
37 | 38 | ||
38 | #include <asm/sizes.h> | 39 | #include <asm/sizes.h> |
39 | #include <asm/mach/pci.h> | 40 | #include <asm/mach/pci.h> |
40 | 41 | ||
41 | #include <mach/powergate.h> | ||
42 | |||
43 | #include "board.h" | 42 | #include "board.h" |
44 | #include "iomap.h" | 43 | #include "iomap.h" |
45 | 44 | ||
diff --git a/arch/arm/mach-tegra/powergate.c b/arch/arm/mach-tegra/powergate.c index af9067e2867c..f076f0f80fcd 100644 --- a/arch/arm/mach-tegra/powergate.c +++ b/arch/arm/mach-tegra/powergate.c | |||
@@ -28,8 +28,7 @@ | |||
28 | #include <linux/seq_file.h> | 28 | #include <linux/seq_file.h> |
29 | #include <linux/spinlock.h> | 29 | #include <linux/spinlock.h> |
30 | #include <linux/clk/tegra.h> | 30 | #include <linux/clk/tegra.h> |
31 | 31 | #include <linux/tegra-powergate.h> | |
32 | #include <mach/powergate.h> | ||
33 | 32 | ||
34 | #include "fuse.h" | 33 | #include "fuse.h" |
35 | #include "iomap.h" | 34 | #include "iomap.h" |
diff --git a/arch/arm/mach-ux500/Kconfig b/arch/arm/mach-ux500/Kconfig index 3e5bbd0e5b23..f66d7deae46d 100644 --- a/arch/arm/mach-ux500/Kconfig +++ b/arch/arm/mach-ux500/Kconfig | |||
@@ -1,3 +1,19 @@ | |||
1 | config ARCH_U8500 | ||
2 | bool "ST-Ericsson U8500 Series" if ARCH_MULTI_V7 | ||
3 | depends on MMU | ||
4 | select ARCH_HAS_CPUFREQ | ||
5 | select ARCH_REQUIRE_GPIOLIB | ||
6 | select ARM_AMBA | ||
7 | select CLKDEV_LOOKUP | ||
8 | select CPU_V7 | ||
9 | select GENERIC_CLOCKEVENTS | ||
10 | select HAVE_ARM_SCU if SMP | ||
11 | select HAVE_ARM_TWD if LOCAL_TIMERS | ||
12 | select HAVE_SMP | ||
13 | select MIGHT_HAVE_CACHE_L2X0 | ||
14 | help | ||
15 | Support for ST-Ericsson's Ux500 architecture | ||
16 | |||
1 | if ARCH_U8500 | 17 | if ARCH_U8500 |
2 | 18 | ||
3 | config UX500_SOC_COMMON | 19 | config UX500_SOC_COMMON |
diff --git a/arch/arm/mach-ux500/Makefile b/arch/arm/mach-ux500/Makefile index f24710dfc395..bf9b6be5b180 100644 --- a/arch/arm/mach-ux500/Makefile +++ b/arch/arm/mach-ux500/Makefile | |||
@@ -3,7 +3,7 @@ | |||
3 | # | 3 | # |
4 | 4 | ||
5 | obj-y := cpu.o devices.o devices-common.o \ | 5 | obj-y := cpu.o devices.o devices-common.o \ |
6 | id.o usb.o timer.o | 6 | id.o usb.o timer.o pm.o |
7 | obj-$(CONFIG_CPU_IDLE) += cpuidle.o | 7 | obj-$(CONFIG_CPU_IDLE) += cpuidle.o |
8 | obj-$(CONFIG_CACHE_L2X0) += cache-l2x0.o | 8 | obj-$(CONFIG_CACHE_L2X0) += cache-l2x0.o |
9 | obj-$(CONFIG_UX500_SOC_DB8500) += cpu-db8500.o devices-db8500.o | 9 | obj-$(CONFIG_UX500_SOC_DB8500) += cpu-db8500.o devices-db8500.o |
@@ -15,3 +15,5 @@ obj-$(CONFIG_MACH_MOP500) += board-mop500.o board-mop500-sdi.o \ | |||
15 | board-mop500-audio.o | 15 | board-mop500-audio.o |
16 | obj-$(CONFIG_SMP) += platsmp.o headsmp.o | 16 | obj-$(CONFIG_SMP) += platsmp.o headsmp.o |
17 | obj-$(CONFIG_HOTPLUG_CPU) += hotplug.o | 17 | obj-$(CONFIG_HOTPLUG_CPU) += hotplug.o |
18 | |||
19 | CFLAGS_hotplug.o += -march=armv7-a | ||
diff --git a/arch/arm/mach-ux500/board-mop500-audio.c b/arch/arm/mach-ux500/board-mop500-audio.c index 7209db7cdc72..aba9e5692958 100644 --- a/arch/arm/mach-ux500/board-mop500-audio.c +++ b/arch/arm/mach-ux500/board-mop500-audio.c | |||
@@ -10,10 +10,9 @@ | |||
10 | #include <linux/platform_data/pinctrl-nomadik.h> | 10 | #include <linux/platform_data/pinctrl-nomadik.h> |
11 | #include <linux/platform_data/dma-ste-dma40.h> | 11 | #include <linux/platform_data/dma-ste-dma40.h> |
12 | 12 | ||
13 | #include <mach/devices.h> | 13 | #include "devices.h" |
14 | #include <mach/hardware.h> | 14 | #include "irqs.h" |
15 | #include <mach/irqs.h> | 15 | #include <linux/platform_data/asoc-ux500-msp.h> |
16 | #include <mach/msp.h> | ||
17 | 16 | ||
18 | #include "ste-dma40-db8500.h" | 17 | #include "ste-dma40-db8500.h" |
19 | #include "board-mop500.h" | 18 | #include "board-mop500.h" |
diff --git a/arch/arm/mach-ux500/board-mop500-pins.c b/arch/arm/mach-ux500/board-mop500-pins.c index 0a3f30df1eb8..f3976f9c404a 100644 --- a/arch/arm/mach-ux500/board-mop500-pins.c +++ b/arch/arm/mach-ux500/board-mop500-pins.c | |||
@@ -13,8 +13,6 @@ | |||
13 | 13 | ||
14 | #include <asm/mach-types.h> | 14 | #include <asm/mach-types.h> |
15 | 15 | ||
16 | #include <mach/hardware.h> | ||
17 | |||
18 | #include "pins-db8500.h" | 16 | #include "pins-db8500.h" |
19 | #include "board-mop500.h" | 17 | #include "board-mop500.h" |
20 | 18 | ||
diff --git a/arch/arm/mach-ux500/board-mop500-sdi.c b/arch/arm/mach-ux500/board-mop500-sdi.c index 6db0740128de..0ef38775a0c1 100644 --- a/arch/arm/mach-ux500/board-mop500-sdi.c +++ b/arch/arm/mach-ux500/board-mop500-sdi.c | |||
@@ -14,9 +14,9 @@ | |||
14 | #include <linux/platform_data/dma-ste-dma40.h> | 14 | #include <linux/platform_data/dma-ste-dma40.h> |
15 | 15 | ||
16 | #include <asm/mach-types.h> | 16 | #include <asm/mach-types.h> |
17 | #include <mach/devices.h> | 17 | #include "devices.h" |
18 | #include <mach/hardware.h> | ||
19 | 18 | ||
19 | #include "db8500-regs.h" | ||
20 | #include "devices-db8500.h" | 20 | #include "devices-db8500.h" |
21 | #include "board-mop500.h" | 21 | #include "board-mop500.h" |
22 | #include "ste-dma40-db8500.h" | 22 | #include "ste-dma40-db8500.h" |
diff --git a/arch/arm/mach-ux500/board-mop500-u8500uib.c b/arch/arm/mach-ux500/board-mop500-u8500uib.c index ead91c968ff4..d397c19570af 100644 --- a/arch/arm/mach-ux500/board-mop500-u8500uib.c +++ b/arch/arm/mach-ux500/board-mop500-u8500uib.c | |||
@@ -12,12 +12,15 @@ | |||
12 | #include <linux/mfd/tc3589x.h> | 12 | #include <linux/mfd/tc3589x.h> |
13 | #include <linux/input/matrix_keypad.h> | 13 | #include <linux/input/matrix_keypad.h> |
14 | 14 | ||
15 | #include <mach/irqs.h> | 15 | #include "irqs.h" |
16 | 16 | ||
17 | #include "board-mop500.h" | 17 | #include "board-mop500.h" |
18 | 18 | ||
19 | /* Dummy data that can be overridden by staging driver */ | 19 | static struct i2c_board_info __initdata mop500_i2c3_devices_u8500[] = { |
20 | struct i2c_board_info __initdata __weak mop500_i2c3_devices_u8500[] = { | 20 | { |
21 | I2C_BOARD_INFO("synaptics_rmi4_i2c", 0x4B), | ||
22 | .irq = NOMADIK_GPIO_TO_IRQ(84), | ||
23 | }, | ||
21 | }; | 24 | }; |
22 | 25 | ||
23 | /* | 26 | /* |
diff --git a/arch/arm/mach-ux500/board-mop500-uib.c b/arch/arm/mach-ux500/board-mop500-uib.c index 7037d3687e9f..bdaa422da028 100644 --- a/arch/arm/mach-ux500/board-mop500-uib.c +++ b/arch/arm/mach-ux500/board-mop500-uib.c | |||
@@ -11,7 +11,6 @@ | |||
11 | #include <linux/init.h> | 11 | #include <linux/init.h> |
12 | #include <linux/i2c.h> | 12 | #include <linux/i2c.h> |
13 | 13 | ||
14 | #include <mach/hardware.h> | ||
15 | #include "board-mop500.h" | 14 | #include "board-mop500.h" |
16 | #include "id.h" | 15 | #include "id.h" |
17 | 16 | ||
diff --git a/arch/arm/mach-ux500/board-mop500.c b/arch/arm/mach-ux500/board-mop500.c index 574916b70b2e..a15dd6b63a8f 100644 --- a/arch/arm/mach-ux500/board-mop500.c +++ b/arch/arm/mach-ux500/board-mop500.c | |||
@@ -44,13 +44,13 @@ | |||
44 | #include <asm/mach-types.h> | 44 | #include <asm/mach-types.h> |
45 | #include <asm/mach/arch.h> | 45 | #include <asm/mach/arch.h> |
46 | 46 | ||
47 | #include <mach/hardware.h> | 47 | #include "setup.h" |
48 | #include <mach/setup.h> | 48 | #include "devices.h" |
49 | #include <mach/devices.h> | 49 | #include "irqs.h" |
50 | #include <mach/irqs.h> | ||
51 | #include <linux/platform_data/crypto-ux500.h> | 50 | #include <linux/platform_data/crypto-ux500.h> |
52 | 51 | ||
53 | #include "ste-dma40-db8500.h" | 52 | #include "ste-dma40-db8500.h" |
53 | #include "db8500-regs.h" | ||
54 | #include "devices-db8500.h" | 54 | #include "devices-db8500.h" |
55 | #include "board-mop500.h" | 55 | #include "board-mop500.h" |
56 | #include "board-mop500-regulators.h" | 56 | #include "board-mop500-regulators.h" |
@@ -237,63 +237,6 @@ struct ab8500_platform_data ab8500_platdata = { | |||
237 | .codec = &ab8500_codec_pdata, | 237 | .codec = &ab8500_codec_pdata, |
238 | }; | 238 | }; |
239 | 239 | ||
240 | /* | ||
241 | * Thermal Sensor | ||
242 | */ | ||
243 | |||
244 | static struct resource db8500_thsens_resources[] = { | ||
245 | { | ||
246 | .name = "IRQ_HOTMON_LOW", | ||
247 | .start = IRQ_PRCMU_HOTMON_LOW, | ||
248 | .end = IRQ_PRCMU_HOTMON_LOW, | ||
249 | .flags = IORESOURCE_IRQ, | ||
250 | }, | ||
251 | { | ||
252 | .name = "IRQ_HOTMON_HIGH", | ||
253 | .start = IRQ_PRCMU_HOTMON_HIGH, | ||
254 | .end = IRQ_PRCMU_HOTMON_HIGH, | ||
255 | .flags = IORESOURCE_IRQ, | ||
256 | }, | ||
257 | }; | ||
258 | |||
259 | static struct db8500_thsens_platform_data db8500_thsens_data = { | ||
260 | .trip_points[0] = { | ||
261 | .temp = 70000, | ||
262 | .type = THERMAL_TRIP_ACTIVE, | ||
263 | .cdev_name = { | ||
264 | [0] = "thermal-cpufreq-0", | ||
265 | }, | ||
266 | }, | ||
267 | .trip_points[1] = { | ||
268 | .temp = 75000, | ||
269 | .type = THERMAL_TRIP_ACTIVE, | ||
270 | .cdev_name = { | ||
271 | [0] = "thermal-cpufreq-0", | ||
272 | }, | ||
273 | }, | ||
274 | .trip_points[2] = { | ||
275 | .temp = 80000, | ||
276 | .type = THERMAL_TRIP_ACTIVE, | ||
277 | .cdev_name = { | ||
278 | [0] = "thermal-cpufreq-0", | ||
279 | }, | ||
280 | }, | ||
281 | .trip_points[3] = { | ||
282 | .temp = 85000, | ||
283 | .type = THERMAL_TRIP_CRITICAL, | ||
284 | }, | ||
285 | .num_trips = 4, | ||
286 | }; | ||
287 | |||
288 | static struct platform_device u8500_thsens_device = { | ||
289 | .name = "db8500-thermal", | ||
290 | .resource = db8500_thsens_resources, | ||
291 | .num_resources = ARRAY_SIZE(db8500_thsens_resources), | ||
292 | .dev = { | ||
293 | .platform_data = &db8500_thsens_data, | ||
294 | }, | ||
295 | }; | ||
296 | |||
297 | static struct platform_device u8500_cpufreq_cooling_device = { | 240 | static struct platform_device u8500_cpufreq_cooling_device = { |
298 | .name = "db8500-cpufreq-cooling", | 241 | .name = "db8500-cpufreq-cooling", |
299 | }; | 242 | }; |
@@ -663,7 +606,6 @@ static struct platform_device *snowball_platform_devs[] __initdata = { | |||
663 | &snowball_key_dev, | 606 | &snowball_key_dev, |
664 | &snowball_sbnet_dev, | 607 | &snowball_sbnet_dev, |
665 | &snowball_gpio_en_3v3_regulator_dev, | 608 | &snowball_gpio_en_3v3_regulator_dev, |
666 | &u8500_thsens_device, | ||
667 | &u8500_cpufreq_cooling_device, | 609 | &u8500_cpufreq_cooling_device, |
668 | &sdi0_regulator, | 610 | &sdi0_regulator, |
669 | }; | 611 | }; |
diff --git a/arch/arm/mach-ux500/board-mop500.h b/arch/arm/mach-ux500/board-mop500.h index d38951be70df..49514b825034 100644 --- a/arch/arm/mach-ux500/board-mop500.h +++ b/arch/arm/mach-ux500/board-mop500.h | |||
@@ -8,8 +8,8 @@ | |||
8 | #define __BOARD_MOP500_H | 8 | #define __BOARD_MOP500_H |
9 | 9 | ||
10 | /* For NOMADIK_NR_GPIO */ | 10 | /* For NOMADIK_NR_GPIO */ |
11 | #include <mach/irqs.h> | 11 | #include "irqs.h" |
12 | #include <mach/msp.h> | 12 | #include <linux/platform_data/asoc-ux500-msp.h> |
13 | #include <linux/amba/mmci.h> | 13 | #include <linux/amba/mmci.h> |
14 | 14 | ||
15 | /* Snowball specific GPIO assignments, this board has no GPIO expander */ | 15 | /* Snowball specific GPIO assignments, this board has no GPIO expander */ |
diff --git a/arch/arm/mach-ux500/cache-l2x0.c b/arch/arm/mach-ux500/cache-l2x0.c index f815efe54c73..f58615b5c601 100644 --- a/arch/arm/mach-ux500/cache-l2x0.c +++ b/arch/arm/mach-ux500/cache-l2x0.c | |||
@@ -9,8 +9,8 @@ | |||
9 | 9 | ||
10 | #include <asm/cacheflush.h> | 10 | #include <asm/cacheflush.h> |
11 | #include <asm/hardware/cache-l2x0.h> | 11 | #include <asm/hardware/cache-l2x0.h> |
12 | #include <mach/hardware.h> | ||
13 | 12 | ||
13 | #include "db8500-regs.h" | ||
14 | #include "id.h" | 14 | #include "id.h" |
15 | 15 | ||
16 | static void __iomem *l2x0_base; | 16 | static void __iomem *l2x0_base; |
diff --git a/arch/arm/mach-ux500/cpu-db8500.c b/arch/arm/mach-ux500/cpu-db8500.c index 5c6c2e633868..995928ba22fd 100644 --- a/arch/arm/mach-ux500/cpu-db8500.c +++ b/arch/arm/mach-ux500/cpu-db8500.c | |||
@@ -28,15 +28,13 @@ | |||
28 | #include <asm/mach/map.h> | 28 | #include <asm/mach/map.h> |
29 | #include <asm/mach/arch.h> | 29 | #include <asm/mach/arch.h> |
30 | 30 | ||
31 | #include <mach/hardware.h> | 31 | #include "setup.h" |
32 | #include <mach/setup.h> | 32 | #include "devices.h" |
33 | #include <mach/devices.h> | 33 | #include "irqs.h" |
34 | #include <mach/db8500-regs.h> | ||
35 | #include <mach/irqs.h> | ||
36 | 34 | ||
37 | #include "devices-db8500.h" | 35 | #include "devices-db8500.h" |
38 | #include "ste-dma40-db8500.h" | 36 | #include "ste-dma40-db8500.h" |
39 | 37 | #include "db8500-regs.h" | |
40 | #include "board-mop500.h" | 38 | #include "board-mop500.h" |
41 | #include "id.h" | 39 | #include "id.h" |
42 | 40 | ||
@@ -94,8 +92,6 @@ void __init u8500_map_io(void) | |||
94 | iotable_init(u9540_io_desc, ARRAY_SIZE(u9540_io_desc)); | 92 | iotable_init(u9540_io_desc, ARRAY_SIZE(u9540_io_desc)); |
95 | else | 93 | else |
96 | iotable_init(u8500_io_desc, ARRAY_SIZE(u8500_io_desc)); | 94 | iotable_init(u8500_io_desc, ARRAY_SIZE(u8500_io_desc)); |
97 | |||
98 | _PRCMU_BASE = __io_address(U8500_PRCMU_BASE); | ||
99 | } | 95 | } |
100 | 96 | ||
101 | static struct resource db8500_pmu_resources[] = { | 97 | static struct resource db8500_pmu_resources[] = { |
diff --git a/arch/arm/mach-ux500/cpu.c b/arch/arm/mach-ux500/cpu.c index 537870d3fea8..915e2636cbaa 100644 --- a/arch/arm/mach-ux500/cpu.c +++ b/arch/arm/mach-ux500/cpu.c | |||
@@ -8,7 +8,7 @@ | |||
8 | 8 | ||
9 | #include <linux/platform_device.h> | 9 | #include <linux/platform_device.h> |
10 | #include <linux/io.h> | 10 | #include <linux/io.h> |
11 | #include <linux/mfd/db8500-prcmu.h> | 11 | #include <linux/mfd/dbx500-prcmu.h> |
12 | #include <linux/clksrc-dbx500-prcmu.h> | 12 | #include <linux/clksrc-dbx500-prcmu.h> |
13 | #include <linux/sys_soc.h> | 13 | #include <linux/sys_soc.h> |
14 | #include <linux/err.h> | 14 | #include <linux/err.h> |
@@ -20,18 +20,17 @@ | |||
20 | #include <linux/irqchip.h> | 20 | #include <linux/irqchip.h> |
21 | #include <linux/irqchip/arm-gic.h> | 21 | #include <linux/irqchip/arm-gic.h> |
22 | #include <linux/platform_data/clk-ux500.h> | 22 | #include <linux/platform_data/clk-ux500.h> |
23 | #include <linux/platform_data/arm-ux500-pm.h> | ||
23 | 24 | ||
24 | #include <asm/mach/map.h> | 25 | #include <asm/mach/map.h> |
25 | 26 | ||
26 | #include <mach/hardware.h> | 27 | #include "setup.h" |
27 | #include <mach/setup.h> | 28 | #include "devices.h" |
28 | #include <mach/devices.h> | ||
29 | 29 | ||
30 | #include "board-mop500.h" | 30 | #include "board-mop500.h" |
31 | #include "db8500-regs.h" | ||
31 | #include "id.h" | 32 | #include "id.h" |
32 | 33 | ||
33 | void __iomem *_PRCMU_BASE; | ||
34 | |||
35 | /* | 34 | /* |
36 | * FIXME: Should we set up the GPIO domain here? | 35 | * FIXME: Should we set up the GPIO domain here? |
37 | * | 36 | * |
@@ -68,13 +67,23 @@ void __init ux500_init_irq(void) | |||
68 | * Init clocks here so that they are available for system timer | 67 | * Init clocks here so that they are available for system timer |
69 | * initialization. | 68 | * initialization. |
70 | */ | 69 | */ |
71 | if (cpu_is_u8500_family() || cpu_is_u9540()) | 70 | if (cpu_is_u8500_family()) { |
72 | db8500_prcmu_early_init(); | 71 | prcmu_early_init(U8500_PRCMU_BASE, SZ_8K - 1); |
73 | 72 | ux500_pm_init(U8500_PRCMU_BASE, SZ_8K - 1); | |
74 | if (cpu_is_u8500_family() || cpu_is_u9540()) | 73 | u8500_clk_init(U8500_CLKRST1_BASE, U8500_CLKRST2_BASE, |
75 | u8500_clk_init(); | 74 | U8500_CLKRST3_BASE, U8500_CLKRST5_BASE, |
76 | else if (cpu_is_u8540()) | 75 | U8500_CLKRST6_BASE); |
76 | } else if (cpu_is_u9540()) { | ||
77 | prcmu_early_init(U8500_PRCMU_BASE, SZ_8K - 1); | ||
78 | ux500_pm_init(U8500_PRCMU_BASE, SZ_8K - 1); | ||
79 | u8500_clk_init(U8500_CLKRST1_BASE, U8500_CLKRST2_BASE, | ||
80 | U8500_CLKRST3_BASE, U8500_CLKRST5_BASE, | ||
81 | U8500_CLKRST6_BASE); | ||
82 | } else if (cpu_is_u8540()) { | ||
83 | prcmu_early_init(U8500_PRCMU_BASE, SZ_8K + SZ_4K - 1); | ||
84 | ux500_pm_init(U8500_PRCMU_BASE, SZ_8K + SZ_4K - 1); | ||
77 | u8540_clk_init(); | 85 | u8540_clk_init(); |
86 | } | ||
78 | } | 87 | } |
79 | 88 | ||
80 | void __init ux500_init_late(void) | 89 | void __init ux500_init_late(void) |
diff --git a/arch/arm/mach-ux500/cpuidle.c b/arch/arm/mach-ux500/cpuidle.c index 488e07472d98..317a2be129fb 100644 --- a/arch/arm/mach-ux500/cpuidle.c +++ b/arch/arm/mach-ux500/cpuidle.c | |||
@@ -15,10 +15,13 @@ | |||
15 | #include <linux/atomic.h> | 15 | #include <linux/atomic.h> |
16 | #include <linux/smp.h> | 16 | #include <linux/smp.h> |
17 | #include <linux/mfd/dbx500-prcmu.h> | 17 | #include <linux/mfd/dbx500-prcmu.h> |
18 | #include <linux/platform_data/arm-ux500-pm.h> | ||
18 | 19 | ||
19 | #include <asm/cpuidle.h> | 20 | #include <asm/cpuidle.h> |
20 | #include <asm/proc-fns.h> | 21 | #include <asm/proc-fns.h> |
21 | 22 | ||
23 | #include "db8500-regs.h" | ||
24 | |||
22 | static atomic_t master = ATOMIC_INIT(0); | 25 | static atomic_t master = ATOMIC_INIT(0); |
23 | static DEFINE_SPINLOCK(master_lock); | 26 | static DEFINE_SPINLOCK(master_lock); |
24 | 27 | ||
@@ -111,7 +114,7 @@ static struct cpuidle_driver ux500_idle_driver = { | |||
111 | 114 | ||
112 | int __init ux500_idle_init(void) | 115 | int __init ux500_idle_init(void) |
113 | { | 116 | { |
114 | /* Configure wake up reasons */ | 117 | /* Configure wake up reasons */ |
115 | prcmu_enable_wakeups(PRCMU_WAKEUP(ARM) | PRCMU_WAKEUP(RTC) | | 118 | prcmu_enable_wakeups(PRCMU_WAKEUP(ARM) | PRCMU_WAKEUP(RTC) | |
116 | PRCMU_WAKEUP(ABB)); | 119 | PRCMU_WAKEUP(ABB)); |
117 | 120 | ||
diff --git a/arch/arm/mach-ux500/include/mach/db8500-regs.h b/arch/arm/mach-ux500/db8500-regs.h index 1530d493879d..b2d7a0b98629 100644 --- a/arch/arm/mach-ux500/include/mach/db8500-regs.h +++ b/arch/arm/mach-ux500/db8500-regs.h | |||
@@ -170,4 +170,32 @@ | |||
170 | /* SoC identification number information */ | 170 | /* SoC identification number information */ |
171 | #define U8500_BB_UID_BASE (U8500_BACKUPRAM1_BASE + 0xFC0) | 171 | #define U8500_BB_UID_BASE (U8500_BACKUPRAM1_BASE + 0xFC0) |
172 | 172 | ||
173 | /* Offsets to specific addresses in some IP blocks for DMA */ | ||
174 | #define MSP_TX_RX_REG_OFFSET 0 | ||
175 | #define CRYP1_RX_REG_OFFSET 0x10 | ||
176 | #define CRYP1_TX_REG_OFFSET 0x8 | ||
177 | #define HASH1_TX_REG_OFFSET 0x4 | ||
178 | |||
179 | /* | ||
180 | * Macros to get at IO space when running virtually | ||
181 | * We dont map all the peripherals, let ioremap do | ||
182 | * this for us. We map only very basic peripherals here. | ||
183 | */ | ||
184 | #define U8500_IO_VIRTUAL 0xf0000000 | ||
185 | #define U8500_IO_PHYSICAL 0xa0000000 | ||
186 | /* This is where we map in the ROM to check ASIC IDs */ | ||
187 | #define UX500_VIRT_ROM 0xf0000000 | ||
188 | |||
189 | /* This macro is used in assembly, so no cast */ | ||
190 | #define IO_ADDRESS(x) \ | ||
191 | (((x) & 0x0fffffff) + (((x) >> 4) & 0x0f000000) + U8500_IO_VIRTUAL) | ||
192 | |||
193 | /* typesafe io address */ | ||
194 | #define __io_address(n) IOMEM(IO_ADDRESS(n)) | ||
195 | |||
196 | /* Used by some plat-nomadik code */ | ||
197 | #define io_p2v(n) __io_address(n) | ||
198 | |||
199 | #define ARRAY_AND_SIZE(x) (x), ARRAY_SIZE(x) | ||
200 | |||
173 | #endif | 201 | #endif |
diff --git a/arch/arm/mach-ux500/devices-common.c b/arch/arm/mach-ux500/devices-common.c index 16b5f71e6974..f71b3d7bd4fb 100644 --- a/arch/arm/mach-ux500/devices-common.c +++ b/arch/arm/mach-ux500/devices-common.c | |||
@@ -13,8 +13,7 @@ | |||
13 | #include <linux/platform_device.h> | 13 | #include <linux/platform_device.h> |
14 | #include <linux/platform_data/pinctrl-nomadik.h> | 14 | #include <linux/platform_data/pinctrl-nomadik.h> |
15 | 15 | ||
16 | #include <mach/hardware.h> | 16 | #include "irqs.h" |
17 | #include <mach/irqs.h> | ||
18 | 17 | ||
19 | #include "devices-common.h" | 18 | #include "devices-common.h" |
20 | 19 | ||
diff --git a/arch/arm/mach-ux500/devices-db8500.c b/arch/arm/mach-ux500/devices-db8500.c index f3d9419f75d3..1cf94ce0feec 100644 --- a/arch/arm/mach-ux500/devices-db8500.c +++ b/arch/arm/mach-ux500/devices-db8500.c | |||
@@ -15,10 +15,10 @@ | |||
15 | #include <linux/platform_data/dma-ste-dma40.h> | 15 | #include <linux/platform_data/dma-ste-dma40.h> |
16 | #include <linux/mfd/dbx500-prcmu.h> | 16 | #include <linux/mfd/dbx500-prcmu.h> |
17 | 17 | ||
18 | #include <mach/hardware.h> | 18 | #include "setup.h" |
19 | #include <mach/setup.h> | 19 | #include "irqs.h" |
20 | #include <mach/irqs.h> | ||
21 | 20 | ||
21 | #include "db8500-regs.h" | ||
22 | #include "devices-db8500.h" | 22 | #include "devices-db8500.h" |
23 | #include "ste-dma40-db8500.h" | 23 | #include "ste-dma40-db8500.h" |
24 | 24 | ||
@@ -199,6 +199,8 @@ struct platform_device u8500_ske_keypad_device = { | |||
199 | 199 | ||
200 | struct prcmu_pdata db8500_prcmu_pdata = { | 200 | struct prcmu_pdata db8500_prcmu_pdata = { |
201 | .ab_platdata = &ab8500_platdata, | 201 | .ab_platdata = &ab8500_platdata, |
202 | .ab_irq = IRQ_DB8500_AB8500, | ||
203 | .irq_base = IRQ_PRCMU_BASE, | ||
202 | .version_offset = DB8500_PRCMU_FW_VERSION_OFFSET, | 204 | .version_offset = DB8500_PRCMU_FW_VERSION_OFFSET, |
203 | .legacy_offset = DB8500_PRCMU_LEGACY_OFFSET, | 205 | .legacy_offset = DB8500_PRCMU_LEGACY_OFFSET, |
204 | }; | 206 | }; |
diff --git a/arch/arm/mach-ux500/devices-db8500.h b/arch/arm/mach-ux500/devices-db8500.h index dbcb35c48f06..321998320f98 100644 --- a/arch/arm/mach-ux500/devices-db8500.h +++ b/arch/arm/mach-ux500/devices-db8500.h | |||
@@ -9,7 +9,8 @@ | |||
9 | #define __DEVICES_DB8500_H | 9 | #define __DEVICES_DB8500_H |
10 | 10 | ||
11 | #include <linux/platform_data/usb-musb-ux500.h> | 11 | #include <linux/platform_data/usb-musb-ux500.h> |
12 | #include <mach/irqs.h> | 12 | #include "irqs.h" |
13 | #include "db8500-regs.h" | ||
13 | #include "devices-common.h" | 14 | #include "devices-common.h" |
14 | 15 | ||
15 | struct ske_keypad_platform_data; | 16 | struct ske_keypad_platform_data; |
diff --git a/arch/arm/mach-ux500/devices.c b/arch/arm/mach-ux500/devices.c index ea0a2f92ca70..0f9e52b95935 100644 --- a/arch/arm/mach-ux500/devices.c +++ b/arch/arm/mach-ux500/devices.c | |||
@@ -11,8 +11,9 @@ | |||
11 | #include <linux/io.h> | 11 | #include <linux/io.h> |
12 | #include <linux/amba/bus.h> | 12 | #include <linux/amba/bus.h> |
13 | 13 | ||
14 | #include <mach/hardware.h> | 14 | #include "setup.h" |
15 | #include <mach/setup.h> | 15 | |
16 | #include "db8500-regs.h" | ||
16 | 17 | ||
17 | void __init amba_add_devices(struct amba_device *devs[], int num) | 18 | void __init amba_add_devices(struct amba_device *devs[], int num) |
18 | { | 19 | { |
diff --git a/arch/arm/mach-ux500/include/mach/devices.h b/arch/arm/mach-ux500/devices.h index cbc6f1e4104d..cbc6f1e4104d 100644 --- a/arch/arm/mach-ux500/include/mach/devices.h +++ b/arch/arm/mach-ux500/devices.h | |||
diff --git a/arch/arm/mach-ux500/hotplug.c b/arch/arm/mach-ux500/hotplug.c index 2f6af259015d..87abcf278432 100644 --- a/arch/arm/mach-ux500/hotplug.c +++ b/arch/arm/mach-ux500/hotplug.c | |||
@@ -15,7 +15,7 @@ | |||
15 | #include <asm/cacheflush.h> | 15 | #include <asm/cacheflush.h> |
16 | #include <asm/smp_plat.h> | 16 | #include <asm/smp_plat.h> |
17 | 17 | ||
18 | #include <mach/setup.h> | 18 | #include "setup.h" |
19 | 19 | ||
20 | /* | 20 | /* |
21 | * platform-specific code to shutdown a CPU | 21 | * platform-specific code to shutdown a CPU |
diff --git a/arch/arm/mach-ux500/id.c b/arch/arm/mach-ux500/id.c index 9f951842e1e5..0d33d1a06955 100644 --- a/arch/arm/mach-ux500/id.c +++ b/arch/arm/mach-ux500/id.c | |||
@@ -14,9 +14,9 @@ | |||
14 | #include <asm/cacheflush.h> | 14 | #include <asm/cacheflush.h> |
15 | #include <asm/mach/map.h> | 15 | #include <asm/mach/map.h> |
16 | 16 | ||
17 | #include <mach/hardware.h> | 17 | #include "setup.h" |
18 | #include <mach/setup.h> | ||
19 | 18 | ||
19 | #include "db8500-regs.h" | ||
20 | #include "id.h" | 20 | #include "id.h" |
21 | 21 | ||
22 | struct dbx500_asic_id dbx500_id; | 22 | struct dbx500_asic_id dbx500_id; |
diff --git a/arch/arm/mach-ux500/include/mach/debug-macro.S b/arch/arm/mach-ux500/include/mach/debug-macro.S deleted file mode 100644 index 67035223334a..000000000000 --- a/arch/arm/mach-ux500/include/mach/debug-macro.S +++ /dev/null | |||
@@ -1,39 +0,0 @@ | |||
1 | /* | ||
2 | * Debugging macro include header | ||
3 | * | ||
4 | * Copyright (C) 2009 ST-Ericsson | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License version 2 as | ||
8 | * published by the Free Software Foundation. | ||
9 | * | ||
10 | */ | ||
11 | #include <mach/hardware.h> | ||
12 | |||
13 | #if CONFIG_UX500_DEBUG_UART > 2 | ||
14 | #error Invalid Ux500 debug UART | ||
15 | #endif | ||
16 | |||
17 | /* | ||
18 | * DEBUG_LL only works if only one SOC is built in. We don't use #else below | ||
19 | * in order to get "__UX500_UART redefined" warnings if more than one SOC is | ||
20 | * built, so that there's some hint during the build that something is wrong. | ||
21 | */ | ||
22 | |||
23 | #ifdef CONFIG_UX500_SOC_DB8500 | ||
24 | #define __UX500_UART(n) U8500_UART##n##_BASE | ||
25 | #endif | ||
26 | |||
27 | #ifndef __UX500_UART | ||
28 | #error Unknown SOC | ||
29 | #endif | ||
30 | |||
31 | #define UX500_UART(n) __UX500_UART(n) | ||
32 | #define UART_BASE UX500_UART(CONFIG_UX500_DEBUG_UART) | ||
33 | |||
34 | .macro addruart, rp, rv, tmp | ||
35 | ldr \rp, =UART_BASE @ no, physical address | ||
36 | ldr \rv, =IO_ADDRESS(UART_BASE) @ yes, virtual address | ||
37 | .endm | ||
38 | |||
39 | #include <asm/hardware/debug-pl01x.S> | ||
diff --git a/arch/arm/mach-ux500/include/mach/hardware.h b/arch/arm/mach-ux500/include/mach/hardware.h deleted file mode 100644 index 5201ddace503..000000000000 --- a/arch/arm/mach-ux500/include/mach/hardware.h +++ /dev/null | |||
@@ -1,47 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2009 ST-Ericsson. | ||
3 | * | ||
4 | * U8500 hardware definitions | ||
5 | * | ||
6 | * This file is licensed under the terms of the GNU General Public | ||
7 | * License version 2. This program is licensed "as is" without any | ||
8 | * warranty of any kind, whether express or implied. | ||
9 | */ | ||
10 | #ifndef __MACH_HARDWARE_H | ||
11 | #define __MACH_HARDWARE_H | ||
12 | |||
13 | /* | ||
14 | * Macros to get at IO space when running virtually | ||
15 | * We dont map all the peripherals, let ioremap do | ||
16 | * this for us. We map only very basic peripherals here. | ||
17 | */ | ||
18 | #define U8500_IO_VIRTUAL 0xf0000000 | ||
19 | #define U8500_IO_PHYSICAL 0xa0000000 | ||
20 | /* This is where we map in the ROM to check ASIC IDs */ | ||
21 | #define UX500_VIRT_ROM 0xf0000000 | ||
22 | |||
23 | /* This macro is used in assembly, so no cast */ | ||
24 | #define IO_ADDRESS(x) \ | ||
25 | (((x) & 0x0fffffff) + (((x) >> 4) & 0x0f000000) + U8500_IO_VIRTUAL) | ||
26 | |||
27 | /* typesafe io address */ | ||
28 | #define __io_address(n) IOMEM(IO_ADDRESS(n)) | ||
29 | |||
30 | /* Used by some plat-nomadik code */ | ||
31 | #define io_p2v(n) __io_address(n) | ||
32 | |||
33 | #include <mach/db8500-regs.h> | ||
34 | |||
35 | #define MSP_TX_RX_REG_OFFSET 0 | ||
36 | #define CRYP1_RX_REG_OFFSET 0x10 | ||
37 | #define CRYP1_TX_REG_OFFSET 0x8 | ||
38 | #define HASH1_TX_REG_OFFSET 0x4 | ||
39 | |||
40 | #ifndef __ASSEMBLY__ | ||
41 | |||
42 | extern void __iomem *_PRCMU_BASE; | ||
43 | |||
44 | #define ARRAY_AND_SIZE(x) (x), ARRAY_SIZE(x) | ||
45 | |||
46 | #endif /* __ASSEMBLY__ */ | ||
47 | #endif /* __MACH_HARDWARE_H */ | ||
diff --git a/arch/arm/mach-ux500/include/mach/timex.h b/arch/arm/mach-ux500/include/mach/timex.h deleted file mode 100644 index d0942c174018..000000000000 --- a/arch/arm/mach-ux500/include/mach/timex.h +++ /dev/null | |||
@@ -1,6 +0,0 @@ | |||
1 | #ifndef __ASM_ARCH_TIMEX_H | ||
2 | #define __ASM_ARCH_TIMEX_H | ||
3 | |||
4 | #define CLOCK_TICK_RATE 110000000 | ||
5 | |||
6 | #endif | ||
diff --git a/arch/arm/mach-ux500/include/mach/uncompress.h b/arch/arm/mach-ux500/include/mach/uncompress.h deleted file mode 100644 index 36969d52e53a..000000000000 --- a/arch/arm/mach-ux500/include/mach/uncompress.h +++ /dev/null | |||
@@ -1,57 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2009 ST-Ericsson | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify | ||
5 | * it under the terms of the GNU General Public License as published by | ||
6 | * the Free Software Foundation; either version 2 of the License, or | ||
7 | * (at your option) any later version. | ||
8 | * | ||
9 | * This program is distributed in the hope that it will be useful, | ||
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | * GNU General Public License for more details. | ||
13 | * | ||
14 | * You should have received a copy of the GNU General Public License | ||
15 | * along with this program; if not, write to the Free Software | ||
16 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
17 | */ | ||
18 | #ifndef __ASM_ARCH_UNCOMPRESS_H | ||
19 | #define __ASM_ARCH_UNCOMPRESS_H | ||
20 | |||
21 | #include <asm/setup.h> | ||
22 | #include <asm/mach-types.h> | ||
23 | #include <linux/io.h> | ||
24 | #include <linux/amba/serial.h> | ||
25 | #include <mach/hardware.h> | ||
26 | |||
27 | void __iomem *ux500_uart_base; | ||
28 | |||
29 | static void putc(const char c) | ||
30 | { | ||
31 | /* Do nothing if the UART is not enabled. */ | ||
32 | if (!(__raw_readb(ux500_uart_base + UART011_CR) & 0x1)) | ||
33 | return; | ||
34 | |||
35 | if (c == '\n') | ||
36 | putc('\r'); | ||
37 | |||
38 | while (__raw_readb(ux500_uart_base + UART01x_FR) & (1 << 5)) | ||
39 | barrier(); | ||
40 | __raw_writeb(c, ux500_uart_base + UART01x_DR); | ||
41 | } | ||
42 | |||
43 | static void flush(void) | ||
44 | { | ||
45 | if (!(__raw_readb(ux500_uart_base + UART011_CR) & 0x1)) | ||
46 | return; | ||
47 | while (__raw_readb(ux500_uart_base + UART01x_FR) & (1 << 3)) | ||
48 | barrier(); | ||
49 | } | ||
50 | |||
51 | static inline void arch_decomp_setup(void) | ||
52 | { | ||
53 | /* Use machine_is_foo() macro if you need to switch base someday */ | ||
54 | ux500_uart_base = (void __iomem *)U8500_UART2_BASE; | ||
55 | } | ||
56 | |||
57 | #endif /* __ASM_ARCH_UNCOMPRESS_H */ | ||
diff --git a/arch/arm/mach-ux500/include/mach/irqs-board-mop500.h b/arch/arm/mach-ux500/irqs-board-mop500.h index d526dd8e87d3..d526dd8e87d3 100644 --- a/arch/arm/mach-ux500/include/mach/irqs-board-mop500.h +++ b/arch/arm/mach-ux500/irqs-board-mop500.h | |||
diff --git a/arch/arm/mach-ux500/include/mach/irqs-db8500.h b/arch/arm/mach-ux500/irqs-db8500.h index 68bc14974608..f3a9d5947ef3 100644 --- a/arch/arm/mach-ux500/include/mach/irqs-db8500.h +++ b/arch/arm/mach-ux500/irqs-db8500.h | |||
@@ -109,31 +109,6 @@ | |||
109 | 109 | ||
110 | /* Virtual interrupts corresponding to the PRCMU wakeups. */ | 110 | /* Virtual interrupts corresponding to the PRCMU wakeups. */ |
111 | #define IRQ_PRCMU_BASE IRQ_SOC_START | 111 | #define IRQ_PRCMU_BASE IRQ_SOC_START |
112 | #define NUM_PRCMU_WAKEUPS (IRQ_PRCMU_END - IRQ_PRCMU_BASE) | ||
113 | |||
114 | #define IRQ_PRCMU_RTC (IRQ_PRCMU_BASE) | ||
115 | #define IRQ_PRCMU_RTT0 (IRQ_PRCMU_BASE + 1) | ||
116 | #define IRQ_PRCMU_RTT1 (IRQ_PRCMU_BASE + 2) | ||
117 | #define IRQ_PRCMU_HSI0 (IRQ_PRCMU_BASE + 3) | ||
118 | #define IRQ_PRCMU_HSI1 (IRQ_PRCMU_BASE + 4) | ||
119 | #define IRQ_PRCMU_CA_WAKE (IRQ_PRCMU_BASE + 5) | ||
120 | #define IRQ_PRCMU_USB (IRQ_PRCMU_BASE + 6) | ||
121 | #define IRQ_PRCMU_ABB (IRQ_PRCMU_BASE + 7) | ||
122 | #define IRQ_PRCMU_ABB_FIFO (IRQ_PRCMU_BASE + 8) | ||
123 | #define IRQ_PRCMU_ARM (IRQ_PRCMU_BASE + 9) | ||
124 | #define IRQ_PRCMU_MODEM_SW_RESET_REQ (IRQ_PRCMU_BASE + 10) | ||
125 | #define IRQ_PRCMU_GPIO0 (IRQ_PRCMU_BASE + 11) | ||
126 | #define IRQ_PRCMU_GPIO1 (IRQ_PRCMU_BASE + 12) | ||
127 | #define IRQ_PRCMU_GPIO2 (IRQ_PRCMU_BASE + 13) | ||
128 | #define IRQ_PRCMU_GPIO3 (IRQ_PRCMU_BASE + 14) | ||
129 | #define IRQ_PRCMU_GPIO4 (IRQ_PRCMU_BASE + 15) | ||
130 | #define IRQ_PRCMU_GPIO5 (IRQ_PRCMU_BASE + 16) | ||
131 | #define IRQ_PRCMU_GPIO6 (IRQ_PRCMU_BASE + 17) | ||
132 | #define IRQ_PRCMU_GPIO7 (IRQ_PRCMU_BASE + 18) | ||
133 | #define IRQ_PRCMU_GPIO8 (IRQ_PRCMU_BASE + 19) | ||
134 | #define IRQ_PRCMU_CA_SLEEP (IRQ_PRCMU_BASE + 20) | ||
135 | #define IRQ_PRCMU_HOTMON_LOW (IRQ_PRCMU_BASE + 21) | ||
136 | #define IRQ_PRCMU_HOTMON_HIGH (IRQ_PRCMU_BASE + 22) | ||
137 | #define IRQ_PRCMU_END (IRQ_PRCMU_BASE + 23) | 112 | #define IRQ_PRCMU_END (IRQ_PRCMU_BASE + 23) |
138 | 113 | ||
139 | /* | 114 | /* |
diff --git a/arch/arm/mach-ux500/include/mach/irqs.h b/arch/arm/mach-ux500/irqs.h index fc77b4274c8d..15b2af698ed7 100644 --- a/arch/arm/mach-ux500/include/mach/irqs.h +++ b/arch/arm/mach-ux500/irqs.h | |||
@@ -10,8 +10,6 @@ | |||
10 | #ifndef ASM_ARCH_IRQS_H | 10 | #ifndef ASM_ARCH_IRQS_H |
11 | #define ASM_ARCH_IRQS_H | 11 | #define ASM_ARCH_IRQS_H |
12 | 12 | ||
13 | #include <mach/hardware.h> | ||
14 | |||
15 | #define IRQ_LOCALTIMER 29 | 13 | #define IRQ_LOCALTIMER 29 |
16 | #define IRQ_LOCALWDOG 30 | 14 | #define IRQ_LOCALWDOG 30 |
17 | 15 | ||
@@ -36,14 +34,14 @@ | |||
36 | /* This will be overridden by SoC-specific irq headers */ | 34 | /* This will be overridden by SoC-specific irq headers */ |
37 | #define IRQ_SOC_END IRQ_SOC_START | 35 | #define IRQ_SOC_END IRQ_SOC_START |
38 | 36 | ||
39 | #include <mach/irqs-db8500.h> | 37 | #include "irqs-db8500.h" |
40 | 38 | ||
41 | #define IRQ_BOARD_START IRQ_SOC_END | 39 | #define IRQ_BOARD_START IRQ_SOC_END |
42 | /* This will be overridden by board-specific irq headers */ | 40 | /* This will be overridden by board-specific irq headers */ |
43 | #define IRQ_BOARD_END IRQ_BOARD_START | 41 | #define IRQ_BOARD_END IRQ_BOARD_START |
44 | 42 | ||
45 | #ifdef CONFIG_MACH_MOP500 | 43 | #ifdef CONFIG_MACH_MOP500 |
46 | #include <mach/irqs-board-mop500.h> | 44 | #include "irqs-board-mop500.h" |
47 | #endif | 45 | #endif |
48 | 46 | ||
49 | #define UX500_NR_IRQS IRQ_BOARD_END | 47 | #define UX500_NR_IRQS IRQ_BOARD_END |
diff --git a/arch/arm/mach-ux500/platsmp.c b/arch/arm/mach-ux500/platsmp.c index 152b1309b9af..14d90469392f 100644 --- a/arch/arm/mach-ux500/platsmp.c +++ b/arch/arm/mach-ux500/platsmp.c | |||
@@ -21,9 +21,9 @@ | |||
21 | #include <asm/smp_plat.h> | 21 | #include <asm/smp_plat.h> |
22 | #include <asm/smp_scu.h> | 22 | #include <asm/smp_scu.h> |
23 | 23 | ||
24 | #include <mach/hardware.h> | 24 | #include "setup.h" |
25 | #include <mach/setup.h> | ||
26 | 25 | ||
26 | #include "db8500-regs.h" | ||
27 | #include "id.h" | 27 | #include "id.h" |
28 | 28 | ||
29 | /* This is called from headsmp.S to wakeup the secondary core */ | 29 | /* This is called from headsmp.S to wakeup the secondary core */ |
diff --git a/arch/arm/mach-ux500/pm.c b/arch/arm/mach-ux500/pm.c new file mode 100644 index 000000000000..1a468f0fd22e --- /dev/null +++ b/arch/arm/mach-ux500/pm.c | |||
@@ -0,0 +1,167 @@ | |||
1 | /* | ||
2 | * Copyright (C) ST-Ericsson SA 2010-2013 | ||
3 | * Author: Rickard Andersson <rickard.andersson@stericsson.com> for | ||
4 | * ST-Ericsson. | ||
5 | * Author: Daniel Lezcano <daniel.lezcano@linaro.org> for Linaro. | ||
6 | * License terms: GNU General Public License (GPL) version 2 | ||
7 | * | ||
8 | */ | ||
9 | |||
10 | #include <linux/kernel.h> | ||
11 | #include <linux/irqchip/arm-gic.h> | ||
12 | #include <linux/delay.h> | ||
13 | #include <linux/io.h> | ||
14 | #include <linux/platform_data/arm-ux500-pm.h> | ||
15 | |||
16 | #include "db8500-regs.h" | ||
17 | |||
18 | /* ARM WFI Standby signal register */ | ||
19 | #define PRCM_ARM_WFI_STANDBY (prcmu_base + 0x130) | ||
20 | #define PRCM_ARM_WFI_STANDBY_WFI0 0x08 | ||
21 | #define PRCM_ARM_WFI_STANDBY_WFI1 0x10 | ||
22 | #define PRCM_IOCR (prcmu_base + 0x310) | ||
23 | #define PRCM_IOCR_IOFORCE 0x1 | ||
24 | |||
25 | /* Dual A9 core interrupt management unit registers */ | ||
26 | #define PRCM_A9_MASK_REQ (prcmu_base + 0x328) | ||
27 | #define PRCM_A9_MASK_REQ_PRCM_A9_MASK_REQ 0x1 | ||
28 | |||
29 | #define PRCM_A9_MASK_ACK (prcmu_base + 0x32c) | ||
30 | #define PRCM_ARMITMSK31TO0 (prcmu_base + 0x11c) | ||
31 | #define PRCM_ARMITMSK63TO32 (prcmu_base + 0x120) | ||
32 | #define PRCM_ARMITMSK95TO64 (prcmu_base + 0x124) | ||
33 | #define PRCM_ARMITMSK127TO96 (prcmu_base + 0x128) | ||
34 | #define PRCM_POWER_STATE_VAL (prcmu_base + 0x25C) | ||
35 | #define PRCM_ARMITVAL31TO0 (prcmu_base + 0x260) | ||
36 | #define PRCM_ARMITVAL63TO32 (prcmu_base + 0x264) | ||
37 | #define PRCM_ARMITVAL95TO64 (prcmu_base + 0x268) | ||
38 | #define PRCM_ARMITVAL127TO96 (prcmu_base + 0x26C) | ||
39 | |||
40 | static void __iomem *prcmu_base; | ||
41 | |||
42 | /* This function decouple the gic from the prcmu */ | ||
43 | int prcmu_gic_decouple(void) | ||
44 | { | ||
45 | u32 val = readl(PRCM_A9_MASK_REQ); | ||
46 | |||
47 | /* Set bit 0 register value to 1 */ | ||
48 | writel(val | PRCM_A9_MASK_REQ_PRCM_A9_MASK_REQ, | ||
49 | PRCM_A9_MASK_REQ); | ||
50 | |||
51 | /* Make sure the register is updated */ | ||
52 | readl(PRCM_A9_MASK_REQ); | ||
53 | |||
54 | /* Wait a few cycles for the gic mask completion */ | ||
55 | udelay(1); | ||
56 | |||
57 | return 0; | ||
58 | } | ||
59 | |||
60 | /* This function recouple the gic with the prcmu */ | ||
61 | int prcmu_gic_recouple(void) | ||
62 | { | ||
63 | u32 val = readl(PRCM_A9_MASK_REQ); | ||
64 | |||
65 | /* Set bit 0 register value to 0 */ | ||
66 | writel(val & ~PRCM_A9_MASK_REQ_PRCM_A9_MASK_REQ, PRCM_A9_MASK_REQ); | ||
67 | |||
68 | return 0; | ||
69 | } | ||
70 | |||
71 | #define PRCMU_GIC_NUMBER_REGS 5 | ||
72 | |||
73 | /* | ||
74 | * This function checks if there are pending irq on the gic. It only | ||
75 | * makes sense if the gic has been decoupled before with the | ||
76 | * db8500_prcmu_gic_decouple function. Disabling an interrupt only | ||
77 | * disables the forwarding of the interrupt to any CPU interface. It | ||
78 | * does not prevent the interrupt from changing state, for example | ||
79 | * becoming pending, or active and pending if it is already | ||
80 | * active. Hence, we have to check the interrupt is pending *and* is | ||
81 | * active. | ||
82 | */ | ||
83 | bool prcmu_gic_pending_irq(void) | ||
84 | { | ||
85 | u32 pr; /* Pending register */ | ||
86 | u32 er; /* Enable register */ | ||
87 | void __iomem *dist_base = __io_address(U8500_GIC_DIST_BASE); | ||
88 | int i; | ||
89 | |||
90 | /* 5 registers. STI & PPI not skipped */ | ||
91 | for (i = 0; i < PRCMU_GIC_NUMBER_REGS; i++) { | ||
92 | |||
93 | pr = readl_relaxed(dist_base + GIC_DIST_PENDING_SET + i * 4); | ||
94 | er = readl_relaxed(dist_base + GIC_DIST_ENABLE_SET + i * 4); | ||
95 | |||
96 | if (pr & er) | ||
97 | return true; /* There is a pending interrupt */ | ||
98 | } | ||
99 | |||
100 | return false; | ||
101 | } | ||
102 | |||
103 | /* | ||
104 | * This function checks if there are pending interrupt on the | ||
105 | * prcmu which has been delegated to monitor the irqs with the | ||
106 | * db8500_prcmu_copy_gic_settings function. | ||
107 | */ | ||
108 | bool prcmu_pending_irq(void) | ||
109 | { | ||
110 | u32 it, im; | ||
111 | int i; | ||
112 | |||
113 | for (i = 0; i < PRCMU_GIC_NUMBER_REGS - 1; i++) { | ||
114 | it = readl(PRCM_ARMITVAL31TO0 + i * 4); | ||
115 | im = readl(PRCM_ARMITMSK31TO0 + i * 4); | ||
116 | if (it & im) | ||
117 | return true; /* There is a pending interrupt */ | ||
118 | } | ||
119 | |||
120 | return false; | ||
121 | } | ||
122 | |||
123 | /* | ||
124 | * This function checks if the specified cpu is in in WFI. It's usage | ||
125 | * makes sense only if the gic is decoupled with the db8500_prcmu_gic_decouple | ||
126 | * function. Of course passing smp_processor_id() to this function will | ||
127 | * always return false... | ||
128 | */ | ||
129 | bool prcmu_is_cpu_in_wfi(int cpu) | ||
130 | { | ||
131 | return readl(PRCM_ARM_WFI_STANDBY) & cpu ? PRCM_ARM_WFI_STANDBY_WFI1 : | ||
132 | PRCM_ARM_WFI_STANDBY_WFI0; | ||
133 | } | ||
134 | |||
135 | /* | ||
136 | * This function copies the gic SPI settings to the prcmu in order to | ||
137 | * monitor them and abort/finish the retention/off sequence or state. | ||
138 | */ | ||
139 | int prcmu_copy_gic_settings(void) | ||
140 | { | ||
141 | u32 er; /* Enable register */ | ||
142 | void __iomem *dist_base = __io_address(U8500_GIC_DIST_BASE); | ||
143 | int i; | ||
144 | |||
145 | /* We skip the STI and PPI */ | ||
146 | for (i = 0; i < PRCMU_GIC_NUMBER_REGS - 1; i++) { | ||
147 | er = readl_relaxed(dist_base + | ||
148 | GIC_DIST_ENABLE_SET + (i + 1) * 4); | ||
149 | writel(er, PRCM_ARMITMSK31TO0 + i * 4); | ||
150 | } | ||
151 | |||
152 | return 0; | ||
153 | } | ||
154 | |||
155 | void __init ux500_pm_init(u32 phy_base, u32 size) | ||
156 | { | ||
157 | prcmu_base = ioremap(phy_base, size); | ||
158 | if (!prcmu_base) { | ||
159 | pr_err("could not remap PRCMU for PM functions\n"); | ||
160 | return; | ||
161 | } | ||
162 | /* | ||
163 | * On watchdog reboot the GIC is in some cases decoupled. | ||
164 | * This will make sure that the GIC is correctly configured. | ||
165 | */ | ||
166 | prcmu_gic_recouple(); | ||
167 | } | ||
diff --git a/arch/arm/mach-ux500/include/mach/setup.h b/arch/arm/mach-ux500/setup.h index bddce2b49372..bddce2b49372 100644 --- a/arch/arm/mach-ux500/include/mach/setup.h +++ b/arch/arm/mach-ux500/setup.h | |||
diff --git a/arch/arm/mach-ux500/timer.c b/arch/arm/mach-ux500/timer.c index d07bbe7f04a6..b6bd0efcbe64 100644 --- a/arch/arm/mach-ux500/timer.c +++ b/arch/arm/mach-ux500/timer.c | |||
@@ -14,10 +14,10 @@ | |||
14 | 14 | ||
15 | #include <asm/smp_twd.h> | 15 | #include <asm/smp_twd.h> |
16 | 16 | ||
17 | #include <mach/setup.h> | 17 | #include "setup.h" |
18 | #include <mach/hardware.h> | 18 | #include "irqs.h" |
19 | #include <mach/irqs.h> | ||
20 | 19 | ||
20 | #include "db8500-regs.h" | ||
21 | #include "id.h" | 21 | #include "id.h" |
22 | 22 | ||
23 | #ifdef CONFIG_HAVE_ARM_TWD | 23 | #ifdef CONFIG_HAVE_ARM_TWD |
diff --git a/arch/arm/mach-ux500/usb.c b/arch/arm/mach-ux500/usb.c index 78ac65f62e87..2dfc72f7cd8a 100644 --- a/arch/arm/mach-ux500/usb.c +++ b/arch/arm/mach-ux500/usb.c | |||
@@ -10,7 +10,7 @@ | |||
10 | #include <linux/platform_data/usb-musb-ux500.h> | 10 | #include <linux/platform_data/usb-musb-ux500.h> |
11 | #include <linux/platform_data/dma-ste-dma40.h> | 11 | #include <linux/platform_data/dma-ste-dma40.h> |
12 | 12 | ||
13 | #include <mach/hardware.h> | 13 | #include "db8500-regs.h" |
14 | 14 | ||
15 | #define MUSB_DMA40_RX_CH { \ | 15 | #define MUSB_DMA40_RX_CH { \ |
16 | .mode = STEDMA40_MODE_LOGICAL, \ | 16 | .mode = STEDMA40_MODE_LOGICAL, \ |
diff --git a/arch/arm/mach-vexpress/Kconfig b/arch/arm/mach-vexpress/Kconfig index 0f1c5e53fb27..5907e10c37fd 100644 --- a/arch/arm/mach-vexpress/Kconfig +++ b/arch/arm/mach-vexpress/Kconfig | |||
@@ -9,6 +9,8 @@ config ARCH_VEXPRESS | |||
9 | select COMMON_CLK_VERSATILE | 9 | select COMMON_CLK_VERSATILE |
10 | select CPU_V7 | 10 | select CPU_V7 |
11 | select GENERIC_CLOCKEVENTS | 11 | select GENERIC_CLOCKEVENTS |
12 | select HAVE_ARM_SCU if SMP | ||
13 | select HAVE_ARM_TWD if LOCAL_TIMERS | ||
12 | select HAVE_CLK | 14 | select HAVE_CLK |
13 | select HAVE_PATA_PLATFORM | 15 | select HAVE_PATA_PLATFORM |
14 | select HAVE_SMP | 16 | select HAVE_SMP |
diff --git a/arch/arm/mach-zynq/Kconfig b/arch/arm/mach-zynq/Kconfig index adb6c0ea0e53..138b5891f4ef 100644 --- a/arch/arm/mach-zynq/Kconfig +++ b/arch/arm/mach-zynq/Kconfig | |||
@@ -5,6 +5,8 @@ config ARCH_ZYNQ | |||
5 | select COMMON_CLK | 5 | select COMMON_CLK |
6 | select CPU_V7 | 6 | select CPU_V7 |
7 | select GENERIC_CLOCKEVENTS | 7 | select GENERIC_CLOCKEVENTS |
8 | select HAVE_ARM_SCU if SMP | ||
9 | select HAVE_ARM_TWD if LOCAL_TIMERS | ||
8 | select ICST | 10 | select ICST |
9 | select MIGHT_HAVE_CACHE_L2X0 | 11 | select MIGHT_HAVE_CACHE_L2X0 |
10 | select USE_OF | 12 | select USE_OF |
diff --git a/arch/arm/plat-samsung/devs.c b/arch/arm/plat-samsung/devs.c index 03db14d8ace9..f55d3f9b508d 100644 --- a/arch/arm/plat-samsung/devs.c +++ b/arch/arm/plat-samsung/devs.c | |||
@@ -879,51 +879,6 @@ void __init s3c24xx_fb_set_platdata(struct s3c2410fb_mach_info *pd) | |||
879 | } | 879 | } |
880 | #endif /* CONFIG_PLAT_S3C24XX */ | 880 | #endif /* CONFIG_PLAT_S3C24XX */ |
881 | 881 | ||
882 | /* MFC */ | ||
883 | |||
884 | #ifdef CONFIG_S5P_DEV_MFC | ||
885 | static struct resource s5p_mfc_resource[] = { | ||
886 | [0] = DEFINE_RES_MEM(S5P_PA_MFC, SZ_64K), | ||
887 | [1] = DEFINE_RES_IRQ(IRQ_MFC), | ||
888 | }; | ||
889 | |||
890 | struct platform_device s5p_device_mfc = { | ||
891 | .name = "s5p-mfc", | ||
892 | .id = -1, | ||
893 | .num_resources = ARRAY_SIZE(s5p_mfc_resource), | ||
894 | .resource = s5p_mfc_resource, | ||
895 | }; | ||
896 | |||
897 | /* | ||
898 | * MFC hardware has 2 memory interfaces which are modelled as two separate | ||
899 | * platform devices to let dma-mapping distinguish between them. | ||
900 | * | ||
901 | * MFC parent device (s5p_device_mfc) must be registered before memory | ||
902 | * interface specific devices (s5p_device_mfc_l and s5p_device_mfc_r). | ||
903 | */ | ||
904 | |||
905 | struct platform_device s5p_device_mfc_l = { | ||
906 | .name = "s5p-mfc-l", | ||
907 | .id = -1, | ||
908 | .dev = { | ||
909 | .parent = &s5p_device_mfc.dev, | ||
910 | .dma_mask = &samsung_device_dma_mask, | ||
911 | .coherent_dma_mask = DMA_BIT_MASK(32), | ||
912 | }, | ||
913 | }; | ||
914 | |||
915 | struct platform_device s5p_device_mfc_r = { | ||
916 | .name = "s5p-mfc-r", | ||
917 | .id = -1, | ||
918 | .dev = { | ||
919 | .parent = &s5p_device_mfc.dev, | ||
920 | .dma_mask = &samsung_device_dma_mask, | ||
921 | .coherent_dma_mask = DMA_BIT_MASK(32), | ||
922 | }, | ||
923 | }; | ||
924 | |||
925 | #endif /* CONFIG_S5P_DEV_MFC */ | ||
926 | |||
927 | /* MIPI CSIS */ | 882 | /* MIPI CSIS */ |
928 | 883 | ||
929 | #ifdef CONFIG_S5P_DEV_CSIS0 | 884 | #ifdef CONFIG_S5P_DEV_CSIS0 |
diff --git a/arch/arm/plat-samsung/include/plat/sdhci.h b/arch/arm/plat-samsung/include/plat/sdhci.h index 5560586abec0..ce1d0f785efd 100644 --- a/arch/arm/plat-samsung/include/plat/sdhci.h +++ b/arch/arm/plat-samsung/include/plat/sdhci.h | |||
@@ -18,62 +18,9 @@ | |||
18 | #ifndef __PLAT_S3C_SDHCI_H | 18 | #ifndef __PLAT_S3C_SDHCI_H |
19 | #define __PLAT_S3C_SDHCI_H __FILE__ | 19 | #define __PLAT_S3C_SDHCI_H __FILE__ |
20 | 20 | ||
21 | #include <linux/platform_data/mmc-sdhci-s3c.h> | ||
21 | #include <plat/devs.h> | 22 | #include <plat/devs.h> |
22 | 23 | ||
23 | struct platform_device; | ||
24 | struct mmc_host; | ||
25 | struct mmc_card; | ||
26 | struct mmc_ios; | ||
27 | |||
28 | enum cd_types { | ||
29 | S3C_SDHCI_CD_INTERNAL, /* use mmc internal CD line */ | ||
30 | S3C_SDHCI_CD_EXTERNAL, /* use external callback */ | ||
31 | S3C_SDHCI_CD_GPIO, /* use external gpio pin for CD line */ | ||
32 | S3C_SDHCI_CD_NONE, /* no CD line, use polling to detect card */ | ||
33 | S3C_SDHCI_CD_PERMANENT, /* no CD line, card permanently wired to host */ | ||
34 | }; | ||
35 | |||
36 | /** | ||
37 | * struct s3c_sdhci_platdata() - Platform device data for Samsung SDHCI | ||
38 | * @max_width: The maximum number of data bits supported. | ||
39 | * @host_caps: Standard MMC host capabilities bit field. | ||
40 | * @host_caps2: The second standard MMC host capabilities bit field. | ||
41 | * @cd_type: Type of Card Detection method (see cd_types enum above) | ||
42 | * @ext_cd_init: Initialize external card detect subsystem. Called on | ||
43 | * sdhci-s3c driver probe when cd_type == S3C_SDHCI_CD_EXTERNAL. | ||
44 | * notify_func argument is a callback to the sdhci-s3c driver | ||
45 | * that triggers the card detection event. Callback arguments: | ||
46 | * dev is pointer to platform device of the host controller, | ||
47 | * state is new state of the card (0 - removed, 1 - inserted). | ||
48 | * @ext_cd_cleanup: Cleanup external card detect subsystem. Called on | ||
49 | * sdhci-s3c driver remove when cd_type == S3C_SDHCI_CD_EXTERNAL. | ||
50 | * notify_func argument is the same callback as for ext_cd_init. | ||
51 | * @ext_cd_gpio: gpio pin used for external CD line, valid only if | ||
52 | * cd_type == S3C_SDHCI_CD_GPIO | ||
53 | * @ext_cd_gpio_invert: invert values for external CD gpio line | ||
54 | * @cfg_gpio: Configure the GPIO for a specific card bit-width | ||
55 | * | ||
56 | * Initialisation data specific to either the machine or the platform | ||
57 | * for the device driver to use or call-back when configuring gpio or | ||
58 | * card speed information. | ||
59 | */ | ||
60 | struct s3c_sdhci_platdata { | ||
61 | unsigned int max_width; | ||
62 | unsigned int host_caps; | ||
63 | unsigned int host_caps2; | ||
64 | unsigned int pm_caps; | ||
65 | enum cd_types cd_type; | ||
66 | |||
67 | int ext_cd_gpio; | ||
68 | bool ext_cd_gpio_invert; | ||
69 | int (*ext_cd_init)(void (*notify_func)(struct platform_device *, | ||
70 | int state)); | ||
71 | int (*ext_cd_cleanup)(void (*notify_func)(struct platform_device *, | ||
72 | int state)); | ||
73 | |||
74 | void (*cfg_gpio)(struct platform_device *dev, int width); | ||
75 | }; | ||
76 | |||
77 | /* s3c_sdhci_set_platdata() - common helper for setting SDHCI platform data | 24 | /* s3c_sdhci_set_platdata() - common helper for setting SDHCI platform data |
78 | * @pd: The default platform data for this device. | 25 | * @pd: The default platform data for this device. |
79 | * @set: Pointer to the platform data to fill in. | 26 | * @set: Pointer to the platform data to fill in. |
@@ -378,5 +325,4 @@ static inline void s3c_sdhci_setname(int id, char *name) | |||
378 | break; | 325 | break; |
379 | } | 326 | } |
380 | } | 327 | } |
381 | |||
382 | #endif /* __PLAT_S3C_SDHCI_H */ | 328 | #endif /* __PLAT_S3C_SDHCI_H */ |
diff --git a/arch/arm/plat-samsung/irq-vic-timer.c b/arch/arm/plat-samsung/irq-vic-timer.c index 5d205e74e495..0fceb4273824 100644 --- a/arch/arm/plat-samsung/irq-vic-timer.c +++ b/arch/arm/plat-samsung/irq-vic-timer.c | |||
@@ -20,6 +20,7 @@ | |||
20 | #include <linux/io.h> | 20 | #include <linux/io.h> |
21 | 21 | ||
22 | #include <mach/map.h> | 22 | #include <mach/map.h> |
23 | #include <mach/irqs.h> | ||
23 | #include <plat/cpu.h> | 24 | #include <plat/cpu.h> |
24 | #include <plat/irq-vic-timer.h> | 25 | #include <plat/irq-vic-timer.h> |
25 | #include <plat/regs-timer.h> | 26 | #include <plat/regs-timer.h> |
diff --git a/arch/arm/plat-samsung/pm.c b/arch/arm/plat-samsung/pm.c index 002b1472293b..53210ec4e8ec 100644 --- a/arch/arm/plat-samsung/pm.c +++ b/arch/arm/plat-samsung/pm.c | |||
@@ -27,6 +27,7 @@ | |||
27 | #include <plat/regs-serial.h> | 27 | #include <plat/regs-serial.h> |
28 | #include <mach/regs-clock.h> | 28 | #include <mach/regs-clock.h> |
29 | #include <mach/regs-irq.h> | 29 | #include <mach/regs-irq.h> |
30 | #include <mach/irqs.h> | ||
30 | #include <asm/irq.h> | 31 | #include <asm/irq.h> |
31 | 32 | ||
32 | #include <plat/pm.h> | 33 | #include <plat/pm.h> |
diff --git a/arch/arm/plat-samsung/s5p-dev-mfc.c b/arch/arm/plat-samsung/s5p-dev-mfc.c index 5ec104b5408b..a93fb6fb6606 100644 --- a/arch/arm/plat-samsung/s5p-dev-mfc.c +++ b/arch/arm/plat-samsung/s5p-dev-mfc.c | |||
@@ -18,10 +18,50 @@ | |||
18 | #include <linux/of.h> | 18 | #include <linux/of.h> |
19 | 19 | ||
20 | #include <mach/map.h> | 20 | #include <mach/map.h> |
21 | #include <mach/irqs.h> | ||
21 | #include <plat/devs.h> | 22 | #include <plat/devs.h> |
22 | #include <plat/irqs.h> | ||
23 | #include <plat/mfc.h> | 23 | #include <plat/mfc.h> |
24 | 24 | ||
25 | static struct resource s5p_mfc_resource[] = { | ||
26 | [0] = DEFINE_RES_MEM(S5P_PA_MFC, SZ_64K), | ||
27 | [1] = DEFINE_RES_IRQ(IRQ_MFC), | ||
28 | }; | ||
29 | |||
30 | struct platform_device s5p_device_mfc = { | ||
31 | .name = "s5p-mfc", | ||
32 | .id = -1, | ||
33 | .num_resources = ARRAY_SIZE(s5p_mfc_resource), | ||
34 | .resource = s5p_mfc_resource, | ||
35 | }; | ||
36 | |||
37 | /* | ||
38 | * MFC hardware has 2 memory interfaces which are modelled as two separate | ||
39 | * platform devices to let dma-mapping distinguish between them. | ||
40 | * | ||
41 | * MFC parent device (s5p_device_mfc) must be registered before memory | ||
42 | * interface specific devices (s5p_device_mfc_l and s5p_device_mfc_r). | ||
43 | */ | ||
44 | |||
45 | struct platform_device s5p_device_mfc_l = { | ||
46 | .name = "s5p-mfc-l", | ||
47 | .id = -1, | ||
48 | .dev = { | ||
49 | .parent = &s5p_device_mfc.dev, | ||
50 | .dma_mask = &s5p_device_mfc_l.dev.coherent_dma_mask, | ||
51 | .coherent_dma_mask = DMA_BIT_MASK(32), | ||
52 | }, | ||
53 | }; | ||
54 | |||
55 | struct platform_device s5p_device_mfc_r = { | ||
56 | .name = "s5p-mfc-r", | ||
57 | .id = -1, | ||
58 | .dev = { | ||
59 | .parent = &s5p_device_mfc.dev, | ||
60 | .dma_mask = &s5p_device_mfc_r.dev.coherent_dma_mask, | ||
61 | .coherent_dma_mask = DMA_BIT_MASK(32), | ||
62 | }, | ||
63 | }; | ||
64 | |||
25 | struct s5p_mfc_reserved_mem { | 65 | struct s5p_mfc_reserved_mem { |
26 | phys_addr_t base; | 66 | phys_addr_t base; |
27 | unsigned long size; | 67 | unsigned long size; |
diff --git a/arch/arm/plat-samsung/s5p-irq.c b/arch/arm/plat-samsung/s5p-irq.c index 103e371f5e35..ff1a76011b1e 100644 --- a/arch/arm/plat-samsung/s5p-irq.c +++ b/arch/arm/plat-samsung/s5p-irq.c | |||
@@ -15,6 +15,7 @@ | |||
15 | #include <linux/io.h> | 15 | #include <linux/io.h> |
16 | #include <linux/irqchip/arm-vic.h> | 16 | #include <linux/irqchip/arm-vic.h> |
17 | 17 | ||
18 | #include <mach/irqs.h> | ||
18 | #include <mach/map.h> | 19 | #include <mach/map.h> |
19 | #include <plat/regs-timer.h> | 20 | #include <plat/regs-timer.h> |
20 | #include <plat/cpu.h> | 21 | #include <plat/cpu.h> |
diff --git a/arch/arm/plat-spear/Kconfig b/arch/arm/plat-spear/Kconfig deleted file mode 100644 index 8a08c31b5e20..000000000000 --- a/arch/arm/plat-spear/Kconfig +++ /dev/null | |||
@@ -1,47 +0,0 @@ | |||
1 | # | ||
2 | # SPEAr Platform configuration file | ||
3 | # | ||
4 | |||
5 | if PLAT_SPEAR | ||
6 | |||
7 | choice | ||
8 | prompt "ST SPEAr Family" | ||
9 | default ARCH_SPEAR3XX | ||
10 | |||
11 | config ARCH_SPEAR13XX | ||
12 | bool "ST SPEAr13xx with Device Tree" | ||
13 | select ARCH_HAS_CPUFREQ | ||
14 | select ARM_GIC | ||
15 | select CPU_V7 | ||
16 | select GPIO_SPEAR_SPICS | ||
17 | select HAVE_SMP | ||
18 | select MIGHT_HAVE_CACHE_L2X0 | ||
19 | select PINCTRL | ||
20 | select USE_OF | ||
21 | help | ||
22 | Supports for ARM's SPEAR13XX family | ||
23 | |||
24 | config ARCH_SPEAR3XX | ||
25 | bool "ST SPEAr3xx with Device Tree" | ||
26 | select ARM_VIC | ||
27 | select CPU_ARM926T | ||
28 | select PINCTRL | ||
29 | select USE_OF | ||
30 | help | ||
31 | Supports for ARM's SPEAR3XX family | ||
32 | |||
33 | config ARCH_SPEAR6XX | ||
34 | bool "SPEAr6XX" | ||
35 | select ARM_VIC | ||
36 | select CPU_ARM926T | ||
37 | help | ||
38 | Supports for ARM's SPEAR6XX family | ||
39 | |||
40 | endchoice | ||
41 | |||
42 | # Adding SPEAr machine specific configuration files | ||
43 | source "arch/arm/mach-spear13xx/Kconfig" | ||
44 | source "arch/arm/mach-spear3xx/Kconfig" | ||
45 | source "arch/arm/mach-spear6xx/Kconfig" | ||
46 | |||
47 | endif | ||
diff --git a/arch/arm/plat-spear/Makefile b/arch/arm/plat-spear/Makefile deleted file mode 100644 index 01e88532a5db..000000000000 --- a/arch/arm/plat-spear/Makefile +++ /dev/null | |||
@@ -1,9 +0,0 @@ | |||
1 | # | ||
2 | # SPEAr Platform specific Makefile | ||
3 | # | ||
4 | |||
5 | # Common support | ||
6 | obj-y := restart.o time.o | ||
7 | |||
8 | obj-$(CONFIG_ARCH_SPEAR3XX) += pl080.o | ||
9 | obj-$(CONFIG_ARCH_SPEAR6XX) += pl080.o | ||
diff --git a/drivers/clk/spear/spear1310_clock.c b/drivers/clk/spear/spear1310_clock.c index ed9af4278619..aedbbe12f321 100644 --- a/drivers/clk/spear/spear1310_clock.c +++ b/drivers/clk/spear/spear1310_clock.c | |||
@@ -17,12 +17,10 @@ | |||
17 | #include <linux/io.h> | 17 | #include <linux/io.h> |
18 | #include <linux/of_platform.h> | 18 | #include <linux/of_platform.h> |
19 | #include <linux/spinlock_types.h> | 19 | #include <linux/spinlock_types.h> |
20 | #include <mach/spear.h> | ||
21 | #include "clk.h" | 20 | #include "clk.h" |
22 | 21 | ||
23 | #define VA_SPEAR1310_RAS_BASE IOMEM(UL(0xFA400000)) | ||
24 | /* PLL related registers and bit values */ | 22 | /* PLL related registers and bit values */ |
25 | #define SPEAR1310_PLL_CFG (VA_MISC_BASE + 0x210) | 23 | #define SPEAR1310_PLL_CFG (misc_base + 0x210) |
26 | /* PLL_CFG bit values */ | 24 | /* PLL_CFG bit values */ |
27 | #define SPEAR1310_CLCD_SYNT_CLK_MASK 1 | 25 | #define SPEAR1310_CLCD_SYNT_CLK_MASK 1 |
28 | #define SPEAR1310_CLCD_SYNT_CLK_SHIFT 31 | 26 | #define SPEAR1310_CLCD_SYNT_CLK_SHIFT 31 |
@@ -35,15 +33,15 @@ | |||
35 | #define SPEAR1310_PLL2_CLK_SHIFT 22 | 33 | #define SPEAR1310_PLL2_CLK_SHIFT 22 |
36 | #define SPEAR1310_PLL1_CLK_SHIFT 20 | 34 | #define SPEAR1310_PLL1_CLK_SHIFT 20 |
37 | 35 | ||
38 | #define SPEAR1310_PLL1_CTR (VA_MISC_BASE + 0x214) | 36 | #define SPEAR1310_PLL1_CTR (misc_base + 0x214) |
39 | #define SPEAR1310_PLL1_FRQ (VA_MISC_BASE + 0x218) | 37 | #define SPEAR1310_PLL1_FRQ (misc_base + 0x218) |
40 | #define SPEAR1310_PLL2_CTR (VA_MISC_BASE + 0x220) | 38 | #define SPEAR1310_PLL2_CTR (misc_base + 0x220) |
41 | #define SPEAR1310_PLL2_FRQ (VA_MISC_BASE + 0x224) | 39 | #define SPEAR1310_PLL2_FRQ (misc_base + 0x224) |
42 | #define SPEAR1310_PLL3_CTR (VA_MISC_BASE + 0x22C) | 40 | #define SPEAR1310_PLL3_CTR (misc_base + 0x22C) |
43 | #define SPEAR1310_PLL3_FRQ (VA_MISC_BASE + 0x230) | 41 | #define SPEAR1310_PLL3_FRQ (misc_base + 0x230) |
44 | #define SPEAR1310_PLL4_CTR (VA_MISC_BASE + 0x238) | 42 | #define SPEAR1310_PLL4_CTR (misc_base + 0x238) |
45 | #define SPEAR1310_PLL4_FRQ (VA_MISC_BASE + 0x23C) | 43 | #define SPEAR1310_PLL4_FRQ (misc_base + 0x23C) |
46 | #define SPEAR1310_PERIP_CLK_CFG (VA_MISC_BASE + 0x244) | 44 | #define SPEAR1310_PERIP_CLK_CFG (misc_base + 0x244) |
47 | /* PERIP_CLK_CFG bit values */ | 45 | /* PERIP_CLK_CFG bit values */ |
48 | #define SPEAR1310_GPT_OSC24_VAL 0 | 46 | #define SPEAR1310_GPT_OSC24_VAL 0 |
49 | #define SPEAR1310_GPT_APB_VAL 1 | 47 | #define SPEAR1310_GPT_APB_VAL 1 |
@@ -65,7 +63,7 @@ | |||
65 | #define SPEAR1310_C3_CLK_MASK 1 | 63 | #define SPEAR1310_C3_CLK_MASK 1 |
66 | #define SPEAR1310_C3_CLK_SHIFT 1 | 64 | #define SPEAR1310_C3_CLK_SHIFT 1 |
67 | 65 | ||
68 | #define SPEAR1310_GMAC_CLK_CFG (VA_MISC_BASE + 0x248) | 66 | #define SPEAR1310_GMAC_CLK_CFG (misc_base + 0x248) |
69 | #define SPEAR1310_GMAC_PHY_IF_SEL_MASK 3 | 67 | #define SPEAR1310_GMAC_PHY_IF_SEL_MASK 3 |
70 | #define SPEAR1310_GMAC_PHY_IF_SEL_SHIFT 4 | 68 | #define SPEAR1310_GMAC_PHY_IF_SEL_SHIFT 4 |
71 | #define SPEAR1310_GMAC_PHY_CLK_MASK 1 | 69 | #define SPEAR1310_GMAC_PHY_CLK_MASK 1 |
@@ -73,7 +71,7 @@ | |||
73 | #define SPEAR1310_GMAC_PHY_INPUT_CLK_MASK 2 | 71 | #define SPEAR1310_GMAC_PHY_INPUT_CLK_MASK 2 |
74 | #define SPEAR1310_GMAC_PHY_INPUT_CLK_SHIFT 1 | 72 | #define SPEAR1310_GMAC_PHY_INPUT_CLK_SHIFT 1 |
75 | 73 | ||
76 | #define SPEAR1310_I2S_CLK_CFG (VA_MISC_BASE + 0x24C) | 74 | #define SPEAR1310_I2S_CLK_CFG (misc_base + 0x24C) |
77 | /* I2S_CLK_CFG register mask */ | 75 | /* I2S_CLK_CFG register mask */ |
78 | #define SPEAR1310_I2S_SCLK_X_MASK 0x1F | 76 | #define SPEAR1310_I2S_SCLK_X_MASK 0x1F |
79 | #define SPEAR1310_I2S_SCLK_X_SHIFT 27 | 77 | #define SPEAR1310_I2S_SCLK_X_SHIFT 27 |
@@ -91,21 +89,21 @@ | |||
91 | #define SPEAR1310_I2S_SRC_CLK_MASK 2 | 89 | #define SPEAR1310_I2S_SRC_CLK_MASK 2 |
92 | #define SPEAR1310_I2S_SRC_CLK_SHIFT 0 | 90 | #define SPEAR1310_I2S_SRC_CLK_SHIFT 0 |
93 | 91 | ||
94 | #define SPEAR1310_C3_CLK_SYNT (VA_MISC_BASE + 0x250) | 92 | #define SPEAR1310_C3_CLK_SYNT (misc_base + 0x250) |
95 | #define SPEAR1310_UART_CLK_SYNT (VA_MISC_BASE + 0x254) | 93 | #define SPEAR1310_UART_CLK_SYNT (misc_base + 0x254) |
96 | #define SPEAR1310_GMAC_CLK_SYNT (VA_MISC_BASE + 0x258) | 94 | #define SPEAR1310_GMAC_CLK_SYNT (misc_base + 0x258) |
97 | #define SPEAR1310_SDHCI_CLK_SYNT (VA_MISC_BASE + 0x25C) | 95 | #define SPEAR1310_SDHCI_CLK_SYNT (misc_base + 0x25C) |
98 | #define SPEAR1310_CFXD_CLK_SYNT (VA_MISC_BASE + 0x260) | 96 | #define SPEAR1310_CFXD_CLK_SYNT (misc_base + 0x260) |
99 | #define SPEAR1310_ADC_CLK_SYNT (VA_MISC_BASE + 0x264) | 97 | #define SPEAR1310_ADC_CLK_SYNT (misc_base + 0x264) |
100 | #define SPEAR1310_AMBA_CLK_SYNT (VA_MISC_BASE + 0x268) | 98 | #define SPEAR1310_AMBA_CLK_SYNT (misc_base + 0x268) |
101 | #define SPEAR1310_CLCD_CLK_SYNT (VA_MISC_BASE + 0x270) | 99 | #define SPEAR1310_CLCD_CLK_SYNT (misc_base + 0x270) |
102 | #define SPEAR1310_RAS_CLK_SYNT0 (VA_MISC_BASE + 0x280) | 100 | #define SPEAR1310_RAS_CLK_SYNT0 (misc_base + 0x280) |
103 | #define SPEAR1310_RAS_CLK_SYNT1 (VA_MISC_BASE + 0x288) | 101 | #define SPEAR1310_RAS_CLK_SYNT1 (misc_base + 0x288) |
104 | #define SPEAR1310_RAS_CLK_SYNT2 (VA_MISC_BASE + 0x290) | 102 | #define SPEAR1310_RAS_CLK_SYNT2 (misc_base + 0x290) |
105 | #define SPEAR1310_RAS_CLK_SYNT3 (VA_MISC_BASE + 0x298) | 103 | #define SPEAR1310_RAS_CLK_SYNT3 (misc_base + 0x298) |
106 | /* Check Fractional synthesizer reg masks */ | 104 | /* Check Fractional synthesizer reg masks */ |
107 | 105 | ||
108 | #define SPEAR1310_PERIP1_CLK_ENB (VA_MISC_BASE + 0x300) | 106 | #define SPEAR1310_PERIP1_CLK_ENB (misc_base + 0x300) |
109 | /* PERIP1_CLK_ENB register masks */ | 107 | /* PERIP1_CLK_ENB register masks */ |
110 | #define SPEAR1310_RTC_CLK_ENB 31 | 108 | #define SPEAR1310_RTC_CLK_ENB 31 |
111 | #define SPEAR1310_ADC_CLK_ENB 30 | 109 | #define SPEAR1310_ADC_CLK_ENB 30 |
@@ -138,7 +136,7 @@ | |||
138 | #define SPEAR1310_SYSROM_CLK_ENB 1 | 136 | #define SPEAR1310_SYSROM_CLK_ENB 1 |
139 | #define SPEAR1310_BUS_CLK_ENB 0 | 137 | #define SPEAR1310_BUS_CLK_ENB 0 |
140 | 138 | ||
141 | #define SPEAR1310_PERIP2_CLK_ENB (VA_MISC_BASE + 0x304) | 139 | #define SPEAR1310_PERIP2_CLK_ENB (misc_base + 0x304) |
142 | /* PERIP2_CLK_ENB register masks */ | 140 | /* PERIP2_CLK_ENB register masks */ |
143 | #define SPEAR1310_THSENS_CLK_ENB 8 | 141 | #define SPEAR1310_THSENS_CLK_ENB 8 |
144 | #define SPEAR1310_I2S_REF_PAD_CLK_ENB 7 | 142 | #define SPEAR1310_I2S_REF_PAD_CLK_ENB 7 |
@@ -150,7 +148,7 @@ | |||
150 | #define SPEAR1310_DDR_CORE_CLK_ENB 1 | 148 | #define SPEAR1310_DDR_CORE_CLK_ENB 1 |
151 | #define SPEAR1310_DDR_CTRL_CLK_ENB 0 | 149 | #define SPEAR1310_DDR_CTRL_CLK_ENB 0 |
152 | 150 | ||
153 | #define SPEAR1310_RAS_CLK_ENB (VA_MISC_BASE + 0x310) | 151 | #define SPEAR1310_RAS_CLK_ENB (misc_base + 0x310) |
154 | /* RAS_CLK_ENB register masks */ | 152 | /* RAS_CLK_ENB register masks */ |
155 | #define SPEAR1310_SYNT3_CLK_ENB 17 | 153 | #define SPEAR1310_SYNT3_CLK_ENB 17 |
156 | #define SPEAR1310_SYNT2_CLK_ENB 16 | 154 | #define SPEAR1310_SYNT2_CLK_ENB 16 |
@@ -172,7 +170,7 @@ | |||
172 | #define SPEAR1310_ACLK_CLK_ENB 0 | 170 | #define SPEAR1310_ACLK_CLK_ENB 0 |
173 | 171 | ||
174 | /* RAS Area Control Register */ | 172 | /* RAS Area Control Register */ |
175 | #define SPEAR1310_RAS_CTRL_REG0 (VA_SPEAR1310_RAS_BASE + 0x000) | 173 | #define SPEAR1310_RAS_CTRL_REG0 (ras_base + 0x000) |
176 | #define SPEAR1310_SSP1_CLK_MASK 3 | 174 | #define SPEAR1310_SSP1_CLK_MASK 3 |
177 | #define SPEAR1310_SSP1_CLK_SHIFT 26 | 175 | #define SPEAR1310_SSP1_CLK_SHIFT 26 |
178 | #define SPEAR1310_TDM_CLK_MASK 1 | 176 | #define SPEAR1310_TDM_CLK_MASK 1 |
@@ -197,12 +195,12 @@ | |||
197 | #define SPEAR1310_PCI_CLK_MASK 1 | 195 | #define SPEAR1310_PCI_CLK_MASK 1 |
198 | #define SPEAR1310_PCI_CLK_SHIFT 0 | 196 | #define SPEAR1310_PCI_CLK_SHIFT 0 |
199 | 197 | ||
200 | #define SPEAR1310_RAS_CTRL_REG1 (VA_SPEAR1310_RAS_BASE + 0x004) | 198 | #define SPEAR1310_RAS_CTRL_REG1 (ras_base + 0x004) |
201 | #define SPEAR1310_PHY_CLK_MASK 0x3 | 199 | #define SPEAR1310_PHY_CLK_MASK 0x3 |
202 | #define SPEAR1310_RMII_PHY_CLK_SHIFT 0 | 200 | #define SPEAR1310_RMII_PHY_CLK_SHIFT 0 |
203 | #define SPEAR1310_SMII_RGMII_PHY_CLK_SHIFT 2 | 201 | #define SPEAR1310_SMII_RGMII_PHY_CLK_SHIFT 2 |
204 | 202 | ||
205 | #define SPEAR1310_RAS_SW_CLK_CTRL (VA_SPEAR1310_RAS_BASE + 0x0148) | 203 | #define SPEAR1310_RAS_SW_CLK_CTRL (ras_base + 0x0148) |
206 | #define SPEAR1310_CAN1_CLK_ENB 25 | 204 | #define SPEAR1310_CAN1_CLK_ENB 25 |
207 | #define SPEAR1310_CAN0_CLK_ENB 24 | 205 | #define SPEAR1310_CAN0_CLK_ENB 24 |
208 | #define SPEAR1310_GPT64_CLK_ENB 23 | 206 | #define SPEAR1310_GPT64_CLK_ENB 23 |
@@ -385,7 +383,7 @@ static const char *ssp1_parents[] = { "ras_apb_clk", "gen_syn1_clk", | |||
385 | static const char *pci_parents[] = { "ras_pll3_clk", "gen_syn2_clk", }; | 383 | static const char *pci_parents[] = { "ras_pll3_clk", "gen_syn2_clk", }; |
386 | static const char *tdm_parents[] = { "ras_pll3_clk", "gen_syn1_clk", }; | 384 | static const char *tdm_parents[] = { "ras_pll3_clk", "gen_syn1_clk", }; |
387 | 385 | ||
388 | void __init spear1310_clk_init(void) | 386 | void __init spear1310_clk_init(void __iomem *misc_base, void __iomem *ras_base) |
389 | { | 387 | { |
390 | struct clk *clk, *clk1; | 388 | struct clk *clk, *clk1; |
391 | 389 | ||
diff --git a/drivers/clk/spear/spear1340_clock.c b/drivers/clk/spear/spear1340_clock.c index 35e7e2698e10..9d0b3949db30 100644 --- a/drivers/clk/spear/spear1340_clock.c +++ b/drivers/clk/spear/spear1340_clock.c | |||
@@ -17,18 +17,17 @@ | |||
17 | #include <linux/io.h> | 17 | #include <linux/io.h> |
18 | #include <linux/of_platform.h> | 18 | #include <linux/of_platform.h> |
19 | #include <linux/spinlock_types.h> | 19 | #include <linux/spinlock_types.h> |
20 | #include <mach/spear.h> | ||
21 | #include "clk.h" | 20 | #include "clk.h" |
22 | 21 | ||
23 | /* Clock Configuration Registers */ | 22 | /* Clock Configuration Registers */ |
24 | #define SPEAR1340_SYS_CLK_CTRL (VA_MISC_BASE + 0x200) | 23 | #define SPEAR1340_SYS_CLK_CTRL (misc_base + 0x200) |
25 | #define SPEAR1340_HCLK_SRC_SEL_SHIFT 27 | 24 | #define SPEAR1340_HCLK_SRC_SEL_SHIFT 27 |
26 | #define SPEAR1340_HCLK_SRC_SEL_MASK 1 | 25 | #define SPEAR1340_HCLK_SRC_SEL_MASK 1 |
27 | #define SPEAR1340_SCLK_SRC_SEL_SHIFT 23 | 26 | #define SPEAR1340_SCLK_SRC_SEL_SHIFT 23 |
28 | #define SPEAR1340_SCLK_SRC_SEL_MASK 3 | 27 | #define SPEAR1340_SCLK_SRC_SEL_MASK 3 |
29 | 28 | ||
30 | /* PLL related registers and bit values */ | 29 | /* PLL related registers and bit values */ |
31 | #define SPEAR1340_PLL_CFG (VA_MISC_BASE + 0x210) | 30 | #define SPEAR1340_PLL_CFG (misc_base + 0x210) |
32 | /* PLL_CFG bit values */ | 31 | /* PLL_CFG bit values */ |
33 | #define SPEAR1340_CLCD_SYNT_CLK_MASK 1 | 32 | #define SPEAR1340_CLCD_SYNT_CLK_MASK 1 |
34 | #define SPEAR1340_CLCD_SYNT_CLK_SHIFT 31 | 33 | #define SPEAR1340_CLCD_SYNT_CLK_SHIFT 31 |
@@ -40,15 +39,15 @@ | |||
40 | #define SPEAR1340_PLL2_CLK_SHIFT 22 | 39 | #define SPEAR1340_PLL2_CLK_SHIFT 22 |
41 | #define SPEAR1340_PLL1_CLK_SHIFT 20 | 40 | #define SPEAR1340_PLL1_CLK_SHIFT 20 |
42 | 41 | ||
43 | #define SPEAR1340_PLL1_CTR (VA_MISC_BASE + 0x214) | 42 | #define SPEAR1340_PLL1_CTR (misc_base + 0x214) |
44 | #define SPEAR1340_PLL1_FRQ (VA_MISC_BASE + 0x218) | 43 | #define SPEAR1340_PLL1_FRQ (misc_base + 0x218) |
45 | #define SPEAR1340_PLL2_CTR (VA_MISC_BASE + 0x220) | 44 | #define SPEAR1340_PLL2_CTR (misc_base + 0x220) |
46 | #define SPEAR1340_PLL2_FRQ (VA_MISC_BASE + 0x224) | 45 | #define SPEAR1340_PLL2_FRQ (misc_base + 0x224) |
47 | #define SPEAR1340_PLL3_CTR (VA_MISC_BASE + 0x22C) | 46 | #define SPEAR1340_PLL3_CTR (misc_base + 0x22C) |
48 | #define SPEAR1340_PLL3_FRQ (VA_MISC_BASE + 0x230) | 47 | #define SPEAR1340_PLL3_FRQ (misc_base + 0x230) |
49 | #define SPEAR1340_PLL4_CTR (VA_MISC_BASE + 0x238) | 48 | #define SPEAR1340_PLL4_CTR (misc_base + 0x238) |
50 | #define SPEAR1340_PLL4_FRQ (VA_MISC_BASE + 0x23C) | 49 | #define SPEAR1340_PLL4_FRQ (misc_base + 0x23C) |
51 | #define SPEAR1340_PERIP_CLK_CFG (VA_MISC_BASE + 0x244) | 50 | #define SPEAR1340_PERIP_CLK_CFG (misc_base + 0x244) |
52 | /* PERIP_CLK_CFG bit values */ | 51 | /* PERIP_CLK_CFG bit values */ |
53 | #define SPEAR1340_SPDIF_CLK_MASK 1 | 52 | #define SPEAR1340_SPDIF_CLK_MASK 1 |
54 | #define SPEAR1340_SPDIF_OUT_CLK_SHIFT 15 | 53 | #define SPEAR1340_SPDIF_OUT_CLK_SHIFT 15 |
@@ -66,13 +65,13 @@ | |||
66 | #define SPEAR1340_C3_CLK_MASK 1 | 65 | #define SPEAR1340_C3_CLK_MASK 1 |
67 | #define SPEAR1340_C3_CLK_SHIFT 1 | 66 | #define SPEAR1340_C3_CLK_SHIFT 1 |
68 | 67 | ||
69 | #define SPEAR1340_GMAC_CLK_CFG (VA_MISC_BASE + 0x248) | 68 | #define SPEAR1340_GMAC_CLK_CFG (misc_base + 0x248) |
70 | #define SPEAR1340_GMAC_PHY_CLK_MASK 1 | 69 | #define SPEAR1340_GMAC_PHY_CLK_MASK 1 |
71 | #define SPEAR1340_GMAC_PHY_CLK_SHIFT 2 | 70 | #define SPEAR1340_GMAC_PHY_CLK_SHIFT 2 |
72 | #define SPEAR1340_GMAC_PHY_INPUT_CLK_MASK 2 | 71 | #define SPEAR1340_GMAC_PHY_INPUT_CLK_MASK 2 |
73 | #define SPEAR1340_GMAC_PHY_INPUT_CLK_SHIFT 0 | 72 | #define SPEAR1340_GMAC_PHY_INPUT_CLK_SHIFT 0 |
74 | 73 | ||
75 | #define SPEAR1340_I2S_CLK_CFG (VA_MISC_BASE + 0x24C) | 74 | #define SPEAR1340_I2S_CLK_CFG (misc_base + 0x24C) |
76 | /* I2S_CLK_CFG register mask */ | 75 | /* I2S_CLK_CFG register mask */ |
77 | #define SPEAR1340_I2S_SCLK_X_MASK 0x1F | 76 | #define SPEAR1340_I2S_SCLK_X_MASK 0x1F |
78 | #define SPEAR1340_I2S_SCLK_X_SHIFT 27 | 77 | #define SPEAR1340_I2S_SCLK_X_SHIFT 27 |
@@ -90,21 +89,21 @@ | |||
90 | #define SPEAR1340_I2S_SRC_CLK_MASK 2 | 89 | #define SPEAR1340_I2S_SRC_CLK_MASK 2 |
91 | #define SPEAR1340_I2S_SRC_CLK_SHIFT 0 | 90 | #define SPEAR1340_I2S_SRC_CLK_SHIFT 0 |
92 | 91 | ||
93 | #define SPEAR1340_C3_CLK_SYNT (VA_MISC_BASE + 0x250) | 92 | #define SPEAR1340_C3_CLK_SYNT (misc_base + 0x250) |
94 | #define SPEAR1340_UART0_CLK_SYNT (VA_MISC_BASE + 0x254) | 93 | #define SPEAR1340_UART0_CLK_SYNT (misc_base + 0x254) |
95 | #define SPEAR1340_UART1_CLK_SYNT (VA_MISC_BASE + 0x258) | 94 | #define SPEAR1340_UART1_CLK_SYNT (misc_base + 0x258) |
96 | #define SPEAR1340_GMAC_CLK_SYNT (VA_MISC_BASE + 0x25C) | 95 | #define SPEAR1340_GMAC_CLK_SYNT (misc_base + 0x25C) |
97 | #define SPEAR1340_SDHCI_CLK_SYNT (VA_MISC_BASE + 0x260) | 96 | #define SPEAR1340_SDHCI_CLK_SYNT (misc_base + 0x260) |
98 | #define SPEAR1340_CFXD_CLK_SYNT (VA_MISC_BASE + 0x264) | 97 | #define SPEAR1340_CFXD_CLK_SYNT (misc_base + 0x264) |
99 | #define SPEAR1340_ADC_CLK_SYNT (VA_MISC_BASE + 0x270) | 98 | #define SPEAR1340_ADC_CLK_SYNT (misc_base + 0x270) |
100 | #define SPEAR1340_AMBA_CLK_SYNT (VA_MISC_BASE + 0x274) | 99 | #define SPEAR1340_AMBA_CLK_SYNT (misc_base + 0x274) |
101 | #define SPEAR1340_CLCD_CLK_SYNT (VA_MISC_BASE + 0x27C) | 100 | #define SPEAR1340_CLCD_CLK_SYNT (misc_base + 0x27C) |
102 | #define SPEAR1340_SYS_CLK_SYNT (VA_MISC_BASE + 0x284) | 101 | #define SPEAR1340_SYS_CLK_SYNT (misc_base + 0x284) |
103 | #define SPEAR1340_GEN_CLK_SYNT0 (VA_MISC_BASE + 0x28C) | 102 | #define SPEAR1340_GEN_CLK_SYNT0 (misc_base + 0x28C) |
104 | #define SPEAR1340_GEN_CLK_SYNT1 (VA_MISC_BASE + 0x294) | 103 | #define SPEAR1340_GEN_CLK_SYNT1 (misc_base + 0x294) |
105 | #define SPEAR1340_GEN_CLK_SYNT2 (VA_MISC_BASE + 0x29C) | 104 | #define SPEAR1340_GEN_CLK_SYNT2 (misc_base + 0x29C) |
106 | #define SPEAR1340_GEN_CLK_SYNT3 (VA_MISC_BASE + 0x304) | 105 | #define SPEAR1340_GEN_CLK_SYNT3 (misc_base + 0x304) |
107 | #define SPEAR1340_PERIP1_CLK_ENB (VA_MISC_BASE + 0x30C) | 106 | #define SPEAR1340_PERIP1_CLK_ENB (misc_base + 0x30C) |
108 | #define SPEAR1340_RTC_CLK_ENB 31 | 107 | #define SPEAR1340_RTC_CLK_ENB 31 |
109 | #define SPEAR1340_ADC_CLK_ENB 30 | 108 | #define SPEAR1340_ADC_CLK_ENB 30 |
110 | #define SPEAR1340_C3_CLK_ENB 29 | 109 | #define SPEAR1340_C3_CLK_ENB 29 |
@@ -133,7 +132,7 @@ | |||
133 | #define SPEAR1340_SYSROM_CLK_ENB 1 | 132 | #define SPEAR1340_SYSROM_CLK_ENB 1 |
134 | #define SPEAR1340_BUS_CLK_ENB 0 | 133 | #define SPEAR1340_BUS_CLK_ENB 0 |
135 | 134 | ||
136 | #define SPEAR1340_PERIP2_CLK_ENB (VA_MISC_BASE + 0x310) | 135 | #define SPEAR1340_PERIP2_CLK_ENB (misc_base + 0x310) |
137 | #define SPEAR1340_THSENS_CLK_ENB 8 | 136 | #define SPEAR1340_THSENS_CLK_ENB 8 |
138 | #define SPEAR1340_I2S_REF_PAD_CLK_ENB 7 | 137 | #define SPEAR1340_I2S_REF_PAD_CLK_ENB 7 |
139 | #define SPEAR1340_ACP_CLK_ENB 6 | 138 | #define SPEAR1340_ACP_CLK_ENB 6 |
@@ -144,7 +143,7 @@ | |||
144 | #define SPEAR1340_DDR_CORE_CLK_ENB 1 | 143 | #define SPEAR1340_DDR_CORE_CLK_ENB 1 |
145 | #define SPEAR1340_DDR_CTRL_CLK_ENB 0 | 144 | #define SPEAR1340_DDR_CTRL_CLK_ENB 0 |
146 | 145 | ||
147 | #define SPEAR1340_PERIP3_CLK_ENB (VA_MISC_BASE + 0x314) | 146 | #define SPEAR1340_PERIP3_CLK_ENB (misc_base + 0x314) |
148 | #define SPEAR1340_PLGPIO_CLK_ENB 18 | 147 | #define SPEAR1340_PLGPIO_CLK_ENB 18 |
149 | #define SPEAR1340_VIDEO_DEC_CLK_ENB 16 | 148 | #define SPEAR1340_VIDEO_DEC_CLK_ENB 16 |
150 | #define SPEAR1340_VIDEO_ENC_CLK_ENB 15 | 149 | #define SPEAR1340_VIDEO_ENC_CLK_ENB 15 |
@@ -441,7 +440,7 @@ static const char *gen_synth0_1_parents[] = { "vco1div4_clk", "vco3div2_clk", | |||
441 | static const char *gen_synth2_3_parents[] = { "vco1div4_clk", "vco2div2_clk", | 440 | static const char *gen_synth2_3_parents[] = { "vco1div4_clk", "vco2div2_clk", |
442 | "pll2_clk", }; | 441 | "pll2_clk", }; |
443 | 442 | ||
444 | void __init spear1340_clk_init(void) | 443 | void __init spear1340_clk_init(void __iomem *misc_base) |
445 | { | 444 | { |
446 | struct clk *clk, *clk1; | 445 | struct clk *clk, *clk1; |
447 | 446 | ||
diff --git a/drivers/clk/spear/spear3xx_clock.c b/drivers/clk/spear/spear3xx_clock.c index 33d3ac588da7..f9ec43fd1320 100644 --- a/drivers/clk/spear/spear3xx_clock.c +++ b/drivers/clk/spear/spear3xx_clock.c | |||
@@ -15,21 +15,20 @@ | |||
15 | #include <linux/io.h> | 15 | #include <linux/io.h> |
16 | #include <linux/of_platform.h> | 16 | #include <linux/of_platform.h> |
17 | #include <linux/spinlock_types.h> | 17 | #include <linux/spinlock_types.h> |
18 | #include <mach/misc_regs.h> | ||
19 | #include "clk.h" | 18 | #include "clk.h" |
20 | 19 | ||
21 | static DEFINE_SPINLOCK(_lock); | 20 | static DEFINE_SPINLOCK(_lock); |
22 | 21 | ||
23 | #define PLL1_CTR (MISC_BASE + 0x008) | 22 | #define PLL1_CTR (misc_base + 0x008) |
24 | #define PLL1_FRQ (MISC_BASE + 0x00C) | 23 | #define PLL1_FRQ (misc_base + 0x00C) |
25 | #define PLL2_CTR (MISC_BASE + 0x014) | 24 | #define PLL2_CTR (misc_base + 0x014) |
26 | #define PLL2_FRQ (MISC_BASE + 0x018) | 25 | #define PLL2_FRQ (misc_base + 0x018) |
27 | #define PLL_CLK_CFG (MISC_BASE + 0x020) | 26 | #define PLL_CLK_CFG (misc_base + 0x020) |
28 | /* PLL_CLK_CFG register masks */ | 27 | /* PLL_CLK_CFG register masks */ |
29 | #define MCTR_CLK_SHIFT 28 | 28 | #define MCTR_CLK_SHIFT 28 |
30 | #define MCTR_CLK_MASK 3 | 29 | #define MCTR_CLK_MASK 3 |
31 | 30 | ||
32 | #define CORE_CLK_CFG (MISC_BASE + 0x024) | 31 | #define CORE_CLK_CFG (misc_base + 0x024) |
33 | /* CORE CLK CFG register masks */ | 32 | /* CORE CLK CFG register masks */ |
34 | #define GEN_SYNTH2_3_CLK_SHIFT 18 | 33 | #define GEN_SYNTH2_3_CLK_SHIFT 18 |
35 | #define GEN_SYNTH2_3_CLK_MASK 1 | 34 | #define GEN_SYNTH2_3_CLK_MASK 1 |
@@ -39,7 +38,7 @@ static DEFINE_SPINLOCK(_lock); | |||
39 | #define PCLK_RATIO_SHIFT 8 | 38 | #define PCLK_RATIO_SHIFT 8 |
40 | #define PCLK_RATIO_MASK 2 | 39 | #define PCLK_RATIO_MASK 2 |
41 | 40 | ||
42 | #define PERIP_CLK_CFG (MISC_BASE + 0x028) | 41 | #define PERIP_CLK_CFG (misc_base + 0x028) |
43 | /* PERIP_CLK_CFG register masks */ | 42 | /* PERIP_CLK_CFG register masks */ |
44 | #define UART_CLK_SHIFT 4 | 43 | #define UART_CLK_SHIFT 4 |
45 | #define UART_CLK_MASK 1 | 44 | #define UART_CLK_MASK 1 |
@@ -50,7 +49,7 @@ static DEFINE_SPINLOCK(_lock); | |||
50 | #define GPT2_CLK_SHIFT 12 | 49 | #define GPT2_CLK_SHIFT 12 |
51 | #define GPT_CLK_MASK 1 | 50 | #define GPT_CLK_MASK 1 |
52 | 51 | ||
53 | #define PERIP1_CLK_ENB (MISC_BASE + 0x02C) | 52 | #define PERIP1_CLK_ENB (misc_base + 0x02C) |
54 | /* PERIP1_CLK_ENB register masks */ | 53 | /* PERIP1_CLK_ENB register masks */ |
55 | #define UART_CLK_ENB 3 | 54 | #define UART_CLK_ENB 3 |
56 | #define SSP_CLK_ENB 5 | 55 | #define SSP_CLK_ENB 5 |
@@ -69,7 +68,7 @@ static DEFINE_SPINLOCK(_lock); | |||
69 | #define USBH_CLK_ENB 25 | 68 | #define USBH_CLK_ENB 25 |
70 | #define C3_CLK_ENB 31 | 69 | #define C3_CLK_ENB 31 |
71 | 70 | ||
72 | #define RAS_CLK_ENB (MISC_BASE + 0x034) | 71 | #define RAS_CLK_ENB (misc_base + 0x034) |
73 | #define RAS_AHB_CLK_ENB 0 | 72 | #define RAS_AHB_CLK_ENB 0 |
74 | #define RAS_PLL1_CLK_ENB 1 | 73 | #define RAS_PLL1_CLK_ENB 1 |
75 | #define RAS_APB_CLK_ENB 2 | 74 | #define RAS_APB_CLK_ENB 2 |
@@ -82,20 +81,20 @@ static DEFINE_SPINLOCK(_lock); | |||
82 | #define RAS_SYNT2_CLK_ENB 10 | 81 | #define RAS_SYNT2_CLK_ENB 10 |
83 | #define RAS_SYNT3_CLK_ENB 11 | 82 | #define RAS_SYNT3_CLK_ENB 11 |
84 | 83 | ||
85 | #define PRSC0_CLK_CFG (MISC_BASE + 0x044) | 84 | #define PRSC0_CLK_CFG (misc_base + 0x044) |
86 | #define PRSC1_CLK_CFG (MISC_BASE + 0x048) | 85 | #define PRSC1_CLK_CFG (misc_base + 0x048) |
87 | #define PRSC2_CLK_CFG (MISC_BASE + 0x04C) | 86 | #define PRSC2_CLK_CFG (misc_base + 0x04C) |
88 | #define AMEM_CLK_CFG (MISC_BASE + 0x050) | 87 | #define AMEM_CLK_CFG (misc_base + 0x050) |
89 | #define AMEM_CLK_ENB 0 | 88 | #define AMEM_CLK_ENB 0 |
90 | 89 | ||
91 | #define CLCD_CLK_SYNT (MISC_BASE + 0x05C) | 90 | #define CLCD_CLK_SYNT (misc_base + 0x05C) |
92 | #define FIRDA_CLK_SYNT (MISC_BASE + 0x060) | 91 | #define FIRDA_CLK_SYNT (misc_base + 0x060) |
93 | #define UART_CLK_SYNT (MISC_BASE + 0x064) | 92 | #define UART_CLK_SYNT (misc_base + 0x064) |
94 | #define GMAC_CLK_SYNT (MISC_BASE + 0x068) | 93 | #define GMAC_CLK_SYNT (misc_base + 0x068) |
95 | #define GEN0_CLK_SYNT (MISC_BASE + 0x06C) | 94 | #define GEN0_CLK_SYNT (misc_base + 0x06C) |
96 | #define GEN1_CLK_SYNT (MISC_BASE + 0x070) | 95 | #define GEN1_CLK_SYNT (misc_base + 0x070) |
97 | #define GEN2_CLK_SYNT (MISC_BASE + 0x074) | 96 | #define GEN2_CLK_SYNT (misc_base + 0x074) |
98 | #define GEN3_CLK_SYNT (MISC_BASE + 0x078) | 97 | #define GEN3_CLK_SYNT (misc_base + 0x078) |
99 | 98 | ||
100 | /* pll rate configuration table, in ascending order of rates */ | 99 | /* pll rate configuration table, in ascending order of rates */ |
101 | static struct pll_rate_tbl pll_rtbl[] = { | 100 | static struct pll_rate_tbl pll_rtbl[] = { |
@@ -211,6 +210,17 @@ static inline void spear310_clk_init(void) { } | |||
211 | 210 | ||
212 | /* array of all spear 320 clock lookups */ | 211 | /* array of all spear 320 clock lookups */ |
213 | #ifdef CONFIG_MACH_SPEAR320 | 212 | #ifdef CONFIG_MACH_SPEAR320 |
213 | |||
214 | #define SPEAR320_CONTROL_REG (soc_config_base + 0x0000) | ||
215 | #define SPEAR320_EXT_CTRL_REG (soc_config_base + 0x0018) | ||
216 | |||
217 | #define SPEAR320_UARTX_PCLK_MASK 0x1 | ||
218 | #define SPEAR320_UART2_PCLK_SHIFT 8 | ||
219 | #define SPEAR320_UART3_PCLK_SHIFT 9 | ||
220 | #define SPEAR320_UART4_PCLK_SHIFT 10 | ||
221 | #define SPEAR320_UART5_PCLK_SHIFT 11 | ||
222 | #define SPEAR320_UART6_PCLK_SHIFT 12 | ||
223 | #define SPEAR320_RS485_PCLK_SHIFT 13 | ||
214 | #define SMII_PCLK_SHIFT 18 | 224 | #define SMII_PCLK_SHIFT 18 |
215 | #define SMII_PCLK_MASK 2 | 225 | #define SMII_PCLK_MASK 2 |
216 | #define SMII_PCLK_VAL_PAD 0x0 | 226 | #define SMII_PCLK_VAL_PAD 0x0 |
@@ -235,7 +245,7 @@ static const char *smii0_parents[] = { "smii_125m_pad", "ras_pll2_clk", | |||
235 | "ras_syn0_gclk", }; | 245 | "ras_syn0_gclk", }; |
236 | static const char *uartx_parents[] = { "ras_syn1_gclk", "ras_apb_clk", }; | 246 | static const char *uartx_parents[] = { "ras_syn1_gclk", "ras_apb_clk", }; |
237 | 247 | ||
238 | static void __init spear320_clk_init(void) | 248 | static void __init spear320_clk_init(void __iomem *soc_config_base) |
239 | { | 249 | { |
240 | struct clk *clk; | 250 | struct clk *clk; |
241 | 251 | ||
@@ -362,7 +372,7 @@ static void __init spear320_clk_init(void) | |||
362 | static inline void spear320_clk_init(void) { } | 372 | static inline void spear320_clk_init(void) { } |
363 | #endif | 373 | #endif |
364 | 374 | ||
365 | void __init spear3xx_clk_init(void) | 375 | void __init spear3xx_clk_init(void __iomem *misc_base, void __iomem *soc_config_base) |
366 | { | 376 | { |
367 | struct clk *clk, *clk1; | 377 | struct clk *clk, *clk1; |
368 | 378 | ||
@@ -634,5 +644,5 @@ void __init spear3xx_clk_init(void) | |||
634 | else if (of_machine_is_compatible("st,spear310")) | 644 | else if (of_machine_is_compatible("st,spear310")) |
635 | spear310_clk_init(); | 645 | spear310_clk_init(); |
636 | else if (of_machine_is_compatible("st,spear320")) | 646 | else if (of_machine_is_compatible("st,spear320")) |
637 | spear320_clk_init(); | 647 | spear320_clk_init(soc_config_base); |
638 | } | 648 | } |
diff --git a/drivers/clk/spear/spear6xx_clock.c b/drivers/clk/spear/spear6xx_clock.c index e862a333ad30..9406f2426d64 100644 --- a/drivers/clk/spear/spear6xx_clock.c +++ b/drivers/clk/spear/spear6xx_clock.c | |||
@@ -13,28 +13,27 @@ | |||
13 | #include <linux/clkdev.h> | 13 | #include <linux/clkdev.h> |
14 | #include <linux/io.h> | 14 | #include <linux/io.h> |
15 | #include <linux/spinlock_types.h> | 15 | #include <linux/spinlock_types.h> |
16 | #include <mach/misc_regs.h> | ||
17 | #include "clk.h" | 16 | #include "clk.h" |
18 | 17 | ||
19 | static DEFINE_SPINLOCK(_lock); | 18 | static DEFINE_SPINLOCK(_lock); |
20 | 19 | ||
21 | #define PLL1_CTR (MISC_BASE + 0x008) | 20 | #define PLL1_CTR (misc_base + 0x008) |
22 | #define PLL1_FRQ (MISC_BASE + 0x00C) | 21 | #define PLL1_FRQ (misc_base + 0x00C) |
23 | #define PLL2_CTR (MISC_BASE + 0x014) | 22 | #define PLL2_CTR (misc_base + 0x014) |
24 | #define PLL2_FRQ (MISC_BASE + 0x018) | 23 | #define PLL2_FRQ (misc_base + 0x018) |
25 | #define PLL_CLK_CFG (MISC_BASE + 0x020) | 24 | #define PLL_CLK_CFG (misc_base + 0x020) |
26 | /* PLL_CLK_CFG register masks */ | 25 | /* PLL_CLK_CFG register masks */ |
27 | #define MCTR_CLK_SHIFT 28 | 26 | #define MCTR_CLK_SHIFT 28 |
28 | #define MCTR_CLK_MASK 3 | 27 | #define MCTR_CLK_MASK 3 |
29 | 28 | ||
30 | #define CORE_CLK_CFG (MISC_BASE + 0x024) | 29 | #define CORE_CLK_CFG (misc_base + 0x024) |
31 | /* CORE CLK CFG register masks */ | 30 | /* CORE CLK CFG register masks */ |
32 | #define HCLK_RATIO_SHIFT 10 | 31 | #define HCLK_RATIO_SHIFT 10 |
33 | #define HCLK_RATIO_MASK 2 | 32 | #define HCLK_RATIO_MASK 2 |
34 | #define PCLK_RATIO_SHIFT 8 | 33 | #define PCLK_RATIO_SHIFT 8 |
35 | #define PCLK_RATIO_MASK 2 | 34 | #define PCLK_RATIO_MASK 2 |
36 | 35 | ||
37 | #define PERIP_CLK_CFG (MISC_BASE + 0x028) | 36 | #define PERIP_CLK_CFG (misc_base + 0x028) |
38 | /* PERIP_CLK_CFG register masks */ | 37 | /* PERIP_CLK_CFG register masks */ |
39 | #define CLCD_CLK_SHIFT 2 | 38 | #define CLCD_CLK_SHIFT 2 |
40 | #define CLCD_CLK_MASK 2 | 39 | #define CLCD_CLK_MASK 2 |
@@ -48,7 +47,7 @@ static DEFINE_SPINLOCK(_lock); | |||
48 | #define GPT3_CLK_SHIFT 12 | 47 | #define GPT3_CLK_SHIFT 12 |
49 | #define GPT_CLK_MASK 1 | 48 | #define GPT_CLK_MASK 1 |
50 | 49 | ||
51 | #define PERIP1_CLK_ENB (MISC_BASE + 0x02C) | 50 | #define PERIP1_CLK_ENB (misc_base + 0x02C) |
52 | /* PERIP1_CLK_ENB register masks */ | 51 | /* PERIP1_CLK_ENB register masks */ |
53 | #define UART0_CLK_ENB 3 | 52 | #define UART0_CLK_ENB 3 |
54 | #define UART1_CLK_ENB 4 | 53 | #define UART1_CLK_ENB 4 |
@@ -74,13 +73,13 @@ static DEFINE_SPINLOCK(_lock); | |||
74 | #define USBH0_CLK_ENB 25 | 73 | #define USBH0_CLK_ENB 25 |
75 | #define USBH1_CLK_ENB 26 | 74 | #define USBH1_CLK_ENB 26 |
76 | 75 | ||
77 | #define PRSC0_CLK_CFG (MISC_BASE + 0x044) | 76 | #define PRSC0_CLK_CFG (misc_base + 0x044) |
78 | #define PRSC1_CLK_CFG (MISC_BASE + 0x048) | 77 | #define PRSC1_CLK_CFG (misc_base + 0x048) |
79 | #define PRSC2_CLK_CFG (MISC_BASE + 0x04C) | 78 | #define PRSC2_CLK_CFG (misc_base + 0x04C) |
80 | 79 | ||
81 | #define CLCD_CLK_SYNT (MISC_BASE + 0x05C) | 80 | #define CLCD_CLK_SYNT (misc_base + 0x05C) |
82 | #define FIRDA_CLK_SYNT (MISC_BASE + 0x060) | 81 | #define FIRDA_CLK_SYNT (misc_base + 0x060) |
83 | #define UART_CLK_SYNT (MISC_BASE + 0x064) | 82 | #define UART_CLK_SYNT (misc_base + 0x064) |
84 | 83 | ||
85 | /* vco rate configuration table, in ascending order of rates */ | 84 | /* vco rate configuration table, in ascending order of rates */ |
86 | static struct pll_rate_tbl pll_rtbl[] = { | 85 | static struct pll_rate_tbl pll_rtbl[] = { |
@@ -115,7 +114,7 @@ static struct gpt_rate_tbl gpt_rtbl[] = { | |||
115 | {.mscale = 1, .nscale = 0}, /* 83 MHz */ | 114 | {.mscale = 1, .nscale = 0}, /* 83 MHz */ |
116 | }; | 115 | }; |
117 | 116 | ||
118 | void __init spear6xx_clk_init(void) | 117 | void __init spear6xx_clk_init(void __iomem *misc_base) |
119 | { | 118 | { |
120 | struct clk *clk, *clk1; | 119 | struct clk *clk, *clk1; |
121 | 120 | ||
diff --git a/drivers/clk/tegra/clk-tegra30.c b/drivers/clk/tegra/clk-tegra30.c index ba6f51bc9f3b..f15f147d473c 100644 --- a/drivers/clk/tegra/clk-tegra30.c +++ b/drivers/clk/tegra/clk-tegra30.c | |||
@@ -22,8 +22,7 @@ | |||
22 | #include <linux/of.h> | 22 | #include <linux/of.h> |
23 | #include <linux/of_address.h> | 23 | #include <linux/of_address.h> |
24 | #include <linux/clk/tegra.h> | 24 | #include <linux/clk/tegra.h> |
25 | 25 | #include <linux/tegra-powergate.h> | |
26 | #include <mach/powergate.h> | ||
27 | 26 | ||
28 | #include "clk.h" | 27 | #include "clk.h" |
29 | 28 | ||
diff --git a/drivers/clk/ux500/clk-prcc.c b/drivers/clk/ux500/clk-prcc.c index 7eee7f768355..bd4769a84485 100644 --- a/drivers/clk/ux500/clk-prcc.c +++ b/drivers/clk/ux500/clk-prcc.c | |||
@@ -13,7 +13,6 @@ | |||
13 | #include <linux/io.h> | 13 | #include <linux/io.h> |
14 | #include <linux/err.h> | 14 | #include <linux/err.h> |
15 | #include <linux/types.h> | 15 | #include <linux/types.h> |
16 | #include <mach/hardware.h> | ||
17 | 16 | ||
18 | #include "clk.h" | 17 | #include "clk.h" |
19 | 18 | ||
diff --git a/drivers/clk/ux500/u8500_clk.c b/drivers/clk/ux500/u8500_clk.c index 9d9add1e816d..0b4f35a5ffc2 100644 --- a/drivers/clk/ux500/u8500_clk.c +++ b/drivers/clk/ux500/u8500_clk.c | |||
@@ -12,10 +12,10 @@ | |||
12 | #include <linux/clk-provider.h> | 12 | #include <linux/clk-provider.h> |
13 | #include <linux/mfd/dbx500-prcmu.h> | 13 | #include <linux/mfd/dbx500-prcmu.h> |
14 | #include <linux/platform_data/clk-ux500.h> | 14 | #include <linux/platform_data/clk-ux500.h> |
15 | #include <mach/db8500-regs.h> | ||
16 | #include "clk.h" | 15 | #include "clk.h" |
17 | 16 | ||
18 | void u8500_clk_init(void) | 17 | void u8500_clk_init(u32 clkrst1_base, u32 clkrst2_base, u32 clkrst3_base, |
18 | u32 clkrst5_base, u32 clkrst6_base) | ||
19 | { | 19 | { |
20 | struct prcmu_fw_version *fw_version; | 20 | struct prcmu_fw_version *fw_version; |
21 | const char *sgaclk_parent = NULL; | 21 | const char *sgaclk_parent = NULL; |
@@ -215,148 +215,148 @@ void u8500_clk_init(void) | |||
215 | */ | 215 | */ |
216 | 216 | ||
217 | /* PRCC P-clocks */ | 217 | /* PRCC P-clocks */ |
218 | clk = clk_reg_prcc_pclk("p1_pclk0", "per1clk", U8500_CLKRST1_BASE, | 218 | clk = clk_reg_prcc_pclk("p1_pclk0", "per1clk", clkrst1_base, |
219 | BIT(0), 0); | 219 | BIT(0), 0); |
220 | clk_register_clkdev(clk, "apb_pclk", "uart0"); | 220 | clk_register_clkdev(clk, "apb_pclk", "uart0"); |
221 | 221 | ||
222 | clk = clk_reg_prcc_pclk("p1_pclk1", "per1clk", U8500_CLKRST1_BASE, | 222 | clk = clk_reg_prcc_pclk("p1_pclk1", "per1clk", clkrst1_base, |
223 | BIT(1), 0); | 223 | BIT(1), 0); |
224 | clk_register_clkdev(clk, "apb_pclk", "uart1"); | 224 | clk_register_clkdev(clk, "apb_pclk", "uart1"); |
225 | 225 | ||
226 | clk = clk_reg_prcc_pclk("p1_pclk2", "per1clk", U8500_CLKRST1_BASE, | 226 | clk = clk_reg_prcc_pclk("p1_pclk2", "per1clk", clkrst1_base, |
227 | BIT(2), 0); | 227 | BIT(2), 0); |
228 | clk_register_clkdev(clk, "apb_pclk", "nmk-i2c.1"); | 228 | clk_register_clkdev(clk, "apb_pclk", "nmk-i2c.1"); |
229 | 229 | ||
230 | clk = clk_reg_prcc_pclk("p1_pclk3", "per1clk", U8500_CLKRST1_BASE, | 230 | clk = clk_reg_prcc_pclk("p1_pclk3", "per1clk", clkrst1_base, |
231 | BIT(3), 0); | 231 | BIT(3), 0); |
232 | clk_register_clkdev(clk, "apb_pclk", "msp0"); | 232 | clk_register_clkdev(clk, "apb_pclk", "msp0"); |
233 | clk_register_clkdev(clk, "apb_pclk", "ux500-msp-i2s.0"); | 233 | clk_register_clkdev(clk, "apb_pclk", "ux500-msp-i2s.0"); |
234 | 234 | ||
235 | clk = clk_reg_prcc_pclk("p1_pclk4", "per1clk", U8500_CLKRST1_BASE, | 235 | clk = clk_reg_prcc_pclk("p1_pclk4", "per1clk", clkrst1_base, |
236 | BIT(4), 0); | 236 | BIT(4), 0); |
237 | clk_register_clkdev(clk, "apb_pclk", "msp1"); | 237 | clk_register_clkdev(clk, "apb_pclk", "msp1"); |
238 | clk_register_clkdev(clk, "apb_pclk", "ux500-msp-i2s.1"); | 238 | clk_register_clkdev(clk, "apb_pclk", "ux500-msp-i2s.1"); |
239 | 239 | ||
240 | clk = clk_reg_prcc_pclk("p1_pclk5", "per1clk", U8500_CLKRST1_BASE, | 240 | clk = clk_reg_prcc_pclk("p1_pclk5", "per1clk", clkrst1_base, |
241 | BIT(5), 0); | 241 | BIT(5), 0); |
242 | clk_register_clkdev(clk, "apb_pclk", "sdi0"); | 242 | clk_register_clkdev(clk, "apb_pclk", "sdi0"); |
243 | 243 | ||
244 | clk = clk_reg_prcc_pclk("p1_pclk6", "per1clk", U8500_CLKRST1_BASE, | 244 | clk = clk_reg_prcc_pclk("p1_pclk6", "per1clk", clkrst1_base, |
245 | BIT(6), 0); | 245 | BIT(6), 0); |
246 | clk_register_clkdev(clk, "apb_pclk", "nmk-i2c.2"); | 246 | clk_register_clkdev(clk, "apb_pclk", "nmk-i2c.2"); |
247 | 247 | ||
248 | clk = clk_reg_prcc_pclk("p1_pclk7", "per1clk", U8500_CLKRST1_BASE, | 248 | clk = clk_reg_prcc_pclk("p1_pclk7", "per1clk", clkrst1_base, |
249 | BIT(7), 0); | 249 | BIT(7), 0); |
250 | clk_register_clkdev(clk, NULL, "spi3"); | 250 | clk_register_clkdev(clk, NULL, "spi3"); |
251 | 251 | ||
252 | clk = clk_reg_prcc_pclk("p1_pclk8", "per1clk", U8500_CLKRST1_BASE, | 252 | clk = clk_reg_prcc_pclk("p1_pclk8", "per1clk", clkrst1_base, |
253 | BIT(8), 0); | 253 | BIT(8), 0); |
254 | clk_register_clkdev(clk, "apb_pclk", "slimbus0"); | 254 | clk_register_clkdev(clk, "apb_pclk", "slimbus0"); |
255 | 255 | ||
256 | clk = clk_reg_prcc_pclk("p1_pclk9", "per1clk", U8500_CLKRST1_BASE, | 256 | clk = clk_reg_prcc_pclk("p1_pclk9", "per1clk", clkrst1_base, |
257 | BIT(9), 0); | 257 | BIT(9), 0); |
258 | clk_register_clkdev(clk, NULL, "gpio.0"); | 258 | clk_register_clkdev(clk, NULL, "gpio.0"); |
259 | clk_register_clkdev(clk, NULL, "gpio.1"); | 259 | clk_register_clkdev(clk, NULL, "gpio.1"); |
260 | clk_register_clkdev(clk, NULL, "gpioblock0"); | 260 | clk_register_clkdev(clk, NULL, "gpioblock0"); |
261 | 261 | ||
262 | clk = clk_reg_prcc_pclk("p1_pclk10", "per1clk", U8500_CLKRST1_BASE, | 262 | clk = clk_reg_prcc_pclk("p1_pclk10", "per1clk", clkrst1_base, |
263 | BIT(10), 0); | 263 | BIT(10), 0); |
264 | clk_register_clkdev(clk, "apb_pclk", "nmk-i2c.4"); | 264 | clk_register_clkdev(clk, "apb_pclk", "nmk-i2c.4"); |
265 | 265 | ||
266 | clk = clk_reg_prcc_pclk("p1_pclk11", "per1clk", U8500_CLKRST1_BASE, | 266 | clk = clk_reg_prcc_pclk("p1_pclk11", "per1clk", clkrst1_base, |
267 | BIT(11), 0); | 267 | BIT(11), 0); |
268 | clk_register_clkdev(clk, "apb_pclk", "msp3"); | 268 | clk_register_clkdev(clk, "apb_pclk", "msp3"); |
269 | clk_register_clkdev(clk, "apb_pclk", "ux500-msp-i2s.3"); | 269 | clk_register_clkdev(clk, "apb_pclk", "ux500-msp-i2s.3"); |
270 | 270 | ||
271 | clk = clk_reg_prcc_pclk("p2_pclk0", "per2clk", U8500_CLKRST2_BASE, | 271 | clk = clk_reg_prcc_pclk("p2_pclk0", "per2clk", clkrst2_base, |
272 | BIT(0), 0); | 272 | BIT(0), 0); |
273 | clk_register_clkdev(clk, "apb_pclk", "nmk-i2c.3"); | 273 | clk_register_clkdev(clk, "apb_pclk", "nmk-i2c.3"); |
274 | 274 | ||
275 | clk = clk_reg_prcc_pclk("p2_pclk1", "per2clk", U8500_CLKRST2_BASE, | 275 | clk = clk_reg_prcc_pclk("p2_pclk1", "per2clk", clkrst2_base, |
276 | BIT(1), 0); | 276 | BIT(1), 0); |
277 | clk_register_clkdev(clk, NULL, "spi2"); | 277 | clk_register_clkdev(clk, NULL, "spi2"); |
278 | 278 | ||
279 | clk = clk_reg_prcc_pclk("p2_pclk2", "per2clk", U8500_CLKRST2_BASE, | 279 | clk = clk_reg_prcc_pclk("p2_pclk2", "per2clk", clkrst2_base, |
280 | BIT(2), 0); | 280 | BIT(2), 0); |
281 | clk_register_clkdev(clk, NULL, "spi1"); | 281 | clk_register_clkdev(clk, NULL, "spi1"); |
282 | 282 | ||
283 | clk = clk_reg_prcc_pclk("p2_pclk3", "per2clk", U8500_CLKRST2_BASE, | 283 | clk = clk_reg_prcc_pclk("p2_pclk3", "per2clk", clkrst2_base, |
284 | BIT(3), 0); | 284 | BIT(3), 0); |
285 | clk_register_clkdev(clk, NULL, "pwl"); | 285 | clk_register_clkdev(clk, NULL, "pwl"); |
286 | 286 | ||
287 | clk = clk_reg_prcc_pclk("p2_pclk4", "per2clk", U8500_CLKRST2_BASE, | 287 | clk = clk_reg_prcc_pclk("p2_pclk4", "per2clk", clkrst2_base, |
288 | BIT(4), 0); | 288 | BIT(4), 0); |
289 | clk_register_clkdev(clk, "apb_pclk", "sdi4"); | 289 | clk_register_clkdev(clk, "apb_pclk", "sdi4"); |
290 | 290 | ||
291 | clk = clk_reg_prcc_pclk("p2_pclk5", "per2clk", U8500_CLKRST2_BASE, | 291 | clk = clk_reg_prcc_pclk("p2_pclk5", "per2clk", clkrst2_base, |
292 | BIT(5), 0); | 292 | BIT(5), 0); |
293 | clk_register_clkdev(clk, "apb_pclk", "msp2"); | 293 | clk_register_clkdev(clk, "apb_pclk", "msp2"); |
294 | clk_register_clkdev(clk, "apb_pclk", "ux500-msp-i2s.2"); | 294 | clk_register_clkdev(clk, "apb_pclk", "ux500-msp-i2s.2"); |
295 | 295 | ||
296 | clk = clk_reg_prcc_pclk("p2_pclk6", "per2clk", U8500_CLKRST2_BASE, | 296 | clk = clk_reg_prcc_pclk("p2_pclk6", "per2clk", clkrst2_base, |
297 | BIT(6), 0); | 297 | BIT(6), 0); |
298 | clk_register_clkdev(clk, "apb_pclk", "sdi1"); | 298 | clk_register_clkdev(clk, "apb_pclk", "sdi1"); |
299 | 299 | ||
300 | clk = clk_reg_prcc_pclk("p2_pclk7", "per2clk", U8500_CLKRST2_BASE, | 300 | clk = clk_reg_prcc_pclk("p2_pclk7", "per2clk", clkrst2_base, |
301 | BIT(7), 0); | 301 | BIT(7), 0); |
302 | clk_register_clkdev(clk, "apb_pclk", "sdi3"); | 302 | clk_register_clkdev(clk, "apb_pclk", "sdi3"); |
303 | 303 | ||
304 | clk = clk_reg_prcc_pclk("p2_pclk8", "per2clk", U8500_CLKRST2_BASE, | 304 | clk = clk_reg_prcc_pclk("p2_pclk8", "per2clk", clkrst2_base, |
305 | BIT(8), 0); | 305 | BIT(8), 0); |
306 | clk_register_clkdev(clk, NULL, "spi0"); | 306 | clk_register_clkdev(clk, NULL, "spi0"); |
307 | 307 | ||
308 | clk = clk_reg_prcc_pclk("p2_pclk9", "per2clk", U8500_CLKRST2_BASE, | 308 | clk = clk_reg_prcc_pclk("p2_pclk9", "per2clk", clkrst2_base, |
309 | BIT(9), 0); | 309 | BIT(9), 0); |
310 | clk_register_clkdev(clk, "hsir_hclk", "ste_hsi.0"); | 310 | clk_register_clkdev(clk, "hsir_hclk", "ste_hsi.0"); |
311 | 311 | ||
312 | clk = clk_reg_prcc_pclk("p2_pclk10", "per2clk", U8500_CLKRST2_BASE, | 312 | clk = clk_reg_prcc_pclk("p2_pclk10", "per2clk", clkrst2_base, |
313 | BIT(10), 0); | 313 | BIT(10), 0); |
314 | clk_register_clkdev(clk, "hsit_hclk", "ste_hsi.0"); | 314 | clk_register_clkdev(clk, "hsit_hclk", "ste_hsi.0"); |
315 | 315 | ||
316 | clk = clk_reg_prcc_pclk("p2_pclk11", "per2clk", U8500_CLKRST2_BASE, | 316 | clk = clk_reg_prcc_pclk("p2_pclk11", "per2clk", clkrst2_base, |
317 | BIT(11), 0); | 317 | BIT(11), 0); |
318 | clk_register_clkdev(clk, NULL, "gpio.6"); | 318 | clk_register_clkdev(clk, NULL, "gpio.6"); |
319 | clk_register_clkdev(clk, NULL, "gpio.7"); | 319 | clk_register_clkdev(clk, NULL, "gpio.7"); |
320 | clk_register_clkdev(clk, NULL, "gpioblock1"); | 320 | clk_register_clkdev(clk, NULL, "gpioblock1"); |
321 | 321 | ||
322 | clk = clk_reg_prcc_pclk("p2_pclk12", "per2clk", U8500_CLKRST2_BASE, | 322 | clk = clk_reg_prcc_pclk("p2_pclk12", "per2clk", clkrst2_base, |
323 | BIT(12), 0); | 323 | BIT(12), 0); |
324 | 324 | ||
325 | clk = clk_reg_prcc_pclk("p3_pclk0", "per3clk", U8500_CLKRST3_BASE, | 325 | clk = clk_reg_prcc_pclk("p3_pclk0", "per3clk", clkrst3_base, |
326 | BIT(0), 0); | 326 | BIT(0), 0); |
327 | clk_register_clkdev(clk, "fsmc", NULL); | 327 | clk_register_clkdev(clk, "fsmc", NULL); |
328 | clk_register_clkdev(clk, NULL, "smsc911x"); | 328 | clk_register_clkdev(clk, NULL, "smsc911x"); |
329 | 329 | ||
330 | clk = clk_reg_prcc_pclk("p3_pclk1", "per3clk", U8500_CLKRST3_BASE, | 330 | clk = clk_reg_prcc_pclk("p3_pclk1", "per3clk", clkrst3_base, |
331 | BIT(1), 0); | 331 | BIT(1), 0); |
332 | clk_register_clkdev(clk, "apb_pclk", "ssp0"); | 332 | clk_register_clkdev(clk, "apb_pclk", "ssp0"); |
333 | 333 | ||
334 | clk = clk_reg_prcc_pclk("p3_pclk2", "per3clk", U8500_CLKRST3_BASE, | 334 | clk = clk_reg_prcc_pclk("p3_pclk2", "per3clk", clkrst3_base, |
335 | BIT(2), 0); | 335 | BIT(2), 0); |
336 | clk_register_clkdev(clk, "apb_pclk", "ssp1"); | 336 | clk_register_clkdev(clk, "apb_pclk", "ssp1"); |
337 | 337 | ||
338 | clk = clk_reg_prcc_pclk("p3_pclk3", "per3clk", U8500_CLKRST3_BASE, | 338 | clk = clk_reg_prcc_pclk("p3_pclk3", "per3clk", clkrst3_base, |
339 | BIT(3), 0); | 339 | BIT(3), 0); |
340 | clk_register_clkdev(clk, "apb_pclk", "nmk-i2c.0"); | 340 | clk_register_clkdev(clk, "apb_pclk", "nmk-i2c.0"); |
341 | 341 | ||
342 | clk = clk_reg_prcc_pclk("p3_pclk4", "per3clk", U8500_CLKRST3_BASE, | 342 | clk = clk_reg_prcc_pclk("p3_pclk4", "per3clk", clkrst3_base, |
343 | BIT(4), 0); | 343 | BIT(4), 0); |
344 | clk_register_clkdev(clk, "apb_pclk", "sdi2"); | 344 | clk_register_clkdev(clk, "apb_pclk", "sdi2"); |
345 | 345 | ||
346 | clk = clk_reg_prcc_pclk("p3_pclk5", "per3clk", U8500_CLKRST3_BASE, | 346 | clk = clk_reg_prcc_pclk("p3_pclk5", "per3clk", clkrst3_base, |
347 | BIT(5), 0); | 347 | BIT(5), 0); |
348 | clk_register_clkdev(clk, "apb_pclk", "ske"); | 348 | clk_register_clkdev(clk, "apb_pclk", "ske"); |
349 | clk_register_clkdev(clk, "apb_pclk", "nmk-ske-keypad"); | 349 | clk_register_clkdev(clk, "apb_pclk", "nmk-ske-keypad"); |
350 | 350 | ||
351 | clk = clk_reg_prcc_pclk("p3_pclk6", "per3clk", U8500_CLKRST3_BASE, | 351 | clk = clk_reg_prcc_pclk("p3_pclk6", "per3clk", clkrst3_base, |
352 | BIT(6), 0); | 352 | BIT(6), 0); |
353 | clk_register_clkdev(clk, "apb_pclk", "uart2"); | 353 | clk_register_clkdev(clk, "apb_pclk", "uart2"); |
354 | 354 | ||
355 | clk = clk_reg_prcc_pclk("p3_pclk7", "per3clk", U8500_CLKRST3_BASE, | 355 | clk = clk_reg_prcc_pclk("p3_pclk7", "per3clk", clkrst3_base, |
356 | BIT(7), 0); | 356 | BIT(7), 0); |
357 | clk_register_clkdev(clk, "apb_pclk", "sdi5"); | 357 | clk_register_clkdev(clk, "apb_pclk", "sdi5"); |
358 | 358 | ||
359 | clk = clk_reg_prcc_pclk("p3_pclk8", "per3clk", U8500_CLKRST3_BASE, | 359 | clk = clk_reg_prcc_pclk("p3_pclk8", "per3clk", clkrst3_base, |
360 | BIT(8), 0); | 360 | BIT(8), 0); |
361 | clk_register_clkdev(clk, NULL, "gpio.2"); | 361 | clk_register_clkdev(clk, NULL, "gpio.2"); |
362 | clk_register_clkdev(clk, NULL, "gpio.3"); | 362 | clk_register_clkdev(clk, NULL, "gpio.3"); |
@@ -364,45 +364,45 @@ void u8500_clk_init(void) | |||
364 | clk_register_clkdev(clk, NULL, "gpio.5"); | 364 | clk_register_clkdev(clk, NULL, "gpio.5"); |
365 | clk_register_clkdev(clk, NULL, "gpioblock2"); | 365 | clk_register_clkdev(clk, NULL, "gpioblock2"); |
366 | 366 | ||
367 | clk = clk_reg_prcc_pclk("p5_pclk0", "per5clk", U8500_CLKRST5_BASE, | 367 | clk = clk_reg_prcc_pclk("p5_pclk0", "per5clk", clkrst5_base, |
368 | BIT(0), 0); | 368 | BIT(0), 0); |
369 | clk_register_clkdev(clk, "usb", "musb-ux500.0"); | 369 | clk_register_clkdev(clk, "usb", "musb-ux500.0"); |
370 | 370 | ||
371 | clk = clk_reg_prcc_pclk("p5_pclk1", "per5clk", U8500_CLKRST5_BASE, | 371 | clk = clk_reg_prcc_pclk("p5_pclk1", "per5clk", clkrst5_base, |
372 | BIT(1), 0); | 372 | BIT(1), 0); |
373 | clk_register_clkdev(clk, NULL, "gpio.8"); | 373 | clk_register_clkdev(clk, NULL, "gpio.8"); |
374 | clk_register_clkdev(clk, NULL, "gpioblock3"); | 374 | clk_register_clkdev(clk, NULL, "gpioblock3"); |
375 | 375 | ||
376 | clk = clk_reg_prcc_pclk("p6_pclk0", "per6clk", U8500_CLKRST6_BASE, | 376 | clk = clk_reg_prcc_pclk("p6_pclk0", "per6clk", clkrst6_base, |
377 | BIT(0), 0); | 377 | BIT(0), 0); |
378 | clk_register_clkdev(clk, "apb_pclk", "rng"); | 378 | clk_register_clkdev(clk, "apb_pclk", "rng"); |
379 | 379 | ||
380 | clk = clk_reg_prcc_pclk("p6_pclk1", "per6clk", U8500_CLKRST6_BASE, | 380 | clk = clk_reg_prcc_pclk("p6_pclk1", "per6clk", clkrst6_base, |
381 | BIT(1), 0); | 381 | BIT(1), 0); |
382 | clk_register_clkdev(clk, NULL, "cryp0"); | 382 | clk_register_clkdev(clk, NULL, "cryp0"); |
383 | clk_register_clkdev(clk, NULL, "cryp1"); | 383 | clk_register_clkdev(clk, NULL, "cryp1"); |
384 | 384 | ||
385 | clk = clk_reg_prcc_pclk("p6_pclk2", "per6clk", U8500_CLKRST6_BASE, | 385 | clk = clk_reg_prcc_pclk("p6_pclk2", "per6clk", clkrst6_base, |
386 | BIT(2), 0); | 386 | BIT(2), 0); |
387 | clk_register_clkdev(clk, NULL, "hash0"); | 387 | clk_register_clkdev(clk, NULL, "hash0"); |
388 | 388 | ||
389 | clk = clk_reg_prcc_pclk("p6_pclk3", "per6clk", U8500_CLKRST6_BASE, | 389 | clk = clk_reg_prcc_pclk("p6_pclk3", "per6clk", clkrst6_base, |
390 | BIT(3), 0); | 390 | BIT(3), 0); |
391 | clk_register_clkdev(clk, NULL, "pka"); | 391 | clk_register_clkdev(clk, NULL, "pka"); |
392 | 392 | ||
393 | clk = clk_reg_prcc_pclk("p6_pclk4", "per6clk", U8500_CLKRST6_BASE, | 393 | clk = clk_reg_prcc_pclk("p6_pclk4", "per6clk", clkrst6_base, |
394 | BIT(4), 0); | 394 | BIT(4), 0); |
395 | clk_register_clkdev(clk, NULL, "hash1"); | 395 | clk_register_clkdev(clk, NULL, "hash1"); |
396 | 396 | ||
397 | clk = clk_reg_prcc_pclk("p6_pclk5", "per6clk", U8500_CLKRST6_BASE, | 397 | clk = clk_reg_prcc_pclk("p6_pclk5", "per6clk", clkrst6_base, |
398 | BIT(5), 0); | 398 | BIT(5), 0); |
399 | clk_register_clkdev(clk, NULL, "cfgreg"); | 399 | clk_register_clkdev(clk, NULL, "cfgreg"); |
400 | 400 | ||
401 | clk = clk_reg_prcc_pclk("p6_pclk6", "per6clk", U8500_CLKRST6_BASE, | 401 | clk = clk_reg_prcc_pclk("p6_pclk6", "per6clk", clkrst6_base, |
402 | BIT(6), 0); | 402 | BIT(6), 0); |
403 | clk_register_clkdev(clk, "apb_pclk", "mtu0"); | 403 | clk_register_clkdev(clk, "apb_pclk", "mtu0"); |
404 | 404 | ||
405 | clk = clk_reg_prcc_pclk("p6_pclk7", "per6clk", U8500_CLKRST6_BASE, | 405 | clk = clk_reg_prcc_pclk("p6_pclk7", "per6clk", clkrst6_base, |
406 | BIT(7), 0); | 406 | BIT(7), 0); |
407 | clk_register_clkdev(clk, "apb_pclk", "mtu1"); | 407 | clk_register_clkdev(clk, "apb_pclk", "mtu1"); |
408 | 408 | ||
@@ -416,110 +416,110 @@ void u8500_clk_init(void) | |||
416 | 416 | ||
417 | /* Periph1 */ | 417 | /* Periph1 */ |
418 | clk = clk_reg_prcc_kclk("p1_uart0_kclk", "uartclk", | 418 | clk = clk_reg_prcc_kclk("p1_uart0_kclk", "uartclk", |
419 | U8500_CLKRST1_BASE, BIT(0), CLK_SET_RATE_GATE); | 419 | clkrst1_base, BIT(0), CLK_SET_RATE_GATE); |
420 | clk_register_clkdev(clk, NULL, "uart0"); | 420 | clk_register_clkdev(clk, NULL, "uart0"); |
421 | 421 | ||
422 | clk = clk_reg_prcc_kclk("p1_uart1_kclk", "uartclk", | 422 | clk = clk_reg_prcc_kclk("p1_uart1_kclk", "uartclk", |
423 | U8500_CLKRST1_BASE, BIT(1), CLK_SET_RATE_GATE); | 423 | clkrst1_base, BIT(1), CLK_SET_RATE_GATE); |
424 | clk_register_clkdev(clk, NULL, "uart1"); | 424 | clk_register_clkdev(clk, NULL, "uart1"); |
425 | 425 | ||
426 | clk = clk_reg_prcc_kclk("p1_i2c1_kclk", "i2cclk", | 426 | clk = clk_reg_prcc_kclk("p1_i2c1_kclk", "i2cclk", |
427 | U8500_CLKRST1_BASE, BIT(2), CLK_SET_RATE_GATE); | 427 | clkrst1_base, BIT(2), CLK_SET_RATE_GATE); |
428 | clk_register_clkdev(clk, NULL, "nmk-i2c.1"); | 428 | clk_register_clkdev(clk, NULL, "nmk-i2c.1"); |
429 | 429 | ||
430 | clk = clk_reg_prcc_kclk("p1_msp0_kclk", "msp02clk", | 430 | clk = clk_reg_prcc_kclk("p1_msp0_kclk", "msp02clk", |
431 | U8500_CLKRST1_BASE, BIT(3), CLK_SET_RATE_GATE); | 431 | clkrst1_base, BIT(3), CLK_SET_RATE_GATE); |
432 | clk_register_clkdev(clk, NULL, "msp0"); | 432 | clk_register_clkdev(clk, NULL, "msp0"); |
433 | clk_register_clkdev(clk, NULL, "ux500-msp-i2s.0"); | 433 | clk_register_clkdev(clk, NULL, "ux500-msp-i2s.0"); |
434 | 434 | ||
435 | clk = clk_reg_prcc_kclk("p1_msp1_kclk", "msp1clk", | 435 | clk = clk_reg_prcc_kclk("p1_msp1_kclk", "msp1clk", |
436 | U8500_CLKRST1_BASE, BIT(4), CLK_SET_RATE_GATE); | 436 | clkrst1_base, BIT(4), CLK_SET_RATE_GATE); |
437 | clk_register_clkdev(clk, NULL, "msp1"); | 437 | clk_register_clkdev(clk, NULL, "msp1"); |
438 | clk_register_clkdev(clk, NULL, "ux500-msp-i2s.1"); | 438 | clk_register_clkdev(clk, NULL, "ux500-msp-i2s.1"); |
439 | 439 | ||
440 | clk = clk_reg_prcc_kclk("p1_sdi0_kclk", "sdmmcclk", | 440 | clk = clk_reg_prcc_kclk("p1_sdi0_kclk", "sdmmcclk", |
441 | U8500_CLKRST1_BASE, BIT(5), CLK_SET_RATE_GATE); | 441 | clkrst1_base, BIT(5), CLK_SET_RATE_GATE); |
442 | clk_register_clkdev(clk, NULL, "sdi0"); | 442 | clk_register_clkdev(clk, NULL, "sdi0"); |
443 | 443 | ||
444 | clk = clk_reg_prcc_kclk("p1_i2c2_kclk", "i2cclk", | 444 | clk = clk_reg_prcc_kclk("p1_i2c2_kclk", "i2cclk", |
445 | U8500_CLKRST1_BASE, BIT(6), CLK_SET_RATE_GATE); | 445 | clkrst1_base, BIT(6), CLK_SET_RATE_GATE); |
446 | clk_register_clkdev(clk, NULL, "nmk-i2c.2"); | 446 | clk_register_clkdev(clk, NULL, "nmk-i2c.2"); |
447 | 447 | ||
448 | clk = clk_reg_prcc_kclk("p1_slimbus0_kclk", "slimclk", | 448 | clk = clk_reg_prcc_kclk("p1_slimbus0_kclk", "slimclk", |
449 | U8500_CLKRST1_BASE, BIT(8), CLK_SET_RATE_GATE); | 449 | clkrst1_base, BIT(8), CLK_SET_RATE_GATE); |
450 | clk_register_clkdev(clk, NULL, "slimbus0"); | 450 | clk_register_clkdev(clk, NULL, "slimbus0"); |
451 | 451 | ||
452 | clk = clk_reg_prcc_kclk("p1_i2c4_kclk", "i2cclk", | 452 | clk = clk_reg_prcc_kclk("p1_i2c4_kclk", "i2cclk", |
453 | U8500_CLKRST1_BASE, BIT(9), CLK_SET_RATE_GATE); | 453 | clkrst1_base, BIT(9), CLK_SET_RATE_GATE); |
454 | clk_register_clkdev(clk, NULL, "nmk-i2c.4"); | 454 | clk_register_clkdev(clk, NULL, "nmk-i2c.4"); |
455 | 455 | ||
456 | clk = clk_reg_prcc_kclk("p1_msp3_kclk", "msp1clk", | 456 | clk = clk_reg_prcc_kclk("p1_msp3_kclk", "msp1clk", |
457 | U8500_CLKRST1_BASE, BIT(10), CLK_SET_RATE_GATE); | 457 | clkrst1_base, BIT(10), CLK_SET_RATE_GATE); |
458 | clk_register_clkdev(clk, NULL, "msp3"); | 458 | clk_register_clkdev(clk, NULL, "msp3"); |
459 | clk_register_clkdev(clk, NULL, "ux500-msp-i2s.3"); | 459 | clk_register_clkdev(clk, NULL, "ux500-msp-i2s.3"); |
460 | 460 | ||
461 | /* Periph2 */ | 461 | /* Periph2 */ |
462 | clk = clk_reg_prcc_kclk("p2_i2c3_kclk", "i2cclk", | 462 | clk = clk_reg_prcc_kclk("p2_i2c3_kclk", "i2cclk", |
463 | U8500_CLKRST2_BASE, BIT(0), CLK_SET_RATE_GATE); | 463 | clkrst2_base, BIT(0), CLK_SET_RATE_GATE); |
464 | clk_register_clkdev(clk, NULL, "nmk-i2c.3"); | 464 | clk_register_clkdev(clk, NULL, "nmk-i2c.3"); |
465 | 465 | ||
466 | clk = clk_reg_prcc_kclk("p2_sdi4_kclk", "sdmmcclk", | 466 | clk = clk_reg_prcc_kclk("p2_sdi4_kclk", "sdmmcclk", |
467 | U8500_CLKRST2_BASE, BIT(2), CLK_SET_RATE_GATE); | 467 | clkrst2_base, BIT(2), CLK_SET_RATE_GATE); |
468 | clk_register_clkdev(clk, NULL, "sdi4"); | 468 | clk_register_clkdev(clk, NULL, "sdi4"); |
469 | 469 | ||
470 | clk = clk_reg_prcc_kclk("p2_msp2_kclk", "msp02clk", | 470 | clk = clk_reg_prcc_kclk("p2_msp2_kclk", "msp02clk", |
471 | U8500_CLKRST2_BASE, BIT(3), CLK_SET_RATE_GATE); | 471 | clkrst2_base, BIT(3), CLK_SET_RATE_GATE); |
472 | clk_register_clkdev(clk, NULL, "msp2"); | 472 | clk_register_clkdev(clk, NULL, "msp2"); |
473 | clk_register_clkdev(clk, NULL, "ux500-msp-i2s.2"); | 473 | clk_register_clkdev(clk, NULL, "ux500-msp-i2s.2"); |
474 | 474 | ||
475 | clk = clk_reg_prcc_kclk("p2_sdi1_kclk", "sdmmcclk", | 475 | clk = clk_reg_prcc_kclk("p2_sdi1_kclk", "sdmmcclk", |
476 | U8500_CLKRST2_BASE, BIT(4), CLK_SET_RATE_GATE); | 476 | clkrst2_base, BIT(4), CLK_SET_RATE_GATE); |
477 | clk_register_clkdev(clk, NULL, "sdi1"); | 477 | clk_register_clkdev(clk, NULL, "sdi1"); |
478 | 478 | ||
479 | clk = clk_reg_prcc_kclk("p2_sdi3_kclk", "sdmmcclk", | 479 | clk = clk_reg_prcc_kclk("p2_sdi3_kclk", "sdmmcclk", |
480 | U8500_CLKRST2_BASE, BIT(5), CLK_SET_RATE_GATE); | 480 | clkrst2_base, BIT(5), CLK_SET_RATE_GATE); |
481 | clk_register_clkdev(clk, NULL, "sdi3"); | 481 | clk_register_clkdev(clk, NULL, "sdi3"); |
482 | 482 | ||
483 | /* Note that rate is received from parent. */ | 483 | /* Note that rate is received from parent. */ |
484 | clk = clk_reg_prcc_kclk("p2_ssirx_kclk", "hsirxclk", | 484 | clk = clk_reg_prcc_kclk("p2_ssirx_kclk", "hsirxclk", |
485 | U8500_CLKRST2_BASE, BIT(6), | 485 | clkrst2_base, BIT(6), |
486 | CLK_SET_RATE_GATE|CLK_SET_RATE_PARENT); | 486 | CLK_SET_RATE_GATE|CLK_SET_RATE_PARENT); |
487 | clk = clk_reg_prcc_kclk("p2_ssitx_kclk", "hsitxclk", | 487 | clk = clk_reg_prcc_kclk("p2_ssitx_kclk", "hsitxclk", |
488 | U8500_CLKRST2_BASE, BIT(7), | 488 | clkrst2_base, BIT(7), |
489 | CLK_SET_RATE_GATE|CLK_SET_RATE_PARENT); | 489 | CLK_SET_RATE_GATE|CLK_SET_RATE_PARENT); |
490 | 490 | ||
491 | /* Periph3 */ | 491 | /* Periph3 */ |
492 | clk = clk_reg_prcc_kclk("p3_ssp0_kclk", "sspclk", | 492 | clk = clk_reg_prcc_kclk("p3_ssp0_kclk", "sspclk", |
493 | U8500_CLKRST3_BASE, BIT(1), CLK_SET_RATE_GATE); | 493 | clkrst3_base, BIT(1), CLK_SET_RATE_GATE); |
494 | clk_register_clkdev(clk, NULL, "ssp0"); | 494 | clk_register_clkdev(clk, NULL, "ssp0"); |
495 | 495 | ||
496 | clk = clk_reg_prcc_kclk("p3_ssp1_kclk", "sspclk", | 496 | clk = clk_reg_prcc_kclk("p3_ssp1_kclk", "sspclk", |
497 | U8500_CLKRST3_BASE, BIT(2), CLK_SET_RATE_GATE); | 497 | clkrst3_base, BIT(2), CLK_SET_RATE_GATE); |
498 | clk_register_clkdev(clk, NULL, "ssp1"); | 498 | clk_register_clkdev(clk, NULL, "ssp1"); |
499 | 499 | ||
500 | clk = clk_reg_prcc_kclk("p3_i2c0_kclk", "i2cclk", | 500 | clk = clk_reg_prcc_kclk("p3_i2c0_kclk", "i2cclk", |
501 | U8500_CLKRST3_BASE, BIT(3), CLK_SET_RATE_GATE); | 501 | clkrst3_base, BIT(3), CLK_SET_RATE_GATE); |
502 | clk_register_clkdev(clk, NULL, "nmk-i2c.0"); | 502 | clk_register_clkdev(clk, NULL, "nmk-i2c.0"); |
503 | 503 | ||
504 | clk = clk_reg_prcc_kclk("p3_sdi2_kclk", "sdmmcclk", | 504 | clk = clk_reg_prcc_kclk("p3_sdi2_kclk", "sdmmcclk", |
505 | U8500_CLKRST3_BASE, BIT(4), CLK_SET_RATE_GATE); | 505 | clkrst3_base, BIT(4), CLK_SET_RATE_GATE); |
506 | clk_register_clkdev(clk, NULL, "sdi2"); | 506 | clk_register_clkdev(clk, NULL, "sdi2"); |
507 | 507 | ||
508 | clk = clk_reg_prcc_kclk("p3_ske_kclk", "rtc32k", | 508 | clk = clk_reg_prcc_kclk("p3_ske_kclk", "rtc32k", |
509 | U8500_CLKRST3_BASE, BIT(5), CLK_SET_RATE_GATE); | 509 | clkrst3_base, BIT(5), CLK_SET_RATE_GATE); |
510 | clk_register_clkdev(clk, NULL, "ske"); | 510 | clk_register_clkdev(clk, NULL, "ske"); |
511 | clk_register_clkdev(clk, NULL, "nmk-ske-keypad"); | 511 | clk_register_clkdev(clk, NULL, "nmk-ske-keypad"); |
512 | 512 | ||
513 | clk = clk_reg_prcc_kclk("p3_uart2_kclk", "uartclk", | 513 | clk = clk_reg_prcc_kclk("p3_uart2_kclk", "uartclk", |
514 | U8500_CLKRST3_BASE, BIT(6), CLK_SET_RATE_GATE); | 514 | clkrst3_base, BIT(6), CLK_SET_RATE_GATE); |
515 | clk_register_clkdev(clk, NULL, "uart2"); | 515 | clk_register_clkdev(clk, NULL, "uart2"); |
516 | 516 | ||
517 | clk = clk_reg_prcc_kclk("p3_sdi5_kclk", "sdmmcclk", | 517 | clk = clk_reg_prcc_kclk("p3_sdi5_kclk", "sdmmcclk", |
518 | U8500_CLKRST3_BASE, BIT(7), CLK_SET_RATE_GATE); | 518 | clkrst3_base, BIT(7), CLK_SET_RATE_GATE); |
519 | clk_register_clkdev(clk, NULL, "sdi5"); | 519 | clk_register_clkdev(clk, NULL, "sdi5"); |
520 | 520 | ||
521 | /* Periph6 */ | 521 | /* Periph6 */ |
522 | clk = clk_reg_prcc_kclk("p3_rng_kclk", "rngclk", | 522 | clk = clk_reg_prcc_kclk("p3_rng_kclk", "rngclk", |
523 | U8500_CLKRST6_BASE, BIT(0), CLK_SET_RATE_GATE); | 523 | clkrst6_base, BIT(0), CLK_SET_RATE_GATE); |
524 | clk_register_clkdev(clk, NULL, "rng"); | 524 | clk_register_clkdev(clk, NULL, "rng"); |
525 | } | 525 | } |
diff --git a/drivers/clocksource/Makefile b/drivers/clocksource/Makefile index 4897f243a000..682d48d08164 100644 --- a/drivers/clocksource/Makefile +++ b/drivers/clocksource/Makefile | |||
@@ -16,7 +16,9 @@ obj-$(CONFIG_CLKSRC_NOMADIK_MTU) += nomadik-mtu.o | |||
16 | obj-$(CONFIG_CLKSRC_DBX500_PRCMU) += clksrc-dbx500-prcmu.o | 16 | obj-$(CONFIG_CLKSRC_DBX500_PRCMU) += clksrc-dbx500-prcmu.o |
17 | obj-$(CONFIG_ARMADA_370_XP_TIMER) += time-armada-370-xp.o | 17 | obj-$(CONFIG_ARMADA_370_XP_TIMER) += time-armada-370-xp.o |
18 | obj-$(CONFIG_ARCH_BCM2835) += bcm2835_timer.o | 18 | obj-$(CONFIG_ARCH_BCM2835) += bcm2835_timer.o |
19 | obj-$(CONFIG_ARCH_MARCO) += timer-marco.o | ||
19 | obj-$(CONFIG_ARCH_MXS) += mxs_timer.o | 20 | obj-$(CONFIG_ARCH_MXS) += mxs_timer.o |
21 | obj-$(CONFIG_ARCH_PRIMA2) += timer-prima2.o | ||
20 | obj-$(CONFIG_SUN4I_TIMER) += sun4i_timer.o | 22 | obj-$(CONFIG_SUN4I_TIMER) += sun4i_timer.o |
21 | obj-$(CONFIG_ARCH_TEGRA) += tegra20_timer.o | 23 | obj-$(CONFIG_ARCH_TEGRA) += tegra20_timer.o |
22 | obj-$(CONFIG_VT8500_TIMER) += vt8500_timer.o | 24 | obj-$(CONFIG_VT8500_TIMER) += vt8500_timer.o |
diff --git a/drivers/clocksource/clksrc-dbx500-prcmu.c b/drivers/clocksource/clksrc-dbx500-prcmu.c index c26c369eb9e6..54f3d119d99c 100644 --- a/drivers/clocksource/clksrc-dbx500-prcmu.c +++ b/drivers/clocksource/clksrc-dbx500-prcmu.c | |||
@@ -17,9 +17,6 @@ | |||
17 | 17 | ||
18 | #include <asm/sched_clock.h> | 18 | #include <asm/sched_clock.h> |
19 | 19 | ||
20 | #include <mach/setup.h> | ||
21 | #include <mach/hardware.h> | ||
22 | |||
23 | #define RATE_32K 32768 | 20 | #define RATE_32K 32768 |
24 | 21 | ||
25 | #define TIMER_MODE_CONTINOUS 0x1 | 22 | #define TIMER_MODE_CONTINOUS 0x1 |
diff --git a/drivers/clocksource/nomadik-mtu.c b/drivers/clocksource/nomadik-mtu.c index 071f6eadfea2..e405531e1cc5 100644 --- a/drivers/clocksource/nomadik-mtu.c +++ b/drivers/clocksource/nomadik-mtu.c | |||
@@ -67,7 +67,7 @@ static u32 clk_prescale; | |||
67 | static u32 nmdk_cycle; /* write-once */ | 67 | static u32 nmdk_cycle; /* write-once */ |
68 | static struct delay_timer mtu_delay_timer; | 68 | static struct delay_timer mtu_delay_timer; |
69 | 69 | ||
70 | #ifdef CONFIG_NOMADIK_MTU_SCHED_CLOCK | 70 | #ifdef CONFIG_CLKSRC_NOMADIK_MTU_SCHED_CLOCK |
71 | /* | 71 | /* |
72 | * Override the global weak sched_clock symbol with this | 72 | * Override the global weak sched_clock symbol with this |
73 | * local implementation which uses the clocksource to get some | 73 | * local implementation which uses the clocksource to get some |
@@ -233,7 +233,7 @@ void __init nmdk_timer_init(void __iomem *base, int irq) | |||
233 | pr_err("timer: failed to initialize clock source %s\n", | 233 | pr_err("timer: failed to initialize clock source %s\n", |
234 | "mtu_0"); | 234 | "mtu_0"); |
235 | 235 | ||
236 | #ifdef CONFIG_NOMADIK_MTU_SCHED_CLOCK | 236 | #ifdef CONFIG_CLKSRC_NOMADIK_MTU_SCHED_CLOCK |
237 | setup_sched_clock(nomadik_read_sched_clock, 32, rate); | 237 | setup_sched_clock(nomadik_read_sched_clock, 32, rate); |
238 | #endif | 238 | #endif |
239 | 239 | ||
diff --git a/arch/arm/mach-prima2/timer-marco.c b/drivers/clocksource/timer-marco.c index f4eea2e97eb0..97738dbf3e3b 100644 --- a/arch/arm/mach-prima2/timer-marco.c +++ b/drivers/clocksource/timer-marco.c | |||
@@ -21,8 +21,6 @@ | |||
21 | #include <asm/localtimer.h> | 21 | #include <asm/localtimer.h> |
22 | #include <asm/mach/time.h> | 22 | #include <asm/mach/time.h> |
23 | 23 | ||
24 | #include "common.h" | ||
25 | |||
26 | #define SIRFSOC_TIMER_32COUNTER_0_CTRL 0x0000 | 24 | #define SIRFSOC_TIMER_32COUNTER_0_CTRL 0x0000 |
27 | #define SIRFSOC_TIMER_32COUNTER_1_CTRL 0x0004 | 25 | #define SIRFSOC_TIMER_32COUNTER_1_CTRL 0x0004 |
28 | #define SIRFSOC_TIMER_MATCH_0 0x0018 | 26 | #define SIRFSOC_TIMER_MATCH_0 0x0018 |
@@ -53,7 +51,6 @@ static const u32 sirfsoc_timer_reg_list[SIRFSOC_TIMER_REG_CNT] = { | |||
53 | static u32 sirfsoc_timer_reg_val[SIRFSOC_TIMER_REG_CNT]; | 51 | static u32 sirfsoc_timer_reg_val[SIRFSOC_TIMER_REG_CNT]; |
54 | 52 | ||
55 | static void __iomem *sirfsoc_timer_base; | 53 | static void __iomem *sirfsoc_timer_base; |
56 | static void __init sirfsoc_of_timer_map(void); | ||
57 | 54 | ||
58 | /* disable count and interrupt */ | 55 | /* disable count and interrupt */ |
59 | static inline void sirfsoc_timer_count_disable(int idx) | 56 | static inline void sirfsoc_timer_count_disable(int idx) |
@@ -242,15 +239,12 @@ static void __init sirfsoc_clockevent_init(void) | |||
242 | } | 239 | } |
243 | 240 | ||
244 | /* initialize the kernel jiffy timer source */ | 241 | /* initialize the kernel jiffy timer source */ |
245 | void __init sirfsoc_marco_timer_init(void) | 242 | static void __init sirfsoc_marco_timer_init(void) |
246 | { | 243 | { |
247 | unsigned long rate; | 244 | unsigned long rate; |
248 | u32 timer_div; | 245 | u32 timer_div; |
249 | struct clk *clk; | 246 | struct clk *clk; |
250 | 247 | ||
251 | /* initialize clocking early, we want to set the OS timer */ | ||
252 | sirfsoc_of_clk_init(); | ||
253 | |||
254 | /* timer's input clock is io clock */ | 248 | /* timer's input clock is io clock */ |
255 | clk = clk_get_sys("io", NULL); | 249 | clk = clk_get_sys("io", NULL); |
256 | 250 | ||
@@ -260,8 +254,6 @@ void __init sirfsoc_marco_timer_init(void) | |||
260 | BUG_ON(rate < CLOCK_TICK_RATE); | 254 | BUG_ON(rate < CLOCK_TICK_RATE); |
261 | BUG_ON(rate % CLOCK_TICK_RATE); | 255 | BUG_ON(rate % CLOCK_TICK_RATE); |
262 | 256 | ||
263 | sirfsoc_of_timer_map(); | ||
264 | |||
265 | /* Initialize the timer dividers */ | 257 | /* Initialize the timer dividers */ |
266 | timer_div = rate / CLOCK_TICK_RATE - 1; | 258 | timer_div = rate / CLOCK_TICK_RATE - 1; |
267 | writel_relaxed(timer_div << 16, sirfsoc_timer_base + SIRFSOC_TIMER_64COUNTER_CTRL); | 259 | writel_relaxed(timer_div << 16, sirfsoc_timer_base + SIRFSOC_TIMER_64COUNTER_CTRL); |
@@ -286,18 +278,8 @@ void __init sirfsoc_marco_timer_init(void) | |||
286 | sirfsoc_clockevent_init(); | 278 | sirfsoc_clockevent_init(); |
287 | } | 279 | } |
288 | 280 | ||
289 | static struct of_device_id timer_ids[] = { | 281 | static void __init sirfsoc_of_timer_init(struct device_node *np) |
290 | { .compatible = "sirf,marco-tick" }, | ||
291 | {}, | ||
292 | }; | ||
293 | |||
294 | static void __init sirfsoc_of_timer_map(void) | ||
295 | { | 282 | { |
296 | struct device_node *np; | ||
297 | |||
298 | np = of_find_matching_node(NULL, timer_ids); | ||
299 | if (!np) | ||
300 | return; | ||
301 | sirfsoc_timer_base = of_iomap(np, 0); | 283 | sirfsoc_timer_base = of_iomap(np, 0); |
302 | if (!sirfsoc_timer_base) | 284 | if (!sirfsoc_timer_base) |
303 | panic("unable to map timer cpu registers\n"); | 285 | panic("unable to map timer cpu registers\n"); |
@@ -312,5 +294,6 @@ static void __init sirfsoc_of_timer_map(void) | |||
312 | panic("No irq passed for timer1 via DT\n"); | 294 | panic("No irq passed for timer1 via DT\n"); |
313 | #endif | 295 | #endif |
314 | 296 | ||
315 | of_node_put(np); | 297 | sirfsoc_marco_timer_init(); |
316 | } | 298 | } |
299 | CLOCKSOURCE_OF_DECLARE(sirfsoc_marco_timer, "sirf,marco-tick", sirfsoc_of_timer_init ); | ||
diff --git a/arch/arm/mach-prima2/timer-prima2.c b/drivers/clocksource/timer-prima2.c index 6da584f8a949..760882665d7a 100644 --- a/arch/arm/mach-prima2/timer-prima2.c +++ b/drivers/clocksource/timer-prima2.c | |||
@@ -16,13 +16,11 @@ | |||
16 | #include <linux/err.h> | 16 | #include <linux/err.h> |
17 | #include <linux/slab.h> | 17 | #include <linux/slab.h> |
18 | #include <linux/of.h> | 18 | #include <linux/of.h> |
19 | #include <linux/of_irq.h> | ||
19 | #include <linux/of_address.h> | 20 | #include <linux/of_address.h> |
20 | #include <mach/map.h> | ||
21 | #include <asm/sched_clock.h> | 21 | #include <asm/sched_clock.h> |
22 | #include <asm/mach/time.h> | 22 | #include <asm/mach/time.h> |
23 | 23 | ||
24 | #include "common.h" | ||
25 | |||
26 | #define SIRFSOC_TIMER_COUNTER_LO 0x0000 | 24 | #define SIRFSOC_TIMER_COUNTER_LO 0x0000 |
27 | #define SIRFSOC_TIMER_COUNTER_HI 0x0004 | 25 | #define SIRFSOC_TIMER_COUNTER_HI 0x0004 |
28 | #define SIRFSOC_TIMER_MATCH_0 0x0008 | 26 | #define SIRFSOC_TIMER_MATCH_0 0x0008 |
@@ -55,7 +53,6 @@ static const u32 sirfsoc_timer_reg_list[SIRFSOC_TIMER_REG_CNT] = { | |||
55 | static u32 sirfsoc_timer_reg_val[SIRFSOC_TIMER_REG_CNT]; | 53 | static u32 sirfsoc_timer_reg_val[SIRFSOC_TIMER_REG_CNT]; |
56 | 54 | ||
57 | static void __iomem *sirfsoc_timer_base; | 55 | static void __iomem *sirfsoc_timer_base; |
58 | static void __init sirfsoc_of_timer_map(void); | ||
59 | 56 | ||
60 | /* timer0 interrupt handler */ | 57 | /* timer0 interrupt handler */ |
61 | static irqreturn_t sirfsoc_timer_interrupt(int irq, void *dev_id) | 58 | static irqreturn_t sirfsoc_timer_interrupt(int irq, void *dev_id) |
@@ -181,14 +178,11 @@ static void __init sirfsoc_clockevent_init(void) | |||
181 | } | 178 | } |
182 | 179 | ||
183 | /* initialize the kernel jiffy timer source */ | 180 | /* initialize the kernel jiffy timer source */ |
184 | void __init sirfsoc_prima2_timer_init(void) | 181 | static void __init sirfsoc_prima2_timer_init(struct device_node *np) |
185 | { | 182 | { |
186 | unsigned long rate; | 183 | unsigned long rate; |
187 | struct clk *clk; | 184 | struct clk *clk; |
188 | 185 | ||
189 | /* initialize clocking early, we want to set the OS timer */ | ||
190 | sirfsoc_of_clk_init(); | ||
191 | |||
192 | /* timer's input clock is io clock */ | 186 | /* timer's input clock is io clock */ |
193 | clk = clk_get_sys("io", NULL); | 187 | clk = clk_get_sys("io", NULL); |
194 | 188 | ||
@@ -199,7 +193,11 @@ void __init sirfsoc_prima2_timer_init(void) | |||
199 | BUG_ON(rate < CLOCK_TICK_RATE); | 193 | BUG_ON(rate < CLOCK_TICK_RATE); |
200 | BUG_ON(rate % CLOCK_TICK_RATE); | 194 | BUG_ON(rate % CLOCK_TICK_RATE); |
201 | 195 | ||
202 | sirfsoc_of_timer_map(); | 196 | sirfsoc_timer_base = of_iomap(np, 0); |
197 | if (!sirfsoc_timer_base) | ||
198 | panic("unable to map timer cpu registers\n"); | ||
199 | |||
200 | sirfsoc_timer_irq.irq = irq_of_parse_and_map(np, 0); | ||
203 | 201 | ||
204 | writel_relaxed(rate / CLOCK_TICK_RATE / 2 - 1, sirfsoc_timer_base + SIRFSOC_TIMER_DIV); | 202 | writel_relaxed(rate / CLOCK_TICK_RATE / 2 - 1, sirfsoc_timer_base + SIRFSOC_TIMER_DIV); |
205 | writel_relaxed(0, sirfsoc_timer_base + SIRFSOC_TIMER_COUNTER_LO); | 203 | writel_relaxed(0, sirfsoc_timer_base + SIRFSOC_TIMER_COUNTER_LO); |
@@ -214,28 +212,4 @@ void __init sirfsoc_prima2_timer_init(void) | |||
214 | 212 | ||
215 | sirfsoc_clockevent_init(); | 213 | sirfsoc_clockevent_init(); |
216 | } | 214 | } |
217 | 215 | CLOCKSOURCE_OF_DECLARE(sirfsoc_prima2_timer, "sirf,prima2-tick", sirfsoc_prima2_timer_init); | |
218 | static struct of_device_id timer_ids[] = { | ||
219 | { .compatible = "sirf,prima2-tick" }, | ||
220 | {}, | ||
221 | }; | ||
222 | |||
223 | static void __init sirfsoc_of_timer_map(void) | ||
224 | { | ||
225 | struct device_node *np; | ||
226 | const unsigned int *intspec; | ||
227 | |||
228 | np = of_find_matching_node(NULL, timer_ids); | ||
229 | if (!np) | ||
230 | return; | ||
231 | sirfsoc_timer_base = of_iomap(np, 0); | ||
232 | if (!sirfsoc_timer_base) | ||
233 | panic("unable to map timer cpu registers\n"); | ||
234 | |||
235 | /* Get the interrupts property */ | ||
236 | intspec = of_get_property(np, "interrupts", NULL); | ||
237 | BUG_ON(!intspec); | ||
238 | sirfsoc_timer_irq.irq = be32_to_cpup(intspec); | ||
239 | |||
240 | of_node_put(np); | ||
241 | } | ||
diff --git a/drivers/crypto/ux500/cryp/cryp.c b/drivers/crypto/ux500/cryp/cryp.c index e208ceaf81c9..3eafa903ebcd 100644 --- a/drivers/crypto/ux500/cryp/cryp.c +++ b/drivers/crypto/ux500/cryp/cryp.c | |||
@@ -12,8 +12,6 @@ | |||
12 | #include <linux/kernel.h> | 12 | #include <linux/kernel.h> |
13 | #include <linux/types.h> | 13 | #include <linux/types.h> |
14 | 14 | ||
15 | #include <mach/hardware.h> | ||
16 | |||
17 | #include "cryp_p.h" | 15 | #include "cryp_p.h" |
18 | #include "cryp.h" | 16 | #include "cryp.h" |
19 | 17 | ||
diff --git a/drivers/crypto/ux500/cryp/cryp_core.c b/drivers/crypto/ux500/cryp/cryp_core.c index 22c9063e0120..32f480622b97 100644 --- a/drivers/crypto/ux500/cryp/cryp_core.c +++ b/drivers/crypto/ux500/cryp/cryp_core.c | |||
@@ -32,7 +32,6 @@ | |||
32 | #include <crypto/scatterwalk.h> | 32 | #include <crypto/scatterwalk.h> |
33 | 33 | ||
34 | #include <linux/platform_data/crypto-ux500.h> | 34 | #include <linux/platform_data/crypto-ux500.h> |
35 | #include <mach/hardware.h> | ||
36 | 35 | ||
37 | #include "cryp_p.h" | 36 | #include "cryp_p.h" |
38 | #include "cryp.h" | 37 | #include "cryp.h" |
diff --git a/drivers/crypto/ux500/hash/hash_core.c b/drivers/crypto/ux500/hash/hash_core.c index 632c3339895f..1827e9f1f873 100644 --- a/drivers/crypto/ux500/hash/hash_core.c +++ b/drivers/crypto/ux500/hash/hash_core.c | |||
@@ -32,7 +32,6 @@ | |||
32 | #include <crypto/algapi.h> | 32 | #include <crypto/algapi.h> |
33 | 33 | ||
34 | #include <linux/platform_data/crypto-ux500.h> | 34 | #include <linux/platform_data/crypto-ux500.h> |
35 | #include <mach/hardware.h> | ||
36 | 35 | ||
37 | #include "hash_alg.h" | 36 | #include "hash_alg.h" |
38 | 37 | ||
diff --git a/drivers/irqchip/Makefile b/drivers/irqchip/Makefile index d5e119ca9425..10ef57f35a6e 100644 --- a/drivers/irqchip/Makefile +++ b/drivers/irqchip/Makefile | |||
@@ -9,4 +9,5 @@ obj-$(CONFIG_ARCH_SUNXI) += irq-sun4i.o | |||
9 | obj-$(CONFIG_ARCH_SPEAR3XX) += spear-shirq.o | 9 | obj-$(CONFIG_ARCH_SPEAR3XX) += spear-shirq.o |
10 | obj-$(CONFIG_ARM_GIC) += irq-gic.o | 10 | obj-$(CONFIG_ARM_GIC) += irq-gic.o |
11 | obj-$(CONFIG_ARM_VIC) += irq-vic.o | 11 | obj-$(CONFIG_ARM_VIC) += irq-vic.o |
12 | obj-$(CONFIG_SIRF_IRQ) += irq-sirfsoc.o | ||
12 | obj-$(CONFIG_VERSATILE_FPGA_IRQ) += irq-versatile-fpga.o | 13 | obj-$(CONFIG_VERSATILE_FPGA_IRQ) += irq-versatile-fpga.o |
diff --git a/drivers/irqchip/irq-sirfsoc.c b/drivers/irqchip/irq-sirfsoc.c new file mode 100644 index 000000000000..69ea44ebcf61 --- /dev/null +++ b/drivers/irqchip/irq-sirfsoc.c | |||
@@ -0,0 +1,126 @@ | |||
1 | /* | ||
2 | * interrupt controller support for CSR SiRFprimaII | ||
3 | * | ||
4 | * Copyright (c) 2011 Cambridge Silicon Radio Limited, a CSR plc group company. | ||
5 | * | ||
6 | * Licensed under GPLv2 or later. | ||
7 | */ | ||
8 | |||
9 | #include <linux/init.h> | ||
10 | #include <linux/io.h> | ||
11 | #include <linux/irq.h> | ||
12 | #include <linux/of.h> | ||
13 | #include <linux/of_address.h> | ||
14 | #include <linux/irqdomain.h> | ||
15 | #include <linux/syscore_ops.h> | ||
16 | #include <asm/mach/irq.h> | ||
17 | #include <asm/exception.h> | ||
18 | #include "irqchip.h" | ||
19 | |||
20 | #define SIRFSOC_INT_RISC_MASK0 0x0018 | ||
21 | #define SIRFSOC_INT_RISC_MASK1 0x001C | ||
22 | #define SIRFSOC_INT_RISC_LEVEL0 0x0020 | ||
23 | #define SIRFSOC_INT_RISC_LEVEL1 0x0024 | ||
24 | #define SIRFSOC_INIT_IRQ_ID 0x0038 | ||
25 | |||
26 | #define SIRFSOC_NUM_IRQS 128 | ||
27 | |||
28 | static struct irq_domain *sirfsoc_irqdomain; | ||
29 | |||
30 | static __init void | ||
31 | sirfsoc_alloc_gc(void __iomem *base, unsigned int irq_start, unsigned int num) | ||
32 | { | ||
33 | struct irq_chip_generic *gc; | ||
34 | struct irq_chip_type *ct; | ||
35 | |||
36 | gc = irq_alloc_generic_chip("SIRFINTC", 1, irq_start, base, handle_level_irq); | ||
37 | ct = gc->chip_types; | ||
38 | |||
39 | ct->chip.irq_mask = irq_gc_mask_clr_bit; | ||
40 | ct->chip.irq_unmask = irq_gc_mask_set_bit; | ||
41 | ct->regs.mask = SIRFSOC_INT_RISC_MASK0; | ||
42 | |||
43 | irq_setup_generic_chip(gc, IRQ_MSK(num), IRQ_GC_INIT_MASK_CACHE, IRQ_NOREQUEST, 0); | ||
44 | } | ||
45 | |||
46 | static asmlinkage void __exception_irq_entry sirfsoc_handle_irq(struct pt_regs *regs) | ||
47 | { | ||
48 | void __iomem *base = sirfsoc_irqdomain->host_data; | ||
49 | u32 irqstat, irqnr; | ||
50 | |||
51 | irqstat = readl_relaxed(base + SIRFSOC_INIT_IRQ_ID); | ||
52 | irqnr = irq_find_mapping(sirfsoc_irqdomain, irqstat & 0xff); | ||
53 | |||
54 | handle_IRQ(irqnr, regs); | ||
55 | } | ||
56 | |||
57 | static int __init sirfsoc_irq_init(struct device_node *np, struct device_node *parent) | ||
58 | { | ||
59 | void __iomem *base = of_iomap(np, 0); | ||
60 | if (!base) | ||
61 | panic("unable to map intc cpu registers\n"); | ||
62 | |||
63 | /* using legacy because irqchip_generic does not work with linear */ | ||
64 | sirfsoc_irqdomain = irq_domain_add_legacy(np, SIRFSOC_NUM_IRQS, 0, 0, | ||
65 | &irq_domain_simple_ops, base); | ||
66 | |||
67 | sirfsoc_alloc_gc(base, 0, 32); | ||
68 | sirfsoc_alloc_gc(base + 4, 32, SIRFSOC_NUM_IRQS - 32); | ||
69 | |||
70 | writel_relaxed(0, base + SIRFSOC_INT_RISC_LEVEL0); | ||
71 | writel_relaxed(0, base + SIRFSOC_INT_RISC_LEVEL1); | ||
72 | |||
73 | writel_relaxed(0, base + SIRFSOC_INT_RISC_MASK0); | ||
74 | writel_relaxed(0, base + SIRFSOC_INT_RISC_MASK1); | ||
75 | |||
76 | set_handle_irq(sirfsoc_handle_irq); | ||
77 | |||
78 | return 0; | ||
79 | } | ||
80 | IRQCHIP_DECLARE(sirfsoc_intc, "sirf,prima2-intc", sirfsoc_irq_init); | ||
81 | |||
82 | struct sirfsoc_irq_status { | ||
83 | u32 mask0; | ||
84 | u32 mask1; | ||
85 | u32 level0; | ||
86 | u32 level1; | ||
87 | }; | ||
88 | |||
89 | static struct sirfsoc_irq_status sirfsoc_irq_st; | ||
90 | |||
91 | static int sirfsoc_irq_suspend(void) | ||
92 | { | ||
93 | void __iomem *base = sirfsoc_irqdomain->host_data; | ||
94 | |||
95 | sirfsoc_irq_st.mask0 = readl_relaxed(base + SIRFSOC_INT_RISC_MASK0); | ||
96 | sirfsoc_irq_st.mask1 = readl_relaxed(base + SIRFSOC_INT_RISC_MASK1); | ||
97 | sirfsoc_irq_st.level0 = readl_relaxed(base + SIRFSOC_INT_RISC_LEVEL0); | ||
98 | sirfsoc_irq_st.level1 = readl_relaxed(base + SIRFSOC_INT_RISC_LEVEL1); | ||
99 | |||
100 | return 0; | ||
101 | } | ||
102 | |||
103 | static void sirfsoc_irq_resume(void) | ||
104 | { | ||
105 | void __iomem *base = sirfsoc_irqdomain->host_data; | ||
106 | |||
107 | writel_relaxed(sirfsoc_irq_st.mask0, base + SIRFSOC_INT_RISC_MASK0); | ||
108 | writel_relaxed(sirfsoc_irq_st.mask1, base + SIRFSOC_INT_RISC_MASK1); | ||
109 | writel_relaxed(sirfsoc_irq_st.level0, base + SIRFSOC_INT_RISC_LEVEL0); | ||
110 | writel_relaxed(sirfsoc_irq_st.level1, base + SIRFSOC_INT_RISC_LEVEL1); | ||
111 | } | ||
112 | |||
113 | static struct syscore_ops sirfsoc_irq_syscore_ops = { | ||
114 | .suspend = sirfsoc_irq_suspend, | ||
115 | .resume = sirfsoc_irq_resume, | ||
116 | }; | ||
117 | |||
118 | static int __init sirfsoc_irq_pm_init(void) | ||
119 | { | ||
120 | if (!sirfsoc_irqdomain) | ||
121 | return 0; | ||
122 | |||
123 | register_syscore_ops(&sirfsoc_irq_syscore_ops); | ||
124 | return 0; | ||
125 | } | ||
126 | device_initcall(sirfsoc_irq_pm_init); | ||
diff --git a/drivers/mfd/db8500-prcmu.c b/drivers/mfd/db8500-prcmu.c index 21f261bf9e95..21434beb420a 100644 --- a/drivers/mfd/db8500-prcmu.c +++ b/drivers/mfd/db8500-prcmu.c | |||
@@ -26,7 +26,6 @@ | |||
26 | #include <linux/fs.h> | 26 | #include <linux/fs.h> |
27 | #include <linux/platform_device.h> | 27 | #include <linux/platform_device.h> |
28 | #include <linux/uaccess.h> | 28 | #include <linux/uaccess.h> |
29 | #include <linux/irqchip/arm-gic.h> | ||
30 | #include <linux/mfd/core.h> | 29 | #include <linux/mfd/core.h> |
31 | #include <linux/mfd/dbx500-prcmu.h> | 30 | #include <linux/mfd/dbx500-prcmu.h> |
32 | #include <linux/mfd/abx500/ab8500.h> | 31 | #include <linux/mfd/abx500/ab8500.h> |
@@ -34,9 +33,7 @@ | |||
34 | #include <linux/regulator/machine.h> | 33 | #include <linux/regulator/machine.h> |
35 | #include <linux/cpufreq.h> | 34 | #include <linux/cpufreq.h> |
36 | #include <linux/platform_data/ux500_wdt.h> | 35 | #include <linux/platform_data/ux500_wdt.h> |
37 | #include <mach/hardware.h> | 36 | #include <linux/platform_data/db8500_thermal.h> |
38 | #include <mach/irqs.h> | ||
39 | #include <mach/db8500-regs.h> | ||
40 | #include "dbx500-prcmu-regs.h" | 37 | #include "dbx500-prcmu-regs.h" |
41 | 38 | ||
42 | /* Index of different voltages to be used when accessing AVSData */ | 39 | /* Index of different voltages to be used when accessing AVSData */ |
@@ -276,8 +273,34 @@ static struct irq_domain *db8500_irq_domain; | |||
276 | * the bits in the bit field are not. (The bits also have a tendency to move | 273 | * the bits in the bit field are not. (The bits also have a tendency to move |
277 | * around, to further complicate matters.) | 274 | * around, to further complicate matters.) |
278 | */ | 275 | */ |
279 | #define IRQ_INDEX(_name) ((IRQ_PRCMU_##_name) - IRQ_PRCMU_BASE) | 276 | #define IRQ_INDEX(_name) ((IRQ_PRCMU_##_name)) |
280 | #define IRQ_ENTRY(_name)[IRQ_INDEX(_name)] = (WAKEUP_BIT_##_name) | 277 | #define IRQ_ENTRY(_name)[IRQ_INDEX(_name)] = (WAKEUP_BIT_##_name) |
278 | |||
279 | #define IRQ_PRCMU_RTC 0 | ||
280 | #define IRQ_PRCMU_RTT0 1 | ||
281 | #define IRQ_PRCMU_RTT1 2 | ||
282 | #define IRQ_PRCMU_HSI0 3 | ||
283 | #define IRQ_PRCMU_HSI1 4 | ||
284 | #define IRQ_PRCMU_CA_WAKE 5 | ||
285 | #define IRQ_PRCMU_USB 6 | ||
286 | #define IRQ_PRCMU_ABB 7 | ||
287 | #define IRQ_PRCMU_ABB_FIFO 8 | ||
288 | #define IRQ_PRCMU_ARM 9 | ||
289 | #define IRQ_PRCMU_MODEM_SW_RESET_REQ 10 | ||
290 | #define IRQ_PRCMU_GPIO0 11 | ||
291 | #define IRQ_PRCMU_GPIO1 12 | ||
292 | #define IRQ_PRCMU_GPIO2 13 | ||
293 | #define IRQ_PRCMU_GPIO3 14 | ||
294 | #define IRQ_PRCMU_GPIO4 15 | ||
295 | #define IRQ_PRCMU_GPIO5 16 | ||
296 | #define IRQ_PRCMU_GPIO6 17 | ||
297 | #define IRQ_PRCMU_GPIO7 18 | ||
298 | #define IRQ_PRCMU_GPIO8 19 | ||
299 | #define IRQ_PRCMU_CA_SLEEP 20 | ||
300 | #define IRQ_PRCMU_HOTMON_LOW 21 | ||
301 | #define IRQ_PRCMU_HOTMON_HIGH 22 | ||
302 | #define NUM_PRCMU_WAKEUPS 23 | ||
303 | |||
281 | static u32 prcmu_irq_bit[NUM_PRCMU_WAKEUPS] = { | 304 | static u32 prcmu_irq_bit[NUM_PRCMU_WAKEUPS] = { |
282 | IRQ_ENTRY(RTC), | 305 | IRQ_ENTRY(RTC), |
283 | IRQ_ENTRY(RTT0), | 306 | IRQ_ENTRY(RTT0), |
@@ -422,9 +445,10 @@ static DEFINE_SPINLOCK(clkout_lock); | |||
422 | 445 | ||
423 | /* Global var to runtime determine TCDM base for v2 or v1 */ | 446 | /* Global var to runtime determine TCDM base for v2 or v1 */ |
424 | static __iomem void *tcdm_base; | 447 | static __iomem void *tcdm_base; |
448 | static __iomem void *prcmu_base; | ||
425 | 449 | ||
426 | struct clk_mgt { | 450 | struct clk_mgt { |
427 | void __iomem *reg; | 451 | u32 offset; |
428 | u32 pllsw; | 452 | u32 pllsw; |
429 | int branch; | 453 | int branch; |
430 | bool clk38div; | 454 | bool clk38div; |
@@ -599,9 +623,9 @@ int db8500_prcmu_set_display_clocks(void) | |||
599 | while ((readl(PRCM_SEM) & PRCM_SEM_PRCM_SEM) != 0) | 623 | while ((readl(PRCM_SEM) & PRCM_SEM_PRCM_SEM) != 0) |
600 | cpu_relax(); | 624 | cpu_relax(); |
601 | 625 | ||
602 | writel(PRCMU_DSI_CLOCK_SETTING, PRCM_HDMICLK_MGT); | 626 | writel(PRCMU_DSI_CLOCK_SETTING, prcmu_base + PRCM_HDMICLK_MGT); |
603 | writel(PRCMU_DSI_LP_CLOCK_SETTING, PRCM_TVCLK_MGT); | 627 | writel(PRCMU_DSI_LP_CLOCK_SETTING, prcmu_base + PRCM_TVCLK_MGT); |
604 | writel(PRCMU_DPI_CLOCK_SETTING, PRCM_LCDCLK_MGT); | 628 | writel(PRCMU_DPI_CLOCK_SETTING, prcmu_base + PRCM_LCDCLK_MGT); |
605 | 629 | ||
606 | /* Release the HW semaphore. */ | 630 | /* Release the HW semaphore. */ |
607 | writel(0, PRCM_SEM); | 631 | writel(0, PRCM_SEM); |
@@ -613,7 +637,7 @@ int db8500_prcmu_set_display_clocks(void) | |||
613 | 637 | ||
614 | u32 db8500_prcmu_read(unsigned int reg) | 638 | u32 db8500_prcmu_read(unsigned int reg) |
615 | { | 639 | { |
616 | return readl(_PRCMU_BASE + reg); | 640 | return readl(prcmu_base + reg); |
617 | } | 641 | } |
618 | 642 | ||
619 | void db8500_prcmu_write(unsigned int reg, u32 value) | 643 | void db8500_prcmu_write(unsigned int reg, u32 value) |
@@ -621,7 +645,7 @@ void db8500_prcmu_write(unsigned int reg, u32 value) | |||
621 | unsigned long flags; | 645 | unsigned long flags; |
622 | 646 | ||
623 | spin_lock_irqsave(&prcmu_lock, flags); | 647 | spin_lock_irqsave(&prcmu_lock, flags); |
624 | writel(value, (_PRCMU_BASE + reg)); | 648 | writel(value, (prcmu_base + reg)); |
625 | spin_unlock_irqrestore(&prcmu_lock, flags); | 649 | spin_unlock_irqrestore(&prcmu_lock, flags); |
626 | } | 650 | } |
627 | 651 | ||
@@ -631,9 +655,9 @@ void db8500_prcmu_write_masked(unsigned int reg, u32 mask, u32 value) | |||
631 | unsigned long flags; | 655 | unsigned long flags; |
632 | 656 | ||
633 | spin_lock_irqsave(&prcmu_lock, flags); | 657 | spin_lock_irqsave(&prcmu_lock, flags); |
634 | val = readl(_PRCMU_BASE + reg); | 658 | val = readl(prcmu_base + reg); |
635 | val = ((val & ~mask) | (value & mask)); | 659 | val = ((val & ~mask) | (value & mask)); |
636 | writel(val, (_PRCMU_BASE + reg)); | 660 | writel(val, (prcmu_base + reg)); |
637 | spin_unlock_irqrestore(&prcmu_lock, flags); | 661 | spin_unlock_irqrestore(&prcmu_lock, flags); |
638 | } | 662 | } |
639 | 663 | ||
@@ -793,119 +817,6 @@ u8 db8500_prcmu_get_power_state_result(void) | |||
793 | return readb(tcdm_base + PRCM_ACK_MB0_AP_PWRSTTR_STATUS); | 817 | return readb(tcdm_base + PRCM_ACK_MB0_AP_PWRSTTR_STATUS); |
794 | } | 818 | } |
795 | 819 | ||
796 | /* This function decouple the gic from the prcmu */ | ||
797 | int db8500_prcmu_gic_decouple(void) | ||
798 | { | ||
799 | u32 val = readl(PRCM_A9_MASK_REQ); | ||
800 | |||
801 | /* Set bit 0 register value to 1 */ | ||
802 | writel(val | PRCM_A9_MASK_REQ_PRCM_A9_MASK_REQ, | ||
803 | PRCM_A9_MASK_REQ); | ||
804 | |||
805 | /* Make sure the register is updated */ | ||
806 | readl(PRCM_A9_MASK_REQ); | ||
807 | |||
808 | /* Wait a few cycles for the gic mask completion */ | ||
809 | udelay(1); | ||
810 | |||
811 | return 0; | ||
812 | } | ||
813 | |||
814 | /* This function recouple the gic with the prcmu */ | ||
815 | int db8500_prcmu_gic_recouple(void) | ||
816 | { | ||
817 | u32 val = readl(PRCM_A9_MASK_REQ); | ||
818 | |||
819 | /* Set bit 0 register value to 0 */ | ||
820 | writel(val & ~PRCM_A9_MASK_REQ_PRCM_A9_MASK_REQ, PRCM_A9_MASK_REQ); | ||
821 | |||
822 | return 0; | ||
823 | } | ||
824 | |||
825 | #define PRCMU_GIC_NUMBER_REGS 5 | ||
826 | |||
827 | /* | ||
828 | * This function checks if there are pending irq on the gic. It only | ||
829 | * makes sense if the gic has been decoupled before with the | ||
830 | * db8500_prcmu_gic_decouple function. Disabling an interrupt only | ||
831 | * disables the forwarding of the interrupt to any CPU interface. It | ||
832 | * does not prevent the interrupt from changing state, for example | ||
833 | * becoming pending, or active and pending if it is already | ||
834 | * active. Hence, we have to check the interrupt is pending *and* is | ||
835 | * active. | ||
836 | */ | ||
837 | bool db8500_prcmu_gic_pending_irq(void) | ||
838 | { | ||
839 | u32 pr; /* Pending register */ | ||
840 | u32 er; /* Enable register */ | ||
841 | void __iomem *dist_base = __io_address(U8500_GIC_DIST_BASE); | ||
842 | int i; | ||
843 | |||
844 | /* 5 registers. STI & PPI not skipped */ | ||
845 | for (i = 0; i < PRCMU_GIC_NUMBER_REGS; i++) { | ||
846 | |||
847 | pr = readl_relaxed(dist_base + GIC_DIST_PENDING_SET + i * 4); | ||
848 | er = readl_relaxed(dist_base + GIC_DIST_ENABLE_SET + i * 4); | ||
849 | |||
850 | if (pr & er) | ||
851 | return true; /* There is a pending interrupt */ | ||
852 | } | ||
853 | |||
854 | return false; | ||
855 | } | ||
856 | |||
857 | /* | ||
858 | * This function checks if there are pending interrupt on the | ||
859 | * prcmu which has been delegated to monitor the irqs with the | ||
860 | * db8500_prcmu_copy_gic_settings function. | ||
861 | */ | ||
862 | bool db8500_prcmu_pending_irq(void) | ||
863 | { | ||
864 | u32 it, im; | ||
865 | int i; | ||
866 | |||
867 | for (i = 0; i < PRCMU_GIC_NUMBER_REGS - 1; i++) { | ||
868 | it = readl(PRCM_ARMITVAL31TO0 + i * 4); | ||
869 | im = readl(PRCM_ARMITMSK31TO0 + i * 4); | ||
870 | if (it & im) | ||
871 | return true; /* There is a pending interrupt */ | ||
872 | } | ||
873 | |||
874 | return false; | ||
875 | } | ||
876 | |||
877 | /* | ||
878 | * This function checks if the specified cpu is in in WFI. It's usage | ||
879 | * makes sense only if the gic is decoupled with the db8500_prcmu_gic_decouple | ||
880 | * function. Of course passing smp_processor_id() to this function will | ||
881 | * always return false... | ||
882 | */ | ||
883 | bool db8500_prcmu_is_cpu_in_wfi(int cpu) | ||
884 | { | ||
885 | return readl(PRCM_ARM_WFI_STANDBY) & cpu ? PRCM_ARM_WFI_STANDBY_WFI1 : | ||
886 | PRCM_ARM_WFI_STANDBY_WFI0; | ||
887 | } | ||
888 | |||
889 | /* | ||
890 | * This function copies the gic SPI settings to the prcmu in order to | ||
891 | * monitor them and abort/finish the retention/off sequence or state. | ||
892 | */ | ||
893 | int db8500_prcmu_copy_gic_settings(void) | ||
894 | { | ||
895 | u32 er; /* Enable register */ | ||
896 | void __iomem *dist_base = __io_address(U8500_GIC_DIST_BASE); | ||
897 | int i; | ||
898 | |||
899 | /* We skip the STI and PPI */ | ||
900 | for (i = 0; i < PRCMU_GIC_NUMBER_REGS - 1; i++) { | ||
901 | er = readl_relaxed(dist_base + | ||
902 | GIC_DIST_ENABLE_SET + (i + 1) * 4); | ||
903 | writel(er, PRCM_ARMITMSK31TO0 + i * 4); | ||
904 | } | ||
905 | |||
906 | return 0; | ||
907 | } | ||
908 | |||
909 | /* This function should only be called while mb0_transfer.lock is held. */ | 820 | /* This function should only be called while mb0_transfer.lock is held. */ |
910 | static void config_wakeups(void) | 821 | static void config_wakeups(void) |
911 | { | 822 | { |
@@ -1059,7 +970,7 @@ int db8500_prcmu_set_ddr_opp(u8 opp) | |||
1059 | /* Divide the frequency of certain clocks by 2 for APE_50_PARTLY_25_OPP. */ | 970 | /* Divide the frequency of certain clocks by 2 for APE_50_PARTLY_25_OPP. */ |
1060 | static void request_even_slower_clocks(bool enable) | 971 | static void request_even_slower_clocks(bool enable) |
1061 | { | 972 | { |
1062 | void __iomem *clock_reg[] = { | 973 | u32 clock_reg[] = { |
1063 | PRCM_ACLK_MGT, | 974 | PRCM_ACLK_MGT, |
1064 | PRCM_DMACLK_MGT | 975 | PRCM_DMACLK_MGT |
1065 | }; | 976 | }; |
@@ -1076,7 +987,7 @@ static void request_even_slower_clocks(bool enable) | |||
1076 | u32 val; | 987 | u32 val; |
1077 | u32 div; | 988 | u32 div; |
1078 | 989 | ||
1079 | val = readl(clock_reg[i]); | 990 | val = readl(prcmu_base + clock_reg[i]); |
1080 | div = (val & PRCM_CLK_MGT_CLKPLLDIV_MASK); | 991 | div = (val & PRCM_CLK_MGT_CLKPLLDIV_MASK); |
1081 | if (enable) { | 992 | if (enable) { |
1082 | if ((div <= 1) || (div > 15)) { | 993 | if ((div <= 1) || (div > 15)) { |
@@ -1092,7 +1003,7 @@ static void request_even_slower_clocks(bool enable) | |||
1092 | } | 1003 | } |
1093 | val = ((val & ~PRCM_CLK_MGT_CLKPLLDIV_MASK) | | 1004 | val = ((val & ~PRCM_CLK_MGT_CLKPLLDIV_MASK) | |
1094 | (div & PRCM_CLK_MGT_CLKPLLDIV_MASK)); | 1005 | (div & PRCM_CLK_MGT_CLKPLLDIV_MASK)); |
1095 | writel(val, clock_reg[i]); | 1006 | writel(val, prcmu_base + clock_reg[i]); |
1096 | } | 1007 | } |
1097 | 1008 | ||
1098 | unlock_and_return: | 1009 | unlock_and_return: |
@@ -1446,14 +1357,14 @@ static int request_clock(u8 clock, bool enable) | |||
1446 | while ((readl(PRCM_SEM) & PRCM_SEM_PRCM_SEM) != 0) | 1357 | while ((readl(PRCM_SEM) & PRCM_SEM_PRCM_SEM) != 0) |
1447 | cpu_relax(); | 1358 | cpu_relax(); |
1448 | 1359 | ||
1449 | val = readl(clk_mgt[clock].reg); | 1360 | val = readl(prcmu_base + clk_mgt[clock].offset); |
1450 | if (enable) { | 1361 | if (enable) { |
1451 | val |= (PRCM_CLK_MGT_CLKEN | clk_mgt[clock].pllsw); | 1362 | val |= (PRCM_CLK_MGT_CLKEN | clk_mgt[clock].pllsw); |
1452 | } else { | 1363 | } else { |
1453 | clk_mgt[clock].pllsw = (val & PRCM_CLK_MGT_CLKPLLSW_MASK); | 1364 | clk_mgt[clock].pllsw = (val & PRCM_CLK_MGT_CLKPLLSW_MASK); |
1454 | val &= ~(PRCM_CLK_MGT_CLKEN | PRCM_CLK_MGT_CLKPLLSW_MASK); | 1365 | val &= ~(PRCM_CLK_MGT_CLKEN | PRCM_CLK_MGT_CLKPLLSW_MASK); |
1455 | } | 1366 | } |
1456 | writel(val, clk_mgt[clock].reg); | 1367 | writel(val, prcmu_base + clk_mgt[clock].offset); |
1457 | 1368 | ||
1458 | /* Release the HW semaphore. */ | 1369 | /* Release the HW semaphore. */ |
1459 | writel(0, PRCM_SEM); | 1370 | writel(0, PRCM_SEM); |
@@ -1629,7 +1540,7 @@ static unsigned long clock_rate(u8 clock) | |||
1629 | u32 pllsw; | 1540 | u32 pllsw; |
1630 | unsigned long rate = ROOT_CLOCK_RATE; | 1541 | unsigned long rate = ROOT_CLOCK_RATE; |
1631 | 1542 | ||
1632 | val = readl(clk_mgt[clock].reg); | 1543 | val = readl(prcmu_base + clk_mgt[clock].offset); |
1633 | 1544 | ||
1634 | if (val & PRCM_CLK_MGT_CLK38) { | 1545 | if (val & PRCM_CLK_MGT_CLK38) { |
1635 | if (clk_mgt[clock].clk38div && (val & PRCM_CLK_MGT_CLK38DIV)) | 1546 | if (clk_mgt[clock].clk38div && (val & PRCM_CLK_MGT_CLK38DIV)) |
@@ -1785,7 +1696,7 @@ static long round_clock_rate(u8 clock, unsigned long rate) | |||
1785 | unsigned long src_rate; | 1696 | unsigned long src_rate; |
1786 | long rounded_rate; | 1697 | long rounded_rate; |
1787 | 1698 | ||
1788 | val = readl(clk_mgt[clock].reg); | 1699 | val = readl(prcmu_base + clk_mgt[clock].offset); |
1789 | src_rate = clock_source_rate((val | clk_mgt[clock].pllsw), | 1700 | src_rate = clock_source_rate((val | clk_mgt[clock].pllsw), |
1790 | clk_mgt[clock].branch); | 1701 | clk_mgt[clock].branch); |
1791 | div = clock_divider(src_rate, rate); | 1702 | div = clock_divider(src_rate, rate); |
@@ -1933,7 +1844,7 @@ static void set_clock_rate(u8 clock, unsigned long rate) | |||
1933 | while ((readl(PRCM_SEM) & PRCM_SEM_PRCM_SEM) != 0) | 1844 | while ((readl(PRCM_SEM) & PRCM_SEM_PRCM_SEM) != 0) |
1934 | cpu_relax(); | 1845 | cpu_relax(); |
1935 | 1846 | ||
1936 | val = readl(clk_mgt[clock].reg); | 1847 | val = readl(prcmu_base + clk_mgt[clock].offset); |
1937 | src_rate = clock_source_rate((val | clk_mgt[clock].pllsw), | 1848 | src_rate = clock_source_rate((val | clk_mgt[clock].pllsw), |
1938 | clk_mgt[clock].branch); | 1849 | clk_mgt[clock].branch); |
1939 | div = clock_divider(src_rate, rate); | 1850 | div = clock_divider(src_rate, rate); |
@@ -1961,7 +1872,7 @@ static void set_clock_rate(u8 clock, unsigned long rate) | |||
1961 | val &= ~PRCM_CLK_MGT_CLKPLLDIV_MASK; | 1872 | val &= ~PRCM_CLK_MGT_CLKPLLDIV_MASK; |
1962 | val |= min(div, (u32)31); | 1873 | val |= min(div, (u32)31); |
1963 | } | 1874 | } |
1964 | writel(val, clk_mgt[clock].reg); | 1875 | writel(val, prcmu_base + clk_mgt[clock].offset); |
1965 | 1876 | ||
1966 | /* Release the HW semaphore. */ | 1877 | /* Release the HW semaphore. */ |
1967 | writel(0, PRCM_SEM); | 1878 | writel(0, PRCM_SEM); |
@@ -2764,14 +2675,13 @@ static struct irq_domain_ops db8500_irq_ops = { | |||
2764 | .xlate = irq_domain_xlate_twocell, | 2675 | .xlate = irq_domain_xlate_twocell, |
2765 | }; | 2676 | }; |
2766 | 2677 | ||
2767 | static int db8500_irq_init(struct device_node *np) | 2678 | static int db8500_irq_init(struct device_node *np, int irq_base) |
2768 | { | 2679 | { |
2769 | int irq_base = 0; | ||
2770 | int i; | 2680 | int i; |
2771 | 2681 | ||
2772 | /* In the device tree case, just take some IRQs */ | 2682 | /* In the device tree case, just take some IRQs */ |
2773 | if (!np) | 2683 | if (np) |
2774 | irq_base = IRQ_PRCMU_BASE; | 2684 | irq_base = 0; |
2775 | 2685 | ||
2776 | db8500_irq_domain = irq_domain_add_simple( | 2686 | db8500_irq_domain = irq_domain_add_simple( |
2777 | np, NUM_PRCMU_WAKEUPS, irq_base, | 2687 | np, NUM_PRCMU_WAKEUPS, irq_base, |
@@ -2825,8 +2735,19 @@ static void dbx500_fw_version_init(struct platform_device *pdev, | |||
2825 | } | 2735 | } |
2826 | } | 2736 | } |
2827 | 2737 | ||
2828 | void __init db8500_prcmu_early_init(void) | 2738 | void __init db8500_prcmu_early_init(u32 phy_base, u32 size) |
2829 | { | 2739 | { |
2740 | /* | ||
2741 | * This is a temporary remap to bring up the clocks. It is | ||
2742 | * subsequently replaces with a real remap. After the merge of | ||
2743 | * the mailbox subsystem all of this early code goes away, and the | ||
2744 | * clock driver can probe independently. An early initcall will | ||
2745 | * still be needed, but it can be diverted into drivers/clk/ux500. | ||
2746 | */ | ||
2747 | prcmu_base = ioremap(phy_base, size); | ||
2748 | if (!prcmu_base) | ||
2749 | pr_err("%s: ioremap() of prcmu registers failed!\n", __func__); | ||
2750 | |||
2830 | spin_lock_init(&mb0_transfer.lock); | 2751 | spin_lock_init(&mb0_transfer.lock); |
2831 | spin_lock_init(&mb0_transfer.dbb_irqs_lock); | 2752 | spin_lock_init(&mb0_transfer.dbb_irqs_lock); |
2832 | mutex_init(&mb0_transfer.ac_wake_lock); | 2753 | mutex_init(&mb0_transfer.ac_wake_lock); |
@@ -3092,18 +3013,57 @@ static struct regulator_init_data db8500_regulators[DB8500_NUM_REGULATORS] = { | |||
3092 | }, | 3013 | }, |
3093 | }; | 3014 | }; |
3094 | 3015 | ||
3095 | static struct resource ab8500_resources[] = { | ||
3096 | [0] = { | ||
3097 | .start = IRQ_DB8500_AB8500, | ||
3098 | .end = IRQ_DB8500_AB8500, | ||
3099 | .flags = IORESOURCE_IRQ | ||
3100 | } | ||
3101 | }; | ||
3102 | |||
3103 | static struct ux500_wdt_data db8500_wdt_pdata = { | 3016 | static struct ux500_wdt_data db8500_wdt_pdata = { |
3104 | .timeout = 600, /* 10 minutes */ | 3017 | .timeout = 600, /* 10 minutes */ |
3105 | .has_28_bits_resolution = true, | 3018 | .has_28_bits_resolution = true, |
3106 | }; | 3019 | }; |
3020 | /* | ||
3021 | * Thermal Sensor | ||
3022 | */ | ||
3023 | |||
3024 | static struct resource db8500_thsens_resources[] = { | ||
3025 | { | ||
3026 | .name = "IRQ_HOTMON_LOW", | ||
3027 | .start = IRQ_PRCMU_HOTMON_LOW, | ||
3028 | .end = IRQ_PRCMU_HOTMON_LOW, | ||
3029 | .flags = IORESOURCE_IRQ, | ||
3030 | }, | ||
3031 | { | ||
3032 | .name = "IRQ_HOTMON_HIGH", | ||
3033 | .start = IRQ_PRCMU_HOTMON_HIGH, | ||
3034 | .end = IRQ_PRCMU_HOTMON_HIGH, | ||
3035 | .flags = IORESOURCE_IRQ, | ||
3036 | }, | ||
3037 | }; | ||
3038 | |||
3039 | static struct db8500_thsens_platform_data db8500_thsens_data = { | ||
3040 | .trip_points[0] = { | ||
3041 | .temp = 70000, | ||
3042 | .type = THERMAL_TRIP_ACTIVE, | ||
3043 | .cdev_name = { | ||
3044 | [0] = "thermal-cpufreq-0", | ||
3045 | }, | ||
3046 | }, | ||
3047 | .trip_points[1] = { | ||
3048 | .temp = 75000, | ||
3049 | .type = THERMAL_TRIP_ACTIVE, | ||
3050 | .cdev_name = { | ||
3051 | [0] = "thermal-cpufreq-0", | ||
3052 | }, | ||
3053 | }, | ||
3054 | .trip_points[2] = { | ||
3055 | .temp = 80000, | ||
3056 | .type = THERMAL_TRIP_ACTIVE, | ||
3057 | .cdev_name = { | ||
3058 | [0] = "thermal-cpufreq-0", | ||
3059 | }, | ||
3060 | }, | ||
3061 | .trip_points[3] = { | ||
3062 | .temp = 85000, | ||
3063 | .type = THERMAL_TRIP_CRITICAL, | ||
3064 | }, | ||
3065 | .num_trips = 4, | ||
3066 | }; | ||
3107 | 3067 | ||
3108 | static struct mfd_cell db8500_prcmu_devs[] = { | 3068 | static struct mfd_cell db8500_prcmu_devs[] = { |
3109 | { | 3069 | { |
@@ -3125,11 +3085,10 @@ static struct mfd_cell db8500_prcmu_devs[] = { | |||
3125 | .id = -1, | 3085 | .id = -1, |
3126 | }, | 3086 | }, |
3127 | { | 3087 | { |
3128 | .name = "ab8500-core", | 3088 | .name = "db8500-thermal", |
3129 | .of_compatible = "stericsson,ab8500", | 3089 | .num_resources = ARRAY_SIZE(db8500_thsens_resources), |
3130 | .num_resources = ARRAY_SIZE(ab8500_resources), | 3090 | .resources = db8500_thsens_resources, |
3131 | .resources = ab8500_resources, | 3091 | .platform_data = &db8500_thsens_data, |
3132 | .id = AB8500_VERSION_AB8500, | ||
3133 | }, | 3092 | }, |
3134 | }; | 3093 | }; |
3135 | 3094 | ||
@@ -3141,6 +3100,24 @@ static void db8500_prcmu_update_cpufreq(void) | |||
3141 | } | 3100 | } |
3142 | } | 3101 | } |
3143 | 3102 | ||
3103 | static int db8500_prcmu_register_ab8500(struct device *parent, | ||
3104 | struct ab8500_platform_data *pdata, | ||
3105 | int irq) | ||
3106 | { | ||
3107 | struct resource ab8500_resource = DEFINE_RES_IRQ(irq); | ||
3108 | struct mfd_cell ab8500_cell = { | ||
3109 | .name = "ab8500-core", | ||
3110 | .of_compatible = "stericsson,ab8500", | ||
3111 | .id = AB8500_VERSION_AB8500, | ||
3112 | .platform_data = pdata, | ||
3113 | .pdata_size = sizeof(struct ab8500_platform_data), | ||
3114 | .resources = &ab8500_resource, | ||
3115 | .num_resources = 1, | ||
3116 | }; | ||
3117 | |||
3118 | return mfd_add_devices(parent, 0, &ab8500_cell, 1, NULL, 0, NULL); | ||
3119 | } | ||
3120 | |||
3144 | /** | 3121 | /** |
3145 | * prcmu_fw_init - arch init call for the Linux PRCMU fw init logic | 3122 | * prcmu_fw_init - arch init call for the Linux PRCMU fw init logic |
3146 | * | 3123 | * |
@@ -3149,11 +3126,21 @@ static int db8500_prcmu_probe(struct platform_device *pdev) | |||
3149 | { | 3126 | { |
3150 | struct device_node *np = pdev->dev.of_node; | 3127 | struct device_node *np = pdev->dev.of_node; |
3151 | struct prcmu_pdata *pdata = dev_get_platdata(&pdev->dev); | 3128 | struct prcmu_pdata *pdata = dev_get_platdata(&pdev->dev); |
3152 | int irq = 0, err = 0, i; | 3129 | int irq = 0, err = 0; |
3153 | struct resource *res; | 3130 | struct resource *res; |
3154 | 3131 | ||
3132 | res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "prcmu"); | ||
3133 | if (!res) { | ||
3134 | dev_err(&pdev->dev, "no prcmu memory region provided\n"); | ||
3135 | return -ENOENT; | ||
3136 | } | ||
3137 | prcmu_base = devm_ioremap(&pdev->dev, res->start, resource_size(res)); | ||
3138 | if (!prcmu_base) { | ||
3139 | dev_err(&pdev->dev, | ||
3140 | "failed to ioremap prcmu register memory\n"); | ||
3141 | return -ENOENT; | ||
3142 | } | ||
3155 | init_prcm_registers(); | 3143 | init_prcm_registers(); |
3156 | |||
3157 | dbx500_fw_version_init(pdev, pdata->version_offset); | 3144 | dbx500_fw_version_init(pdev, pdata->version_offset); |
3158 | res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "prcmu-tcdm"); | 3145 | res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "prcmu-tcdm"); |
3159 | if (!res) { | 3146 | if (!res) { |
@@ -3180,26 +3167,27 @@ static int db8500_prcmu_probe(struct platform_device *pdev) | |||
3180 | goto no_irq_return; | 3167 | goto no_irq_return; |
3181 | } | 3168 | } |
3182 | 3169 | ||
3183 | db8500_irq_init(np); | 3170 | db8500_irq_init(np, pdata->irq_base); |
3184 | |||
3185 | for (i = 0; i < ARRAY_SIZE(db8500_prcmu_devs); i++) { | ||
3186 | if (!strcmp(db8500_prcmu_devs[i].name, "ab8500-core")) { | ||
3187 | db8500_prcmu_devs[i].platform_data = pdata->ab_platdata; | ||
3188 | db8500_prcmu_devs[i].pdata_size = sizeof(struct ab8500_platform_data); | ||
3189 | } | ||
3190 | } | ||
3191 | 3171 | ||
3192 | prcmu_config_esram0_deep_sleep(ESRAM0_DEEP_SLEEP_STATE_RET); | 3172 | prcmu_config_esram0_deep_sleep(ESRAM0_DEEP_SLEEP_STATE_RET); |
3193 | 3173 | ||
3194 | db8500_prcmu_update_cpufreq(); | 3174 | db8500_prcmu_update_cpufreq(); |
3195 | 3175 | ||
3196 | err = mfd_add_devices(&pdev->dev, 0, db8500_prcmu_devs, | 3176 | err = mfd_add_devices(&pdev->dev, 0, db8500_prcmu_devs, |
3197 | ARRAY_SIZE(db8500_prcmu_devs), NULL, 0, NULL); | 3177 | ARRAY_SIZE(db8500_prcmu_devs), NULL, 0, db8500_irq_domain); |
3198 | if (err) { | 3178 | if (err) { |
3199 | pr_err("prcmu: Failed to add subdevices\n"); | 3179 | pr_err("prcmu: Failed to add subdevices\n"); |
3200 | return err; | 3180 | return err; |
3201 | } | 3181 | } |
3202 | 3182 | ||
3183 | err = db8500_prcmu_register_ab8500(&pdev->dev, pdata->ab_platdata, | ||
3184 | pdata->ab_irq); | ||
3185 | if (err) { | ||
3186 | mfd_remove_devices(&pdev->dev); | ||
3187 | pr_err("prcmu: Failed to add ab8500 subdevice\n"); | ||
3188 | goto no_irq_return; | ||
3189 | } | ||
3190 | |||
3203 | pr_info("DB8500 PRCMU initialized\n"); | 3191 | pr_info("DB8500 PRCMU initialized\n"); |
3204 | 3192 | ||
3205 | no_irq_return: | 3193 | no_irq_return: |
diff --git a/drivers/mfd/dbx500-prcmu-regs.h b/drivers/mfd/dbx500-prcmu-regs.h index 79c76ebdba52..d14836ed2114 100644 --- a/drivers/mfd/dbx500-prcmu-regs.h +++ b/drivers/mfd/dbx500-prcmu-regs.h | |||
@@ -13,136 +13,110 @@ | |||
13 | #ifndef __DB8500_PRCMU_REGS_H | 13 | #ifndef __DB8500_PRCMU_REGS_H |
14 | #define __DB8500_PRCMU_REGS_H | 14 | #define __DB8500_PRCMU_REGS_H |
15 | 15 | ||
16 | #include <mach/hardware.h> | ||
17 | |||
18 | #define BITS(_start, _end) ((BIT(_end) - BIT(_start)) + BIT(_end)) | 16 | #define BITS(_start, _end) ((BIT(_end) - BIT(_start)) + BIT(_end)) |
19 | 17 | ||
20 | #define PRCM_CLK_MGT(_offset) (void __iomem *)(IO_ADDRESS(U8500_PRCMU_BASE) \ | 18 | #define PRCM_ACLK_MGT (0x004) |
21 | + _offset) | 19 | #define PRCM_SVACLK_MGT (0x008) |
22 | #define PRCM_ACLK_MGT PRCM_CLK_MGT(0x004) | 20 | #define PRCM_SIACLK_MGT (0x00C) |
23 | #define PRCM_SVACLK_MGT PRCM_CLK_MGT(0x008) | 21 | #define PRCM_SGACLK_MGT (0x014) |
24 | #define PRCM_SIACLK_MGT PRCM_CLK_MGT(0x00C) | 22 | #define PRCM_UARTCLK_MGT (0x018) |
25 | #define PRCM_SGACLK_MGT PRCM_CLK_MGT(0x014) | 23 | #define PRCM_MSP02CLK_MGT (0x01C) |
26 | #define PRCM_UARTCLK_MGT PRCM_CLK_MGT(0x018) | 24 | #define PRCM_I2CCLK_MGT (0x020) |
27 | #define PRCM_MSP02CLK_MGT PRCM_CLK_MGT(0x01C) | 25 | #define PRCM_SDMMCCLK_MGT (0x024) |
28 | #define PRCM_I2CCLK_MGT PRCM_CLK_MGT(0x020) | 26 | #define PRCM_SLIMCLK_MGT (0x028) |
29 | #define PRCM_SDMMCCLK_MGT PRCM_CLK_MGT(0x024) | 27 | #define PRCM_PER1CLK_MGT (0x02C) |
30 | #define PRCM_SLIMCLK_MGT PRCM_CLK_MGT(0x028) | 28 | #define PRCM_PER2CLK_MGT (0x030) |
31 | #define PRCM_PER1CLK_MGT PRCM_CLK_MGT(0x02C) | 29 | #define PRCM_PER3CLK_MGT (0x034) |
32 | #define PRCM_PER2CLK_MGT PRCM_CLK_MGT(0x030) | 30 | #define PRCM_PER5CLK_MGT (0x038) |
33 | #define PRCM_PER3CLK_MGT PRCM_CLK_MGT(0x034) | 31 | #define PRCM_PER6CLK_MGT (0x03C) |
34 | #define PRCM_PER5CLK_MGT PRCM_CLK_MGT(0x038) | 32 | #define PRCM_PER7CLK_MGT (0x040) |
35 | #define PRCM_PER6CLK_MGT PRCM_CLK_MGT(0x03C) | 33 | #define PRCM_LCDCLK_MGT (0x044) |
36 | #define PRCM_PER7CLK_MGT PRCM_CLK_MGT(0x040) | 34 | #define PRCM_BMLCLK_MGT (0x04C) |
37 | #define PRCM_LCDCLK_MGT PRCM_CLK_MGT(0x044) | 35 | #define PRCM_HSITXCLK_MGT (0x050) |
38 | #define PRCM_BMLCLK_MGT PRCM_CLK_MGT(0x04C) | 36 | #define PRCM_HSIRXCLK_MGT (0x054) |
39 | #define PRCM_HSITXCLK_MGT PRCM_CLK_MGT(0x050) | 37 | #define PRCM_HDMICLK_MGT (0x058) |
40 | #define PRCM_HSIRXCLK_MGT PRCM_CLK_MGT(0x054) | 38 | #define PRCM_APEATCLK_MGT (0x05C) |
41 | #define PRCM_HDMICLK_MGT PRCM_CLK_MGT(0x058) | 39 | #define PRCM_APETRACECLK_MGT (0x060) |
42 | #define PRCM_APEATCLK_MGT PRCM_CLK_MGT(0x05C) | 40 | #define PRCM_MCDECLK_MGT (0x064) |
43 | #define PRCM_APETRACECLK_MGT PRCM_CLK_MGT(0x060) | 41 | #define PRCM_IPI2CCLK_MGT (0x068) |
44 | #define PRCM_MCDECLK_MGT PRCM_CLK_MGT(0x064) | 42 | #define PRCM_DSIALTCLK_MGT (0x06C) |
45 | #define PRCM_IPI2CCLK_MGT PRCM_CLK_MGT(0x068) | 43 | #define PRCM_DMACLK_MGT (0x074) |
46 | #define PRCM_DSIALTCLK_MGT PRCM_CLK_MGT(0x06C) | 44 | #define PRCM_B2R2CLK_MGT (0x078) |
47 | #define PRCM_DMACLK_MGT PRCM_CLK_MGT(0x074) | 45 | #define PRCM_TVCLK_MGT (0x07C) |
48 | #define PRCM_B2R2CLK_MGT PRCM_CLK_MGT(0x078) | 46 | #define PRCM_UNIPROCLK_MGT (0x278) |
49 | #define PRCM_TVCLK_MGT PRCM_CLK_MGT(0x07C) | 47 | #define PRCM_SSPCLK_MGT (0x280) |
50 | #define PRCM_UNIPROCLK_MGT PRCM_CLK_MGT(0x278) | 48 | #define PRCM_RNGCLK_MGT (0x284) |
51 | #define PRCM_SSPCLK_MGT PRCM_CLK_MGT(0x280) | 49 | #define PRCM_UICCCLK_MGT (0x27C) |
52 | #define PRCM_RNGCLK_MGT PRCM_CLK_MGT(0x284) | 50 | #define PRCM_MSP1CLK_MGT (0x288) |
53 | #define PRCM_UICCCLK_MGT PRCM_CLK_MGT(0x27C) | 51 | |
54 | #define PRCM_MSP1CLK_MGT PRCM_CLK_MGT(0x288) | 52 | #define PRCM_ARM_PLLDIVPS (prcmu_base + 0x118) |
55 | |||
56 | #define PRCM_ARM_PLLDIVPS (_PRCMU_BASE + 0x118) | ||
57 | #define PRCM_ARM_PLLDIVPS_ARM_BRM_RATE 0x3f | 53 | #define PRCM_ARM_PLLDIVPS_ARM_BRM_RATE 0x3f |
58 | #define PRCM_ARM_PLLDIVPS_MAX_MASK 0xf | 54 | #define PRCM_ARM_PLLDIVPS_MAX_MASK 0xf |
59 | 55 | ||
60 | #define PRCM_PLLARM_LOCKP (_PRCMU_BASE + 0x0a8) | 56 | #define PRCM_PLLARM_LOCKP (prcmu_base + 0x0a8) |
61 | #define PRCM_PLLARM_LOCKP_PRCM_PLLARM_LOCKP3 0x2 | 57 | #define PRCM_PLLARM_LOCKP_PRCM_PLLARM_LOCKP3 0x2 |
62 | 58 | ||
63 | #define PRCM_ARM_CHGCLKREQ (_PRCMU_BASE + 0x114) | 59 | #define PRCM_ARM_CHGCLKREQ (prcmu_base + 0x114) |
64 | #define PRCM_ARM_CHGCLKREQ_PRCM_ARM_CHGCLKREQ BIT(0) | 60 | #define PRCM_ARM_CHGCLKREQ_PRCM_ARM_CHGCLKREQ BIT(0) |
65 | #define PRCM_ARM_CHGCLKREQ_PRCM_ARM_DIVSEL BIT(16) | 61 | #define PRCM_ARM_CHGCLKREQ_PRCM_ARM_DIVSEL BIT(16) |
66 | 62 | ||
67 | #define PRCM_PLLARM_ENABLE (_PRCMU_BASE + 0x98) | 63 | #define PRCM_PLLARM_ENABLE (prcmu_base + 0x98) |
68 | #define PRCM_PLLARM_ENABLE_PRCM_PLLARM_ENABLE 0x1 | 64 | #define PRCM_PLLARM_ENABLE_PRCM_PLLARM_ENABLE 0x1 |
69 | #define PRCM_PLLARM_ENABLE_PRCM_PLLARM_COUNTON 0x100 | 65 | #define PRCM_PLLARM_ENABLE_PRCM_PLLARM_COUNTON 0x100 |
70 | 66 | ||
71 | #define PRCM_ARMCLKFIX_MGT (_PRCMU_BASE + 0x0) | 67 | #define PRCM_ARMCLKFIX_MGT (prcmu_base + 0x0) |
72 | #define PRCM_A9PL_FORCE_CLKEN (_PRCMU_BASE + 0x19C) | 68 | #define PRCM_A9PL_FORCE_CLKEN (prcmu_base + 0x19C) |
73 | #define PRCM_A9_RESETN_CLR (_PRCMU_BASE + 0x1f4) | 69 | #define PRCM_A9_RESETN_CLR (prcmu_base + 0x1f4) |
74 | #define PRCM_A9_RESETN_SET (_PRCMU_BASE + 0x1f0) | 70 | #define PRCM_A9_RESETN_SET (prcmu_base + 0x1f0) |
75 | #define PRCM_ARM_LS_CLAMP (_PRCMU_BASE + 0x30c) | 71 | #define PRCM_ARM_LS_CLAMP (prcmu_base + 0x30c) |
76 | #define PRCM_SRAM_A9 (_PRCMU_BASE + 0x308) | 72 | #define PRCM_SRAM_A9 (prcmu_base + 0x308) |
77 | 73 | ||
78 | #define PRCM_A9PL_FORCE_CLKEN_PRCM_A9PL_FORCE_CLKEN BIT(0) | 74 | #define PRCM_A9PL_FORCE_CLKEN_PRCM_A9PL_FORCE_CLKEN BIT(0) |
79 | #define PRCM_A9PL_FORCE_CLKEN_PRCM_A9AXI_FORCE_CLKEN BIT(1) | 75 | #define PRCM_A9PL_FORCE_CLKEN_PRCM_A9AXI_FORCE_CLKEN BIT(1) |
80 | 76 | ||
81 | /* ARM WFI Standby signal register */ | ||
82 | #define PRCM_ARM_WFI_STANDBY (_PRCMU_BASE + 0x130) | ||
83 | #define PRCM_ARM_WFI_STANDBY_WFI0 0x08 | ||
84 | #define PRCM_ARM_WFI_STANDBY_WFI1 0x10 | ||
85 | #define PRCM_IOCR (_PRCMU_BASE + 0x310) | ||
86 | #define PRCM_IOCR_IOFORCE 0x1 | ||
87 | |||
88 | /* CPU mailbox registers */ | 77 | /* CPU mailbox registers */ |
89 | #define PRCM_MBOX_CPU_VAL (_PRCMU_BASE + 0x0fc) | 78 | #define PRCM_MBOX_CPU_VAL (prcmu_base + 0x0fc) |
90 | #define PRCM_MBOX_CPU_SET (_PRCMU_BASE + 0x100) | 79 | #define PRCM_MBOX_CPU_SET (prcmu_base + 0x100) |
91 | #define PRCM_MBOX_CPU_CLR (_PRCMU_BASE + 0x104) | 80 | #define PRCM_MBOX_CPU_CLR (prcmu_base + 0x104) |
92 | 81 | ||
93 | /* Dual A9 core interrupt management unit registers */ | 82 | #define PRCM_HOSTACCESS_REQ (prcmu_base + 0x334) |
94 | #define PRCM_A9_MASK_REQ (_PRCMU_BASE + 0x328) | ||
95 | #define PRCM_A9_MASK_REQ_PRCM_A9_MASK_REQ 0x1 | ||
96 | |||
97 | #define PRCM_A9_MASK_ACK (_PRCMU_BASE + 0x32c) | ||
98 | #define PRCM_ARMITMSK31TO0 (_PRCMU_BASE + 0x11c) | ||
99 | #define PRCM_ARMITMSK63TO32 (_PRCMU_BASE + 0x120) | ||
100 | #define PRCM_ARMITMSK95TO64 (_PRCMU_BASE + 0x124) | ||
101 | #define PRCM_ARMITMSK127TO96 (_PRCMU_BASE + 0x128) | ||
102 | #define PRCM_POWER_STATE_VAL (_PRCMU_BASE + 0x25C) | ||
103 | #define PRCM_ARMITVAL31TO0 (_PRCMU_BASE + 0x260) | ||
104 | #define PRCM_ARMITVAL63TO32 (_PRCMU_BASE + 0x264) | ||
105 | #define PRCM_ARMITVAL95TO64 (_PRCMU_BASE + 0x268) | ||
106 | #define PRCM_ARMITVAL127TO96 (_PRCMU_BASE + 0x26C) | ||
107 | |||
108 | #define PRCM_HOSTACCESS_REQ (_PRCMU_BASE + 0x334) | ||
109 | #define PRCM_HOSTACCESS_REQ_HOSTACCESS_REQ 0x1 | 83 | #define PRCM_HOSTACCESS_REQ_HOSTACCESS_REQ 0x1 |
110 | #define PRCM_HOSTACCESS_REQ_WAKE_REQ BIT(16) | 84 | #define PRCM_HOSTACCESS_REQ_WAKE_REQ BIT(16) |
111 | #define ARM_WAKEUP_MODEM 0x1 | 85 | #define ARM_WAKEUP_MODEM 0x1 |
112 | 86 | ||
113 | #define PRCM_ARM_IT1_CLR (_PRCMU_BASE + 0x48C) | 87 | #define PRCM_ARM_IT1_CLR (prcmu_base + 0x48C) |
114 | #define PRCM_ARM_IT1_VAL (_PRCMU_BASE + 0x494) | 88 | #define PRCM_ARM_IT1_VAL (prcmu_base + 0x494) |
115 | #define PRCM_HOLD_EVT (_PRCMU_BASE + 0x174) | 89 | #define PRCM_HOLD_EVT (prcmu_base + 0x174) |
116 | 90 | ||
117 | #define PRCM_MOD_AWAKE_STATUS (_PRCMU_BASE + 0x4A0) | 91 | #define PRCM_MOD_AWAKE_STATUS (prcmu_base + 0x4A0) |
118 | #define PRCM_MOD_AWAKE_STATUS_PRCM_MOD_COREPD_AWAKE BIT(0) | 92 | #define PRCM_MOD_AWAKE_STATUS_PRCM_MOD_COREPD_AWAKE BIT(0) |
119 | #define PRCM_MOD_AWAKE_STATUS_PRCM_MOD_AAPD_AWAKE BIT(1) | 93 | #define PRCM_MOD_AWAKE_STATUS_PRCM_MOD_AAPD_AWAKE BIT(1) |
120 | #define PRCM_MOD_AWAKE_STATUS_PRCM_MOD_VMODEM_OFF_ISO BIT(2) | 94 | #define PRCM_MOD_AWAKE_STATUS_PRCM_MOD_VMODEM_OFF_ISO BIT(2) |
121 | 95 | ||
122 | #define PRCM_ITSTATUS0 (_PRCMU_BASE + 0x148) | 96 | #define PRCM_ITSTATUS0 (prcmu_base + 0x148) |
123 | #define PRCM_ITSTATUS1 (_PRCMU_BASE + 0x150) | 97 | #define PRCM_ITSTATUS1 (prcmu_base + 0x150) |
124 | #define PRCM_ITSTATUS2 (_PRCMU_BASE + 0x158) | 98 | #define PRCM_ITSTATUS2 (prcmu_base + 0x158) |
125 | #define PRCM_ITSTATUS3 (_PRCMU_BASE + 0x160) | 99 | #define PRCM_ITSTATUS3 (prcmu_base + 0x160) |
126 | #define PRCM_ITSTATUS4 (_PRCMU_BASE + 0x168) | 100 | #define PRCM_ITSTATUS4 (prcmu_base + 0x168) |
127 | #define PRCM_ITSTATUS5 (_PRCMU_BASE + 0x484) | 101 | #define PRCM_ITSTATUS5 (prcmu_base + 0x484) |
128 | #define PRCM_ITCLEAR5 (_PRCMU_BASE + 0x488) | 102 | #define PRCM_ITCLEAR5 (prcmu_base + 0x488) |
129 | #define PRCM_ARMIT_MASKXP70_IT (_PRCMU_BASE + 0x1018) | 103 | #define PRCM_ARMIT_MASKXP70_IT (prcmu_base + 0x1018) |
130 | 104 | ||
131 | /* System reset register */ | 105 | /* System reset register */ |
132 | #define PRCM_APE_SOFTRST (_PRCMU_BASE + 0x228) | 106 | #define PRCM_APE_SOFTRST (prcmu_base + 0x228) |
133 | 107 | ||
134 | /* Level shifter and clamp control registers */ | 108 | /* Level shifter and clamp control registers */ |
135 | #define PRCM_MMIP_LS_CLAMP_SET (_PRCMU_BASE + 0x420) | 109 | #define PRCM_MMIP_LS_CLAMP_SET (prcmu_base + 0x420) |
136 | #define PRCM_MMIP_LS_CLAMP_CLR (_PRCMU_BASE + 0x424) | 110 | #define PRCM_MMIP_LS_CLAMP_CLR (prcmu_base + 0x424) |
137 | 111 | ||
138 | #define PRCM_MMIP_LS_CLAMP_DSIPLL_CLAMP BIT(11) | 112 | #define PRCM_MMIP_LS_CLAMP_DSIPLL_CLAMP BIT(11) |
139 | #define PRCM_MMIP_LS_CLAMP_DSIPLL_CLAMPI BIT(22) | 113 | #define PRCM_MMIP_LS_CLAMP_DSIPLL_CLAMPI BIT(22) |
140 | 114 | ||
141 | /* PRCMU clock/PLL/reset registers */ | 115 | /* PRCMU clock/PLL/reset registers */ |
142 | #define PRCM_PLLSOC0_FREQ (_PRCMU_BASE + 0x080) | 116 | #define PRCM_PLLSOC0_FREQ (prcmu_base + 0x080) |
143 | #define PRCM_PLLSOC1_FREQ (_PRCMU_BASE + 0x084) | 117 | #define PRCM_PLLSOC1_FREQ (prcmu_base + 0x084) |
144 | #define PRCM_PLLARM_FREQ (_PRCMU_BASE + 0x088) | 118 | #define PRCM_PLLARM_FREQ (prcmu_base + 0x088) |
145 | #define PRCM_PLLDDR_FREQ (_PRCMU_BASE + 0x08C) | 119 | #define PRCM_PLLDDR_FREQ (prcmu_base + 0x08C) |
146 | #define PRCM_PLL_FREQ_D_SHIFT 0 | 120 | #define PRCM_PLL_FREQ_D_SHIFT 0 |
147 | #define PRCM_PLL_FREQ_D_MASK BITS(0, 7) | 121 | #define PRCM_PLL_FREQ_D_MASK BITS(0, 7) |
148 | #define PRCM_PLL_FREQ_N_SHIFT 8 | 122 | #define PRCM_PLL_FREQ_N_SHIFT 8 |
@@ -152,14 +126,14 @@ | |||
152 | #define PRCM_PLL_FREQ_SELDIV2 BIT(24) | 126 | #define PRCM_PLL_FREQ_SELDIV2 BIT(24) |
153 | #define PRCM_PLL_FREQ_DIV2EN BIT(25) | 127 | #define PRCM_PLL_FREQ_DIV2EN BIT(25) |
154 | 128 | ||
155 | #define PRCM_PLLDSI_FREQ (_PRCMU_BASE + 0x500) | 129 | #define PRCM_PLLDSI_FREQ (prcmu_base + 0x500) |
156 | #define PRCM_PLLDSI_ENABLE (_PRCMU_BASE + 0x504) | 130 | #define PRCM_PLLDSI_ENABLE (prcmu_base + 0x504) |
157 | #define PRCM_PLLDSI_LOCKP (_PRCMU_BASE + 0x508) | 131 | #define PRCM_PLLDSI_LOCKP (prcmu_base + 0x508) |
158 | #define PRCM_DSI_PLLOUT_SEL (_PRCMU_BASE + 0x530) | 132 | #define PRCM_DSI_PLLOUT_SEL (prcmu_base + 0x530) |
159 | #define PRCM_DSITVCLK_DIV (_PRCMU_BASE + 0x52C) | 133 | #define PRCM_DSITVCLK_DIV (prcmu_base + 0x52C) |
160 | #define PRCM_PLLDSI_LOCKP (_PRCMU_BASE + 0x508) | 134 | #define PRCM_PLLDSI_LOCKP (prcmu_base + 0x508) |
161 | #define PRCM_APE_RESETN_SET (_PRCMU_BASE + 0x1E4) | 135 | #define PRCM_APE_RESETN_SET (prcmu_base + 0x1E4) |
162 | #define PRCM_APE_RESETN_CLR (_PRCMU_BASE + 0x1E8) | 136 | #define PRCM_APE_RESETN_CLR (prcmu_base + 0x1E8) |
163 | 137 | ||
164 | #define PRCM_PLLDSI_ENABLE_PRCM_PLLDSI_ENABLE BIT(0) | 138 | #define PRCM_PLLDSI_ENABLE_PRCM_PLLDSI_ENABLE BIT(0) |
165 | 139 | ||
@@ -188,30 +162,30 @@ | |||
188 | 162 | ||
189 | #define PRCM_APE_RESETN_DSIPLL_RESETN BIT(14) | 163 | #define PRCM_APE_RESETN_DSIPLL_RESETN BIT(14) |
190 | 164 | ||
191 | #define PRCM_CLKOCR (_PRCMU_BASE + 0x1CC) | 165 | #define PRCM_CLKOCR (prcmu_base + 0x1CC) |
192 | #define PRCM_CLKOCR_CLKOUT0_REF_CLK (1 << 0) | 166 | #define PRCM_CLKOCR_CLKOUT0_REF_CLK (1 << 0) |
193 | #define PRCM_CLKOCR_CLKOUT0_MASK BITS(0, 13) | 167 | #define PRCM_CLKOCR_CLKOUT0_MASK BITS(0, 13) |
194 | #define PRCM_CLKOCR_CLKOUT1_REF_CLK (1 << 16) | 168 | #define PRCM_CLKOCR_CLKOUT1_REF_CLK (1 << 16) |
195 | #define PRCM_CLKOCR_CLKOUT1_MASK BITS(16, 29) | 169 | #define PRCM_CLKOCR_CLKOUT1_MASK BITS(16, 29) |
196 | 170 | ||
197 | /* ePOD and memory power signal control registers */ | 171 | /* ePOD and memory power signal control registers */ |
198 | #define PRCM_EPOD_C_SET (_PRCMU_BASE + 0x410) | 172 | #define PRCM_EPOD_C_SET (prcmu_base + 0x410) |
199 | #define PRCM_SRAM_LS_SLEEP (_PRCMU_BASE + 0x304) | 173 | #define PRCM_SRAM_LS_SLEEP (prcmu_base + 0x304) |
200 | 174 | ||
201 | /* Debug power control unit registers */ | 175 | /* Debug power control unit registers */ |
202 | #define PRCM_POWER_STATE_SET (_PRCMU_BASE + 0x254) | 176 | #define PRCM_POWER_STATE_SET (prcmu_base + 0x254) |
203 | 177 | ||
204 | /* Miscellaneous unit registers */ | 178 | /* Miscellaneous unit registers */ |
205 | #define PRCM_DSI_SW_RESET (_PRCMU_BASE + 0x324) | 179 | #define PRCM_DSI_SW_RESET (prcmu_base + 0x324) |
206 | #define PRCM_GPIOCR (_PRCMU_BASE + 0x138) | 180 | #define PRCM_GPIOCR (prcmu_base + 0x138) |
207 | #define PRCM_GPIOCR_DBG_STM_MOD_CMD1 0x800 | 181 | #define PRCM_GPIOCR_DBG_STM_MOD_CMD1 0x800 |
208 | #define PRCM_GPIOCR_DBG_UARTMOD_CMD0 0x1 | 182 | #define PRCM_GPIOCR_DBG_UARTMOD_CMD0 0x1 |
209 | 183 | ||
210 | /* PRCMU HW semaphore */ | 184 | /* PRCMU HW semaphore */ |
211 | #define PRCM_SEM (_PRCMU_BASE + 0x400) | 185 | #define PRCM_SEM (prcmu_base + 0x400) |
212 | #define PRCM_SEM_PRCM_SEM BIT(0) | 186 | #define PRCM_SEM_PRCM_SEM BIT(0) |
213 | 187 | ||
214 | #define PRCM_TCR (_PRCMU_BASE + 0x1C8) | 188 | #define PRCM_TCR (prcmu_base + 0x1C8) |
215 | #define PRCM_TCR_TENSEL_MASK BITS(0, 7) | 189 | #define PRCM_TCR_TENSEL_MASK BITS(0, 7) |
216 | #define PRCM_TCR_STOP_TIMERS BIT(16) | 190 | #define PRCM_TCR_STOP_TIMERS BIT(16) |
217 | #define PRCM_TCR_DOZE_MODE BIT(17) | 191 | #define PRCM_TCR_DOZE_MODE BIT(17) |
@@ -239,15 +213,15 @@ | |||
239 | /* GPIOCR register */ | 213 | /* GPIOCR register */ |
240 | #define PRCM_GPIOCR_SPI2_SELECT BIT(23) | 214 | #define PRCM_GPIOCR_SPI2_SELECT BIT(23) |
241 | 215 | ||
242 | #define PRCM_DDR_SUBSYS_APE_MINBW (_PRCMU_BASE + 0x438) | 216 | #define PRCM_DDR_SUBSYS_APE_MINBW (prcmu_base + 0x438) |
243 | #define PRCM_CGATING_BYPASS (_PRCMU_BASE + 0x134) | 217 | #define PRCM_CGATING_BYPASS (prcmu_base + 0x134) |
244 | #define PRCM_CGATING_BYPASS_ICN2 BIT(6) | 218 | #define PRCM_CGATING_BYPASS_ICN2 BIT(6) |
245 | 219 | ||
246 | /* Miscellaneous unit registers */ | 220 | /* Miscellaneous unit registers */ |
247 | #define PRCM_RESOUTN_SET (_PRCMU_BASE + 0x214) | 221 | #define PRCM_RESOUTN_SET (prcmu_base + 0x214) |
248 | #define PRCM_RESOUTN_CLR (_PRCMU_BASE + 0x218) | 222 | #define PRCM_RESOUTN_CLR (prcmu_base + 0x218) |
249 | 223 | ||
250 | /* System reset register */ | 224 | /* System reset register */ |
251 | #define PRCM_APE_SOFTRST (_PRCMU_BASE + 0x228) | 225 | #define PRCM_APE_SOFTRST (prcmu_base + 0x228) |
252 | 226 | ||
253 | #endif /* __DB8500_PRCMU_REGS_H */ | 227 | #endif /* __DB8500_PRCMU_REGS_H */ |
diff --git a/drivers/mmc/host/sdhci-cns3xxx.c b/drivers/mmc/host/sdhci-cns3xxx.c index 30bfdc4ae52a..6ba8502c1ee2 100644 --- a/drivers/mmc/host/sdhci-cns3xxx.c +++ b/drivers/mmc/host/sdhci-cns3xxx.c | |||
@@ -16,7 +16,6 @@ | |||
16 | #include <linux/device.h> | 16 | #include <linux/device.h> |
17 | #include <linux/mmc/host.h> | 17 | #include <linux/mmc/host.h> |
18 | #include <linux/module.h> | 18 | #include <linux/module.h> |
19 | #include <mach/cns3xxx.h> | ||
20 | #include "sdhci-pltfm.h" | 19 | #include "sdhci-pltfm.h" |
21 | 20 | ||
22 | static unsigned int sdhci_cns3xxx_get_max_clk(struct sdhci_host *host) | 21 | static unsigned int sdhci_cns3xxx_get_max_clk(struct sdhci_host *host) |
diff --git a/arch/arm/plat-samsung/include/plat/regs-sdhci.h b/drivers/mmc/host/sdhci-s3c-regs.h index e34049ad44cc..e34049ad44cc 100644 --- a/arch/arm/plat-samsung/include/plat/regs-sdhci.h +++ b/drivers/mmc/host/sdhci-s3c-regs.h | |||
diff --git a/drivers/mmc/host/sdhci-s3c.c b/drivers/mmc/host/sdhci-s3c.c index 7363efe72287..e4f52b5c2592 100644 --- a/drivers/mmc/host/sdhci-s3c.c +++ b/drivers/mmc/host/sdhci-s3c.c | |||
@@ -15,6 +15,7 @@ | |||
15 | #include <linux/delay.h> | 15 | #include <linux/delay.h> |
16 | #include <linux/dma-mapping.h> | 16 | #include <linux/dma-mapping.h> |
17 | #include <linux/platform_device.h> | 17 | #include <linux/platform_device.h> |
18 | #include <linux/platform_data/mmc-sdhci-s3c.h> | ||
18 | #include <linux/slab.h> | 19 | #include <linux/slab.h> |
19 | #include <linux/clk.h> | 20 | #include <linux/clk.h> |
20 | #include <linux/io.h> | 21 | #include <linux/io.h> |
@@ -28,9 +29,7 @@ | |||
28 | 29 | ||
29 | #include <linux/mmc/host.h> | 30 | #include <linux/mmc/host.h> |
30 | 31 | ||
31 | #include <plat/sdhci.h> | 32 | #include "sdhci-s3c-regs.h" |
32 | #include <plat/regs-sdhci.h> | ||
33 | |||
34 | #include "sdhci.h" | 33 | #include "sdhci.h" |
35 | 34 | ||
36 | #define MAX_BUS_CLK (4) | 35 | #define MAX_BUS_CLK (4) |
diff --git a/drivers/mtd/onenand/samsung.c b/drivers/mtd/onenand/samsung.c index 33f2a8fb8df9..2cf74085f935 100644 --- a/drivers/mtd/onenand/samsung.c +++ b/drivers/mtd/onenand/samsung.c | |||
@@ -23,11 +23,11 @@ | |||
23 | #include <linux/mtd/partitions.h> | 23 | #include <linux/mtd/partitions.h> |
24 | #include <linux/dma-mapping.h> | 24 | #include <linux/dma-mapping.h> |
25 | #include <linux/interrupt.h> | 25 | #include <linux/interrupt.h> |
26 | #include <linux/io.h> | ||
26 | 27 | ||
27 | #include <asm/mach/flash.h> | 28 | #include <asm/mach/flash.h> |
28 | #include <plat/regs-onenand.h> | ||
29 | 29 | ||
30 | #include <linux/io.h> | 30 | #include "samsung.h" |
31 | 31 | ||
32 | enum soc_type { | 32 | enum soc_type { |
33 | TYPE_S3C6400, | 33 | TYPE_S3C6400, |
diff --git a/arch/arm/plat-samsung/include/plat/regs-onenand.h b/drivers/mtd/onenand/samsung.h index 930ea8b88ed3..c4a80e67e438 100644 --- a/arch/arm/plat-samsung/include/plat/regs-onenand.h +++ b/drivers/mtd/onenand/samsung.h | |||
@@ -11,8 +11,6 @@ | |||
11 | #ifndef __SAMSUNG_ONENAND_H__ | 11 | #ifndef __SAMSUNG_ONENAND_H__ |
12 | #define __SAMSUNG_ONENAND_H__ | 12 | #define __SAMSUNG_ONENAND_H__ |
13 | 13 | ||
14 | #include <mach/hardware.h> | ||
15 | |||
16 | /* | 14 | /* |
17 | * OneNAND Controller | 15 | * OneNAND Controller |
18 | */ | 16 | */ |
diff --git a/drivers/pinctrl/pinctrl-sirf.c b/drivers/pinctrl/pinctrl-sirf.c index 1ed23d02011e..bc9d1be27fb0 100644 --- a/drivers/pinctrl/pinctrl-sirf.c +++ b/drivers/pinctrl/pinctrl-sirf.c | |||
@@ -1347,7 +1347,7 @@ static inline int sirfsoc_gpio_to_irq(struct gpio_chip *chip, unsigned offset) | |||
1347 | struct sirfsoc_gpio_bank *bank = container_of(to_of_mm_gpio_chip(chip), | 1347 | struct sirfsoc_gpio_bank *bank = container_of(to_of_mm_gpio_chip(chip), |
1348 | struct sirfsoc_gpio_bank, chip); | 1348 | struct sirfsoc_gpio_bank, chip); |
1349 | 1349 | ||
1350 | return irq_find_mapping(bank->domain, offset); | 1350 | return irq_create_mapping(bank->domain, offset); |
1351 | } | 1351 | } |
1352 | 1352 | ||
1353 | static inline int sirfsoc_gpio_to_offset(unsigned int gpio) | 1353 | static inline int sirfsoc_gpio_to_offset(unsigned int gpio) |
@@ -1485,7 +1485,6 @@ static void sirfsoc_gpio_handle_irq(unsigned int irq, struct irq_desc *desc) | |||
1485 | struct sirfsoc_gpio_bank *bank = irq_get_handler_data(irq); | 1485 | struct sirfsoc_gpio_bank *bank = irq_get_handler_data(irq); |
1486 | u32 status, ctrl; | 1486 | u32 status, ctrl; |
1487 | int idx = 0; | 1487 | int idx = 0; |
1488 | unsigned int first_irq; | ||
1489 | struct irq_chip *chip = irq_get_chip(irq); | 1488 | struct irq_chip *chip = irq_get_chip(irq); |
1490 | 1489 | ||
1491 | chained_irq_enter(chip, desc); | 1490 | chained_irq_enter(chip, desc); |
@@ -1499,8 +1498,6 @@ static void sirfsoc_gpio_handle_irq(unsigned int irq, struct irq_desc *desc) | |||
1499 | return; | 1498 | return; |
1500 | } | 1499 | } |
1501 | 1500 | ||
1502 | first_irq = bank->domain->revmap_data.legacy.first_irq; | ||
1503 | |||
1504 | while (status) { | 1501 | while (status) { |
1505 | ctrl = readl(bank->chip.regs + SIRFSOC_GPIO_CTRL(bank->id, idx)); | 1502 | ctrl = readl(bank->chip.regs + SIRFSOC_GPIO_CTRL(bank->id, idx)); |
1506 | 1503 | ||
@@ -1511,7 +1508,7 @@ static void sirfsoc_gpio_handle_irq(unsigned int irq, struct irq_desc *desc) | |||
1511 | if ((status & 0x1) && (ctrl & SIRFSOC_GPIO_CTL_INTR_EN_MASK)) { | 1508 | if ((status & 0x1) && (ctrl & SIRFSOC_GPIO_CTL_INTR_EN_MASK)) { |
1512 | pr_debug("%s: gpio id %d idx %d happens\n", | 1509 | pr_debug("%s: gpio id %d idx %d happens\n", |
1513 | __func__, bank->id, idx); | 1510 | __func__, bank->id, idx); |
1514 | generic_handle_irq(first_irq + idx); | 1511 | generic_handle_irq(irq_find_mapping(bank->domain, idx)); |
1515 | } | 1512 | } |
1516 | 1513 | ||
1517 | idx++; | 1514 | idx++; |
@@ -1764,9 +1761,8 @@ static int sirfsoc_gpio_probe(struct device_node *np) | |||
1764 | goto out; | 1761 | goto out; |
1765 | } | 1762 | } |
1766 | 1763 | ||
1767 | bank->domain = irq_domain_add_legacy(np, SIRFSOC_GPIO_BANK_SIZE, | 1764 | bank->domain = irq_domain_add_linear(np, SIRFSOC_GPIO_BANK_SIZE, |
1768 | SIRFSOC_GPIO_IRQ_START + i * SIRFSOC_GPIO_BANK_SIZE, 0, | 1765 | &sirfsoc_gpio_irq_simple_ops, bank); |
1769 | &sirfsoc_gpio_irq_simple_ops, bank); | ||
1770 | 1766 | ||
1771 | if (!bank->domain) { | 1767 | if (!bank->domain) { |
1772 | pr_err("%s: Failed to create irqdomain\n", np->full_name); | 1768 | pr_err("%s: Failed to create irqdomain\n", np->full_name); |
diff --git a/drivers/rtc/rtc-s3c.c b/drivers/rtc/rtc-s3c.c index 8e96c00936be..14040b22888d 100644 --- a/drivers/rtc/rtc-s3c.c +++ b/drivers/rtc/rtc-s3c.c | |||
@@ -29,9 +29,8 @@ | |||
29 | #include <linux/uaccess.h> | 29 | #include <linux/uaccess.h> |
30 | #include <linux/io.h> | 30 | #include <linux/io.h> |
31 | 31 | ||
32 | #include <mach/hardware.h> | ||
33 | #include <asm/irq.h> | 32 | #include <asm/irq.h> |
34 | #include <plat/regs-rtc.h> | 33 | #include "rtc-s3c.h" |
35 | 34 | ||
36 | enum s3c_cpu_type { | 35 | enum s3c_cpu_type { |
37 | TYPE_S3C2410, | 36 | TYPE_S3C2410, |
diff --git a/arch/arm/plat-samsung/include/plat/regs-rtc.h b/drivers/rtc/rtc-s3c.h index 0f8263e93eea..004b61a8343f 100644 --- a/arch/arm/plat-samsung/include/plat/regs-rtc.h +++ b/drivers/rtc/rtc-s3c.h | |||
@@ -1,5 +1,4 @@ | |||
1 | /* arch/arm/mach-s3c2410/include/mach/regs-rtc.h | 1 | /* |
2 | * | ||
3 | * Copyright (c) 2003 Simtec Electronics <linux@simtec.co.uk> | 2 | * Copyright (c) 2003 Simtec Electronics <linux@simtec.co.uk> |
4 | * http://www.simtec.co.uk/products/SWLINUX/ | 3 | * http://www.simtec.co.uk/products/SWLINUX/ |
5 | * | 4 | * |
diff --git a/drivers/staging/ste_rmi4/Makefile b/drivers/staging/ste_rmi4/Makefile index e4c03351420f..6cce2ed187ef 100644 --- a/drivers/staging/ste_rmi4/Makefile +++ b/drivers/staging/ste_rmi4/Makefile | |||
@@ -2,4 +2,3 @@ | |||
2 | # Makefile for the RMI4 touchscreen driver. | 2 | # Makefile for the RMI4 touchscreen driver. |
3 | # | 3 | # |
4 | obj-$(CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4) += synaptics_i2c_rmi4.o | 4 | obj-$(CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4) += synaptics_i2c_rmi4.o |
5 | obj-$(CONFIG_MACH_MOP500) += board-mop500-u8500uib-rmi4.o | ||
diff --git a/drivers/staging/ste_rmi4/board-mop500-u8500uib-rmi4.c b/drivers/staging/ste_rmi4/board-mop500-u8500uib-rmi4.c deleted file mode 100644 index 47439c3f7258..000000000000 --- a/drivers/staging/ste_rmi4/board-mop500-u8500uib-rmi4.c +++ /dev/null | |||
@@ -1,31 +0,0 @@ | |||
1 | /* | ||
2 | * Some platform data for the RMI4 touchscreen that will override the __weak | ||
3 | * platform data in the Ux500 machine if this driver is activated. | ||
4 | */ | ||
5 | #include <linux/i2c.h> | ||
6 | #include <linux/gpio.h> | ||
7 | #include <linux/interrupt.h> | ||
8 | #include <mach/irqs.h> | ||
9 | #include "synaptics_i2c_rmi4.h" | ||
10 | |||
11 | /* | ||
12 | * Synaptics RMI4 touchscreen interface on the U8500 UIB | ||
13 | */ | ||
14 | |||
15 | /* | ||
16 | * Descriptor structure. | ||
17 | * Describes the number of i2c devices on the bus that speak RMI. | ||
18 | */ | ||
19 | static struct synaptics_rmi4_platform_data rmi4_i2c_dev_platformdata = { | ||
20 | .irq_number = NOMADIK_GPIO_TO_IRQ(84), | ||
21 | .irq_type = (IRQF_TRIGGER_FALLING | IRQF_SHARED), | ||
22 | .x_flip = false, | ||
23 | .y_flip = true, | ||
24 | }; | ||
25 | |||
26 | struct i2c_board_info __initdata mop500_i2c3_devices_u8500[] = { | ||
27 | { | ||
28 | I2C_BOARD_INFO("synaptics_rmi4_i2c", 0x4B), | ||
29 | .platform_data = &rmi4_i2c_dev_platformdata, | ||
30 | }, | ||
31 | }; | ||
diff --git a/drivers/staging/ste_rmi4/synaptics_i2c_rmi4.c b/drivers/staging/ste_rmi4/synaptics_i2c_rmi4.c index a126b25c82d5..fe667dde43ce 100644 --- a/drivers/staging/ste_rmi4/synaptics_i2c_rmi4.c +++ b/drivers/staging/ste_rmi4/synaptics_i2c_rmi4.c | |||
@@ -864,6 +864,16 @@ static int synaptics_rmi4_i2c_query_device(struct synaptics_rmi4_data *pdata) | |||
864 | return 0; | 864 | return 0; |
865 | } | 865 | } |
866 | 866 | ||
867 | /* | ||
868 | * Descriptor structure. | ||
869 | * Describes the number of i2c devices on the bus that speak RMI. | ||
870 | */ | ||
871 | static struct synaptics_rmi4_platform_data synaptics_rmi4_platformdata = { | ||
872 | .irq_type = (IRQF_TRIGGER_FALLING | IRQF_SHARED), | ||
873 | .x_flip = false, | ||
874 | .y_flip = true, | ||
875 | }; | ||
876 | |||
867 | /** | 877 | /** |
868 | * synaptics_rmi4_probe() - Initialze the i2c-client touchscreen driver | 878 | * synaptics_rmi4_probe() - Initialze the i2c-client touchscreen driver |
869 | * @i2c: i2c client structure pointer | 879 | * @i2c: i2c client structure pointer |
@@ -890,10 +900,8 @@ static int synaptics_rmi4_probe | |||
890 | return -EIO; | 900 | return -EIO; |
891 | } | 901 | } |
892 | 902 | ||
893 | if (!platformdata) { | 903 | if (!platformdata) |
894 | dev_err(&client->dev, "%s: no platform data\n", __func__); | 904 | platformdata = &synaptics_rmi4_platformdata; |
895 | return -EINVAL; | ||
896 | } | ||
897 | 905 | ||
898 | /* Allocate and initialize the instance data for this client */ | 906 | /* Allocate and initialize the instance data for this client */ |
899 | rmi4_data = kcalloc(2, sizeof(struct synaptics_rmi4_data), | 907 | rmi4_data = kcalloc(2, sizeof(struct synaptics_rmi4_data), |
@@ -977,13 +985,13 @@ static int synaptics_rmi4_probe | |||
977 | synaptics_rmi4_i2c_block_read(rmi4_data, | 985 | synaptics_rmi4_i2c_block_read(rmi4_data, |
978 | rmi4_data->fn01_data_base_addr + 1, intr_status, | 986 | rmi4_data->fn01_data_base_addr + 1, intr_status, |
979 | rmi4_data->number_of_interrupt_register); | 987 | rmi4_data->number_of_interrupt_register); |
980 | retval = request_threaded_irq(platformdata->irq_number, NULL, | 988 | retval = request_threaded_irq(client->irq, NULL, |
981 | synaptics_rmi4_irq, | 989 | synaptics_rmi4_irq, |
982 | platformdata->irq_type, | 990 | platformdata->irq_type, |
983 | DRIVER_NAME, rmi4_data); | 991 | DRIVER_NAME, rmi4_data); |
984 | if (retval) { | 992 | if (retval) { |
985 | dev_err(&client->dev, "%s:Unable to get attn irq %d\n", | 993 | dev_err(&client->dev, "%s:Unable to get attn irq %d\n", |
986 | __func__, platformdata->irq_number); | 994 | __func__, client->irq); |
987 | goto err_query_dev; | 995 | goto err_query_dev; |
988 | } | 996 | } |
989 | 997 | ||
@@ -996,7 +1004,7 @@ static int synaptics_rmi4_probe | |||
996 | return retval; | 1004 | return retval; |
997 | 1005 | ||
998 | err_free_irq: | 1006 | err_free_irq: |
999 | free_irq(platformdata->irq_number, rmi4_data); | 1007 | free_irq(client->irq, rmi4_data); |
1000 | err_query_dev: | 1008 | err_query_dev: |
1001 | regulator_disable(rmi4_data->regulator); | 1009 | regulator_disable(rmi4_data->regulator); |
1002 | err_regulator_enable: | 1010 | err_regulator_enable: |
@@ -1019,11 +1027,10 @@ err_input: | |||
1019 | static int synaptics_rmi4_remove(struct i2c_client *client) | 1027 | static int synaptics_rmi4_remove(struct i2c_client *client) |
1020 | { | 1028 | { |
1021 | struct synaptics_rmi4_data *rmi4_data = i2c_get_clientdata(client); | 1029 | struct synaptics_rmi4_data *rmi4_data = i2c_get_clientdata(client); |
1022 | const struct synaptics_rmi4_platform_data *pdata = rmi4_data->board; | ||
1023 | 1030 | ||
1024 | rmi4_data->touch_stopped = true; | 1031 | rmi4_data->touch_stopped = true; |
1025 | wake_up(&rmi4_data->wait); | 1032 | wake_up(&rmi4_data->wait); |
1026 | free_irq(pdata->irq_number, rmi4_data); | 1033 | free_irq(client->irq, rmi4_data); |
1027 | input_unregister_device(rmi4_data->input_dev); | 1034 | input_unregister_device(rmi4_data->input_dev); |
1028 | regulator_disable(rmi4_data->regulator); | 1035 | regulator_disable(rmi4_data->regulator); |
1029 | regulator_put(rmi4_data->regulator); | 1036 | regulator_put(rmi4_data->regulator); |
@@ -1046,10 +1053,9 @@ static int synaptics_rmi4_suspend(struct device *dev) | |||
1046 | int retval; | 1053 | int retval; |
1047 | unsigned char intr_status; | 1054 | unsigned char intr_status; |
1048 | struct synaptics_rmi4_data *rmi4_data = dev_get_drvdata(dev); | 1055 | struct synaptics_rmi4_data *rmi4_data = dev_get_drvdata(dev); |
1049 | const struct synaptics_rmi4_platform_data *pdata = rmi4_data->board; | ||
1050 | 1056 | ||
1051 | rmi4_data->touch_stopped = true; | 1057 | rmi4_data->touch_stopped = true; |
1052 | disable_irq(pdata->irq_number); | 1058 | disable_irq(rmi4_data->i2c_client->irq); |
1053 | 1059 | ||
1054 | retval = synaptics_rmi4_i2c_block_read(rmi4_data, | 1060 | retval = synaptics_rmi4_i2c_block_read(rmi4_data, |
1055 | rmi4_data->fn01_data_base_addr + 1, | 1061 | rmi4_data->fn01_data_base_addr + 1, |
@@ -1080,11 +1086,10 @@ static int synaptics_rmi4_resume(struct device *dev) | |||
1080 | int retval; | 1086 | int retval; |
1081 | unsigned char intr_status; | 1087 | unsigned char intr_status; |
1082 | struct synaptics_rmi4_data *rmi4_data = dev_get_drvdata(dev); | 1088 | struct synaptics_rmi4_data *rmi4_data = dev_get_drvdata(dev); |
1083 | const struct synaptics_rmi4_platform_data *pdata = rmi4_data->board; | ||
1084 | 1089 | ||
1085 | regulator_enable(rmi4_data->regulator); | 1090 | regulator_enable(rmi4_data->regulator); |
1086 | 1091 | ||
1087 | enable_irq(pdata->irq_number); | 1092 | enable_irq(rmi4_data->i2c_client->irq); |
1088 | rmi4_data->touch_stopped = false; | 1093 | rmi4_data->touch_stopped = false; |
1089 | 1094 | ||
1090 | retval = synaptics_rmi4_i2c_block_read(rmi4_data, | 1095 | retval = synaptics_rmi4_i2c_block_read(rmi4_data, |
diff --git a/drivers/staging/ste_rmi4/synaptics_i2c_rmi4.h b/drivers/staging/ste_rmi4/synaptics_i2c_rmi4.h index 384436ef8068..8c9166ba71c7 100644 --- a/drivers/staging/ste_rmi4/synaptics_i2c_rmi4.h +++ b/drivers/staging/ste_rmi4/synaptics_i2c_rmi4.h | |||
@@ -38,7 +38,6 @@ | |||
38 | * This structure gives platform data for rmi4. | 38 | * This structure gives platform data for rmi4. |
39 | */ | 39 | */ |
40 | struct synaptics_rmi4_platform_data { | 40 | struct synaptics_rmi4_platform_data { |
41 | int irq_number; | ||
42 | int irq_type; | 41 | int irq_type; |
43 | bool x_flip; | 42 | bool x_flip; |
44 | bool y_flip; | 43 | bool y_flip; |
diff --git a/drivers/thermal/exynos_thermal.c b/drivers/thermal/exynos_thermal.c index 46568c078dee..b777ae6f0a8f 100644 --- a/drivers/thermal/exynos_thermal.c +++ b/drivers/thermal/exynos_thermal.c | |||
@@ -39,8 +39,6 @@ | |||
39 | #include <linux/cpu_cooling.h> | 39 | #include <linux/cpu_cooling.h> |
40 | #include <linux/of.h> | 40 | #include <linux/of.h> |
41 | 41 | ||
42 | #include <plat/cpu.h> | ||
43 | |||
44 | /* Exynos generic registers */ | 42 | /* Exynos generic registers */ |
45 | #define EXYNOS_TMU_REG_TRIMINFO 0x0 | 43 | #define EXYNOS_TMU_REG_TRIMINFO 0x0 |
46 | #define EXYNOS_TMU_REG_CONTROL 0x20 | 44 | #define EXYNOS_TMU_REG_CONTROL 0x20 |
diff --git a/include/linux/mfd/db8500-prcmu.h b/include/linux/mfd/db8500-prcmu.h index 77a46ae2fc17..0bd69446bb05 100644 --- a/include/linux/mfd/db8500-prcmu.h +++ b/include/linux/mfd/db8500-prcmu.h | |||
@@ -489,7 +489,7 @@ struct prcmu_auto_pm_config { | |||
489 | 489 | ||
490 | #ifdef CONFIG_MFD_DB8500_PRCMU | 490 | #ifdef CONFIG_MFD_DB8500_PRCMU |
491 | 491 | ||
492 | void db8500_prcmu_early_init(void); | 492 | void db8500_prcmu_early_init(u32 phy_base, u32 size); |
493 | int prcmu_set_rc_a2p(enum romcode_write); | 493 | int prcmu_set_rc_a2p(enum romcode_write); |
494 | enum romcode_read prcmu_get_rc_p2a(void); | 494 | enum romcode_read prcmu_get_rc_p2a(void); |
495 | enum ap_pwrst prcmu_get_xp70_current_state(void); | 495 | enum ap_pwrst prcmu_get_xp70_current_state(void); |
@@ -522,12 +522,6 @@ int db8500_prcmu_load_a9wdog(u8 id, u32 val); | |||
522 | void db8500_prcmu_system_reset(u16 reset_code); | 522 | void db8500_prcmu_system_reset(u16 reset_code); |
523 | int db8500_prcmu_set_power_state(u8 state, bool keep_ulp_clk, bool keep_ap_pll); | 523 | int db8500_prcmu_set_power_state(u8 state, bool keep_ulp_clk, bool keep_ap_pll); |
524 | u8 db8500_prcmu_get_power_state_result(void); | 524 | u8 db8500_prcmu_get_power_state_result(void); |
525 | int db8500_prcmu_gic_decouple(void); | ||
526 | int db8500_prcmu_gic_recouple(void); | ||
527 | int db8500_prcmu_copy_gic_settings(void); | ||
528 | bool db8500_prcmu_gic_pending_irq(void); | ||
529 | bool db8500_prcmu_pending_irq(void); | ||
530 | bool db8500_prcmu_is_cpu_in_wfi(int cpu); | ||
531 | void db8500_prcmu_enable_wakeups(u32 wakeups); | 525 | void db8500_prcmu_enable_wakeups(u32 wakeups); |
532 | int db8500_prcmu_set_epod(u16 epod_id, u8 epod_state); | 526 | int db8500_prcmu_set_epod(u16 epod_id, u8 epod_state); |
533 | int db8500_prcmu_request_clock(u8 clock, bool enable); | 527 | int db8500_prcmu_request_clock(u8 clock, bool enable); |
@@ -553,7 +547,7 @@ void db8500_prcmu_write_masked(unsigned int reg, u32 mask, u32 value); | |||
553 | 547 | ||
554 | #else /* !CONFIG_MFD_DB8500_PRCMU */ | 548 | #else /* !CONFIG_MFD_DB8500_PRCMU */ |
555 | 549 | ||
556 | static inline void db8500_prcmu_early_init(void) {} | 550 | static inline void db8500_prcmu_early_init(u32 phy_base, u32 size) {} |
557 | 551 | ||
558 | static inline int prcmu_set_rc_a2p(enum romcode_write code) | 552 | static inline int prcmu_set_rc_a2p(enum romcode_write code) |
559 | { | 553 | { |
diff --git a/include/linux/mfd/dbx500-prcmu.h b/include/linux/mfd/dbx500-prcmu.h index 3abcca91eecd..689e6a0d9c99 100644 --- a/include/linux/mfd/dbx500-prcmu.h +++ b/include/linux/mfd/dbx500-prcmu.h | |||
@@ -237,6 +237,8 @@ struct prcmu_pdata | |||
237 | bool enable_set_ddr_opp; | 237 | bool enable_set_ddr_opp; |
238 | bool enable_ape_opp_100_voltage; | 238 | bool enable_ape_opp_100_voltage; |
239 | struct ab8500_platform_data *ab_platdata; | 239 | struct ab8500_platform_data *ab_platdata; |
240 | int ab_irq; | ||
241 | int irq_base; | ||
240 | u32 version_offset; | 242 | u32 version_offset; |
241 | u32 legacy_offset; | 243 | u32 legacy_offset; |
242 | u32 adt_offset; | 244 | u32 adt_offset; |
@@ -276,9 +278,9 @@ struct prcmu_fw_version { | |||
276 | 278 | ||
277 | #if defined(CONFIG_UX500_SOC_DB8500) | 279 | #if defined(CONFIG_UX500_SOC_DB8500) |
278 | 280 | ||
279 | static inline void __init prcmu_early_init(void) | 281 | static inline void prcmu_early_init(u32 phy_base, u32 size) |
280 | { | 282 | { |
281 | return db8500_prcmu_early_init(); | 283 | return db8500_prcmu_early_init(phy_base, size); |
282 | } | 284 | } |
283 | 285 | ||
284 | static inline int prcmu_set_power_state(u8 state, bool keep_ulp_clk, | 286 | static inline int prcmu_set_power_state(u8 state, bool keep_ulp_clk, |
@@ -293,36 +295,6 @@ static inline u8 prcmu_get_power_state_result(void) | |||
293 | return db8500_prcmu_get_power_state_result(); | 295 | return db8500_prcmu_get_power_state_result(); |
294 | } | 296 | } |
295 | 297 | ||
296 | static inline int prcmu_gic_decouple(void) | ||
297 | { | ||
298 | return db8500_prcmu_gic_decouple(); | ||
299 | } | ||
300 | |||
301 | static inline int prcmu_gic_recouple(void) | ||
302 | { | ||
303 | return db8500_prcmu_gic_recouple(); | ||
304 | } | ||
305 | |||
306 | static inline bool prcmu_gic_pending_irq(void) | ||
307 | { | ||
308 | return db8500_prcmu_gic_pending_irq(); | ||
309 | } | ||
310 | |||
311 | static inline bool prcmu_is_cpu_in_wfi(int cpu) | ||
312 | { | ||
313 | return db8500_prcmu_is_cpu_in_wfi(cpu); | ||
314 | } | ||
315 | |||
316 | static inline int prcmu_copy_gic_settings(void) | ||
317 | { | ||
318 | return db8500_prcmu_copy_gic_settings(); | ||
319 | } | ||
320 | |||
321 | static inline bool prcmu_pending_irq(void) | ||
322 | { | ||
323 | return db8500_prcmu_pending_irq(); | ||
324 | } | ||
325 | |||
326 | static inline int prcmu_set_epod(u16 epod_id, u8 epod_state) | 298 | static inline int prcmu_set_epod(u16 epod_id, u8 epod_state) |
327 | { | 299 | { |
328 | return db8500_prcmu_set_epod(epod_id, epod_state); | 300 | return db8500_prcmu_set_epod(epod_id, epod_state); |
@@ -500,7 +472,7 @@ static inline int prcmu_config_a9wdog(u8 num, bool sleep_auto_off) | |||
500 | } | 472 | } |
501 | #else | 473 | #else |
502 | 474 | ||
503 | static inline void __init prcmu_early_init(void) {} | 475 | static inline void prcmu_early_init(u32 phy_base, u32 size) {} |
504 | 476 | ||
505 | static inline int prcmu_set_power_state(u8 state, bool keep_ulp_clk, | 477 | static inline int prcmu_set_power_state(u8 state, bool keep_ulp_clk, |
506 | bool keep_ap_pll) | 478 | bool keep_ap_pll) |
diff --git a/include/linux/platform_data/arm-ux500-pm.h b/include/linux/platform_data/arm-ux500-pm.h new file mode 100644 index 000000000000..8dff64b29ec0 --- /dev/null +++ b/include/linux/platform_data/arm-ux500-pm.h | |||
@@ -0,0 +1,21 @@ | |||
1 | /* | ||
2 | * Copyright (C) ST-Ericsson SA 2010-2013 | ||
3 | * Author: Rickard Andersson <rickard.andersson@stericsson.com> for | ||
4 | * ST-Ericsson. | ||
5 | * Author: Daniel Lezcano <daniel.lezcano@linaro.org> for Linaro. | ||
6 | * License terms: GNU General Public License (GPL) version 2 | ||
7 | * | ||
8 | */ | ||
9 | |||
10 | #ifndef ARM_UX500_PM_H | ||
11 | #define ARM_UX500_PM_H | ||
12 | |||
13 | int prcmu_gic_decouple(void); | ||
14 | int prcmu_gic_recouple(void); | ||
15 | bool prcmu_gic_pending_irq(void); | ||
16 | bool prcmu_pending_irq(void); | ||
17 | bool prcmu_is_cpu_in_wfi(int cpu); | ||
18 | int prcmu_copy_gic_settings(void); | ||
19 | void ux500_pm_init(u32 phy_base, u32 size); | ||
20 | |||
21 | #endif /* ARM_UX500_PM_H */ | ||
diff --git a/arch/arm/mach-ux500/include/mach/msp.h b/include/linux/platform_data/asoc-ux500-msp.h index 9991aea3d577..9991aea3d577 100644 --- a/arch/arm/mach-ux500/include/mach/msp.h +++ b/include/linux/platform_data/asoc-ux500-msp.h | |||
diff --git a/include/linux/platform_data/clk-ux500.h b/include/linux/platform_data/clk-ux500.h index 3af0da1f3be5..320d9c39ea0a 100644 --- a/include/linux/platform_data/clk-ux500.h +++ b/include/linux/platform_data/clk-ux500.h | |||
@@ -10,7 +10,8 @@ | |||
10 | #ifndef __CLK_UX500_H | 10 | #ifndef __CLK_UX500_H |
11 | #define __CLK_UX500_H | 11 | #define __CLK_UX500_H |
12 | 12 | ||
13 | void u8500_clk_init(void); | 13 | void u8500_clk_init(u32 clkrst1_base, u32 clkrst2_base, u32 clkrst3_base, |
14 | u32 clkrst5_base, u32 clkrst6_base); | ||
14 | void u9540_clk_init(void); | 15 | void u9540_clk_init(void); |
15 | void u8540_clk_init(void); | 16 | void u8540_clk_init(void); |
16 | 17 | ||
diff --git a/include/linux/platform_data/mmc-sdhci-s3c.h b/include/linux/platform_data/mmc-sdhci-s3c.h new file mode 100644 index 000000000000..249f02387a35 --- /dev/null +++ b/include/linux/platform_data/mmc-sdhci-s3c.h | |||
@@ -0,0 +1,56 @@ | |||
1 | #ifndef __PLATFORM_DATA_SDHCI_S3C_H | ||
2 | #define __PLATFORM_DATA_SDHCI_S3C_H | ||
3 | |||
4 | struct platform_device; | ||
5 | |||
6 | enum cd_types { | ||
7 | S3C_SDHCI_CD_INTERNAL, /* use mmc internal CD line */ | ||
8 | S3C_SDHCI_CD_EXTERNAL, /* use external callback */ | ||
9 | S3C_SDHCI_CD_GPIO, /* use external gpio pin for CD line */ | ||
10 | S3C_SDHCI_CD_NONE, /* no CD line, use polling to detect card */ | ||
11 | S3C_SDHCI_CD_PERMANENT, /* no CD line, card permanently wired to host */ | ||
12 | }; | ||
13 | |||
14 | /** | ||
15 | * struct s3c_sdhci_platdata() - Platform device data for Samsung SDHCI | ||
16 | * @max_width: The maximum number of data bits supported. | ||
17 | * @host_caps: Standard MMC host capabilities bit field. | ||
18 | * @host_caps2: The second standard MMC host capabilities bit field. | ||
19 | * @cd_type: Type of Card Detection method (see cd_types enum above) | ||
20 | * @ext_cd_init: Initialize external card detect subsystem. Called on | ||
21 | * sdhci-s3c driver probe when cd_type == S3C_SDHCI_CD_EXTERNAL. | ||
22 | * notify_func argument is a callback to the sdhci-s3c driver | ||
23 | * that triggers the card detection event. Callback arguments: | ||
24 | * dev is pointer to platform device of the host controller, | ||
25 | * state is new state of the card (0 - removed, 1 - inserted). | ||
26 | * @ext_cd_cleanup: Cleanup external card detect subsystem. Called on | ||
27 | * sdhci-s3c driver remove when cd_type == S3C_SDHCI_CD_EXTERNAL. | ||
28 | * notify_func argument is the same callback as for ext_cd_init. | ||
29 | * @ext_cd_gpio: gpio pin used for external CD line, valid only if | ||
30 | * cd_type == S3C_SDHCI_CD_GPIO | ||
31 | * @ext_cd_gpio_invert: invert values for external CD gpio line | ||
32 | * @cfg_gpio: Configure the GPIO for a specific card bit-width | ||
33 | * | ||
34 | * Initialisation data specific to either the machine or the platform | ||
35 | * for the device driver to use or call-back when configuring gpio or | ||
36 | * card speed information. | ||
37 | */ | ||
38 | struct s3c_sdhci_platdata { | ||
39 | unsigned int max_width; | ||
40 | unsigned int host_caps; | ||
41 | unsigned int host_caps2; | ||
42 | unsigned int pm_caps; | ||
43 | enum cd_types cd_type; | ||
44 | |||
45 | int ext_cd_gpio; | ||
46 | bool ext_cd_gpio_invert; | ||
47 | int (*ext_cd_init)(void (*notify_func)(struct platform_device *, | ||
48 | int state)); | ||
49 | int (*ext_cd_cleanup)(void (*notify_func)(struct platform_device *, | ||
50 | int state)); | ||
51 | |||
52 | void (*cfg_gpio)(struct platform_device *dev, int width); | ||
53 | }; | ||
54 | |||
55 | |||
56 | #endif /* __PLATFORM_DATA_SDHCI_S3C_H */ | ||
diff --git a/arch/arm/mach-tegra/include/mach/powergate.h b/include/linux/tegra-powergate.h index 06763fe7529d..55c29a8d5015 100644 --- a/arch/arm/mach-tegra/include/mach/powergate.h +++ b/include/linux/tegra-powergate.h | |||
@@ -1,6 +1,4 @@ | |||
1 | /* | 1 | /* |
2 | * drivers/regulator/tegra-regulator.c | ||
3 | * | ||
4 | * Copyright (c) 2010 Google, Inc | 2 | * Copyright (c) 2010 Google, Inc |
5 | * | 3 | * |
6 | * Author: | 4 | * Author: |
@@ -40,9 +38,6 @@ struct clk; | |||
40 | #define TEGRA_POWERGATE_CPU0 TEGRA_POWERGATE_CPU | 38 | #define TEGRA_POWERGATE_CPU0 TEGRA_POWERGATE_CPU |
41 | #define TEGRA_POWERGATE_3D0 TEGRA_POWERGATE_3D | 39 | #define TEGRA_POWERGATE_3D0 TEGRA_POWERGATE_3D |
42 | 40 | ||
43 | int __init tegra_powergate_init(void); | ||
44 | |||
45 | int tegra_cpu_powergate_id(int cpuid); | ||
46 | int tegra_powergate_is_powered(int id); | 41 | int tegra_powergate_is_powered(int id); |
47 | int tegra_powergate_power_on(int id); | 42 | int tegra_powergate_power_on(int id); |
48 | int tegra_powergate_power_off(int id); | 43 | int tegra_powergate_power_off(int id); |
diff --git a/sound/soc/ux500/mop500_ab8500.c b/sound/soc/ux500/mop500_ab8500.c index 78cce236693e..892ad9a05c9f 100644 --- a/sound/soc/ux500/mop500_ab8500.c +++ b/sound/soc/ux500/mop500_ab8500.c | |||
@@ -17,8 +17,6 @@ | |||
17 | #include <linux/io.h> | 17 | #include <linux/io.h> |
18 | #include <linux/clk.h> | 18 | #include <linux/clk.h> |
19 | 19 | ||
20 | #include <mach/hardware.h> | ||
21 | |||
22 | #include <sound/soc.h> | 20 | #include <sound/soc.h> |
23 | #include <sound/soc-dapm.h> | 21 | #include <sound/soc-dapm.h> |
24 | #include <sound/pcm.h> | 22 | #include <sound/pcm.h> |
diff --git a/sound/soc/ux500/ux500_msp_dai.c b/sound/soc/ux500/ux500_msp_dai.c index 94a3e5705aaa..54028cf76511 100644 --- a/sound/soc/ux500/ux500_msp_dai.c +++ b/sound/soc/ux500/ux500_msp_dai.c | |||
@@ -19,9 +19,7 @@ | |||
19 | #include <linux/clk.h> | 19 | #include <linux/clk.h> |
20 | #include <linux/regulator/consumer.h> | 20 | #include <linux/regulator/consumer.h> |
21 | #include <linux/mfd/dbx500-prcmu.h> | 21 | #include <linux/mfd/dbx500-prcmu.h> |
22 | 22 | #include <linux/platform_data/asoc-ux500-msp.h> | |
23 | #include <mach/hardware.h> | ||
24 | #include <mach/msp.h> | ||
25 | 23 | ||
26 | #include <sound/soc.h> | 24 | #include <sound/soc.h> |
27 | #include <sound/soc-dai.h> | 25 | #include <sound/soc-dai.h> |
diff --git a/sound/soc/ux500/ux500_msp_i2s.c b/sound/soc/ux500/ux500_msp_i2s.c index a26c6bf0a29b..f2db6c90a9e2 100644 --- a/sound/soc/ux500/ux500_msp_i2s.c +++ b/sound/soc/ux500/ux500_msp_i2s.c | |||
@@ -20,9 +20,7 @@ | |||
20 | #include <linux/slab.h> | 20 | #include <linux/slab.h> |
21 | #include <linux/io.h> | 21 | #include <linux/io.h> |
22 | #include <linux/of.h> | 22 | #include <linux/of.h> |
23 | 23 | #include <linux/platform_data/asoc-ux500-msp.h> | |
24 | #include <mach/hardware.h> | ||
25 | #include <mach/msp.h> | ||
26 | 24 | ||
27 | #include <sound/soc.h> | 25 | #include <sound/soc.h> |
28 | 26 | ||
diff --git a/sound/soc/ux500/ux500_msp_i2s.h b/sound/soc/ux500/ux500_msp_i2s.h index 1311c0df7628..437f0c032c58 100644 --- a/sound/soc/ux500/ux500_msp_i2s.h +++ b/sound/soc/ux500/ux500_msp_i2s.h | |||
@@ -17,8 +17,6 @@ | |||
17 | 17 | ||
18 | #include <linux/platform_device.h> | 18 | #include <linux/platform_device.h> |
19 | 19 | ||
20 | #include <mach/msp.h> | ||
21 | |||
22 | #define MSP_INPUT_FREQ_APB 48000000 | 20 | #define MSP_INPUT_FREQ_APB 48000000 |
23 | 21 | ||
24 | /*** Stereo mode. Used for APB data accesses as 16 bits accesses (mono), | 22 | /*** Stereo mode. Used for APB data accesses as 16 bits accesses (mono), |