forked from mirrors/linux
		
	[media] v4l2-dv-timings: fix rounding in hblank and hsync calculation
Changed the rounding calculation for hblank and hsync to match it to equations in cvt and gtf standards. In cvt calculation, hsync needs to be rounded down. In gtf calculations, hblank needs to be rounded to nearest multiple of twice the cell granularity and hsync needs to be rounded to the nearest multiple of cell granularity. Cc: Martin Bugge <marbugge@cisco.com> Signed-off-by: Prashant Laddha <prladdha@cisco.com> Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
This commit is contained in:
		
							parent
							
								
									f67476589a
								
							
						
					
					
						commit
						d7ed5a3dda
					
				
					 1 changed files with 5 additions and 4 deletions
				
			
		| 
						 | 
				
			
			@ -436,8 +436,8 @@ bool v4l2_detect_cvt(unsigned frame_height, unsigned hfreq, unsigned vsync,
 | 
			
		|||
		h_bp = h_blank / 2;
 | 
			
		||||
		frame_width = image_width + h_blank;
 | 
			
		||||
 | 
			
		||||
		hsync = (frame_width * 8 + 50) / 100;
 | 
			
		||||
		hsync = hsync - hsync % CVT_CELL_GRAN;
 | 
			
		||||
		hsync = frame_width * 8 / 100;
 | 
			
		||||
		hsync = (hsync / CVT_CELL_GRAN) * CVT_CELL_GRAN;
 | 
			
		||||
		h_fp = h_blank - hsync - h_bp;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -552,14 +552,15 @@ bool v4l2_detect_gtf(unsigned frame_height,
 | 
			
		|||
			(hfreq * (100 - GTF_S_C_PRIME) + GTF_S_M_PRIME * 1000) / 2) /
 | 
			
		||||
			(hfreq * (100 - GTF_S_C_PRIME) + GTF_S_M_PRIME * 1000);
 | 
			
		||||
 | 
			
		||||
	h_blank = h_blank - h_blank % (2 * GTF_CELL_GRAN);
 | 
			
		||||
	h_blank = ((h_blank + GTF_CELL_GRAN) / (2 * GTF_CELL_GRAN)) *
 | 
			
		||||
		  (2 * GTF_CELL_GRAN);
 | 
			
		||||
	frame_width = image_width + h_blank;
 | 
			
		||||
 | 
			
		||||
	pix_clk = (image_width + h_blank) * hfreq;
 | 
			
		||||
	pix_clk = pix_clk / GTF_PXL_CLK_GRAN * GTF_PXL_CLK_GRAN;
 | 
			
		||||
 | 
			
		||||
	hsync = (frame_width * 8 + 50) / 100;
 | 
			
		||||
	hsync = hsync - hsync % GTF_CELL_GRAN;
 | 
			
		||||
	hsync = ((hsync + GTF_CELL_GRAN / 2) / GTF_CELL_GRAN) * GTF_CELL_GRAN;
 | 
			
		||||
 | 
			
		||||
	h_fp = h_blank / 2 - hsync;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue