2010년 7월 7일 수요일

omap34xxcam device driver

omap34xxcam.c 에서

크게 전원 관리 부분과 비디오 버퍼 큐 관리하는 부분, 그리고 V4L2에서 요구하는 IOCTL 인터페이스 루틴으로 구성되어져 있다.

1. 전원을 관리하는 부분은 Master/Slave 방식으로 관리되는 V4L2의 방식에 맞추어 Master에 해당하는 omap34xxcam_videodev에

등록되어있는 모든 Slave의 전원상태를 전환하고 Slave의 Callback 함수에 해당하는 vidio_int_s_power()함수를 호출 시켜준다.

만약, 전원 종료시 추가적인 시간지연이 필요하면, omap34xxcam_slave_power_suggest()함수를 통해 지원한다.

2. 비디오 버퍼 큐 관리는 V4L2에서 요구하는 struct videobuf_buffer의 관리하는 함수들이 구현하는 기능

즉, 버퍼를 setup, release, perpare, queue하는 작업으로 구성된다.

이러한 기능을 하는 함수들은 struct videobuf_queue_ops에 저장한다.

3. V4L2가 요구하는 IOCTL 인터페이스 함수들은 struct v4l2_file_operations와 struct v4l2_ioctl_ops, struct v4l2_int_master 에 저장한다.

struct v4l2_file_operations는 Master 디바이스인 omap34xxcam의 entry point에 대한 함수들 open, release, mmap, poll, ioctl기능들을 저장한다.

struct v4l2_ioctl_ops는 slave 디바이스를 제어하기 위해 필요한 세세한 함수들을 저장한다.

struct v4l2_int_master는 Master 디바이스에 Slave 디바이스를 등록하고 해제하는 기능의 함수들을 저장한다.

4. 그리고 마지막으로 omap34xxcam 디바이스 드라이버의 생성자와 소멸자에 해당하는

static int __init omap34xxcam_init(void)와 static void omap34xxcam_exit(void)가 있다.

댓글 없음:

댓글 쓰기