drm/vc4: crtc: Add function to compute FIFO level bits
The longer FIFOs in vc5 pixelvalves means that the FIFO full level doesn't fit in the original register field and that we also have a secondary field. In order to prepare for this, let's move the registers fill part to a helper function. Signed-off-by: Maxime Ripard <maxime@cerno.tech> Tested-by: Chanwoo Choi <cw00.choi@samsung.com> Tested-by: Hoegeun Kwon <hoegeun.kwon@samsung.com> Tested-by: Stefan Wahren <stefan.wahren@i2se.com> Reviewed-by: Eric Anholt <eric@anholt.net> Link: https://patchwork.freedesktop.org/patch/msgid/e46a3823128af50c1c833de8fa9b95e9b86c2f66.1599120059.git-series.maxime@cerno.tech
This commit is contained in:
parent
649abf2f5d
commit
62c5d55e25
|
@ -234,6 +234,15 @@ static u32 vc4_get_fifo_full_level(struct vc4_crtc *vc4_crtc, u32 format)
|
|||
}
|
||||
}
|
||||
|
||||
static u32 vc4_crtc_get_fifo_full_level_bits(struct vc4_crtc *vc4_crtc,
|
||||
u32 format)
|
||||
{
|
||||
u32 level = vc4_get_fifo_full_level(vc4_crtc, format);
|
||||
|
||||
return VC4_SET_FIELD(level & 0x3f,
|
||||
PV_CONTROL_FIFO_LEVEL);
|
||||
}
|
||||
|
||||
/*
|
||||
* Returns the encoder attached to the CRTC.
|
||||
*
|
||||
|
@ -336,9 +345,8 @@ static void vc4_crtc_config_pv(struct drm_crtc *crtc)
|
|||
CRTC_WRITE(PV_HACT_ACT, mode->hdisplay * pixel_rep);
|
||||
|
||||
CRTC_WRITE(PV_CONTROL,
|
||||
vc4_crtc_get_fifo_full_level_bits(vc4_crtc, format) |
|
||||
VC4_SET_FIELD(format, PV_CONTROL_FORMAT) |
|
||||
VC4_SET_FIELD(vc4_get_fifo_full_level(vc4_crtc, format),
|
||||
PV_CONTROL_FIFO_LEVEL) |
|
||||
VC4_SET_FIELD(pixel_rep - 1, PV_CONTROL_PIXEL_REP) |
|
||||
PV_CONTROL_CLR_AT_START |
|
||||
PV_CONTROL_TRIGGER_UNDERFLOW |
|
||||
|
|
Loading…
Reference in New Issue