drm/amd/display: Fix dc_create failure handling and 666 color depths
[Why] It is possible (but very unlikely) that constructing dc fails before current_state is created. We support 666 color depth in some scenarios, but this isn't handled in get_norm_pix_clk. It uses exactly the same pixel clock as the 888 case. [How] Check for non null current_state before destructing. Add case for 666 color depth to get_norm_pix_clk to avoid assertion. Signed-off-by: Julian Parkin <julian.parkin@amd.com> Reviewed-by: Charlene Liu <Charlene.Liu@amd.com> Acked-by: Leo Li <sunpeng.li@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
		
							parent
							
								
									6da16270ee
								
							
						
					
					
						commit
						8897810adf
					
				| @ -502,8 +502,10 @@ void dc_stream_set_static_screen_events(struct dc *dc, | ||||
| 
 | ||||
| static void destruct(struct dc *dc) | ||||
| { | ||||
| 	dc_release_state(dc->current_state); | ||||
| 	dc->current_state = NULL; | ||||
| 	if (dc->current_state) { | ||||
| 		dc_release_state(dc->current_state); | ||||
| 		dc->current_state = NULL; | ||||
| 	} | ||||
| 
 | ||||
| 	destroy_links(dc); | ||||
| 
 | ||||
|  | ||||
| @ -1855,6 +1855,7 @@ static int get_norm_pix_clk(const struct dc_crtc_timing *timing) | ||||
| 		pix_clk /= 2; | ||||
| 	if (timing->pixel_encoding != PIXEL_ENCODING_YCBCR422) { | ||||
| 		switch (timing->display_color_depth) { | ||||
| 		case COLOR_DEPTH_666: | ||||
| 		case COLOR_DEPTH_888: | ||||
| 			normalized_pix_clk = pix_clk; | ||||
| 			break; | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user