Skip to content

Commit

Permalink
Merge branch 'samsung/exynos-multiplatform' into next/multiplatform
Browse files Browse the repository at this point in the history
These patches get us closer to adding multiplatform support on
the Exynos platform, they are part of a longer series of
patches.  This would get all the simple stuff out of the
way, and I don't think there is a big risk of introducing
regressions with these.

A lot of the other patches have already been merged into
subsystem trees. After this series in in arm-soc, what is
left comes down to

* The ASoC conversion to dmaengine won't make it unless someone
  who knows that code better steps up to do it right away. This
  means that we won't have audio in a 3.10 multiplatform kernel
  on Exynos, but it will still work for users that don't enable
  multiplatform.

* The irqchip (combiner), clk and clksource patches are all based
  on top   of other changesets we pulled in from your trees, so I
  would not make them part of the next/multiplatform branch. We can
  apply them on top of the next/drivers branch once they are
  tested successfully.

* A trivial patch is needed in the end to actually make
  CONFIG_ARCH_EXYNOS visible in multiplatform configurations.
  We will do that as a separate patch once everything else is
  there.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
  • Loading branch information
Arnd Bergmann committed Apr 19, 2013
2 parents 408e713 + bd51de5 commit 56b6904
Show file tree
Hide file tree
Showing 42 changed files with 203 additions and 149 deletions.
9 changes: 1 addition & 8 deletions arch/arm/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -776,18 +776,11 @@ config ARCH_S5PV210
help
Samsung S5PV210/S5PC110 series based systems

config ARCH_EXYNOS
config ARCH_EXYNOS_SINGLE
bool "Samsung EXYNOS"
select ARCH_HAS_CPUFREQ
select ARCH_HAS_HOLES_MEMORYMODEL
select ARCH_SPARSEMEM_ENABLE
select CLKDEV_LOOKUP
select CPU_V7
select GENERIC_CLOCKEVENTS
select HAVE_CLK
select HAVE_S3C2410_I2C if I2C
select HAVE_S3C2410_WATCHDOG if WATCHDOG
select HAVE_S3C_RTC if RTC_CLASS
select NEED_MACH_GPIO_H
select NEED_MACH_MEMORY_H
help
Expand Down
8 changes: 8 additions & 0 deletions arch/arm/Kconfig.debug
Original file line number Diff line number Diff line change
Expand Up @@ -348,6 +348,7 @@ choice

config DEBUG_S3C_UART0
depends on PLAT_SAMSUNG
select DEBUG_EXYNOS_UART if ARCH_EXYNOS
bool "Use S3C UART 0 for low-level debug"
help
Say Y here if you want the debug print routines to direct
Expand All @@ -359,6 +360,7 @@ choice

config DEBUG_S3C_UART1
depends on PLAT_SAMSUNG
select DEBUG_EXYNOS_UART if ARCH_EXYNOS
bool "Use S3C UART 1 for low-level debug"
help
Say Y here if you want the debug print routines to direct
Expand All @@ -370,6 +372,7 @@ choice

config DEBUG_S3C_UART2
depends on PLAT_SAMSUNG
select DEBUG_EXYNOS_UART if ARCH_EXYNOS
bool "Use S3C UART 2 for low-level debug"
help
Say Y here if you want the debug print routines to direct
Expand All @@ -381,6 +384,7 @@ choice

config DEBUG_S3C_UART3
depends on PLAT_SAMSUNG && ARCH_EXYNOS
select DEBUG_EXYNOS_UART
bool "Use S3C UART 3 for low-level debug"
help
Say Y here if you want the debug print routines to direct
Expand Down Expand Up @@ -510,6 +514,9 @@ choice

endchoice

config DEBUG_EXYNOS_UART
bool

config DEBUG_IMX_UART_PORT
int "i.MX Debug UART Port Selection" if DEBUG_IMX1_UART || \
DEBUG_IMX25_UART || \
Expand Down Expand Up @@ -607,6 +614,7 @@ config DEBUG_LL_INCLUDE
string
default "debug/bcm2835.S" if DEBUG_BCM2835
default "debug/cns3xxx.S" if DEBUG_CNS3XXX
default "debug/exynos.S" if DEBUG_EXYNOS_UART
default "debug/icedcc.S" if DEBUG_ICEDCC
default "debug/imx.S" if DEBUG_IMX1_UART || \
DEBUG_IMX25_UART || \
Expand Down
2 changes: 1 addition & 1 deletion arch/arm/configs/exynos4_defconfig
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ CONFIG_KALLSYMS_ALL=y
CONFIG_MODULES=y
CONFIG_MODULE_UNLOAD=y
# CONFIG_BLK_DEV_BSG is not set
CONFIG_ARCH_EXYNOS=y
CONFIG_ARCH_EXYNOS_SINGLE=y
CONFIG_S3C_LOWLEVEL_UART_PORT=1
CONFIG_MACH_SMDKC210=y
CONFIG_MACH_ARMLEX4210=y
Expand Down
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
/* linux/arch/arm/mach-exynos4/include/mach/debug-macro.S
*
/*
* Copyright (c) 2010-2011 Samsung Electronics Co., Ltd.
* http://www.samsung.com
*
* Based on arch/arm/mach-s3c6400/include/mach/debug-macro.S
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/

/* pull in the relevant register and map files. */

