안녕하세요..

>Q.1>
>
>헌데, LCD_SYNC            (FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VER_HIGH_ACT)
>
>이 부분은 어디에 DEFINE이 되어 있는 건지여?
>
>또한, DEFINE인 된대로라면,
>
>HSYNC/VSYNC이 ACTIVE HIGH일 때만, 사용할 수 있는 건지여?  


아래의 내용은 drivers/video/pxafb.c 에서 발췌한 내용입니다.

714      #if defined (CONFIG_PXA_CERF_PDA)
715          new_regs.lccr0 = fbi->lccr0;
716          new_regs.lccr1 =
717              LCCR1_DisWdth(var->xres) +
718              LCCR1_HorSnchWdth(var->hsync_len) +
719              LCCR1_BegLnDel(var->left_margin) +
720              LCCR1_EndLnDel(var->right_margin);
721      
722          new_regs.lccr2 =
723              LCCR2_DisHght(var->yres) +
724              LCCR2_VrtSnchWdth(var->vsync_len) +
725              LCCR2_BegFrmDel(var->upper_margin) +
726              LCCR2_EndFrmDel(var->lower_margin);
727      
728          new_regs.lccr3 = fbi->lccr3
729              |
730              (var->sync & FB_SYNC_HOR_HIGH_ACT ? LCCR3_HorSnchH : LCCR3_HorSnchL) |
731              (var->sync & FB_SYNC_VERT_HIGH_ACT ? LCCR3_VrtSnchH : LCCR3_VrtSnchL);
732      #elif defined (CONFIG_FB_PXA_QVGA)
733          new_regs.lccr0 = fbi->lccr0;
734          new_regs.lccr1 =
735              LCCR1_DisWdth(var->xres) +
736              LCCR1_HorSnchWdth(var->hsync_len) +
737              LCCR1_BegLnDel(var->left_margin) +
738              LCCR1_EndLnDel(var->right_margin);
739          new_regs.lccr2 =
740              LCCR2_DisHght(var->yres) +
741              LCCR2_VrtSnchWdth(var->vsync_len) +
742              LCCR2_BegFrmDel(var->upper_margin) +
743              LCCR2_EndFrmDel(var->lower_margin);
744          new_regs.lccr3 = fbi->lccr3;
745      #else
746          // FIXME using hardcoded values for now
747          new_regs.lccr0 = fbi->lccr0;
748      
749          new_regs.lccr1 =
750              LCCR1_DisWdth(var->xres) +            
751              LCCR1_HorSnchWdth(var->hsync_len) +
752              LCCR1_BegLnDel(var->left_margin) +  
753              LCCR1_EndLnDel(var->right_margin);  
754                                                  
755          new_regs.lccr2 =                        
756              LCCR2_DisHght(var->yres) +          
757              LCCR2_VrtSnchWdth(var->vsync_len) +
758              LCCR2_BegFrmDel(var->upper_margin) +
759              LCCR2_EndFrmDel(var->lower_margin);
760                                                  
761          new_regs.lccr3 = fbi->lccr3;            
762      #endif                    


에서 보시면 CONFIG_PXA_CERF_PDA 에서만 사용되고 있습니다. 일반적으로는 사용되고 있지않습니다.


>Q.2>
>
>LCCR3 에서 HORIZONTAL 과 VERTICAL SYNC의 극성을 설정하는데,
>
>LCD_SYNC 부분은 설정할 필요가 있는건가여?

==>> 현재 저희 보드에서는 LCD_SYNC 부분을 설정할 필요가 없을것 같습니다.


>Q.3>
>
>수평의 관련 레지스터의 설정되는 값은 DCLK 수이고,
>수직 관련 레지스터의 설정값은 PERIOD의 수가 맞는지요?
>
>ex>
>LCD_HOR_SYNC_WIDTH_PULSE    2   => 2 CLOCK
>LCD_BEGIN~L
>LCD_END~L
>
>LCD_VERTI_SYNC_WIDTH_PULSE  3   => 3 주기
>LCD_BEGIN~F
>LCD_END~F


위의 drivers/video/pxafb.c 내용 중

749          new_regs.lccr1 =
750              LCCR1_DisWdth(var->xres) +            
751              LCCR1_HorSnchWdth(var->hsync_len) +
752              LCCR1_BegLnDel(var->left_margin) +  
753              LCCR1_EndLnDel(var->right_margin);  
754                                                  
755          new_regs.lccr2 =                        
756              LCCR2_DisHght(var->yres) +          
757              LCCR2_VrtSnchWdth(var->vsync_len) +
758              LCCR2_BegFrmDel(var->upper_margin) +
759              LCCR2_EndFrmDel(var->lower_margin);

부분이 있습니다.
여기서 LCCR1, LCC2를 보면 Hsync Period 와 Vsync Period 를 설정합니다.

즉 Hsync Period = xres + hsync_len + left_margin + right_margin
    Vsync Period = yres + vsync_len + left_margin + right_margin
입니다.

ex) Hsync Period (800) = 640 + hsync_len + 24 + 40
      hsync_len = 96    

커널의 Documentation/fb/framebuffer.txt 에 있는 그림을 참고하세요..

TFT LCD에 따라 다르며, 데이타쉬트에 있는 설정값과 일치하지 않을 수 있습니다.
따라서, vsync_len, hsync_len, left_margin, right_margin은 사용자가 최적의 화질 상태를 나타내기 위해서
임의적으로 값을 조절해야 합니다. 이 작업에서 무지 삽질을 많이 합니다.

그럼 수고하세요..