9/30/2014

Porting LCD, Touch Screen

1. LCD 관련정리 

LCD Interface 관련정리 

  • LCD 와 Frame Buffer 
SoC에서 Frame Buffer의 역할은 중요하며, LCD가 특히 RGB Interface로 연결되었을 경우 LCD 내부에 RAM이 별도로 없으므로, 
Frame Buffer를 통해 이 Latency를 없애고자 하는 것이며, OSD 와 VIDEO Frame Buffer의 경우 갯수 또한 다르다. 

2. KERNEL 설정 

TFTP Pannel이므로, 별도의 Backlight와 Frame Buffer를 설정해야줘야 한다. 
LCD: U133WA01

  • Odroid Kernel 설정 
Odroid의 LCD 설정 및 Backlight 및 Frame Buffer 설정 
$ make menuconfig 
Device Driver-> Graphics support -> Backlight & LCD device support
        
Lowlevel LCD controls
Lowlevel Backlight controls
Generic PWM based Backlight Driver

$ make menuconfig   
Device Driver-> Graphics support ->Support for frame buffer devices->
S5P Framebuffer support
LCD init in kernel
(2)     Default Window (0-4)
(2)     Number of frame buffers (1-3)
Select LCD Type (U133WA01)

  • LCD Back Light 관련소스 
arch/arm/mach-exynos/mach-odroid-x.c  :  spi resiger, pwm
arch/arm/mach-exynos/setup-fb-odroid.c :  s3cfb_backlight_on   backright
arch/arm/plat-samsung/dev-backlight.c

  • Frame Buffer 와 LCD 관련부분 확인 
$ ls qtwork/kernel/linux-3.0.68/drivers/video/samsung
built-in.o  s3cfb_fimd6x.o  s3cfb_main.o  s3cfb.o  s3cfb_ops.o u133wa01.o

2.1 SPI 관련 추가방법  

GPIO 기반의 SPI 설정 

$ vi arch/arm/mach-exynos/mach-odroid-x.c

static struct s3c64xx_spi_csinfo spi1_csi[] = {
        [0] = {
                .line = EXYNOS4_GPB(5),
                .set_level = gpio_set_value,
                .fb_delay = 0x2,
        },
};

static struct spi_board_info spi1_board_info[] __initdata = {
        {
                .modalias = "spidev",
                .platform_data = NULL,
                .max_speed_hz = 10*1000*1000,
                .bus_num = 1,
                .chip_select = 0,
                .mode = SPI_MODE_3,
                .controller_data = &spi1_csi[0],
        }
};

......
spi_register_board_info(spi0_board_info, ARRAY_SIZE(spi0_board_info));

  • SPI Driver Based GPIO
drivers/spi/spi.c

drivers/spi/spi_gpio.c: 위의 board에서 정의된 값을 이용하여, gpio를 이용하여 기본 SPI 설정
                        이 곳에서 제대로 GPIO 제대로 설정되었는지 TEST
          
drivers/spi/spi_bitbang.c
                         위 함수를 이용하여 SPI  based on GPIO 구동
- bitbang_work           : 실제 gpio로 전송을 담당 하는 함수.
- spi_bitbang_transfer  : 전송을  전송을 하지만, queue만 넣고 실제 전송을 bitbang_work 동작


  • 관련 GPIO 설정 및 Contorl 
sys filesystem을 이용하여 쉽게 gpio로 control 
cat /sys/kernel/debug/gpio 
관련참조 
  http://th15.tistory.com/25

Touch TSC2007 


  http://codewalkerster.blogspot.kr/2014/06/optimize-setting-for-low-dpi.html
  https://access.redhat.com/documentation/ko-KR/Red_Hat_Enterprise_Linux/6/html/Performance_Tuning_Guide/s-cpu-irq.html

Interrupt Chattering
  http://forum.falinux.com/zbxe/index.php?document_srl=786529&mid=question
  http://mroon.tistory.com/263