From ff7124a38f2663088b7404ddf30cd1016604dceb Mon Sep 17 00:00:00 2001 From: Atul Dahiya Date: Wed, 21 Jul 2010 17:32:56 +0900 Subject: ARM: S5P6440: Add RTC support for S5P6440 This patch adds support RTC driver for Samsung S5P6440. Signed-off-by: Atul Dahiya Signed-off-by: Kukjin Kim --- arch/arm/mach-s5p6440/Kconfig | 2 ++ 1 file changed, 2 insertions(+) (limited to 'arch/arm/mach-s5p6440/Kconfig') diff --git a/arch/arm/mach-s5p6440/Kconfig b/arch/arm/mach-s5p6440/Kconfig index f066fae07c5..b2d47165397 100644 --- a/arch/arm/mach-s5p6440/Kconfig +++ b/arch/arm/mach-s5p6440/Kconfig @@ -18,7 +18,9 @@ config MACH_SMDK6440 select CPU_S5P6440 select SAMSUNG_DEV_TS select SAMSUNG_DEV_ADC + select S3C_DEV_RTC select S3C_DEV_WDT + select HAVE_S3C_RTC select HAVE_S3C2410_WATCHDOG help Machine support for the Samsung SMDK6440 -- cgit v1.2.3-70-g09d2 From 2c97886df9bba9346c7799ed14f489075cf2c39b Mon Sep 17 00:00:00 2001 From: Naveen Krishna Ch Date: Fri, 6 Aug 2010 19:32:43 +0900 Subject: ARM: S5P6440: Add support for I2C channel 0 and 1 on SMDK6440 This patch adds helper functions for I2C channel 0 and 1, GPIO configurations for I2C on S5P6440 and support I2C-0/1 devices on SMDK6440. Signed-off-by: Naveen Krishna Ch Signed-off-by: Kukjin Kim Conflicts: arch/arm/mach-s5p6440/Kconfig arch/arm/mach-s5p6440/include/mach/map.h arch/arm/mach-s5p6440/mach-smdk6440.c --- arch/arm/mach-s5p6440/Kconfig | 7 +++++++ arch/arm/mach-s5p6440/Makefile | 1 + arch/arm/mach-s5p6440/include/mach/map.h | 2 ++ arch/arm/mach-s5p6440/mach-smdk6440.c | 20 ++++++++++++++++++++ arch/arm/mach-s5p6440/setup-i2c0.c | 7 ++++++- arch/arm/mach-s5p6440/setup-i2c1.c | 30 ++++++++++++++++++++++++++++++ 6 files changed, 66 insertions(+), 1 deletion(-) create mode 100644 arch/arm/mach-s5p6440/setup-i2c1.c (limited to 'arch/arm/mach-s5p6440/Kconfig') diff --git a/arch/arm/mach-s5p6440/Kconfig b/arch/arm/mach-s5p6440/Kconfig index b2d47165397..153f8c9994c 100644 --- a/arch/arm/mach-s5p6440/Kconfig +++ b/arch/arm/mach-s5p6440/Kconfig @@ -13,15 +13,22 @@ config CPU_S5P6440 help Enable S5P6440 CPU support +config S5P6440_SETUP_I2C1 + bool + help + Common setup code for i2c bus 1. + config MACH_SMDK6440 bool "SMDK6440" select CPU_S5P6440 select SAMSUNG_DEV_TS select SAMSUNG_DEV_ADC select S3C_DEV_RTC + select S3C_DEV_I2C1 select S3C_DEV_WDT select HAVE_S3C_RTC select HAVE_S3C2410_WATCHDOG + select S5P6440_SETUP_I2C1 help Machine support for the Samsung SMDK6440 diff --git a/arch/arm/mach-s5p6440/Makefile b/arch/arm/mach-s5p6440/Makefile index be3c53aab23..c3fe4d3662a 100644 --- a/arch/arm/mach-s5p6440/Makefile +++ b/arch/arm/mach-s5p6440/Makefile @@ -22,3 +22,4 @@ obj-$(CONFIG_MACH_SMDK6440) += mach-smdk6440.o # device support obj-y += dev-audio.o obj-$(CONFIG_S3C64XX_DEV_SPI) += dev-spi.o +obj-$(CONFIG_S5P6440_SETUP_I2C1) += setup-i2c1.o diff --git a/arch/arm/mach-s5p6440/include/mach/map.h b/arch/arm/mach-s5p6440/include/mach/map.h index 255a2e7f0b9..6cc5cbc88ff 100644 --- a/arch/arm/mach-s5p6440/include/mach/map.h +++ b/arch/arm/mach-s5p6440/include/mach/map.h @@ -52,6 +52,7 @@ #define S5P_SZ_UART SZ_256 #define S5P6440_PA_IIC0 (0xEC104000) +#define S5P6440_PA_IIC1 (0xEC20F000) #define S5P6440_PA_SPI0 0xEC400000 #define S5P6440_PA_SPI1 0xEC500000 @@ -77,6 +78,7 @@ #define S3C_PA_UART S5P6440_PA_UART #define S3C_PA_IIC S5P6440_PA_IIC0 #define S3C_PA_RTC S5P6440_PA_RTC +#define S3C_PA_IIC1 S5P6440_PA_IIC1 #define S3C_PA_WDT S5P6440_PA_WDT #define SAMSUNG_PA_ADC S5P6440_PA_ADC diff --git a/arch/arm/mach-s5p6440/mach-smdk6440.c b/arch/arm/mach-s5p6440/mach-smdk6440.c index 142edd57a9d..8c83d8fb016 100644 --- a/arch/arm/mach-s5p6440/mach-smdk6440.c +++ b/arch/arm/mach-s5p6440/mach-smdk6440.c @@ -15,6 +15,7 @@ #include #include #include +#include #include #include #include @@ -37,6 +38,7 @@ #include #include #include +#include #include #include #include @@ -89,10 +91,20 @@ static struct platform_device *smdk6440_devices[] __initdata = { &s5p6440_device_iis, &s3c_device_adc, &s3c_device_rtc, + &s3c_device_i2c0, + &s3c_device_i2c1, &s3c_device_ts, &s3c_device_wdt, }; +static struct i2c_board_info smdk6440_i2c_devs0[] __initdata = { + { I2C_BOARD_INFO("24c08", 0x50), }, +}; + +static struct i2c_board_info smdk6440_i2c_devs1[] __initdata = { + /* To be populated */ +}; + static struct s3c2410_ts_mach_info s3c_ts_platform __initdata = { .delay = 10000, .presc = 49, @@ -110,6 +122,14 @@ static void __init smdk6440_machine_init(void) { s3c24xx_ts_set_platdata(&s3c_ts_platform); + /* I2C */ + s3c_i2c0_set_platdata(NULL); + s3c_i2c1_set_platdata(NULL); + i2c_register_board_info(0, smdk6440_i2c_devs0, + ARRAY_SIZE(smdk6440_i2c_devs0)); + i2c_register_board_info(1, smdk6440_i2c_devs1, + ARRAY_SIZE(smdk6440_i2c_devs1)); + platform_add_devices(smdk6440_devices, ARRAY_SIZE(smdk6440_devices)); } diff --git a/arch/arm/mach-s5p6440/setup-i2c0.c b/arch/arm/mach-s5p6440/setup-i2c0.c index 69e8a664aed..2c99d14f7ac 100644 --- a/arch/arm/mach-s5p6440/setup-i2c0.c +++ b/arch/arm/mach-s5p6440/setup-i2c0.c @@ -17,9 +17,14 @@ struct platform_device; /* don't need the contents */ +#include +#include #include void s3c_i2c0_cfg_gpio(struct platform_device *dev) { - /* Will be populated later */ + s3c_gpio_cfgpin(S5P6440_GPB(5), S3C_GPIO_SFN(2)); + s3c_gpio_setpull(S5P6440_GPB(5), S3C_GPIO_PULL_UP); + s3c_gpio_cfgpin(S5P6440_GPB(6), S3C_GPIO_SFN(2)); + s3c_gpio_setpull(S5P6440_GPB(6), S3C_GPIO_PULL_UP); } diff --git a/arch/arm/mach-s5p6440/setup-i2c1.c b/arch/arm/mach-s5p6440/setup-i2c1.c new file mode 100644 index 00000000000..9a1537f786e --- /dev/null +++ b/arch/arm/mach-s5p6440/setup-i2c1.c @@ -0,0 +1,30 @@ +/* linux/arch/arm/mach-s5p6440/setup-i2c1.c + * + * Copyright (c) 2009 Samsung Electronics Co., Ltd. + * http://www.samsung.com/ + * + * I2C1 GPIO configuration. + * + * Based on plat-s3c64xx/setup-i2c0.c + * + * 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. +*/ + +#include +#include +#include + +struct platform_device; /* don't need the contents */ + +#include +#include + +void s3c_i2c1_cfg_gpio(struct platform_device *dev) +{ + s3c_gpio_cfgpin(S5P6440_GPR(9), S3C_GPIO_SFN(6)); + s3c_gpio_setpull(S5P6440_GPR(9), S3C_GPIO_PULL_UP); + s3c_gpio_cfgpin(S5P6440_GPR(10), S3C_GPIO_SFN(6)); + s3c_gpio_setpull(S5P6440_GPR(10), S3C_GPIO_PULL_UP); +} -- cgit v1.2.3-70-g09d2 From d8653d9f657d052dca18407c59349981ac579469 Mon Sep 17 00:00:00 2001 From: Banajit Goswami Date: Thu, 29 Jul 2010 22:22:40 +0900 Subject: ARM: SAMSUNG: Make WDT driver dependency SoC specific instead of machine specific This patch moves the dependency of watchdog timer driver from MACH_XXX(board) to ARCH_XXX(SoC). This will enable all machines using Samsung S3C64XX and S5P SoCs to use the WDT driver by default. Signed-off-by: Banajit Goswami Signed-off-by: Kukjin Kim Conflicts: arch/arm/Kconfig arch/arm/mach-s3c64xx/Kconfig arch/arm/mach-s5p6442/Kconfig arch/arm/mach-s5pc100/Kconfig --- arch/arm/Kconfig | 5 +++++ arch/arm/mach-s5p6440/Kconfig | 1 - arch/arm/mach-s5p6442/Kconfig | 1 + arch/arm/mach-s5pc100/Kconfig | 1 + arch/arm/mach-s5pv210/Kconfig | 2 -- 5 files changed, 7 insertions(+), 3 deletions(-) (limited to 'arch/arm/mach-s5p6440/Kconfig') diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index bc9506cdf4d..3b5add12339 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -665,6 +665,7 @@ config ARCH_S3C64XX select USB_ARCH_HAS_OHCI select SAMSUNG_GPIOLIB_4BIT select HAVE_S3C2410_I2C + select HAVE_S3C2410_WATCHDOG help Samsung S3C64XX series based systems @@ -673,6 +674,7 @@ config ARCH_S5P6440 select CPU_V6 select GENERIC_GPIO select HAVE_CLK + select HAVE_S3C2410_WATCHDOG select ARCH_USES_GETTIMEOFFSET select HAVE_S3C2410_I2C select HAVE_S3C_RTC @@ -685,6 +687,7 @@ config ARCH_S5P6442 select GENERIC_GPIO select HAVE_CLK select ARCH_USES_GETTIMEOFFSET + select HAVE_S3C2410_WATCHDOG help Samsung S5P6442 CPU based systems @@ -697,6 +700,7 @@ config ARCH_S5PC100 select ARCH_USES_GETTIMEOFFSET select HAVE_S3C2410_I2C select HAVE_S3C_RTC + select HAVE_S3C2410_WATCHDOG help Samsung S5PC100 series based systems @@ -709,6 +713,7 @@ config ARCH_S5PV210 select ARCH_USES_GETTIMEOFFSET select HAVE_S3C2410_I2C select HAVE_S3C_RTC + select HAVE_S3C2410_WATCHDOG help Samsung S5PV210/S5PC110 series based systems diff --git a/arch/arm/mach-s5p6440/Kconfig b/arch/arm/mach-s5p6440/Kconfig index f066fae07c5..084c0bced13 100644 --- a/arch/arm/mach-s5p6440/Kconfig +++ b/arch/arm/mach-s5p6440/Kconfig @@ -19,7 +19,6 @@ config MACH_SMDK6440 select SAMSUNG_DEV_TS select SAMSUNG_DEV_ADC select S3C_DEV_WDT - select HAVE_S3C2410_WATCHDOG help Machine support for the Samsung SMDK6440 diff --git a/arch/arm/mach-s5p6442/Kconfig b/arch/arm/mach-s5p6442/Kconfig index 0fd41b44791..0fda0a5df96 100644 --- a/arch/arm/mach-s5p6442/Kconfig +++ b/arch/arm/mach-s5p6442/Kconfig @@ -19,6 +19,7 @@ config CPU_S5P6442 config MACH_SMDK6442 bool "SMDK6442" select CPU_S5P6442 + select S3C_DEV_WDT help Machine support for Samsung SMDK6442 diff --git a/arch/arm/mach-s5pc100/Kconfig b/arch/arm/mach-s5pc100/Kconfig index b2a11dfa339..0593b3fb0d4 100644 --- a/arch/arm/mach-s5pc100/Kconfig +++ b/arch/arm/mach-s5pc100/Kconfig @@ -44,6 +44,7 @@ config MACH_SMDKC100 select S3C_DEV_HSMMC select S3C_DEV_HSMMC1 select S3C_DEV_HSMMC2 + select S3C_DEV_WDT select S5PC100_SETUP_FB_24BPP select S5PC100_SETUP_I2C1 select S5PC100_SETUP_SDHCI diff --git a/arch/arm/mach-s5pv210/Kconfig b/arch/arm/mach-s5pv210/Kconfig index 0761eac9aae..2e3ed1847ca 100644 --- a/arch/arm/mach-s5pv210/Kconfig +++ b/arch/arm/mach-s5pv210/Kconfig @@ -74,7 +74,6 @@ config MACH_SMDKV210 select SAMSUNG_DEV_ADC select SAMSUNG_DEV_TS select S3C_DEV_WDT - select HAVE_S3C2410_WATCHDOG help Machine support for Samsung SMDKV210 @@ -83,7 +82,6 @@ config MACH_SMDKC110 select CPU_S5PV210 select ARCH_SPARSEMEM_ENABLE select S3C_DEV_WDT - select HAVE_S3C2410_WATCHDOG help Machine support for Samsung SMDKC110 S5PC110(MCP) is one of package option of S5PV210 -- cgit v1.2.3-70-g09d2