diff options
Diffstat (limited to 'drivers/gpu')
| -rw-r--r-- | drivers/gpu/drm/omapdrm/dss/dispc.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/drivers/gpu/drm/omapdrm/dss/dispc.c b/drivers/gpu/drm/omapdrm/dss/dispc.c index 5554b72cf56a..d956e6266368 100644 --- a/drivers/gpu/drm/omapdrm/dss/dispc.c +++ b/drivers/gpu/drm/omapdrm/dss/dispc.c | |||
| @@ -2506,6 +2506,25 @@ static int dispc_ovl_calc_scaling_44xx(unsigned long pclk, unsigned long lclk, | |||
| 2506 | return -EINVAL; | 2506 | return -EINVAL; |
| 2507 | } | 2507 | } |
| 2508 | 2508 | ||
| 2509 | if (*decim_x > 4 && color_mode != OMAP_DSS_COLOR_NV12) { | ||
| 2510 | /* | ||
| 2511 | * Let's disable all scaling that requires horizontal | ||
| 2512 | * decimation with higher factor than 4, until we have | ||
| 2513 | * better estimates of what we can and can not | ||
| 2514 | * do. However, NV12 color format appears to work Ok | ||
| 2515 | * with all decimation factors. | ||
| 2516 | * | ||
| 2517 | * When decimating horizontally by more that 4 the dss | ||
| 2518 | * is not able to fetch the data in burst mode. When | ||
| 2519 | * this happens it is hard to tell if there enough | ||
| 2520 | * bandwidth. Despite what theory says this appears to | ||
| 2521 | * be true also for 16-bit color formats. | ||
| 2522 | */ | ||
| 2523 | DSSERR("Not enough bandwidth, too much downscaling (x-decimation factor %d > 4)", *decim_x); | ||
| 2524 | |||
| 2525 | return -EINVAL; | ||
| 2526 | } | ||
| 2527 | |||
| 2509 | *core_clk = dispc.feat->calc_core_clk(pclk, in_width, in_height, | 2528 | *core_clk = dispc.feat->calc_core_clk(pclk, in_width, in_height, |
| 2510 | out_width, out_height, mem_to_mem); | 2529 | out_width, out_height, mem_to_mem); |
| 2511 | return 0; | 2530 | return 0; |
