Merge branch 'samsung/exynos-multiplatform' into next/multiplatform
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>
This commit is contained in:
commit
56b690481c
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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 || \
|
||||
|
@ -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 || \
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -1,10 +1,7 @@
|
|||
/* 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.
|
||||
|
@ -12,7 +9,10 @@
|
|||
|
||||
/* 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
|
||||
|
@ -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>
|
|
@ -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"
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -47,7 +64,7 @@ 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
|
||||
|
||||
|
@ -55,7 +72,7 @@ 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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
|
|
@ -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 :=
|
||||
|
@ -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
|
||||
|
|
|
@ -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();
|
||||
|
@ -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);
|
||||
|
@ -875,3 +880,4 @@ static int __init exynos_init_irq_eint(void)
|
|||
return 0;
|
||||
}
|
||||
arch_initcall(exynos_init_irq_eint);
|
||||
#endif
|
||||
|
|
|
@ -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>
|
||||
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
#include <plat/regs-srom.h>
|
||||
#include <plat/sdhci.h>
|
||||
|
||||
#include <mach/irqs.h>
|
||||
#include <mach/map.h>
|
||||
|
||||
#include "common.h"
|
||||
|
|
|
@ -53,6 +53,7 @@
|
|||
#include <plat/fimc-core.h>
|
||||
#include <plat/camport.h>
|
||||
|
||||
#include <mach/irqs.h>
|
||||
#include <mach/map.h>
|
||||
|
||||
#include "common.h"
|
||||
|
|
|
@ -46,6 +46,7 @@
|
|||
#include <plat/hdmi.h>
|
||||
|
||||
#include <mach/map.h>
|
||||
#include <mach/irqs.h>
|
||||
|
||||
#include <drm/exynos_drm.h>
|
||||
#include "common.h"
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -98,4 +98,4 @@
|
|||
|
||||
/* include the reset of the code which will do the work */
|
||||
|
||||
#include <plat/debug-macro.S>
|
||||
#include <debug/samsung.S>
|
||||
|
|
|
@ -35,4 +35,4 @@
|
|||
* will be fine with us.
|
||||
*/
|
||||
|
||||
#include <plat/debug-macro.S>
|
||||
#include <debug/samsung.S>
|
||||
|
|
|
@ -30,4 +30,4 @@
|
|||
#endif
|
||||
.endm
|
||||
|
||||
#include <plat/debug-macro.S>
|
||||
#include <debug/samsung.S>
|
||||
|
|
|
@ -36,4 +36,4 @@
|
|||
* will be fine with us.
|
||||
*/
|
||||
|
||||
#include <plat/debug-macro.S>
|
||||
#include <debug/samsung.S>
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -38,4 +38,4 @@
|
|||
* will be fine with us.
|
||||
*/
|
||||
|
||||
#include <plat/debug-macro.S>
|
||||
#include <debug/samsung.S>
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
|
|
@ -4,6 +4,9 @@
|
|||
#
|
||||
# Licensed under GPLv2
|
||||
|
||||
ccflags-$(CONFIG_ARCH_MULTI_V7) += -I$(srctree)/$(src)/include
|
||||
ccflags-$(CONFIG_ARCH_EXYNOS) += -I$(srctree)/arch/arm/mach-exynos/include
|
||||
|
||||
obj-y :=
|
||||
obj-m :=
|
||||
obj-n := dummy.o
|
||||
|
@ -34,7 +37,7 @@ obj-$(CONFIG_S3C_ADC) += adc.o
|
|||
|
||||
obj-y += platformdata.o
|
||||
|
||||
obj-y += devs.o
|
||||
obj-$(CONFIG_PLAT_SAMSUNG_SINGLE) += devs.o
|
||||
obj-y += dev-uart.o
|
||||
obj-$(CONFIG_S5P_DEV_MFC) += s5p-dev-mfc.o
|
||||
obj-$(CONFIG_S5P_DEV_UART) += s5p-dev-uart.o
|
||||
|
@ -51,9 +54,10 @@ obj-$(CONFIG_S3C_DMA) += dma.o s3c-dma-ops.o
|
|||
obj-$(CONFIG_SAMSUNG_DMADEV) += dma-ops.o
|
||||
|
||||
# PM support
|
||||
|
||||
obj-$(CONFIG_PM) += pm.o
|
||||
ifdef CONFIG_PLAT_SAMSUNG_SINGLE
|
||||
obj-$(CONFIG_PM) += pm-gpio.o
|
||||
endif
|
||||
obj-$(CONFIG_SAMSUNG_PM_CHECK) += pm-check.o
|
||||
|
||||
obj-$(CONFIG_SAMSUNG_WAKEMASK) += wakeup-mask.o
|
||||
|
|
|
@ -878,51 +878,6 @@ void __init s3c24xx_fb_set_platdata(struct s3c2410fb_mach_info *pd)
|
|||
}
|
||||
#endif /* CONFIG_PLAT_S3C24XX */
|
||||
|
||||
/* MFC */
|
||||
|
||||
#ifdef CONFIG_S5P_DEV_MFC
|
||||
static struct resource s5p_mfc_resource[] = {
|
||||
[0] = DEFINE_RES_MEM(S5P_PA_MFC, SZ_64K),
|
||||
[1] = DEFINE_RES_IRQ(IRQ_MFC),
|
||||
};
|
||||
|
||||
struct platform_device s5p_device_mfc = {
|
||||
.name = "s5p-mfc",
|
||||
.id = -1,
|
||||
.num_resources = ARRAY_SIZE(s5p_mfc_resource),
|
||||
.resource = s5p_mfc_resource,
|
||||
};
|
||||
|
||||
/*
|
||||
* MFC hardware has 2 memory interfaces which are modelled as two separate
|
||||
* platform devices to let dma-mapping distinguish between them.
|
||||
*
|
||||
* MFC parent device (s5p_device_mfc) must be registered before memory
|
||||
* interface specific devices (s5p_device_mfc_l and s5p_device_mfc_r).
|
||||
*/
|
||||
|
||||
struct platform_device s5p_device_mfc_l = {
|
||||
.name = "s5p-mfc-l",
|
||||
.id = -1,
|
||||
.dev = {
|
||||
.parent = &s5p_device_mfc.dev,
|
||||
.dma_mask = &samsung_device_dma_mask,
|
||||
.coherent_dma_mask = DMA_BIT_MASK(32),
|
||||
},
|
||||
};
|
||||
|
||||
struct platform_device s5p_device_mfc_r = {
|
||||
.name = "s5p-mfc-r",
|
||||
.id = -1,
|
||||
.dev = {
|
||||
.parent = &s5p_device_mfc.dev,
|
||||
.dma_mask = &samsung_device_dma_mask,
|
||||
.coherent_dma_mask = DMA_BIT_MASK(32),
|
||||
},
|
||||
};
|
||||
|
||||
#endif /* CONFIG_S5P_DEV_MFC */
|
||||
|
||||
/* MIPI CSIS */
|
||||
|
||||
#ifdef CONFIG_S5P_DEV_CSIS0
|
||||
|
|
|
@ -166,6 +166,7 @@ extern void s3c_pm_check_store(void);
|
|||
*/
|
||||
extern void s3c_pm_configure_extint(void);
|
||||
|
||||
#ifdef CONFIG_PLAT_SAMSUNG_SINGLE
|
||||
/**
|
||||
* samsung_pm_restore_gpios() - restore the state of the gpios after sleep.
|
||||
*
|
||||
|
@ -181,6 +182,10 @@ extern void samsung_pm_restore_gpios(void);
|
|||
* Save the GPIO states for resotration on resume. See samsung_pm_restore_gpios().
|
||||
*/
|
||||
extern void samsung_pm_save_gpios(void);
|
||||
#else
|
||||
#define samsung_pm_restore_gpios() do { } while(0)
|
||||
#define samsung_pm_save_gpios() do { } while(0)
|
||||
#endif
|
||||
|
||||
extern void s3c_pm_save_core(void);
|
||||
extern void s3c_pm_restore_core(void);
|
||||
|
|
|
@ -18,62 +18,9 @@
|
|||
#ifndef __PLAT_S3C_SDHCI_H
|
||||
#define __PLAT_S3C_SDHCI_H __FILE__
|
||||
|
||||
#include <linux/platform_data/mmc-sdhci-s3c.h>
|
||||
#include <plat/devs.h>
|
||||
|
||||
struct platform_device;
|
||||
struct mmc_host;
|
||||
struct mmc_card;
|
||||
struct mmc_ios;
|
||||
|
||||
enum cd_types {
|
||||
S3C_SDHCI_CD_INTERNAL, /* use mmc internal CD line */
|
||||
S3C_SDHCI_CD_EXTERNAL, /* use external callback */
|
||||
S3C_SDHCI_CD_GPIO, /* use external gpio pin for CD line */
|
||||
S3C_SDHCI_CD_NONE, /* no CD line, use polling to detect card */
|
||||
S3C_SDHCI_CD_PERMANENT, /* no CD line, card permanently wired to host */
|
||||
};
|
||||
|
||||
/**
|
||||
* struct s3c_sdhci_platdata() - Platform device data for Samsung SDHCI
|
||||
* @max_width: The maximum number of data bits supported.
|
||||
* @host_caps: Standard MMC host capabilities bit field.
|
||||
* @host_caps2: The second standard MMC host capabilities bit field.
|
||||
* @cd_type: Type of Card Detection method (see cd_types enum above)
|
||||
* @ext_cd_init: Initialize external card detect subsystem. Called on
|
||||
* sdhci-s3c driver probe when cd_type == S3C_SDHCI_CD_EXTERNAL.
|
||||
* notify_func argument is a callback to the sdhci-s3c driver
|
||||
* that triggers the card detection event. Callback arguments:
|
||||
* dev is pointer to platform device of the host controller,
|
||||
* state is new state of the card (0 - removed, 1 - inserted).
|
||||
* @ext_cd_cleanup: Cleanup external card detect subsystem. Called on
|
||||
* sdhci-s3c driver remove when cd_type == S3C_SDHCI_CD_EXTERNAL.
|
||||
* notify_func argument is the same callback as for ext_cd_init.
|
||||
* @ext_cd_gpio: gpio pin used for external CD line, valid only if
|
||||
* cd_type == S3C_SDHCI_CD_GPIO
|
||||
* @ext_cd_gpio_invert: invert values for external CD gpio line
|
||||
* @cfg_gpio: Configure the GPIO for a specific card bit-width
|
||||
*
|
||||
* Initialisation data specific to either the machine or the platform
|
||||
* for the device driver to use or call-back when configuring gpio or
|
||||
* card speed information.
|
||||
*/
|
||||
struct s3c_sdhci_platdata {
|
||||
unsigned int max_width;
|
||||
unsigned int host_caps;
|
||||
unsigned int host_caps2;
|
||||
unsigned int pm_caps;
|
||||
enum cd_types cd_type;
|
||||
|
||||
int ext_cd_gpio;
|
||||
bool ext_cd_gpio_invert;
|
||||
int (*ext_cd_init)(void (*notify_func)(struct platform_device *,
|
||||
int state));
|
||||
int (*ext_cd_cleanup)(void (*notify_func)(struct platform_device *,
|
||||
int state));
|
||||
|
||||
void (*cfg_gpio)(struct platform_device *dev, int width);
|
||||
};
|
||||
|
||||
/* s3c_sdhci_set_platdata() - common helper for setting SDHCI platform data
|
||||
* @pd: The default platform data for this device.
|
||||
* @set: Pointer to the platform data to fill in.
|
||||
|
@ -378,5 +325,4 @@ static inline void s3c_sdhci_setname(int id, char *name)
|
|||
break;
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* __PLAT_S3C_SDHCI_H */
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
#include <linux/io.h>
|
||||
|
||||
#include <mach/map.h>
|
||||
#include <mach/irqs.h>
|
||||
#include <plat/cpu.h>
|
||||
#include <plat/irq-vic-timer.h>
|
||||
#include <plat/regs-timer.h>
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
#include <plat/regs-serial.h>
|
||||
#include <mach/regs-clock.h>
|
||||
#include <mach/regs-irq.h>
|
||||
#include <mach/irqs.h>
|
||||
#include <asm/irq.h>
|
||||
|
||||
#include <plat/pm.h>
|
||||
|
|
|
@ -18,10 +18,50 @@
|
|||
#include <linux/of.h>
|
||||
|
||||
#include <mach/map.h>
|
||||
#include <mach/irqs.h>
|
||||
#include <plat/devs.h>
|
||||
#include <plat/irqs.h>
|
||||
#include <plat/mfc.h>
|
||||
|
||||
static struct resource s5p_mfc_resource[] = {
|
||||
[0] = DEFINE_RES_MEM(S5P_PA_MFC, SZ_64K),
|
||||
[1] = DEFINE_RES_IRQ(IRQ_MFC),
|
||||
};
|
||||
|
||||
struct platform_device s5p_device_mfc = {
|
||||
.name = "s5p-mfc",
|
||||
.id = -1,
|
||||
.num_resources = ARRAY_SIZE(s5p_mfc_resource),
|
||||
.resource = s5p_mfc_resource,
|
||||
};
|
||||
|
||||
/*
|
||||
* MFC hardware has 2 memory interfaces which are modelled as two separate
|
||||
* platform devices to let dma-mapping distinguish between them.
|
||||
*
|
||||
* MFC parent device (s5p_device_mfc) must be registered before memory
|
||||
* interface specific devices (s5p_device_mfc_l and s5p_device_mfc_r).
|
||||
*/
|
||||
|
||||
struct platform_device s5p_device_mfc_l = {
|
||||
.name = "s5p-mfc-l",
|
||||
.id = -1,
|
||||
.dev = {
|
||||
.parent = &s5p_device_mfc.dev,
|
||||
.dma_mask = &s5p_device_mfc_l.dev.coherent_dma_mask,
|
||||
.coherent_dma_mask = DMA_BIT_MASK(32),
|
||||
},
|
||||
};
|
||||
|
||||
struct platform_device s5p_device_mfc_r = {
|
||||
.name = "s5p-mfc-r",
|
||||
.id = -1,
|
||||
.dev = {
|
||||
.parent = &s5p_device_mfc.dev,
|
||||
.dma_mask = &s5p_device_mfc_r.dev.coherent_dma_mask,
|
||||
.coherent_dma_mask = DMA_BIT_MASK(32),
|
||||
},
|
||||
};
|
||||
|
||||
struct s5p_mfc_reserved_mem {
|
||||
phys_addr_t base;
|
||||
unsigned long size;
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
#include <linux/io.h>
|
||||
#include <linux/irqchip/arm-vic.h>
|
||||
|
||||
#include <mach/irqs.h>
|
||||
#include <mach/map.h>
|
||||
#include <plat/regs-timer.h>
|
||||
#include <plat/cpu.h>
|
||||
|
|
|
@ -57,7 +57,7 @@ obj-$(CONFIG_GPIO_PL061) += gpio-pl061.o
|
|||
obj-$(CONFIG_GPIO_PXA) += gpio-pxa.o
|
||||
obj-$(CONFIG_GPIO_RC5T583) += gpio-rc5t583.o
|
||||
obj-$(CONFIG_GPIO_RDC321X) += gpio-rdc321x.o
|
||||
obj-$(CONFIG_PLAT_SAMSUNG) += gpio-samsung.o
|
||||
obj-$(CONFIG_PLAT_SAMSUNG_SINGLE) += gpio-samsung.o
|
||||
obj-$(CONFIG_ARCH_SA1100) += gpio-sa1100.o
|
||||
obj-$(CONFIG_GPIO_SCH) += gpio-sch.o
|
||||
obj-$(CONFIG_GPIO_SODAVILLE) += gpio-sodaville.o
|
||||
|
|
|
@ -180,7 +180,7 @@ config MMC_SDHCI_TEGRA
|
|||
|
||||
config MMC_SDHCI_S3C
|
||||
tristate "SDHCI support on Samsung S3C SoC"
|
||||
depends on MMC_SDHCI && PLAT_SAMSUNG
|
||||
depends on MMC_SDHCI && PLAT_SAMSUNG_SINGLE
|
||||
help
|
||||
This selects the Secure Digital Host Controller Interface (SDHCI)
|
||||
often referrered to as the HSMMC block in some of the Samsung S3C
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
#include <linux/delay.h>
|
||||
#include <linux/dma-mapping.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/platform_data/mmc-sdhci-s3c.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/clk.h>
|
||||
#include <linux/io.h>
|
||||
|
@ -28,9 +29,7 @@
|
|||
|
||||
#include <linux/mmc/host.h>
|
||||
|
||||
#include <plat/sdhci.h>
|
||||
#include <plat/regs-sdhci.h>
|
||||
|
||||
#include "sdhci-s3c-regs.h"
|
||||
#include "sdhci.h"
|
||||
|
||||
#define MAX_BUS_CLK (4)
|
||||
|
|
|
@ -23,11 +23,11 @@
|
|||
#include <linux/mtd/partitions.h>
|
||||
#include <linux/dma-mapping.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/io.h>
|
||||
|
||||
#include <asm/mach/flash.h>
|
||||
#include <plat/regs-onenand.h>
|
||||
|
||||
#include <linux/io.h>
|
||||
#include "samsung.h"
|
||||
|
||||
enum soc_type {
|
||||
TYPE_S3C6400,
|
||||
|
|
|
@ -11,8 +11,6 @@
|
|||
#ifndef __SAMSUNG_ONENAND_H__
|
||||
#define __SAMSUNG_ONENAND_H__
|
||||
|
||||
#include <mach/hardware.h>
|
||||
|
||||
/*
|
||||
* OneNAND Controller
|
||||
*/
|
|
@ -29,9 +29,8 @@
|
|||
#include <linux/uaccess.h>
|
||||
#include <linux/io.h>
|
||||
|
||||
#include <mach/hardware.h>
|
||||
#include <asm/irq.h>
|
||||
#include <plat/regs-rtc.h>
|
||||
#include "rtc-s3c.h"
|
||||
|
||||
enum s3c_cpu_type {
|
||||
TYPE_S3C2410,
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
/* arch/arm/mach-s3c2410/include/mach/regs-rtc.h
|
||||
*
|
||||
/*
|
||||
* Copyright (c) 2003 Simtec Electronics <linux@simtec.co.uk>
|
||||
* http://www.simtec.co.uk/products/SWLINUX/
|
||||
*
|
|
@ -39,8 +39,6 @@
|
|||
#include <linux/cpu_cooling.h>
|
||||
#include <linux/of.h>
|
||||
|
||||
#include <plat/cpu.h>
|
||||
|
||||
/* Exynos generic registers */
|
||||
#define EXYNOS_TMU_REG_TRIMINFO 0x0
|
||||
#define EXYNOS_TMU_REG_CONTROL 0x20
|
||||
|
|
|
@ -0,0 +1,56 @@
|
|||
#ifndef __PLATFORM_DATA_SDHCI_S3C_H
|
||||
#define __PLATFORM_DATA_SDHCI_S3C_H
|
||||
|
||||
struct platform_device;
|
||||
|
||||
enum cd_types {
|
||||
S3C_SDHCI_CD_INTERNAL, /* use mmc internal CD line */
|
||||
S3C_SDHCI_CD_EXTERNAL, /* use external callback */
|
||||
S3C_SDHCI_CD_GPIO, /* use external gpio pin for CD line */
|
||||
S3C_SDHCI_CD_NONE, /* no CD line, use polling to detect card */
|
||||
S3C_SDHCI_CD_PERMANENT, /* no CD line, card permanently wired to host */
|
||||
};
|
||||
|
||||
/**
|
||||
* struct s3c_sdhci_platdata() - Platform device data for Samsung SDHCI
|
||||
* @max_width: The maximum number of data bits supported.
|
||||
* @host_caps: Standard MMC host capabilities bit field.
|
||||
* @host_caps2: The second standard MMC host capabilities bit field.
|
||||
* @cd_type: Type of Card Detection method (see cd_types enum above)
|
||||
* @ext_cd_init: Initialize external card detect subsystem. Called on
|
||||
* sdhci-s3c driver probe when cd_type == S3C_SDHCI_CD_EXTERNAL.
|
||||
* notify_func argument is a callback to the sdhci-s3c driver
|
||||
* that triggers the card detection event. Callback arguments:
|
||||
* dev is pointer to platform device of the host controller,
|
||||
* state is new state of the card (0 - removed, 1 - inserted).
|
||||
* @ext_cd_cleanup: Cleanup external card detect subsystem. Called on
|
||||
* sdhci-s3c driver remove when cd_type == S3C_SDHCI_CD_EXTERNAL.
|
||||
* notify_func argument is the same callback as for ext_cd_init.
|
||||
* @ext_cd_gpio: gpio pin used for external CD line, valid only if
|
||||
* cd_type == S3C_SDHCI_CD_GPIO
|
||||
* @ext_cd_gpio_invert: invert values for external CD gpio line
|
||||
* @cfg_gpio: Configure the GPIO for a specific card bit-width
|
||||
*
|
||||
* Initialisation data specific to either the machine or the platform
|
||||
* for the device driver to use or call-back when configuring gpio or
|
||||
* card speed information.
|
||||
*/
|
||||
struct s3c_sdhci_platdata {
|
||||
unsigned int max_width;
|
||||
unsigned int host_caps;
|
||||
unsigned int host_caps2;
|
||||
unsigned int pm_caps;
|
||||
enum cd_types cd_type;
|
||||
|
||||
int ext_cd_gpio;
|
||||
bool ext_cd_gpio_invert;
|
||||
int (*ext_cd_init)(void (*notify_func)(struct platform_device *,
|
||||
int state));
|
||||
int (*ext_cd_cleanup)(void (*notify_func)(struct platform_device *,
|
||||
int state));
|
||||
|
||||
void (*cfg_gpio)(struct platform_device *dev, int width);
|
||||
};
|
||||
|
||||
|
||||
#endif /* __PLATFORM_DATA_SDHCI_S3C_H */
|
Loading…
Reference in New Issue