Backlight 수정

보드를 키면 다음과 같은 순서로 화면에 표시된다.

u-boot Rockchip 그래픽 로고 표시
kernel boot Rockchip kernel 그래픽 로고 표시
안드로이드 애니매이션 표시

현재 보드의 LCD 백라이트 전압은 7.xV ~ 8.xV 사이의 값을 사용해야 한다. 이 값보다 작으면 화면이 꺼지고 높으면 하얗게 화면이 떠버린다.

dts에서 설정된 pwm0의 1주기 시간은 25000ns 이다.

기존 dts의 brightness-leves 테이블을 살펴보면 0부터 255까지 순차적으로 나열되어 있는데 이 값들이 pwm 듀티를 결정한다.

하지만, 기존 소스는 이 테이블의 최대값을 허용범위의 최대값으로 사용하고 있기 때문에 25,000ns 의 값에서 그 변화가 극히 적다. (25000 – 255)

그러므로, 소스를 수정하여 변화의 폭을 넓히고 조정하는 값의 범위를 적절하게 조절할 필요가 있다.

여러번 수치를 변경해본 결과 다음과 같은 결과를 얻었다.

Source Scale Range
Original 255 0~255
Modified 1,800 0~3,000

dts의 brightness-level를 정상적으로 수정하고 (136 137 사이의 공백이 없어 문제가 생겼었다.), brightness-scale 이라는 새로운 속성을 추가한다.

pwm duty를 계산하는 부분. 디버깅용으로 몇가지 값을 출력하도록 한다. brightness 를 UI 에서 변경하면 10~255까지 변화를 줄 수 있고, dim 모드에 들어가면 2가 된다. (/sys/devices/backlight … 에서 지정하면 0~255 가능)

dts에 추가된 신규 속성을 읽는다. platform_pwm_backlight_data 구조체를 수정하기는 번거롭기 때문에 임시로 사용하기 위해서 함수의 인자를 추가한다.

brightness-scale 값이 있으면 테이블의 최대값이 아닌 지정한 값을 사용하도록 한다.

u-boot에도 scale을 적용한다. kernel과는 다른 max_brightness를 scale 값으로 사용하고 있다.