[앞서 올렸던 질문이 우문이라 답이 없었던것 같아서 다시 씁니다.
4210에서 smbus사용하기 위해서 특별한 setting 방법이 있나요? 아니면 기존 GPIO 방식으로 써도 되는건가요?(device 등록 할때를 말합니다.)
예를 들면, mach-hkdkc210.c에 보면 예1) 과 같이 나와 있는데요.
#if defined (CONFIG_BATTERY_MAX17040)은 compile되지 않고요.i2c_smbus_~로 시작하는 함수를 드라이버에서 사용합니다만,
#if defined (CONFIG_BATTERY_MAX17040)에 정의된 방식으로는 i2c_smbus_~로 시작하는 함수들은
사용할 수 없는게 아닌가요?
제가 사용하려는 드라이버에서는 i2c_smbus_~ 로 시작하는 함수를 사용하는데요.
헌데, 제가 쓰는 GPIO는 일반적인것이라서
#if defined (CONFIG_BATTERY_MAX17040) 와 같이 등록을 할 수 밖에없거든요...
답변 부탁드립니다.다음과 같은 함수를 드라이버에서 쓰고 있거든요...[[[[i2c_smbus_write_byte(client, reg)
i2c_smbus_write_word_data(client, reg, value)
i2c_smbus_write_byte(client, reg)
i2c_smbus_write_i2c_block_data(client, reg, length, values)
]]]
예1)
======================================================================================================
#ifdef CONFIG_S3C_DEV_I2C1
#if defined (CONFIG_BATTERY_MAX17040)
#include
#define GPIO_I2C1_SDA S5PV310_GPD1(2)
#define GPIO_I2C1_SCL S5PV310_GPD1(3)
static struct i2c_gpio_platform_data i2c1_gpio_platdata = {
.sda_pin = GPIO_I2C1_SDA, // gpio number
.scl_pin = GPIO_I2C1_SCL,
.udelay = 15,
.sda_is_open_drain = 0,
.scl_is_open_drain = 0,
.scl_is_output_only = 0
};
static struct platform_device i2c1_gpio_device = {
.name = "i2c-gpio",
.id = 1, // adepter number
.dev.platform_data = &i2c1_gpio_platdata,
};
#endif //#if defined (CONFIG_BATTERY_MAX17040)
#ifdef CONFIG_BATTERY_ACHRO_DUMMY
static struct platform_device achro_battery = {
.name = "dummy-battery",
};
#endif
/* I2C1 */
static struct i2c_board_info i2c_devs1[] __initdata = {
#ifdef CONFIG_VIDEO_TVOUT
{
I2C_BOARD_INFO("s5p_ddc", (0x74 >> 1)),
},
#endif
#if defined (CONFIG_ISH1000) // vibrator
{
I2C_BOARD_INFO("ish1000", (0x90 >> 1)),
},
#endif
#if defined (CONFIG_BATTERY_MAX17040)
{
I2C_BOARD_INFO("max17040", 0x36),
.platform_data = &max17040_platform_data,
},
#endif
#if defined(CONFIG_BH1780GLI)
{
I2C_BOARD_INFO("bh1780", (0x52 >> 1)), // Light Sensor
},
#endif
};
smbus면 i2c를 말씀하시는 것이겠지요?/....^^
1. architecture.........의 보드 파일에 해당 i2c 채널에 client list를 넣어줍니다.
2. i2c client 드라이버를 작성합니다.
3. i2c add driver를 하면, i2c..................관련 함수들을 쓸 수 있습니다. smbus도 마찬가지고요.
제가 odroid code를 보지 못해서, 잘 모르겠지만, 위와 같은 방식으로 보통 프로그래밍을 합니다.