Skip to content

Commit

Permalink
gpu: ipu-v3: prg: add modifier support
Browse files Browse the repository at this point in the history
Allow to pass through the modifier to the PRE unit and extend the
format check with the supported modifiers.

Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
  • Loading branch information
lynxeye-dev authored and pH5 committed Dec 19, 2017
1 parent 2f64a55 commit a2ceec5
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 6 deletions.
4 changes: 2 additions & 2 deletions drivers/gpu/drm/imx/ipuv3-plane.c
Original file line number Diff line number Diff line change
Expand Up @@ -550,8 +550,8 @@ static void ipu_plane_atomic_update(struct drm_plane *plane,
ipu_prg_channel_configure(ipu_plane->ipu_ch, axi_id,
drm_rect_width(&state->src) >> 16,
drm_rect_height(&state->src) >> 16,
fb->pitches[0],
fb->format->format, &eba);
fb->pitches[0], fb->format->format,
0, &eba);
}

if (old_state->fb && !drm_atomic_crtc_needs_modeset(crtc_state)) {
Expand Down
13 changes: 10 additions & 3 deletions drivers/gpu/ipu-v3/ipu-prg.c
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,14 @@ bool ipu_prg_format_supported(struct ipu_soc *ipu, uint32_t format,
if (info->num_planes != 1)
return false;

return true;
switch (modifier) {
case DRM_FORMAT_MOD_LINEAR:
case DRM_FORMAT_MOD_VIVANTE_TILED:
case DRM_FORMAT_MOD_VIVANTE_SUPER_TILED:
return true;
default:
return false;
}
}
EXPORT_SYMBOL_GPL(ipu_prg_format_supported);

Expand Down Expand Up @@ -266,7 +273,7 @@ EXPORT_SYMBOL_GPL(ipu_prg_channel_disable);
int ipu_prg_channel_configure(struct ipuv3_channel *ipu_chan,
unsigned int axi_id, unsigned int width,
unsigned int height, unsigned int stride,
u32 format, unsigned long *eba)
u32 format, uint64_t modifier, unsigned long *eba)
{
int prg_chan = ipu_prg_ipu_to_prg_chan(ipu_chan->num);
struct ipu_prg *prg = ipu_chan->ipu->prg_priv;
Expand All @@ -287,7 +294,7 @@ int ipu_prg_channel_configure(struct ipuv3_channel *ipu_chan,
return ret;

ipu_pre_configure(prg->pres[chan->used_pre],
width, height, stride, format, 0, *eba);
width, height, stride, format, modifier, *eba);


pm_runtime_get_sync(prg->dev);
Expand Down
2 changes: 1 addition & 1 deletion include/video/imx-ipu-v3.h
Original file line number Diff line number Diff line change
Expand Up @@ -344,7 +344,7 @@ void ipu_prg_channel_disable(struct ipuv3_channel *ipu_chan);
int ipu_prg_channel_configure(struct ipuv3_channel *ipu_chan,
unsigned int axi_id, unsigned int width,
unsigned int height, unsigned int stride,
u32 format, unsigned long *eba);
u32 format, uint64_t modifier, unsigned long *eba);

/*
* IPU CMOS Sensor Interface (csi) functions
Expand Down

0 comments on commit a2ceec5

Please sign in to comment.