#include <mach/map.h>
#define S3C_ADDR_BASE 0xF6000000
#define S3C_VA_UART S3C_ADDR_BASE + 0x01000000
#define EXYNOS4_PA_UART 0x13800000
#define EXYNOS5_PA_UART 0x12C00000

/* note, for the boot process to work we have to keep the UART
* virtual address aligned to an 1MiB boundary for the L1
Expand All @@ -36,4 +36,4 @@
#define fifo_full fifo_full_s5pv210
#define fifo_level fifo_level_s5pv210

#include <plat/debug-macro.S>
#include <debug/samsung.S>
File renamed without changes.
40 changes: 36 additions & 4 deletions arch/arm/mach-exynos/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,20 @@

# Configuration options for the EXYNOS4

config ARCH_EXYNOS
# TODO: make this visible after all drivers are converted
bool "Samsung EXYNOS" if ARCH_MULTI_V7 && BROKEN
default ARCH_EXYNOS_SINGLE
select ARCH_HAS_CPUFREQ
select CLKDEV_LOOKUP
select CPU_V7
select GENERIC_CLOCKEVENTS
select HAVE_CLK
select HAVE_S3C2410_I2C if I2C
select HAVE_S3C_RTC if RTC_CLASS
help
Support for SAMSUNG's EXYNOS SoCs (EXYNOS4/5)

if ARCH_EXYNOS

menu "SAMSUNG EXYNOS SoCs Support"
Expand All @@ -20,6 +34,9 @@ config ARCH_EXYNOS4
help
Samsung EXYNOS4 SoCs based systems

config ARCH_EXYNOS4_SINGLE
def_bool ARCH_EXYNOS4 && ARCH_EXYNOS_SINGLE

config ARCH_EXYNOS5
bool "SAMSUNG EXYNOS5"
select HAVE_ARM_SCU if SMP
Expand All @@ -37,7 +54,7 @@ config CPU_EXYNOS4210
select PM_GENERIC_DOMAINS
select S5P_PM if PM
select S5P_SLEEP if PM
select SAMSUNG_DMADEV
select SAMSUNG_DMADEV if ARCH_EXYNOS_SINGLE
help
Enable EXYNOS4210 CPU support

Expand All @@ -47,15 +64,15 @@ config SOC_EXYNOS4212
depends on ARCH_EXYNOS4
select S5P_PM if PM
select S5P_SLEEP if PM
select SAMSUNG_DMADEV
select SAMSUNG_DMADEV if ARCH_EXYNOS_SINGLE
help
Enable EXYNOS4212 SoC support

config SOC_EXYNOS4412
bool "SAMSUNG EXYNOS4412"
default y
depends on ARCH_EXYNOS4
select SAMSUNG_DMADEV
select SAMSUNG_DMADEV if ARCH_EXYNOS_SINGLE
help
Enable EXYNOS4412 SoC support

Expand All @@ -66,7 +83,7 @@ config SOC_EXYNOS5250
select S5P_PM if PM
select S5P_SLEEP if PM
select S5P_DEV_MFC
select SAMSUNG_DMADEV
select SAMSUNG_DMADEV if ARCH_EXYNOS_SINGLE
help
Enable EXYNOS5250 SoC support

Expand All @@ -87,6 +104,19 @@ config EXYNOS4_MCT
help
Use MCT (Multi Core Timer) as kernel timers

config EXYNOS_ATAGS
bool "ATAGS based boot for EXYNOS (deprecated)"
depends on !ARCH_MULTIPLATFORM
depends on ATAGS
default y
help
The EXYNOS platform is moving towards being completely probed
through device tree. This enables support for board files using
the traditional ATAGS boot format.
Note that this option is not available for multiplatform builds.

if EXYNOS_ATAGS

config EXYNOS_DEV_DMA
bool
help
Expand Down Expand Up @@ -402,6 +432,8 @@ config MACH_SMDK4412
Machine support for Samsung SMDK4412
endif

endif

comment "Flattened Device Tree based board for EXYNOS SoCs"

config MACH_EXYNOS4_DT
Expand Down
5 changes: 3 additions & 2 deletions arch/arm/mach-exynos/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
# http://www.samsung.com/
#
# Licensed under GPLv2
ccflags-$(CONFIG_ARCH_MULTIPLATFORM) += -I$(srctree)/$(src)/include -I$(srctree)/arch/arm/plat-samsung/include

obj-y :=
obj-m :=
Expand Down Expand Up @@ -48,12 +49,12 @@ obj-$(CONFIG_MACH_EXYNOS5_DT) += mach-exynos5-dt.o
# device support

obj-y += dev-uart.o
obj-$(CONFIG_ARCH_EXYNOS4) += dev-audio.o
obj-$(CONFIG_ARCH_EXYNOS4_SINGLE) += dev-audio.o
obj-$(CONFIG_EXYNOS4_DEV_AHCI) += dev-ahci.o
obj-$(CONFIG_EXYNOS_DEV_DMA) += dma.o
obj-$(CONFIG_EXYNOS4_DEV_USB_OHCI) += dev-ohci.o

obj-$(CONFIG_ARCH_EXYNOS) += setup-i2c0.o
obj-$(CONFIG_ARCH_EXYNOS_SINGLE) += setup-i2c0.o
obj-$(CONFIG_EXYNOS4_SETUP_FIMC) += setup-fimc.o
obj-$(CONFIG_EXYNOS4_SETUP_FIMD0) += setup-fimd0.o
obj-$(CONFIG_EXYNOS4_SETUP_I2C1) += setup-i2c1.o
Expand Down
6 changes: 6 additions & 0 deletions arch/arm/mach-exynos/common.c
Original file line number Diff line number Diff line change
Expand Up @@ -368,6 +368,9 @@ static void __init exynos4_map_io(void)
else
iotable_init(exynos4_iodesc1, ARRAY_SIZE(exynos4_iodesc1));

if (!IS_ENABLED(CONFIG_EXYNOS_ATAGS))
return

/* initialize device information early */
exynos4_default_sdhci0();
exynos4_default_sdhci1();
Expand Down Expand Up @@ -570,6 +573,8 @@ static void __init exynos4_init_uarts(struct s3c2410_uartcfg *cfg, int no)
s3c24xx_init_uartdevs("exynos4210-uart", exynos4_uart_resources, cfg, no);
}


