工具/软件:
您好、团队、
我的客户正在使用 sn65dsi86、并希望尽快读取 F0到 F8寄存器。 您?告知在初始化后读取这些寄存器的最短等待时间3 μ s
石头
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好、
对于状态寄存器、有时可以在上电时或 DSI 流开始期间设置错误标志。 因此、建议通过写入0xFF 来清除标志、然后读回状态标志。
您能否澄清一下您的评论:"初始化完成后读取 F6的值错误"? 地址0xF6至0xF7报告与 DSI 到 DP 视频时序相关的错误。 通常、当编程到 DSI86中的视频时序与 DSI 接口上接收到的时序不匹配时、这些寄存器中会设置错误。 因此、直到在 DSI 输入端启动视频流之后、寄存器0xF6才会返回值。
谢谢
David
您好、David:
1.我们想知道 DSI86启动后读取0xF6寄存器的最短等待时间、我们使用以下代码、发现 DSI 初始化后读取0xF6寄存器的最短等待时间约为40ms。如果有任何问题、请检查以下代码吗?
693 static int sn65dsi86_resume_init (struct sn65dsi86_data *pdata)
694{
695 int ret = 0;
696 int max_retries = 3;
697内部重试= 0;
698 pr_err ("TMJ sn65dsi86_resume_init\n");
699 if(!pdata->is_in_suspend)
700 return 0;
701.
702 if (pdata == NULL){
703 pr_err ("sn65dsi86 pdata null!!! \n");
704 }其他{
705 //sn65dsi86_reset (pdata);
706 sn65dsi86_init_reg (sn65dsi86_client、pdata);
707 msleep(100);
708 ret = sn65dsi86_read (sn65dsi86_client、EDP_I2C_ADDR、0xF6);
709 pr_err ("TMJ sn65dsi86_resume_init ret=0x%x\n"、ret);
2.下面是 dsi86的恢复代码,我们首先检查 F6状态,如果 F6状态有错误,我们将禁用 vstream ,然后关闭 dsi86,然后开机并重置 dsi86,然后初始化 dsi86。
693 static int sn65dsi86_resume_init (struct sn65dsi86_data *pdata)
694{
695 int ret = 0;
696 int max_retries = 3;
697内部重试= 0;
698 pr_err ("TMJ sn65dsi86_resume_init\n");
699 if(!pdata->is_in_suspend)
700 return 0;
701.
702 if (pdata == NULL){
703 pr_err ("sn65dsi86 pdata null!!! \n");
704 }其他{
705 //sn65dsi86_reset (pdata);
706 sn65dsi86_init_reg (sn65dsi86_client、pdata);
707 msleep(100);
708 ret = sn65dsi86_read (sn65dsi86_client、EDP_I2C_ADDR、0xF6);
709 pr_err ("TMJ sn65dsi86_resume_init ret=0x%x\n"、ret);
710.
711 while (ret!= 0 &&重试< max_retries){
712 pr_err ("TMJ sn65dsi86_resume_init rty %d \n"、重试次数+ 1);
713
714 //GPIO_DIRECTION_OUTPUT (pdata->BL_GPIO、0);
715 //msleep(100);
716 //gpio_direction_output (pdata->pwr_gpio_dc12v、0);
717 sn65dsi86_vstream_enable_off (pdata);
718 msleep(20);
719 sn65dsi86_write (sn65dsi86_client、EDP_I2C_ADDR、0x96、0x00);//01正常06 HBR2模式
720 sn65dsi86_write (sn65dsi86_client、EDP_I2C_ADDR、0x93、0x00);//DP 通道、2个通道-->0x24; 4条通道-->0x34
721 sn65dsi86_write (sn65dsi86_client、EDP_I2C_ADDR、0x0D、0x00);
722 gpio_direction_output (pdata->pwr_rst_gpio、0);
723 GPIO_DIRECTION_OUTPUT (pdata->rst_GPIO、0);
724 msleep(50);
725 GPIO_DIRECTION_OUTPUT (pdata->pwr_GPIO_12v、0);
726 GPIO_DIRECTION_OUTPUT (pdata->pwr_GPIO_18V、0);
727 GPIO_DIRECTION_OUTPUT (pdata->pwr_GPIO_33V、0);
728
729 msleep(500);
730 sn65dsi86_power (pdata);
731 sn65dsi86_init_reg (sn65dsi86_client、pdata);
732 msleep(100);
733
734 ret = sn65dsi86_read (sn65dsi86_client、EDP_I2C_ADDR、0xF6);
735 pr_err ("TMJ sn65dsi86_resume_init rty ret=0x%x\n"、ret);
736
737次重试++次;
}
551 void sn65dsi86_init_reg (struct i2c_client *client、struct sn65dsi86_data *pdata)
552{
553 sn65dsi86_write (客户端、EDP_I2C_ADDR、0x09、0x00);
554 sn65dsi86_write (client、EDP_I2C_ADDR、0x0A、0x04);//dsiclk 09 06 //REFCLK 02
555 sn65dsi86_write (client、EDP_I2C_ADDR、0x0D、0x00);
556 sn65dsi86_write (client、EDP_I2C_ADDR、0x10、0x26);
557 sn65dsi86_write (client、EDP_I2C_ADDR、0x11、0x00);
558 sn65dsi86_write (client、EDP_I2C_ADDR、0x12、0x54);//REFCLK 59 5c
559 sn65dsi86_write (client、EDP_I2C_ADDR、0x13、0x54);//REFCLK 59 5c
560 sn65dsi86_write (client、EDP_I2C_ADDR、0x20、0x80);//1920
561 sn65dsi86_write (client、EDP_I2C_ADDR、0x21、0x07);//1920
562 sn65dsi86_write (client、EDP_I2C_ADDR、0x22、0x00);
563 sn65dsi86_write (client、EDP_I2C_ADDR、0x23、0x00);
564 sn65dsi86_write (client、EDP_I2C_ADDR、0x24、0x38);//1080
565 sn65dsi86_write (client、EDP_I2C_ADDR、0x25、0x04);//1080
566 sn65dsi86_write (client、EDP_I2C_ADDR、0x2C、0x14);//HSYNC-len (hpw)=20
567 sn65dsi86_write (client、EDP_I2C_ADDR、0x2D、0x00);//00
568 sn65dsi86_write (client、EDP_I2C_ADDR、0x30、0x08);//vsync-len (vpw)=8
569 sn65dsi86_write (client、EDP_I2C_ADDR、0x31、0x00);//00
570 sn65dsi86_write (client、EDP_I2C_ADDR、0x34、0xA0);//h后 沿(HBP)=160
571 sn65dsi86_write (client、EDP_I2C_ADDR、0x36、0x1B);//v后 沿(VBP)=27
572 sn65dsi86_write (client、EDP_I2C_ADDR、0x38、0x64);//hfront-gencode (HFP)=100
573 sn65dsi86_write (client、EDP_I2C_ADDR、0x3A、0x14);//vfront-gencing (VFP)=20
574 sn65dsi86_write (client、EDP_I2C_ADDR、0x3C、0x00);//pattern 模型测试打开:0x10、关闭:0x00
575 sn65dsi86_write (client、EDP_I2C_ADDR、0x3D、0x00);
576 sn65dsi86_write (客户端、EDP_I2C_ADDR、0x3E、0x00);
577 sn65dsi86_write (client、EDP_I2C_ADDR、0x5B、0x00);//00:RGB888、01:RGB666
578 sn65dsi86_write (client、EDP_I2C_ADDR、0x93、0x24);//DP 通道、2个通道-->0x24;4个通道-->0x34
579 sn65dsi86_write (client、EDP_I2C_ADDR、0x94、0x80);//DP 数据速率、1.62Gbps -->0x20;2.7Gbps -->0x80
580 sn65dsi86_write (client、EDP_I2C_ADDR、0x5C、0x01);//HPD 0->启用1->禁用
581 sn65dsi86_write (client、EDP_I2C_ADDR、0x5A、0x05);
582 sn65dsi86_write (client、EDP_I2C_ADDR、0x0d、0x01);
583 mdelay(30);
584 sn65dsi86_write (client、EDP_I2C_ADDR、0x64、0x01);
585 sn65dsi86_write (client、EDP_I2C_ADDR、0x74、0x00);
586 sn65dsi86_write (client、EDP_I2C_ADDR、0x75、0x01);
587 sn65dsi86_write (client、EDP_I2C_ADDR、0x76、0x0A);
588 sn65dsi86_write (client、EDP_I2C_ADDR、0x77、0x01);
589 sn65dsi86_write (client、EDP_I2C_ADDR、0x78、0x81);
590 mdelay(20);
591 sn65dsi86_write (client、EDP_I2C_ADDR、0x96、0x01);//01正常06 HBR2模式
592 mdelay(20);
593 sn65dsi86_write (client、EDP_I2C_ADDR、0x5A、0x0D);
594 mdelay(20);
595 sn65dsi86_write (客户端、EDP_I2C_ADDR、0x5F、0x08);
}
能否告诉我们如何重现此0xF6错误(发生错误时0xF6的值为0x40)、并使用上述代码来检查它是否可以修复此错误?
非常感谢。
嗨、Shane、David、
1.当闪烁问题发生时,如果他们切换至 DSI86内部色条测试,问题是否消失?
----- 我已经内部同步,我们已经尝试了色条测试,发现问题消失了。
嗨、Stone、David、
2.如果是、他们能否使用寄存器0x5F 位[5:4]将 HSYNC 和 VSYNC 映射到 DSI86 GPIO 引脚?
----- 如何映射? 而这个问题重现率:2/100,这个问题不 容易重现,所以我们可以用其他方式来重现它吗?谢谢
嗨、Haibin、
为了进行测试、请在中添加步骤
1.初始化后清除错误检查寄存器(写入0xFF)
2.轮询错误检查寄存器(0xF1 - 0xf8)
3.检查是否出现闪烁,并通过轮询找到这些寄存器上显示的相应错误
问题:
1.他们是如何发现这种闪烁,它发生的频率是多少? 他们是否捕获了视频的闪烁?
2.出现闪烁时,发现了什么错误? 它总是一样的吗?
3.闪烁或黑屏问题可能是由于各种原因造成的,所以我们需要找出错误,以便有可能重现。 是否使用视频输入或内部测试模式对其进行了测试? 测试图案是否也会出现闪烁?
- Ikram
嗨、Haibin、
1.只是为了确认,它是否总是相同的错误签名? 发生这种情况时、是否始终0xF6 = 0x40、而没有其他错误? 当系统正常时、这些寄存器确实会报告其他错误?
如果它们能够表明在开始时清除错误、并登记工作和问题案件的转储、将会有所帮助。
2、 问题板(您提到的是100个中的2个)、问题的频率是多少?
3.使用暂挂模式时是否总是这样? 如果在暂停生效后确认发生、然后取消置位、则必须检查暂停时序要求和顺序。
- Ikram
嗨、Haibin、
进入睡眠状态时、是否指 DP 同步的挂起模式? 在这种情况下、请让客户按照"8.3.3.2挂起模式"一节和"挂起时序要求"规范中描述的顺序操作。 您能否请客户检查此情况并分享他们的"睡眠"状态程序?
0xF6上显示的同步丢失错误与时序问题有关、例如未针对 DSI 源时序正确对 DSI86进行编程。 另请检查数据表中的上电和断电序列。
此致、
Ikram