一、最近碰到一個奇怪的問題,tc358749x碰到的問題還挺多,之前是打開一直黑屏,最後從硬件上解決了,現在又碰到了一個問題,HDMI+LVDS雙屏顯示,HDMIIN打開是黑屏的,表現形式跟之前的一樣,會出現CamerIcIspIrq: pic err first,g_ispFrameNum == 1錯誤。只有單獨打開HDMI通道HDMI IN才正常,一開始是懷疑LVDS的GPIO有服用,檢查了好幾遍,沒發現問題有服用的GPIO口,測試幾路電壓也是正常的,問了芯片原廠,配合讀出的寄存器也是正常的,做了好多實驗,提高CPU、GPU、DDR頻率,還是不行,最後發現是ISP_CLK頻率驅動不足的原因所致,這裏也要感謝原廠和芯片廠的大力支持。
修改點:
rk3288\kernel\drivers\media\video\rk_camsys\camsys_marvin.c
if (CHIP_TYPE == 3288) {
//isp_clk = 420000000; //modiy by peng@ZY
isp_clk = 550000000;
camsys_trace(1, "%s isp_clk: 420Mhz; CHIP TYPE is %d",
dev_name(camsys_dev->miscdev.this_device),
CHIP_TYPE);
} else {
if (on == 1)
isp_clk = 210000000;
else
//isp_clk = 420000000;/modiy by peng@ZY
isp_clk = 550000000;
}
二、HDMI uboot和kernel顯示logo
(1)rk3288\u-boot\include\configs\rk32plat.h
添加#define CONFIG_DRM_ROCKCHIP_DW_HDMI
(2)dtsi
route_hdmi: route-hdmi {
status = "disabled";
logo,uboot = "logo.bmp";
logo,kernel = "logo_kernel.bmp";
logo,mode = "center";
charge_logo,mode = "center";
connect = <&vopb_out_hdmi>;
};
(3)dts
&route_hdmi {
status = "okay";
};
三、調試IR
硬件是連接到PWM0,PWM0系統默認是給了EDP/LVDS的背光,這裏要先屏蔽掉LVDS上的背光PWM,(LVDS的背光硬件強制供電了,但是注意會有個問題,背光無法調節亮暗)將PWM0獨立出來給IR用,dts配置:(注意usercode)
&pwm0 {
compatible = "rockchip,remotectl-pwm";
interrupts = <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>;
remote_pwm_id = <0>;
handle_cpu_id = <1>;
status = "okay";
ir_key0 {
rockchip,usercode = <0xffee>;
rockchip,key_table =
<0xa6 KEY_POWER>,
<0xf2 KEY_HOME>,
<0xfa KEY_BACK>,
<0xba KEY_MENU>,
<0xf9 KEY_UP>,
<0xe9 KEY_DOWN>,
<0xa5 KEY_LEFT>,
<0xe4 KEY_RIGHT>,
<0xe5 KEY_ENTER>,
<0xec KEY_VOLUMEUP>,
<0xe8 KEY_VOLUMEDOWN>,
<0xe6 KEY_MUTE>,
<0xed 388>,
<0xad KEY_1>,
<0xaf KEY_2>,
<0xef KEY_3>,
<0xa9 KEY_4>,
<0xab KEY_5>,
<0xeb KEY_6>,
<0xb1 KEY_7>,
<0xb3 KEY_8>,
<0xf3 KEY_9>,
<0xf0 KEY_0>,
<0xae KEY_BACKSPACE>,
<0xde KEY_SEARCH>;
};
};
編譯燒錄,打開debug
echo 1 > /sys/module/rockchip_pwm_remotectl/parameters/code_print
觸發遙控器按鍵,發現沒信息出來,用示波器測量IR的PWM,按按鍵有波形,定位是系統沒配置好。修改dits:
pwm0: pwm@ff680000 {
compatible = "rockchip,rk3288-pwm";
reg = <0x0 0xff680000 0x0 0x10>;
#pwm-cells = <3>;
pinctrl-names = "active"; //將activice改爲default
pinctrl-0 = <&pwm0_pin>;
clocks = <&cru PCLK_PWM>;
clock-names = "pwm";
status = "disabled";
};
燒錄查看鍵值正常。