#ifdef CONFIG_EXYNOS_ATAGS
static void __iomem *exynos_eint_base;

static DEFINE_SPINLOCK(eint_lock);
Expand Down Expand Up @@ -875,3 +880,4 @@ static int __init exynos_init_irq_eint(void)
return 0;
}
arch_initcall(exynos_init_irq_eint);
#endif
1 change: 1 addition & 0 deletions arch/arm/mach-exynos/dev-uart.c
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
#include <asm/mach/irq.h>
#include <mach/hardware.h>
#include <mach/map.h>
#include <mach/irqs.h>

#include <plat/devs.h>

Expand Down
5 changes: 4 additions & 1 deletion arch/arm/mach-exynos/include/mach/irqs.h
Original file line number Diff line number Diff line change
Expand Up @@ -466,7 +466,10 @@
#define IRQ_TIMER_BASE (IRQ_GPIO_END + 64)

/* Set the default NR_IRQS */
#define EXYNOS_NR_IRQS (IRQ_TIMER_BASE + IRQ_TIMER_COUNT)

#define NR_IRQS (IRQ_TIMER_BASE + IRQ_TIMER_COUNT)
#ifndef CONFIG_SPARSE_IRQ
#define NR_IRQS EXYNOS_NR_IRQS
#endif

#endif /* __ASM_ARCH_IRQS_H */
1 change: 1 addition & 0 deletions arch/arm/mach-exynos/mach-armlex4210.c
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
#include <plat/regs-srom.h>
#include <plat/sdhci.h>

#include <mach/irqs.h>
#include <mach/map.h>

#include "common.h"
Expand Down
1 change: 1 addition & 0 deletions arch/arm/mach-exynos/mach-nuri.c
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@
#include <plat/fimc-core.h>
#include <plat/camport.h>

#include <mach/irqs.h>
#include <mach/map.h>

#include "common.h"
Expand Down
1 change: 1 addition & 0 deletions arch/arm/mach-exynos/mach-origen.c
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@
#include <plat/hdmi.h>

#include <mach/map.h>
#include <mach/irqs.h>

#include <drm/exynos_drm.h>
#include "common.h"
Expand Down
1 change: 1 addition & 0 deletions arch/arm/mach-exynos/mach-smdk4x12.c
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
#include <plat/regs-serial.h>
#include <plat/sdhci.h>

