Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

+203 -149
+1 -8
arch/arm/Kconfig
··· 776 776 help 777 777 Samsung S5PV210/S5PC110 series based systems 778 778 779 - config ARCH_EXYNOS 779 + config ARCH_EXYNOS_SINGLE 780 780 bool "Samsung EXYNOS" 781 - select ARCH_HAS_CPUFREQ 782 781 select ARCH_HAS_HOLES_MEMORYMODEL 783 782 select ARCH_SPARSEMEM_ENABLE 784 - select CLKDEV_LOOKUP 785 - select CPU_V7 786 - select GENERIC_CLOCKEVENTS 787 - select HAVE_CLK 788 - select HAVE_S3C2410_I2C if I2C 789 783 select HAVE_S3C2410_WATCHDOG if WATCHDOG 790 - select HAVE_S3C_RTC if RTC_CLASS 791 784 select NEED_MACH_GPIO_H 792 785 select NEED_MACH_MEMORY_H 793 786 help
+8
arch/arm/Kconfig.debug
··· 348 348 349 349 config DEBUG_S3C_UART0 350 350 depends on PLAT_SAMSUNG 351 + select DEBUG_EXYNOS_UART if ARCH_EXYNOS 351 352 bool "Use S3C UART 0 for low-level debug" 352 353 help 353 354 Say Y here if you want the debug print routines to direct ··· 360 359 361 360 config DEBUG_S3C_UART1 362 361 depends on PLAT_SAMSUNG 362 + select DEBUG_EXYNOS_UART if ARCH_EXYNOS 363 363 bool "Use S3C UART 1 for low-level debug" 364 364 help 365 365 Say Y here if you want the debug print routines to direct ··· 372 370 373 371 config DEBUG_S3C_UART2 374 372 depends on PLAT_SAMSUNG 373 + select DEBUG_EXYNOS_UART if ARCH_EXYNOS 375 374 bool "Use S3C UART 2 for low-level debug" 376 375 help 377 376 Say Y here if you want the debug print routines to direct ··· 384 381 385 382 config DEBUG_S3C_UART3 386 383 depends on PLAT_SAMSUNG && ARCH_EXYNOS 384 + select DEBUG_EXYNOS_UART 387 385 bool "Use S3C UART 3 for low-level debug" 388 386 help 389 387 Say Y here if you want the debug print routines to direct ··· 514 510 515 511 endchoice 516 512 513 + config DEBUG_EXYNOS_UART 514 + bool 515 + 517 516 config DEBUG_IMX_UART_PORT 518 517 int "i.MX Debug UART Port Selection" if DEBUG_IMX1_UART || \ 519 518 DEBUG_IMX25_UART || \ ··· 614 607 string 615 608 default "debug/bcm2835.S" if DEBUG_BCM2835 616 609 default "debug/cns3xxx.S" if DEBUG_CNS3XXX 610 + default "debug/exynos.S" if DEBUG_EXYNOS_UART 617 611 default "debug/icedcc.S" if DEBUG_ICEDCC 618 612 default "debug/imx.S" if DEBUG_IMX1_UART || \ 619 613 DEBUG_IMX25_UART || \
+1 -1
arch/arm/configs/exynos4_defconfig
··· 4 4 CONFIG_MODULES=y 5 5 CONFIG_MODULE_UNLOAD=y 6 6 # CONFIG_BLK_DEV_BSG is not set 7 - CONFIG_ARCH_EXYNOS=y 7 + CONFIG_ARCH_EXYNOS_SINGLE=y 8 8 CONFIG_S3C_LOWLEVEL_UART_PORT=1 9 9 CONFIG_MACH_SMDKC210=y 10 10 CONFIG_MACH_ARMLEX4210=y
+36 -4
arch/arm/mach-exynos/Kconfig
··· 7 7 8 8 # Configuration options for the EXYNOS4 9 9 10 + config 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 CPU_V7 17 + select GENERIC_CLOCKEVENTS 18 + select HAVE_CLK 19 + select HAVE_S3C2410_I2C if I2C 20 + select HAVE_S3C_RTC if RTC_CLASS 21 + help 22 + Support for SAMSUNG's EXYNOS SoCs (EXYNOS4/5) 23 + 10 24 if ARCH_EXYNOS 11 25 12 26 menu "SAMSUNG EXYNOS SoCs Support" ··· 33 19 select MIGHT_HAVE_CACHE_L2X0 34 20 help 35 21 Samsung EXYNOS4 SoCs based systems 22 + 23 + config ARCH_EXYNOS4_SINGLE 24 + def_bool ARCH_EXYNOS4 && ARCH_EXYNOS_SINGLE 36 25 37 26 config ARCH_EXYNOS5 38 27 bool "SAMSUNG EXYNOS5" ··· 54 37 select PM_GENERIC_DOMAINS 55 38 select S5P_PM if PM 56 39 select S5P_SLEEP if PM 57 - select SAMSUNG_DMADEV 40 + select SAMSUNG_DMADEV if ARCH_EXYNOS_SINGLE 58 41 help 59 42 Enable EXYNOS4210 CPU support 60 43 ··· 64 47 depends on ARCH_EXYNOS4 65 48 select S5P_PM if PM 66 49 select S5P_SLEEP if PM 67 - select SAMSUNG_DMADEV 50 + select SAMSUNG_DMADEV if ARCH_EXYNOS_SINGLE 68 51 help 69 52 Enable EXYNOS4212 SoC support 70 53 ··· 72 55 bool "SAMSUNG EXYNOS4412" 73 56 default y 74 57 depends on ARCH_EXYNOS4 75 - select SAMSUNG_DMADEV 58 + select SAMSUNG_DMADEV if ARCH_EXYNOS_SINGLE 76 59 help 77 60 Enable EXYNOS4412 SoC support 78 61 ··· 83 66 select S5P_PM if PM 84 67 select S5P_SLEEP if PM 85 68 select S5P_DEV_MFC 86 - select SAMSUNG_DMADEV 69 + select SAMSUNG_DMADEV if ARCH_EXYNOS_SINGLE 87 70 help 88 71 Enable EXYNOS5250 SoC support 89 72 ··· 103 86 default y 104 87 help 105 88 Use MCT (Multi Core Timer) as kernel timers 89 + 90 + config EXYNOS_ATAGS 91 + bool "ATAGS based boot for EXYNOS (deprecated)" 92 + depends on !ARCH_MULTIPLATFORM 93 + depends on ATAGS 94 + default y 95 + help 96 + The EXYNOS platform is moving towards being completely probed 97 + through device tree. This enables support for board files using 98 + the traditional ATAGS boot format. 99 + Note that this option is not available for multiplatform builds. 100 + 101 + if EXYNOS_ATAGS 106 102 107 103 config EXYNOS_DEV_DMA 108 104 bool ··· 430 400 select SOC_EXYNOS4412 431 401 help 432 402 Machine support for Samsung SMDK4412 403 + endif 404 + 433 405 endif 434 406 435 407 comment "Flattened Device Tree based board for EXYNOS SoCs"
+3 -2
arch/arm/mach-exynos/Makefile
··· 4 4 # http://www.samsung.com/ 5 5 # 6 6 # Licensed under GPLv2 7 + ccflags-$(CONFIG_ARCH_MULTIPLATFORM) += -I$(srctree)/$(src)/include -I$(srctree)/arch/arm/plat-samsung/include 7 8 8 9 obj-y := 9 10 obj-m := ··· 49 48 # device support 50 49 51 50 obj-y += dev-uart.o 52 - obj-$(CONFIG_ARCH_EXYNOS4) += dev-audio.o 51 + obj-$(CONFIG_ARCH_EXYNOS4_SINGLE) += dev-audio.o 53 52 obj-$(CONFIG_EXYNOS4_DEV_AHCI) += dev-ahci.o 54 53 obj-$(CONFIG_EXYNOS_DEV_DMA) += dma.o 55 54 obj-$(CONFIG_EXYNOS4_DEV_USB_OHCI) += dev-ohci.o 56 55 57 - obj-$(CONFIG_ARCH_EXYNOS) += setup-i2c0.o 56 + obj-$(CONFIG_ARCH_EXYNOS_SINGLE) += setup-i2c0.o 58 57 obj-$(CONFIG_EXYNOS4_SETUP_FIMC) += setup-fimc.o 59 58 obj-$(CONFIG_EXYNOS4_SETUP_FIMD0) += setup-fimd0.o 60 59 obj-$(CONFIG_EXYNOS4_SETUP_I2C1) += setup-i2c1.o
+6
arch/arm/mach-exynos/common.c
··· 368 368 else 369 369 iotable_init(exynos4_iodesc1, ARRAY_SIZE(exynos4_iodesc1)); 370 370 371 + if (!IS_ENABLED(CONFIG_EXYNOS_ATAGS)) 372 + return 373 + 371 374 /* initialize device information early */ 372 375 exynos4_default_sdhci0(); 373 376 exynos4_default_sdhci1(); ··· 573 570 s3c24xx_init_uartdevs("exynos4210-uart", exynos4_uart_resources, cfg, no); 574 571 } 575 572 573 + 574 + #ifdef CONFIG_EXYNOS_ATAGS 576 575 static void __iomem *exynos_eint_base; 577 576 578 577 static DEFINE_SPINLOCK(eint_lock); ··· 880 875 return 0; 881 876 } 882 877 arch_initcall(exynos_init_irq_eint); 878 + #endif
+1
arch/arm/mach-exynos/dev-uart.c
··· 20 20 #include <asm/mach/irq.h> 21 21 #include <mach/hardware.h> 22 22 #include <mach/map.h> 23 + #include <mach/irqs.h> 23 24 24 25 #include <plat/devs.h> 25 26
+6 -6
arch/arm/mach-exynos/include/mach/debug-macro.S arch/arm/include/debug/exynos.S
··· 1 - /* linux/arch/arm/mach-exynos4/include/mach/debug-macro.S 2 - * 1 + /* 3 2 * Copyright (c) 2010-2011 Samsung Electronics Co., Ltd. 4 3 * http://www.samsung.com 5 - * 6 - * Based on arch/arm/mach-s3c6400/include/mach/debug-macro.S 7 4 * 8 5 * This program is free software; you can redistribute it and/or modify 9 6 * it under the terms of the GNU General Public License version 2 as ··· 9 12 10 13 /* pull in the relevant register and map files. */ 11 14 12 - #include <mach/map.h> 15 + #define S3C_ADDR_BASE 0xF6000000 16 + #define S3C_VA_UART S3C_ADDR_BASE + 0x01000000 17 + #define EXYNOS4_PA_UART 0x13800000 18 + #define EXYNOS5_PA_UART 0x12C00000 13 19 14 20 /* note, for the boot process to work we have to keep the UART 15 21 * virtual address aligned to an 1MiB boundary for the L1 ··· 36 36 #define fifo_full fifo_full_s5pv210 37 37 #define fifo_level fifo_level_s5pv210 38 38 39 - #include <plat/debug-macro.S> 39 + #include <debug/samsung.S>
+4 -1
arch/arm/mach-exynos/include/mach/irqs.h
··· 466 466 #define IRQ_TIMER_BASE (IRQ_GPIO_END + 64) 467 467 468 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 475 #endif /* __ASM_ARCH_IRQS_H */
+1
arch/arm/mach-exynos/mach-armlex4210.c
··· 25 25 #include <plat/regs-srom.h> 26 26 #include <plat/sdhci.h> 27 27 28 + #include <mach/irqs.h> 28 29 #include <mach/map.h> 29 30 30 31 #include "common.h"
+1
arch/arm/mach-exynos/mach-nuri.c
··· 53 53 #include <plat/fimc-core.h> 54 54 #include <plat/camport.h> 55 55 56 + #include <mach/irqs.h> 56 57 #include <mach/map.h> 57 58 58 59 #include "common.h"
+1
arch/arm/mach-exynos/mach-origen.c
··· 46 46 #include <plat/hdmi.h> 47 47 48 48 #include <mach/map.h> 49 + #include <mach/irqs.h> 49 50 50 51 #include <drm/exynos_drm.h> 51 52 #include "common.h"
+1
arch/arm/mach-exynos/mach-smdk4x12.c
··· 39 39 #include <plat/regs-serial.h> 40 40 #include <plat/sdhci.h> 41 41 42 + #include <mach/irqs.h> 42 43 #include <mach/map.h> 43 44 44 45 #include <drm/exynos_drm.h>
+1
arch/arm/mach-exynos/mach-smdkv310.c
··· 43 43 #include <plat/clock.h> 44 44 #include <plat/hdmi.h> 45 45 46 + #include <mach/irqs.h> 46 47 #include <mach/map.h> 47 48 48 49 #include <drm/exynos_drm.h>
+1 -1
arch/arm/mach-exynos/setup-sdhci-gpio.c
··· 19 19 #include <linux/mmc/host.h> 20 20 #include <linux/mmc/card.h> 21 21 22 + #include <mach/gpio.h> 22 23 #include <plat/gpio-cfg.h> 23 - #include <plat/regs-sdhci.h> 24 24 #include <plat/sdhci.h> 25 25 26 26 void exynos4_setup_sdhci0_cfg_gpio(struct platform_device *dev, int width)
+1 -1
arch/arm/mach-s3c24xx/include/mach/debug-macro.S
··· 98 98 99 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>
+1 -1
arch/arm/mach-s3c64xx/include/mach/debug-macro.S
··· 35 35 * will be fine with us. 36 36 */ 37 37 38 - #include <plat/debug-macro.S> 38 + #include <debug/samsung.S>
+1 -1
arch/arm/mach-s5p64x0/include/mach/debug-macro.S
··· 30 30 #endif 31 31 .endm 32 32 33 - #include <plat/debug-macro.S> 33 + #include <debug/samsung.S>
+1 -1
arch/arm/mach-s5pc100/include/mach/debug-macro.S
··· 36 36 * will be fine with us. 37 37 */ 38 38 39 - #include <plat/debug-macro.S> 39 + #include <debug/samsung.S>
-1
arch/arm/mach-s5pc100/setup-sdhci-gpio.c
··· 19 19 #include <linux/mmc/card.h> 20 20 21 21 #include <plat/gpio-cfg.h> 22 - #include <plat/regs-sdhci.h> 23 22 #include <plat/sdhci.h> 24 23 25 24 void s5pc100_setup_sdhci0_cfg_gpio(struct platform_device *dev, int width)
+1 -1
arch/arm/mach-s5pv210/include/mach/debug-macro.S
··· 38 38 * will be fine with us. 39 39 */ 40 40 41 - #include <plat/debug-macro.S> 41 + #include <debug/samsung.S>
-1
arch/arm/mach-s5pv210/setup-sdhci-gpio.c
··· 20 20 #include <linux/mmc/card.h> 21 21 22 22 #include <plat/gpio-cfg.h> 23 - #include <plat/regs-sdhci.h> 24 23 #include <plat/sdhci.h> 25 24 26 25 void s5pv210_setup_sdhci0_cfg_gpio(struct platform_device *dev, int width)
+6 -1
arch/arm/plat-samsung/Kconfig
··· 13 13 help 14 14 Base platform code for all Samsung SoC based systems 15 15 16 + config PLAT_SAMSUNG_SINGLE 17 + def_bool PLAT_SAMSUNG && !ARCH_MULTIPLATFORM 18 + 19 + 16 20 config PLAT_S5P 17 21 bool 18 22 depends on (ARCH_S5P64X0 || ARCH_S5PC100 || ARCH_S5PV210 || ARCH_EXYNOS) ··· 27 23 select GIC_NON_BANKED if ARCH_EXYNOS4 28 24 select NO_IOPORT 29 25 select PLAT_SAMSUNG 30 - select S3C_GPIO_TRACK 26 + select S3C_GPIO_TRACK if PLAT_SAMSUNG_SINGLE 31 27 select S5P_GPIO_DRVSTR 32 28 select SAMSUNG_CLKSRC 33 29 select SAMSUNG_GPIOLIB_4BIT ··· 182 178 183 179 config S3C_ADC 184 180 bool "ADC common driver support" 181 + depends on PLAT_SAMSUNG_SINGLE 185 182 help 186 183 Core support for the ADC block found in the Samsung SoC systems 187 184 for drivers such as the touchscreen and hwmon to use to share
+6 -2
arch/arm/plat-samsung/Makefile
··· 4 4 # 5 5 # Licensed under GPLv2 6 6 7 + ccflags-$(CONFIG_ARCH_MULTI_V7) += -I$(srctree)/$(src)/include 8 + ccflags-$(CONFIG_ARCH_EXYNOS) += -I$(srctree)/arch/arm/mach-exynos/include 9 + 7 10 obj-y := 8 11 obj-m := 9 12 obj-n := dummy.o ··· 37 34 38 35 obj-y += platformdata.o 39 36 40 - obj-y += devs.o 37 + obj-$(CONFIG_PLAT_SAMSUNG_SINGLE) += devs.o 41 38 obj-y += dev-uart.o 42 39 obj-$(CONFIG_S5P_DEV_MFC) += s5p-dev-mfc.o 43 40 obj-$(CONFIG_S5P_DEV_UART) += s5p-dev-uart.o ··· 54 51 obj-$(CONFIG_SAMSUNG_DMADEV) += dma-ops.o 55 52 56 53 # PM support 57 - 58 54 obj-$(CONFIG_PM) += pm.o 55 + ifdef CONFIG_PLAT_SAMSUNG_SINGLE 59 56 obj-$(CONFIG_PM) += pm-gpio.o 57 + endif 60 58 obj-$(CONFIG_SAMSUNG_PM_CHECK) += pm-check.o 61 59 62 60 obj-$(CONFIG_SAMSUNG_WAKEMASK) += wakeup-mask.o
-45
arch/arm/plat-samsung/devs.c
··· 878 878 } 879 879 #endif /* CONFIG_PLAT_S3C24XX */ 880 880 881 - /* MFC */ 882 - 883 - #ifdef CONFIG_S5P_DEV_MFC 884 - static struct resource s5p_mfc_resource[] = { 885 - [0] = DEFINE_RES_MEM(S5P_PA_MFC, SZ_64K), 886 - [1] = DEFINE_RES_IRQ(IRQ_MFC), 887 - }; 888 - 889 - struct platform_device s5p_device_mfc = { 890 - .name = "s5p-mfc", 891 - .id = -1, 892 - .num_resources = ARRAY_SIZE(s5p_mfc_resource), 893 - .resource = s5p_mfc_resource, 894 - }; 895 - 896 - /* 897 - * MFC hardware has 2 memory interfaces which are modelled as two separate 898 - * platform devices to let dma-mapping distinguish between them. 899 - * 900 - * MFC parent device (s5p_device_mfc) must be registered before memory 901 - * interface specific devices (s5p_device_mfc_l and s5p_device_mfc_r). 902 - */ 903 - 904 - struct platform_device s5p_device_mfc_l = { 905 - .name = "s5p-mfc-l", 906 - .id = -1, 907 - .dev = { 908 - .parent = &s5p_device_mfc.dev, 909 - .dma_mask = &samsung_device_dma_mask, 910 - .coherent_dma_mask = DMA_BIT_MASK(32), 911 - }, 912 - }; 913 - 914 - struct platform_device s5p_device_mfc_r = { 915 - .name = "s5p-mfc-r", 916 - .id = -1, 917 - .dev = { 918 - .parent = &s5p_device_mfc.dev, 919 - .dma_mask = &samsung_device_dma_mask, 920 - .coherent_dma_mask = DMA_BIT_MASK(32), 921 - }, 922 - }; 923 - 924 - #endif /* CONFIG_S5P_DEV_MFC */ 925 - 926 881 /* MIPI CSIS */ 927 882 928 883 #ifdef CONFIG_S5P_DEV_CSIS0
arch/arm/plat-samsung/include/plat/debug-macro.S arch/arm/include/debug/samsung.S
+5
arch/arm/plat-samsung/include/plat/pm.h
··· 166 166 */ 167 167 extern void s3c_pm_configure_extint(void); 168 168 169 + #ifdef CONFIG_PLAT_SAMSUNG_SINGLE 169 170 /** 170 171 * samsung_pm_restore_gpios() - restore the state of the gpios after sleep. 171 172 * ··· 182 181 * Save the GPIO states for resotration on resume. See samsung_pm_restore_gpios(). 183 182 */ 184 183 extern void samsung_pm_save_gpios(void); 184 + #else 185 + #define samsung_pm_restore_gpios() do { } while(0) 186 + #define samsung_pm_save_gpios() do { } while(0) 187 + #endif 185 188 186 189 extern void s3c_pm_save_core(void); 187 190 extern void s3c_pm_restore_core(void);
-2
arch/arm/plat-samsung/include/plat/regs-onenand.h drivers/mtd/onenand/samsung.h
··· 11 11 #ifndef __SAMSUNG_ONENAND_H__ 12 12 #define __SAMSUNG_ONENAND_H__ 13 13 14 - #include <mach/hardware.h> 15 - 16 14 /* 17 15 * OneNAND Controller 18 16 */
+1 -2
arch/arm/plat-samsung/include/plat/regs-rtc.h drivers/rtc/rtc-s3c.h
··· 1 - /* arch/arm/mach-s3c2410/include/mach/regs-rtc.h 2 - * 1 + /* 3 2 * Copyright (c) 2003 Simtec Electronics <linux@simtec.co.uk> 4 3 * http://www.simtec.co.uk/products/SWLINUX/ 5 4 *
arch/arm/plat-samsung/include/plat/regs-sdhci.h drivers/mmc/host/sdhci-s3c-regs.h
+1 -55
arch/arm/plat-samsung/include/plat/sdhci.h
··· 18 18 #ifndef __PLAT_S3C_SDHCI_H 19 19 #define __PLAT_S3C_SDHCI_H __FILE__ 20 20 21 + #include <linux/platform_data/mmc-sdhci-s3c.h> 21 22 #include <plat/devs.h> 22 - 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 23 77 24 /* s3c_sdhci_set_platdata() - common helper for setting SDHCI platform data 78 25 * @pd: The default platform data for this device. ··· 325 378 break; 326 379 } 327 380 } 328 - 329 381 #endif /* __PLAT_S3C_SDHCI_H */
+1
arch/arm/plat-samsung/irq-vic-timer.c
··· 19 19 #include <linux/io.h> 20 20 21 21 #include <mach/map.h> 22 + #include <mach/irqs.h> 22 23 #include <plat/cpu.h> 23 24 #include <plat/irq-vic-timer.h> 24 25 #include <plat/regs-timer.h>
+1
arch/arm/plat-samsung/pm.c
··· 27 27 #include <plat/regs-serial.h> 28 28 #include <mach/regs-clock.h> 29 29 #include <mach/regs-irq.h> 30 + #include <mach/irqs.h> 30 31 #include <asm/irq.h> 31 32 32 33 #include <plat/pm.h>
+41 -1
arch/arm/plat-samsung/s5p-dev-mfc.c
··· 18 18 #include <linux/of.h> 19 19 20 20 #include <mach/map.h> 21 + #include <mach/irqs.h> 21 22 #include <plat/devs.h> 22 - #include <plat/irqs.h> 23 23 #include <plat/mfc.h> 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 + }; 24 64 25 65 struct s5p_mfc_reserved_mem { 26 66 phys_addr_t base;
+1
arch/arm/plat-samsung/s5p-irq.c
··· 15 15 #include <linux/io.h> 16 16 #include <linux/irqchip/arm-vic.h> 17 17 18 + #include <mach/irqs.h> 18 19 #include <mach/map.h> 19 20 #include <plat/regs-timer.h> 20 21 #include <plat/cpu.h>
+1 -1
drivers/gpio/Makefile
··· 57 57 obj-$(CONFIG_GPIO_PXA) += gpio-pxa.o 58 58 obj-$(CONFIG_GPIO_RC5T583) += gpio-rc5t583.o 59 59 obj-$(CONFIG_GPIO_RDC321X) += gpio-rdc321x.o 60 - obj-$(CONFIG_PLAT_SAMSUNG) += gpio-samsung.o 60 + obj-$(CONFIG_PLAT_SAMSUNG_SINGLE) += gpio-samsung.o 61 61 obj-$(CONFIG_ARCH_SA1100) += gpio-sa1100.o 62 62 obj-$(CONFIG_GPIO_SCH) += gpio-sch.o 63 63 obj-$(CONFIG_GPIO_SODAVILLE) += gpio-sodaville.o
+1 -1
drivers/mmc/host/Kconfig
··· 180 180 181 181 config MMC_SDHCI_S3C 182 182 tristate "SDHCI support on Samsung S3C SoC" 183 - depends on MMC_SDHCI && PLAT_SAMSUNG 183 + depends on MMC_SDHCI && PLAT_SAMSUNG_SINGLE 184 184 help 185 185 This selects the Secure Digital Host Controller Interface (SDHCI) 186 186 often referrered to as the HSMMC block in some of the Samsung S3C
+2 -3
drivers/mmc/host/sdhci-s3c.c
··· 15 15 #include <linux/delay.h> 16 16 #include <linux/dma-mapping.h> 17 17 #include <linux/platform_device.h> 18 + #include <linux/platform_data/mmc-sdhci-s3c.h> 18 19 #include <linux/slab.h> 19 20 #include <linux/clk.h> 20 21 #include <linux/io.h> ··· 29 28 30 29 #include <linux/mmc/host.h> 31 30 32 - #include <plat/sdhci.h> 33 - #include <plat/regs-sdhci.h> 34 - 31 + #include "sdhci-s3c-regs.h" 35 32 #include "sdhci.h" 36 33 37 34 #define MAX_BUS_CLK (4)
+2 -2
drivers/mtd/onenand/samsung.c
··· 23 23 #include <linux/mtd/partitions.h> 24 24 #include <linux/dma-mapping.h> 25 25 #include <linux/interrupt.h> 26 + #include <linux/io.h> 26 27 27 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 32 enum soc_type { 33 33 TYPE_S3C6400,
+1 -2
drivers/rtc/rtc-s3c.c
··· 29 29 #include <linux/uaccess.h> 30 30 #include <linux/io.h> 31 31 32 - #include <mach/hardware.h> 33 32 #include <asm/irq.h> 34 - #include <plat/regs-rtc.h> 33 + #include "rtc-s3c.h" 35 34 36 35 enum s3c_cpu_type { 37 36 TYPE_S3C2410,
-2
drivers/thermal/exynos_thermal.c
··· 39 39 #include <linux/cpu_cooling.h> 40 40 #include <linux/of.h> 41 41 42 - #include <plat/cpu.h> 43 - 44 42 /* Exynos generic registers */ 45 43 #define EXYNOS_TMU_REG_TRIMINFO 0x0 46 44 #define EXYNOS_TMU_REG_CONTROL 0x20
+56
include/linux/platform_data/mmc-sdhci-s3c.h
··· 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 */