mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-15 21:23:23 +00:00
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 <ch.naveen@samsung.com> Signed-off-by: Kukjin 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
This commit is contained in:
parent
ff7124a38f
commit
2c97886df9
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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));
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
30
arch/arm/mach-s5p6440/setup-i2c1.c
Normal file
30
arch/arm/mach-s5p6440/setup-i2c1.c
Normal file
@ -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 <linux/kernel.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/gpio.h>
|
||||
|
||||
struct platform_device; /* don't need the contents */
|
||||
|
||||
#include <plat/gpio-cfg.h>
|
||||
#include <plat/iic.h>
|
||||
|
||||
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);
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user