Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2c97886d authored by Naveen Krishna Ch's avatar Naveen Krishna Ch Committed by Kukjin Kim
Browse files

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: default avatarNaveen Krishna Ch <ch.naveen@samsung.com>
Signed-off-by: default avatarKukjin Kim <kgene.kim@samsung.com>

Conflicts:

	arch/arm/mach-s5p6440/Kconfig
	arch/arm/mach-s5p6440/include/mach/map.h
	arch/arm/mach-s5p6440/mach-smdk6440.c
parent ff7124a3
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -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

+1 −0
Original line number Diff line number Diff line
@@ -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
+2 −0
Original line number Diff line number Diff line
@@ -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
+20 −0
Original line number Diff line number Diff line
@@ -15,6 +15,7 @@
#include <linux/timer.h>
#include <linux/delay.h>
#include <linux/init.h>
#include <linux/i2c.h>
#include <linux/serial_core.h>
#include <linux/platform_device.h>
#include <linux/io.h>
@@ -37,6 +38,7 @@
#include <mach/regs-clock.h>
#include <plat/devs.h>
#include <plat/cpu.h>
#include <plat/iic.h>
#include <plat/pll.h>
#include <plat/adc.h>
#include <plat/ts.h>
@@ -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));
}

+6 −1
Original line number Diff line number Diff line
@@ -17,9 +17,14 @@

struct platform_device; /* don't need the contents */

#include <linux/gpio.h>
#include <plat/gpio-cfg.h>
#include <plat/iic.h>

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);
}
Loading