기존에 lcd 드라이버가 구성이 돼 있다는 조건에서 새로운 lcd 를 추가 하는 과정과 컴파일 환경 에 관한 팁입니다. 


종류 : tft lcd (800 x 480 )

모델명 : at070tn94 


사용 한 mcu 가 삼성의 s5pv210 이며, 친절 하게도 linux 에서는 drivers\video\samsung 폴더 안에 드라이버가 구성돼 있습니다.

따라서 새로 사용할 lcd 의 스팩을 정의한 새로운 파일을 하나 추가해 주고, 컴파일 환경만 잡아주면 간단히 끝이 나는 작업입니다.


1. lcd 스팩 보기

1.jpg

위 이미지와 같이 데이터 시트를 보면 친절하게 값이 나와 있습니다.

아래는 우리가 데이터 시트를 보고 참고할 값들 입니다.

- Horizontal Display Area  수평 해상도

- Vertical Display Area      수직 해상도

- DCLK Frequency 픽셀 클럭 ( Frame Frequency 계산에 활용 됩니다. )

- HS Front Porch  수평 주사의 복귀 뒷쪽 구간 

- HS Back Porch  수평 주사의 복귀 앞쪽 구간

- HS Pulse Width  수평 동기 클럭 폭

- VS Front Porch  수직 주사의 복귀 뒷쪽 구간

- VS Back Porch  수직 주사의 복귀 앞족 구간 

- VS Pulse Width  수직 동기 클럭 폭


4.jpg

     위 이미지는 800 x 480 이 아닌  640 x 480 해상도를 가진 lcd 의 개념도 입니다. 실제 이미지가 보여지는 부분은

     640 x 480 이지만 클럭이 주사되는 공간은 800 x 525 임을 알 수 있고 여기서 실제 이미지가 보여지지 않는 부분이

     porch 부분입니다. 

     


2.jpg


데이터 시트를 보면 back porch 가 있어야 할 부분에 Blanking 이라 표시되어 있는데요. 원래 blanking 은 실제 이미지가 

보여지지 않는 부분을 모두 더한 값을 말하는데 여기서는 back porch 값을 나타내고 있습니다.

타이미표를 보면 hs blanking 과 vs blanking 값이 고정돼 있으며 이 값을 각각 HS Back Porch 와 HS Back Porch 에

넣어 주면 됩니다.

다른 값들은 범위가 지정되어 있으며 그 범위 내에서 입력 하면 됩니다.


-- 실제 소스 수정 하기--


1. linux-2.6.35\drivers\video\samsung/ 폴더 안에서 s3cfb_모델명.c 파일중 하나를 복사해 s3cfb_at070tn94.c 라는 파일

을 하나 만들어 줍니다.


2. s3cfb_at070tn94.c 파일을 열어 아래와 같이 수정해 줍니다.

/* name should be fixed as 's3cfb_set_lcd_info' */

void s3cfb_set_lcd_info(struct s3cfb_global *ctrl)

{

at070tn94.init_ldi = NULL;

ctrl->lcd = &at070tn94;

}


3. lcd 스팩 정의 구제체 값 넣기

--------------------------------------------------------------------

static struct s3cfb_lcd at070tn94 = {

.width = 800, // lcd 가로 픽셀 

.height = 480, // lcd 세로 픽셀 

.bpp = 32, // Bit Per Pixel

.freq = 48, // Frame Frequency


.timing = {

.h_fp = 300, //HS Front Porch

.h_bp = 46,   //HS Back Porch

.h_sw = 30,   //HS Pulse Width - 1 ~ 40 중 임의 값 넣음 


.v_fp = 100, //VS Front Porch

.v_bp = 23, //VS Back Porch

.v_sw = 15,    //VS PULSE WIDTH - 1 ~ 20 중 임의 값 넣음 

.v_fpe = 1,    

.v_bpe = 1,    

},


.polarity = {

.rise_vclk = 0, //CLK LOW

.inv_hsync = 1,

.inv_vsync = 1,

.inv_vden = 0 //DATA ENABLE

},

};

-------------------------------------------------------------------- 끝


4. kconfig 파일 수정

--------------------------------------------------------------------

config FB_S3C_AT070TN94

bool "AT070TN94"

depends on MACH_EZS5PV210

help

 This enables support for AT070TN94 \" 800x480 LCD panel

-------------------------------------------------------------------- 추가



5. makefile 수정

--------------------------------------------------------------------

obj-$(CONFIG_FB_S3C_AT070TN94) += s3cfb_at070tn94.o

--------------------------------------------------------------------추가


여기 까지 작업을 완료 한후

make menuconfig 를 실행한 화면 입니다.

3.jpg

추가한 AT070N94 를 선택 할 수 있는 항목이 나타나으며, 선택 후 빌드를 진행 하고, 이제 커널을 올려볼 차례 입니다.