aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-exynos
diff options
context:
space:
mode:
authorArnd Bergmann <arnd@arndb.de>2013-04-19 08:34:05 -0400
committerArnd Bergmann <arnd@arndb.de>2013-04-19 10:50:56 -0400
commit0dc488e778069b208d09516c5f0793dc37023c8e (patch)
tree704ad7fa4d8202f1933297e4dd348128a2b9f702 /arch/arm/mach-exynos
parentc4c54da24b8ae12abb2034edaf08021894caf0d0 (diff)
parentbd51de53e1be9896d815bbea30560262216d4616 (diff)
Merge branch 'samsung/exynos-multiplatform' into next/drivers
Merging this into the next/drivers branch avoids a number of pointless conflicts with code changed here. Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Diffstat (limited to 'arch/arm/mach-exynos')
-rw-r--r--arch/arm/mach-exynos/Kconfig41
-rw-r--r--arch/arm/mach-exynos/Makefile5
-rw-r--r--arch/arm/mach-exynos/common.c6
-rw-r--r--arch/arm/mach-exynos/dev-uart.c1
-rw-r--r--arch/arm/mach-exynos/include/mach/debug-macro.S39
-rw-r--r--arch/arm/mach-exynos/include/mach/irqs.h5
-rw-r--r--arch/arm/mach-exynos/mach-armlex4210.c1
-rw-r--r--arch/arm/mach-exynos/mach-nuri.c1
-rw-r--r--arch/arm/mach-exynos/mach-origen.c1
-rw-r--r--arch/arm/mach-exynos/mach-smdk4x12.c1
-rw-r--r--arch/arm/mach-exynos/mach-smdkv310.c1
-rw-r--r--arch/arm/mach-exynos/setup-sdhci-gpio.c2
12 files changed, 57 insertions, 47 deletions
diff --git a/arch/arm/mach-exynos/Kconfig b/arch/arm/mach-exynos/Kconfig
index ef3b69a6277c..a77db362a888 100644
--- a/arch/arm/mach-exynos/Kconfig
+++ b/arch/arm/mach-exynos/Kconfig
@@ -7,6 +7,21 @@
7 7
8# Configuration options for the EXYNOS4 8# Configuration options for the EXYNOS4
9 9
10config ARCH_EXYNOS
11 # TODO: make this visible after all drivers are converted
12 bool "Samsung EXYNOS" if ARCH_MULTI_V7 && BROKEN
13 default ARCH_EXYNOS_SINGLE
14 select ARCH_HAS_CPUFREQ
15 select CLKDEV_LOOKUP
16 select COMMON_CLK
17 select CPU_V7
18 select GENERIC_CLOCKEVENTS
19 select HAVE_CLK
20 select HAVE_S3C2410_I2C if I2C
21 select HAVE_S3C_RTC if RTC_CLASS
22 help
23 Support for SAMSUNG's EXYNOS SoCs (EXYNOS4/5)
24
10if ARCH_EXYNOS 25if ARCH_EXYNOS
11 26
12menu "SAMSUNG EXYNOS SoCs Support" 27menu "SAMSUNG EXYNOS SoCs Support"
@@ -19,6 +34,9 @@ config ARCH_EXYNOS4
19 help 34 help
20 Samsung EXYNOS4 SoCs based systems 35 Samsung EXYNOS4 SoCs based systems
21 36
37config ARCH_EXYNOS4_SINGLE
38 def_bool ARCH_EXYNOS4 && ARCH_EXYNOS_SINGLE
39
22config ARCH_EXYNOS5 40config ARCH_EXYNOS5
23 bool "SAMSUNG EXYNOS5" 41 bool "SAMSUNG EXYNOS5"
24 select HAVE_SMP 42 select HAVE_SMP
@@ -35,7 +53,7 @@ config CPU_EXYNOS4210
35 select PM_GENERIC_DOMAINS 53 select PM_GENERIC_DOMAINS
36 select S5P_PM if PM 54 select S5P_PM if PM
37 select S5P_SLEEP if PM 55 select S5P_SLEEP if PM
38 select SAMSUNG_DMADEV 56 select SAMSUNG_DMADEV if ARCH_EXYNOS_SINGLE
39 help 57 help
40 Enable EXYNOS4210 CPU support 58 Enable EXYNOS4210 CPU support
41 59
@@ -45,7 +63,7 @@ config SOC_EXYNOS4212
45 depends on ARCH_EXYNOS4 63 depends on ARCH_EXYNOS4
46 select S5P_PM if PM 64 select S5P_PM if PM
47 select S5P_SLEEP if PM 65 select S5P_SLEEP if PM
48 select SAMSUNG_DMADEV 66 select SAMSUNG_DMADEV if ARCH_EXYNOS_SINGLE
49 help 67 help
50 Enable EXYNOS4212 SoC support 68 Enable EXYNOS4212 SoC support
51 69
@@ -53,7 +71,7 @@ config SOC_EXYNOS4412
53 bool "SAMSUNG EXYNOS4412" 71 bool "SAMSUNG EXYNOS4412"
54 default y 72 default y
55 depends on ARCH_EXYNOS4 73 depends on ARCH_EXYNOS4
56 select SAMSUNG_DMADEV 74 select SAMSUNG_DMADEV if ARCH_EXYNOS_SINGLE
57 help 75 help
58 Enable EXYNOS4412 SoC support 76 Enable EXYNOS4412 SoC support
59 77
@@ -65,7 +83,7 @@ config SOC_EXYNOS5250
65 select S5P_PM if PM 83 select S5P_PM if PM
66 select S5P_SLEEP if PM 84 select S5P_SLEEP if PM
67 select S5P_DEV_MFC 85 select S5P_DEV_MFC
68 select SAMSUNG_DMADEV 86 select SAMSUNG_DMADEV if ARCH_EXYNOS_SINGLE
69 help 87 help
70 Enable EXYNOS5250 SoC support 88 Enable EXYNOS5250 SoC support
71 89
@@ -80,6 +98,19 @@ config SOC_EXYNOS5440
80 help 98 help
81 Enable EXYNOS5440 SoC support 99 Enable EXYNOS5440 SoC support
82 100
101config EXYNOS_ATAGS
102 bool "ATAGS based boot for EXYNOS (deprecated)"
103 depends on !ARCH_MULTIPLATFORM
104 depends on ATAGS
105 default y
106 help
107 The EXYNOS platform is moving towards being completely probed
108 through device tree. This enables support for board files using
109 the traditional ATAGS boot format.
110 Note that this option is not available for multiplatform builds.
111
112if EXYNOS_ATAGS
113
83config EXYNOS_DEV_DMA 114config EXYNOS_DEV_DMA
84 bool 115 bool
85 help 116 help
@@ -395,6 +426,8 @@ config MACH_SMDK4412
395 Machine support for Samsung SMDK4412 426 Machine support for Samsung SMDK4412
396endif 427endif
397 428
429endif
430
398comment "Flattened Device Tree based board for EXYNOS SoCs" 431comment "Flattened Device Tree based board for EXYNOS SoCs"
399 432
400config MACH_EXYNOS4_DT 433config MACH_EXYNOS4_DT
diff --git a/arch/arm/mach-exynos/Makefile b/arch/arm/mach-exynos/Makefile
index d2f6b362b6dd..e26d05c5249f 100644
--- a/arch/arm/mach-exynos/Makefile
+++ b/arch/arm/mach-exynos/Makefile
@@ -4,6 +4,7 @@
4# http://www.samsung.com/ 4# http://www.samsung.com/
5# 5#
6# Licensed under GPLv2 6# Licensed under GPLv2
7ccflags-$(CONFIG_ARCH_MULTIPLATFORM) += -I$(srctree)/$(src)/include -I$(srctree)/arch/arm/plat-samsung/include
7 8
8obj-y := 9obj-y :=
9obj-m := 10obj-m :=
@@ -42,12 +43,12 @@ obj-$(CONFIG_MACH_EXYNOS5_DT) += mach-exynos5-dt.o
42# device support 43# device support
43 44
44obj-y += dev-uart.o 45obj-y += dev-uart.o
45obj-$(CONFIG_ARCH_EXYNOS4) += dev-audio.o 46obj-$(CONFIG_ARCH_EXYNOS4_SINGLE) += dev-audio.o
46obj-$(CONFIG_EXYNOS4_DEV_AHCI) += dev-ahci.o 47obj-$(CONFIG_EXYNOS4_DEV_AHCI) += dev-ahci.o
47obj-$(CONFIG_EXYNOS_DEV_DMA) += dma.o 48obj-$(CONFIG_EXYNOS_DEV_DMA) += dma.o
48obj-$(CONFIG_EXYNOS4_DEV_USB_OHCI) += dev-ohci.o 49obj-$(CONFIG_EXYNOS4_DEV_USB_OHCI) += dev-ohci.o
49 50
50obj-$(CONFIG_ARCH_EXYNOS) += setup-i2c0.o 51obj-$(CONFIG_ARCH_EXYNOS_SINGLE) += setup-i2c0.o
51obj-$(CONFIG_EXYNOS4_SETUP_FIMC) += setup-fimc.o 52obj-$(CONFIG_EXYNOS4_SETUP_FIMC) += setup-fimc.o
52obj-$(CONFIG_EXYNOS4_SETUP_FIMD0) += setup-fimd0.o 53obj-$(CONFIG_EXYNOS4_SETUP_FIMD0) += setup-fimd0.o
53obj-$(CONFIG_EXYNOS4_SETUP_I2C1) += setup-i2c1.o 54obj-$(CONFIG_EXYNOS4_SETUP_I2C1) += setup-i2c1.o
diff --git a/arch/arm/mach-exynos/common.c b/arch/arm/mach-exynos/common.c
index 939bda77defa..a3ab0ecc7c6a 100644
--- a/arch/arm/mach-exynos/common.c
+++ b/arch/arm/mach-exynos/common.c
@@ -361,6 +361,9 @@ static void __init exynos4_map_io(void)
361 else 361 else
362 iotable_init(exynos4_iodesc1, ARRAY_SIZE(exynos4_iodesc1)); 362 iotable_init(exynos4_iodesc1, ARRAY_SIZE(exynos4_iodesc1));
363 363
364 if (!IS_ENABLED(CONFIG_EXYNOS_ATAGS))
365 return
366
364 /* initialize device information early */ 367 /* initialize device information early */
365 exynos4_default_sdhci0(); 368 exynos4_default_sdhci0();
366 exynos4_default_sdhci1(); 369 exynos4_default_sdhci1();
@@ -546,6 +549,8 @@ static void __init exynos4_init_uarts(struct s3c2410_uartcfg *cfg, int no)
546 s3c24xx_init_uartdevs("exynos4210-uart", exynos4_uart_resources, cfg, no); 549 s3c24xx_init_uartdevs("exynos4210-uart", exynos4_uart_resources, cfg, no);
547} 550}
548 551
552
553#ifdef CONFIG_EXYNOS_ATAGS
549static void __iomem *exynos_eint_base; 554static void __iomem *exynos_eint_base;
550 555
551static DEFINE_SPINLOCK(eint_lock); 556static DEFINE_SPINLOCK(eint_lock);
@@ -852,6 +857,7 @@ static int __init exynos_init_irq_eint(void)
852 return 0; 857 return 0;
853} 858}
854arch_initcall(exynos_init_irq_eint); 859arch_initcall(exynos_init_irq_eint);
860#endif
855 861
856static struct resource exynos4_pmu_resource[] = { 862static struct resource exynos4_pmu_resource[] = {
857 DEFINE_RES_IRQ(EXYNOS4_IRQ_PMU), 863 DEFINE_RES_IRQ(EXYNOS4_IRQ_PMU),
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/debug-macro.S b/arch/arm/mach-exynos/include/mach/debug-macro.S
deleted file mode 100644
index e0c86ea475e7..000000000000
--- a/arch/arm/mach-exynos/include/mach/debug-macro.S
+++ /dev/null
@@ -1,39 +0,0 @@
1/* linux/arch/arm/mach-exynos4/include/mach/debug-macro.S
2 *
3 * Copyright (c) 2010-2011 Samsung Electronics Co., Ltd.
4 * http://www.samsung.com
5 *
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
9 * it under the terms of the GNU General Public License version 2 as
10 * published by the Free Software Foundation.
11*/
12
13/* pull in the relevant register and map files. */
14
15#include <mach/map.h>
16
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
19 * mapping the head code makes. We keep the UART virtual address
20 * aligned and add in the offset when we load the value here.
21 */
22
23 .macro addruart, rp, rv, tmp
24 mrc p15, 0, \tmp, c0, c0, 0
25 and \tmp, \tmp, #0xf0
26 teq \tmp, #0xf0 @@ A15
27 ldreq \rp, =EXYNOS5_PA_UART
28 movne \rp, #EXYNOS4_PA_UART @@ EXYNOS4
29 ldr \rv, =S3C_VA_UART
30#if CONFIG_DEBUG_S3C_UART != 0
31 add \rp, \rp, #(0x10000 * CONFIG_DEBUG_S3C_UART)
32 add \rv, \rv, #(0x10000 * CONFIG_DEBUG_S3C_UART)
33#endif
34 .endm
35
36#define fifo_full fifo_full_s5pv210
37#define fifo_level fifo_level_s5pv210
38
39#include <plat/debug-macro.S>
diff --git a/arch/arm/mach-exynos/include/mach/irqs.h b/arch/arm/mach-exynos/include/mach/irqs.h
index 35fe6d52d230..c72f59d91fce 100644
--- a/arch/arm/mach-exynos/include/mach/irqs.h
+++ b/arch/arm/mach-exynos/include/mach/irqs.h
@@ -467,7 +467,10 @@
467#define IRQ_TIMER_BASE (IRQ_GPIO_END + 64) 467#define IRQ_TIMER_BASE (IRQ_GPIO_END + 64)
468 468
469/* Set the default NR_IRQS */ 469/* Set the default NR_IRQS */
470#define EXYNOS_NR_IRQS (IRQ_TIMER_BASE + IRQ_TIMER_COUNT)
470 471
471#define NR_IRQS (IRQ_TIMER_BASE + IRQ_TIMER_COUNT) 472#ifndef CONFIG_SPARSE_IRQ
473#define NR_IRQS EXYNOS_NR_IRQS
474#endif
472 475
473#endif /* __ASM_ARCH_IRQS_H */ 476#endif /* __ASM_ARCH_IRQS_H */
diff --git a/arch/arm/mach-exynos/mach-armlex4210.c b/arch/arm/mach-exynos/mach-armlex4210.c
index 2c23b659ae3e..5f0f55701374 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 0c10852423c3..081a5baadd8b 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 a9aa5c034b23..27ebe44785f0 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 184faa3bd93a..2c8af9617920 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 75eca7d4e128..ee312b676772 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
26void exynos4_setup_sdhci0_cfg_gpio(struct platform_device *dev, int width) 26void exynos4_setup_sdhci0_cfg_gpio(struct platform_device *dev, int width)