기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.

[앞서 올렸던 질문이 우문이라 답이 없었던것 같아서 다시 씁니다.

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

};

고도리

2012.04.07 20:21:37
*.127.19.87

smbus면 i2c를 말씀하시는 것이겠지요?/....^^


1. architecture.........의 보드 파일에 해당 i2c 채널에 client list를 넣어줍니다.

2. i2c client 드라이버를 작성합니다.

3. i2c add driver를 하면, i2c..................관련 함수들을 쓸 수 있습니다. smbus도 마찬가지고요.


제가 odroid code를 보지 못해서, 잘 모르겠지만, 위와 같은 방식으로 보통 프로그래밍을 합니다.



List of Articles
번호 제목 글쓴이 날짜 조회 수
5308 Starting Kernel 메세지만 출력이 나왔는데, menuconfig에서 Dataf... file [2] 혜민아빠 2012-04-17 1306
5307 interrupt를 활용한 keypad 감지 c프로그램은 어떤식으로...? [3] Supsupi 2012-04-17 1766
5306 V310 스펙(OM 부팅모드) 관련하여 질문입니다. [3] 노대성 2012-04-15 1253
5305 [질문] h264파일을 mp4컨테이너에 담기 [3] 차차호드 2012-04-14 1426
5304 중소기업도 GMS 인증 가능할까요? [4] 현쓰 2012-04-12 1441
5303 블루스카이님, 고도리님, ikari님, 김지원님 !!! [4] 차차호드 2012-04-12 1243
5302 커널에서 head.S보다 더 먼저 거치는 부분이 어딘가요? [3] 혜민아빠 2012-04-12 1183
5301 NAND 0번지에 잘못된 프로그램이 들어있는 경우 어떻게 해야하나요... [9] 박영기1 2012-04-12 1625
5300 [s5pc110] 인코딩시에 와이드비율에서 이미지 마지막 흐려지는 현상 file [5] 차차호드 2012-04-11 1447
5299 Starting Kernel 메세지까지 출력이 되었습니다. 어디서부터 디버깅... file [3] 혜민아빠 2012-04-10 1313
5298 NAK bailout생기면서 I2C 통신 fail이 나네요. 훌러덩 2012-04-10 8974
5297 커널 디버깅을 하기 위해 printascii()함수를 사용하려면 무슨 head... [1] 혜민아빠 2012-04-10 1573
5296 콘솔상에서 /dev/mem을 통한 물리메모리 덤프 시도 [1] 김지원 2012-04-10 1401
5295 긴급질문입니다! boot animation 무한반복현상 [2] yama 2012-04-09 1089
5294 invvalidate TLB 해황 2012-04-08 734
5293 제가 만든 모듈을 보드에 있는 커널에 삽입하려고 하니..아래와 같은... [1] 혜민아빠 2012-04-07 1493
5292 stripped 파일은 어떻게 만드는 것인가요? file [5] 혜민아빠 2012-04-07 1221
» 4210에서 smbus사용하기 위해서 [1] 훌러덩 2012-04-06 1319
5290 왜? 모듈을 올리려면(insmod: can't insert 'dev_led.ko': invali... [3] 혜민아빠 2012-04-06 1554
5289 S3C6410타겟보드에 2.95 컴파일러를 사용하는 환경에서 개발이 가능할... [2] 은민아빠 2012-04-05 1141

사용자 로그인