@@ -594,15 +594,36 @@ static void hdmirx_get_timings(struct rk_hdmirx_dev *hdmirx_dev,
594
594
595
595
v4l2_dbg (1 , debug , v4l2_dev , "get timings from %s\n" , from_dma ? "dma" : "ctrl" );
596
596
v4l2_dbg (1 , debug , v4l2_dev ,
597
- "act:%dx%d , total:%dx%d , fps:%d , pixclk:%llu\n" ,
597
+ "act:%ux%u , total:%ux%u , fps:%u , pixclk:%llu\n" ,
598
598
bt -> width , bt -> height , htotal , vtotal , fps , bt -> pixelclock );
599
599
600
600
v4l2_dbg (2 , debug , v4l2_dev ,
601
- "hfp:%d , hs:%d , hbp:%d , vfp:%d , vs:%d , vbp:%d \n" ,
601
+ "hfp:%u , hs:%u , hbp:%u , vfp:%u , vs:%u , vbp:%u \n" ,
602
602
bt -> hfrontporch , bt -> hsync , bt -> hbackporch ,
603
603
bt -> vfrontporch , bt -> vsync , bt -> vbackporch );
604
604
}
605
605
606
+ static bool hdmirx_check_timing_valid (struct v4l2_bt_timings * bt )
607
+ {
608
+ if (bt -> width < 100 || bt -> width > 5000 ||
609
+ bt -> height < 100 || bt -> height > 5000 )
610
+ return false;
611
+
612
+ if (bt -> hsync == 0 || bt -> hsync > 200 ||
613
+ bt -> vsync == 0 || bt -> vsync > 100 )
614
+ return false;
615
+
616
+ if (bt -> hbackporch == 0 || bt -> hbackporch > 2000 ||
617
+ bt -> vbackporch == 0 || bt -> vbackporch > 2000 )
618
+ return false;
619
+
620
+ if (bt -> hfrontporch == 0 || bt -> hfrontporch > 2000 ||
621
+ bt -> vfrontporch == 0 || bt -> vfrontporch > 2000 )
622
+ return false;
623
+
624
+ return true;
625
+ }
626
+
606
627
static int hdmirx_get_detected_timings (struct rk_hdmirx_dev * hdmirx_dev ,
607
628
struct v4l2_dv_timings * timings , bool from_dma )
608
629
{
@@ -639,16 +660,14 @@ static int hdmirx_get_detected_timings(struct rk_hdmirx_dev *hdmirx_dev,
639
660
bt -> il_vsync = bt -> vsync + 1 ;
640
661
}
641
662
642
- v4l2_dbg (2 , debug , v4l2_dev , "tmds_clk:%lld \n" , tmds_clk );
663
+ v4l2_dbg (2 , debug , v4l2_dev , "tmds_clk:%llu \n" , tmds_clk );
643
664
v4l2_dbg (1 , debug , v4l2_dev , "interlace:%d, fmt:%d, vic:%d, color:%d, mode:%s\n" ,
644
665
bt -> interlaced , hdmirx_dev -> pix_fmt ,
645
666
hdmirx_dev -> cur_vic , hdmirx_dev -> color_depth ,
646
667
hdmirx_dev -> is_dvi_mode ? "dvi" : "hdmi" );
647
668
v4l2_dbg (2 , debug , v4l2_dev , "deframer_st:%#x\n" , deframer_st );
648
669
649
- if (bt -> hsync > 200 || bt -> vsync > 100 ||
650
- bt -> hbackporch > 1000 || bt -> vbackporch > 1000 ||
651
- bt -> width < 100 || bt -> height < 100 )
670
+ if (!hdmirx_check_timing_valid (bt ))
652
671
return - EINVAL ;
653
672
654
673
return 0 ;
0 commit comments