Skip to content

Commit

Permalink
drm/tegra: fb: Force alpha formats
Browse files Browse the repository at this point in the history
Tegra20 and Tegra30 don't actually support the 24-bit RGB formats that
don't have an alpha component. In order to allow the fbdev emulation to
run on those chips, force the 32-bit RGBA formats.

Signed-off-by: Thierry Reding <treding@nvidia.com>
  • Loading branch information
Thierry Reding committed Dec 13, 2017
1 parent 7b2c284 commit 71835ca
Showing 1 changed file with 13 additions and 0 deletions.
13 changes: 13 additions & 0 deletions drivers/gpu/drm/tegra/fb.c
Original file line number Diff line number Diff line change
Expand Up @@ -253,6 +253,19 @@ static int tegra_fbdev_probe(struct drm_fb_helper *helper,
cmd.height = sizes->surface_height;
cmd.pitches[0] = round_up(sizes->surface_width * bytes_per_pixel,
tegra->pitch_align);

/*
* Early generations of Tegra (Tegra20 and Tegra30) do not support any
* of the X* or *X formats, only their A* or *A equivalents. Force the
* legacy framebuffer format to include an alpha component so that the
* framebuffer emulation can be supported on all generations.
*/
if (sizes->surface_bpp == 32 && sizes->surface_depth == 24)
sizes->surface_depth = 32;

if (sizes->surface_bpp == 16 && sizes->surface_depth == 15)
sizes->surface_depth = 16;

cmd.pixel_format = drm_mode_legacy_fb_format(sizes->surface_bpp,
sizes->surface_depth);

Expand Down

0 comments on commit 71835ca

Please sign in to comment.