1.视频播放卡,有时播放H265视频HDMI显示花屏。
&route_hdmi{
status = "okay";
};
&lvds_in_vopb {
status = "disabled"; // LVDS使用vopl, 关闭vopb
};
&hdmi_in_vopl {
status = "disabled";
};
\sdk-9.0\kernel\drivers\gpu\drm\rockchip\dw_hdmi-rockchip.c
+530 if(!strcmp(mode->name, "4096x2160") || !strcmp(mode->name, "3840x2160")){
+531 printk(KERN_ERR"bad mode:%s, vrefresh:%d\n",mode->name, mode->vrefresh);
+532 return MODE_BAD;
+533 }
关闭4k以上的分辨率
会出现桌面切换缓慢,hdmi闪黑屏,播放4k视频花屏。原因是当插上hdmi后,会自动识别hdmi的分辨率,当屏的分辨率与hdmi输出的分辨率不一致时,容易发生异常。但也不是绝对的,闪黑屏可以打补丁解决,但4k p30 的分辨率在板子上运行是不太流畅的,所以我想让它默认低分辨率输出,有4k需求的时候再设置4k分辨率。
(1)解决闪黑屏补丁
(u-boot)
diff --git a/drivers/clk/rockchip/clk_rk3288.c b/drivers/clk/rockchip/clk_rk3288.c
index ab346ef539..ede89a7445 100644
--- a/drivers/clk/rockchip/clk_rk3288.c
+++ b/drivers/clk/rockchip/clk_rk3288.c
@@ -169,7 +169,7 @@ enum {
/* Keep divisors as low as possible to reduce jitter and power usage */
static const struct pll_div apll_init_cfg = PLL_DIVISORS(APLL_HZ, 1, 1);
-static const struct pll_div gpll_init_cfg = PLL_DIVISORS(GPLL_HZ, 2, 4);
+static const struct pll_div gpll_init_cfg = PLL_DIVISORS(GPLL_HZ, 1, 8);
static const struct pll_div cpll_init_cfg = PLL_DIVISORS(CPLL_HZ, 1, 2);
(kernel)
\sdk-9.0\kernel\drivers\gpu\drm\rockchip\dw_hdmi-rockchip.c
static const struct dw_hdmi_plat_data rk3288_hdmi_drv_data = {
.mode_valid = dw_hdmi_rockchip_mode_valid,
.mpll_cfg = rockchip_mpll_cfg,
+ .mpll_cfg_420 = rockchip_mpll_cfg_420, //rockchip_rk3288w_mpll_cfg_420,
.cur_ctr = rockchip_cur_ctr,
.phy_config = rockchip_phy_config,
.dev_type = RK3288_HDMI,
.tmds_n_table = rockchip_werid_tmds_n_table,
};
\sdk-9.0\kernel\drivers\clk\rockchip\clk-rk3288.c
- RK3066_PLL_RATE_NB(594000000, 2, 198, 4, 1),
+ RK3066_PLL_RATE_NB(594000000, 1, 198, 8, 1),
+
\sdk-9.0\kernel\arch\arm\boot\dts\rk3288-evb-android-act8846-edp.dtsi
vdd_10: REG10 {
regulator-name = "VDD_10";
- regulator-min-microvolt = <1000000>;
- regulator-max-microvolt = <1000000>;
+ regulator-min-microvolt = <1100000>;
+ regulator-max-microvolt = <1100000>;
regulator-always-on;
};
(2) 设置主副屏,为副屏hdmi设置默认分辨率
\sdk-9.0\device\rockchip\rk3288\device.mk
PRODUCT_PROPERTY_OVERRIDES += \
vendor.hwc.device.primary=LVDS \
vendor.hwc.device.extend=HDMI-A \
persist.vendor.resolution.aux=1920x1080p60
(3)打开配置
\sdk-9.0\device\rockchip\rk3288\BoardConfig.mk
BOARD_SHOW_HDMI_SETTING = true
(4)添加服务(查看自己使用的是哪个manifest.xml)
\sdk-9.0\device\rockchip\common\4g_modem\manifest.xml
<hal format="hidl">
<name>rockchip.hardware.outputmanager</name>
<transport>hwbinder</transport>
<version>1.0</version>
<interface>
<name>IRkOutputManager</name>
<instance>default</instance>
</interface>
</hal>
5.发现hdmi显示正常了,但4k分辨率情况下,播放高清视频会花屏。(关闭hwc测试)
\sdk-9.0\device\rockchip\rk3288\device.mk
PRODUCT_PROPERTY_OVERRIDES += \
vendor.hwc.compose_policy=0 \
2.WIFI与蓝牙不稳定,有时启动之后无法打开,硬件的问题性比较大旧版本的AP6212稳定。改版为AP6356之后经常打不开。
待定
3.gps不支持,系统显示测试应用版本太低。
$: logcat
发现/dev/ttyS3没有权限
\sdk-9.0\device\rockchip\common\init.rk30board.rc
+ chmod 777 /dev/ttyS3
删除老旧的应用
4.SATA不支持。SATA供电脚没有电。
&i2c0 {
act8846: act8846@5a {
sata-enable-gpio = <&gpio7 RK_PB7 GPIO_ACTIVE_HIGH>;
//usb_hub_reset_gpio = <&gpio0 RK_PA7 GPIO_ACTIVE_LOW>;
//sata_reset_gpio = <&gpio8 RK_PA7 GPIO_ACTIVE_HIGH>;
....
}
}
sdk-9.0\kernel\drivers\regulator\act8865-regulator.c
static int act8865_pmic_probe(struct i2c_client *client,
const struct i2c_device_id *i2c_id)
{
......
+ int sata_enable;
+ enum of_gpio_flags flags;
......
if (IS_ERR(rdev)) {
dev_err(dev, "failed to register %s\n", desc->name);
return PTR_ERR(rdev);
}
}
+ sata_enable = of_get_named_gpio_flags(client->dev.of_node, "sata-enable-gpio", 0, &flags);
+ //GPIO7_B7_D //sata enable
+ if(!gpio_request(sata_enable, "")){
+ gpio_direction_output(sata_enable, 0);
+ gpio_set_value(sata_enable,1);
+ printk("rk3288 sata_enable gpio ok\n");
+ }else{
+ printk("rk3288 gpio erro\n");
+ }
.......
}
还存在有事连接不上的问题
参照android7.1 修改 act8865-regulator.c 驱动后问题已解决。
5.RTC时间可运行断电能保存,但不能跟网络时间同步.
$:make ARCH=arm menuconfig
# 使用rtc芯片,关掉系统自带的rtc
Device Drivers → Real Time Clock
<*> Haoyu Microelectronics HYM8563
< > Rockchip RK808/RK816 RTC
以上方法尚未解决,待定。
重新编译配置后,没有进行更换,导致时间不同步
CONFIG_RTC_LIB=y
CONFIG_RTC_CLASS=y
CONFIG_RTC_HCTOSYS=y
CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
CONFIG_RTC_SYSTOHC=y
CONFIG_RTC_SYSTOHC_DEVICE="rtc0"
# CONFIG_RTC_DEBUG is not set
#
# RTC interfaces
#
CONFIG_RTC_INTF_SYSFS=y
CONFIG_RTC_INTF_PROC=y
CONFIG_RTC_INTF_DEV=y
# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
# CONFIG_RTC_DRV_TEST is not set
测试发现 rtc并未同步。
logcat :
05-10 03:44:36.580 436 1384 D SntpClient: request time failed: java.net.SocketTimeoutException: Poll timed out
05-10 03:44:36.581 436 1384 E NtpTimeHelper: requestTime failed
05-10 03:44:37.125 1305 1305 W ServiceManagement: Waited one second for android.hardware.radio@1.0::IRadio/slot1. Waiting another..
ntp 连接不上,参照android7修改地址。
做一下修改
sdk-9.0\frameworks\base\core\res\res\values\config.xml
+ <!-- <string translatable="false" name="config_ntpServer">time.android.com</string> -->
+ <string translatable="false" name="config_ntpServer">2.android.pool.ntp.org</string>
已解决。曾修改用苹果的地址,发现gps受影响。
6.系统运行比较卡界面切换响应较慢。系统在启动或者运行中一直报VCCIO_SD的电压问题打印影响终端的使用如附件所示.
\sdk-9.0\kernel\drivers\power\avs\rockchip-io-domain.c
+162 //dev_info(supply->iod->dev, "Setting to %d done\n", uV);
\sdk-9.0\kernel\drivers\regulator\core.c
if (*min_uV > *max_uV) {
+256 //rdev_err(rdev, "Restricting voltage, %u-%uuV\n",
+266 //*min_uV, *max_uV);
return -EINVAL;
}
系统运行比较卡界面切换响应较慢,尚未解决。
更新:由于hdmi处于4kp30分辨率下,系统运行比较卡,已经切换到低分辨率。