ITOP-RK3588 HDMI强制分辨率跳过EDID

例如HDMI强制输出1280x720@60

1、打开~/3588-linux/u-boot/drivers/video/drm下的dw_hdmi_qp.c文件修改:

修改如下:

注释掉:const u8 def_modes_vic[6] = {4, 16, 2, 17, 31, 19};
添加   const u8 def_modes_vic[1] = {4};

2、const u8 def_modes_vic[1] = {4};对应~/3588-linux/u-boot/common/edid.c下的static const struct drm_display_mode edid_cea_modes_1[] 

3、若要修改特殊分辨率,句末的分辨率改为自己需要的分辨率,同时把dw_hdmi_qp.c文件下的const u8 def_modes_vic[1] = {4};改为const u8 def_modes_vic[1] = {127};。

4、内核同步分辨率,修改~/3588-linux/kernel/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c

static const struct drm_display_mode dw_hdmi_default_modes[] = {
	
	/* 4 - 1280x720@60Hz 16:9 */
	{ DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 1390,
		   1430, 1650, 0, 720, 725, 730, 750, 0,
		   DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC),
	  .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, },

#if 0
	/* 16 - 1920x1080@60Hz 16:9 */
	{ DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 148500, 1920, 2008,
		   2052, 2200, 0, 1080, 1084, 1089, 1125, 0,
		   DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC),
	  .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, },
	/* 2 - 720x480@60Hz 4:3 */
	{ DRM_MODE("720x480", DRM_MODE_TYPE_DRIVER, 27000, 720, 736,
		   798, 858, 0, 480, 489, 495, 525, 0,
		   DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC),
	  .picture_aspect_ratio = HDMI_PICTURE_ASPECT_4_3, },
	/* 4 - 1280x720@60Hz 16:9 */
	{ DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 1390,
		   1430, 1650, 0, 720, 725, 730, 750, 0,
		   DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC),
	  .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, },
	/* 31 - 1920x1080@50Hz 16:9 */
	{ DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 148500, 1920, 2448,
		   2492, 2640, 0, 1080, 1084, 1089, 1125, 0,
		   DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC),
	  .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, },
	/* 19 - 1280x720@50Hz 16:9 */
	{ DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 1720,
		   1760, 1980, 0, 720, 725, 730, 750, 0,
		   DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC),
	  .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, },
	/* 17 - 720x576@50Hz 4:3 */
	{ DRM_MODE("720x576", DRM_MODE_TYPE_DRIVER, 27000, 720, 732,
		   796, 864, 0, 576, 581, 586, 625, 0,
		   DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC),
	  .picture_aspect_ratio = HDMI_PICTURE_ASPECT_4_3, },
	/* 2 - 720x480@60Hz 4:3 */
	{ DRM_MODE("720x480", DRM_MODE_TYPE_DRIVER, 27000, 720, 736,
		   798, 858, 0, 480, 489, 495, 525, 0,
		   DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC),
	  .picture_aspect_ratio = HDMI_PICTURE_ASPECT_4_3, },
#endif
};
static int dw_hdmi_connector_get_modes(struct drm_connector *connector)
{
	struct dw_hdmi_qp *hdmi =
		container_of(connector, struct dw_hdmi_qp, connector);
	struct hdr_static_metadata *metedata =
		&connector->hdr_sink_metadata.hdmi_type1;
	struct edid *edid;
	struct drm_display_mode *mode;
	struct drm_display_info *info = &connector->display_info;
	void *data = hdmi->plat_data->phy_data;
	int i, ret = 0;

	if (!hdmi->ddc)
		return 0;

	memset(metedata, 0, sizeof(*metedata));
    //注释掉hdmi edid读取阶段。
	//edid = drm_get_edid(connector, hdmi->ddc);
	edid = NULL;
    ...
}

5、kernel设备树配置

打开~/3588-linux/kernel/arch/arm64/boot/dts/rockchip/topeet_screen_lcds.dts文件

gedit topeet_screen_lcds.dts,修改如下打开HDMI0,HDMI1的宏。

//#define LCD_TYPE_MIPI0  //VP2
//#define LCD_TYPE_LVDS_10_1_1280x800_GT911  //VP2
//#define LCD_TYPE_LVDS_10_1_1280x800_GT9271 //VP2
//#define LCD_TYPE_LVDS_10_1_1024x600_GT911  //VP2
//#define LCD_TYPE_LVDS_7_0  //VP2
#define LCD_TYPE_HDMI1  //VP1
#define LCD_TYPE_HDMI0  //VP0
//#define LCD_TYPE_TYPEC_DP  //VP1
//#define LCD_TYPE_MIPI1    //VP3

### RK3588 MIPI摄像头配置与使用教程 #### 硬件连接 对于RK3588平台而言,其MIPI接口能够支持多达六路的MIPI相机输入以及一路DVP输入。当准备连接一个基于MIPI协议的摄像设备至该开发板时,需确保所选传感器兼容此规格并能通过对应的MIPI通道正常通信[^1]。 物理接线方面,通常情况下,MIPI Camera模块会配备专用的FPC扁平电缆用于对接到主板上的指定插槽内;而具体哪个位置对应哪条数据链路,则要依据产品手册中的说明来决定。另外值得注意的是,在某些设计里可能还需要额外接入电源线给外部供电或是接地处理以保障稳定工作状态。 #### 驱动安装 针对Linux操作系统环境下的RK3588系列处理器来说,官方已经提供了较为完善的开源驱动程序库,这些资源可以在GitHub仓库或者其他公开渠道获取得到。一旦下载完成之后,按照标准流程编译内核并将新生成的部分替换旧版本即可实现更新操作。 如果遇到特定型号如IMX577这样的图像感应器无法被识别的情况,可以尝试修改`drivers/media/i2c/`路径下面相应文件的内容来进行适配调整。例如OV13855类型的感光元件就曾因为频偏问题而导致初始化失败的现象发生过,这时就需要定位到具体的参数项加以修正[^2]。 为了验证整个系统的连贯性和功能性,还可以利用一系列预设好的命令集来进行基本的功能检测。这其中包括但不限于查看当前已加载的所有视频捕捉装置列表、设置分辨率大小以及其他属性选项等动作[^3]。 ```bash v4l2-ctl --list-devices v4l2-ctl --set-fmt-video=width=1920,height=1080,pixelformat=MJPG ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值