#include <mach/irqs.h>
#include <mach/map.h>

#include <drm/exynos_drm.h>
Expand Down
1 change: 1 addition & 0 deletions arch/arm/mach-exynos/mach-smdkv310.c
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@
#include <plat/clock.h>
#include <plat/hdmi.h>

#include <mach/irqs.h>
#include <mach/map.h>

#include <drm/exynos_drm.h>
Expand Down
2 changes: 1 addition & 1 deletion arch/arm/mach-exynos/setup-sdhci-gpio.c
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@
#include <linux/mmc/host.h>
#include <linux/mmc/card.h>

#include <mach/gpio.h>
#include <plat/gpio-cfg.h>
#include <plat/regs-sdhci.h>
#include <plat/sdhci.h>

void exynos4_setup_sdhci0_cfg_gpio(struct platform_device *dev, int width)
Expand Down
2 changes: 1 addition & 1 deletion arch/arm/mach-s3c24xx/include/mach/debug-macro.S
Original file line number Diff line number Diff line change
Expand Up @@ -98,4 +98,4 @@

/* include the reset of the code which will do the work */

#include <plat/debug-macro.S>
#include <debug/samsung.S>
2 changes: 1 addition & 1 deletion arch/arm/mach-s3c64xx/include/mach/debug-macro.S
Original file line number Diff line number Diff line change
Expand Up @@ -35,4 +35,4 @@
* will be fine with us.
*/

#include <plat/debug-macro.S>
#include <debug/samsung.S>
2 changes: 1 addition & 1 deletion arch/arm/mach-s5p64x0/include/mach/debug-macro.S
Original file line number Diff line number Diff line change
Expand Up @@ -30,4 +30,4 @@
#endif
.endm

#include <plat/debug-macro.S>
#include <debug/samsung.S>
2 changes: 1 addition & 1 deletion arch/arm/mach-s5pc100/include/mach/debug-macro.S
Original file line number Diff line number Diff line change
Expand Up @@ -36,4 +36,4 @@
* will be fine with us.
*/

#include <plat/debug-macro.S>
#include <debug/samsung.S>
1 change: 0 additions & 1 deletion arch/arm/mach-s5pc100/setup-sdhci-gpio.c
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@
#include <linux/mmc/card.h>

#include <plat/gpio-cfg.h>
#include <plat/regs-sdhci.h>
#include <plat/sdhci.h>

void s5pc100_setup_sdhci0_cfg_gpio(struct platform_device *dev, int width)
Expand Down
2 changes: 1 addition & 1 deletion arch/arm/mach-s5pv210/include/mach/debug-macro.S
Original file line number Diff line number Diff line change
Expand Up @@ -38,4 +38,4 @@
* will be fine with us.
*/

#include <plat/debug-macro.S>
#include <debug/samsung.S>
1 change: 0 additions & 1 deletion arch/arm/mach-s5pv210/setup-sdhci-gpio.c
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@
#include <linux/mmc/card.h>

#include <plat/gpio-cfg.h>
#include <plat/regs-sdhci.h>
#include <plat/sdhci.h>

void s5pv210_setup_sdhci0_cfg_gpio(struct platform_device *dev, int width)
Expand Down
7 changes: 6 additions & 1 deletion arch/arm/plat-samsung/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,10 @@ config PLAT_SAMSUNG
help
Base platform code for all Samsung SoC based systems

config PLAT_SAMSUNG_SINGLE
def_bool PLAT_SAMSUNG && !ARCH_MULTIPLATFORM


config PLAT_S5P
bool
depends on (ARCH_S5P64X0 || ARCH_S5PC100 || ARCH_S5PV210 || ARCH_EXYNOS)
Expand All @@ -23,7 +27,7 @@ config PLAT_S5P
select GIC_NON_BANKED if ARCH_EXYNOS4
select NO_IOPORT
select PLAT_SAMSUNG
select S3C_GPIO_TRACK
select S3C_GPIO_TRACK if PLAT_SAMSUNG_SINGLE
select S5P_GPIO_DRVSTR
select SAMSUNG_CLKSRC
select SAMSUNG_GPIOLIB_4BIT
Expand Down Expand Up @@ -178,6 +182,7 @@ config S5P_DEV_UART

config S3C_ADC
bool "ADC common driver support"
depends on PLAT_SAMSUNG_SINGLE
help
Core support for the ADC block found in the Samsung SoC systems
for drivers such as the touchscreen and hwmon to use to share
Expand Down
Loading

0 comments on commit 56b6904

Please sign in to comment.