drm/vc4: hvs: Use switch statement to simplify vc4_hvs_get_fifo_from_output
Since we'll support BCM2712 soon, let's move the logic behind vc4_hvs_get_fifo_from_output() to a switch to extend it more easily. Signed-off-by: Maxime Ripard <mripard@kernel.org> Reviewed-by: Maxime Ripard <mripard@kernel.org> Link: https://patchwork.freedesktop.org/patch/msgid/20240621152055.4180873-23-dave.stevenson@raspberrypi.com Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
This commit is contained in:
committed by
Dave Stevenson
parent
dbe8ef676f
commit
c157ff40a4
@@ -296,53 +296,60 @@ int vc4_hvs_get_fifo_from_output(struct vc4_hvs *hvs, unsigned int output)
|
||||
u32 reg;
|
||||
int ret;
|
||||
|
||||
if (vc4->gen == VC4_GEN_4)
|
||||
switch (vc4->gen) {
|
||||
case VC4_GEN_4:
|
||||
return output;
|
||||
|
||||
/*
|
||||
* NOTE: We should probably use drm_dev_enter()/drm_dev_exit()
|
||||
* here, but this function is only used during the DRM device
|
||||
* initialization, so we should be fine.
|
||||
*/
|
||||
case VC4_GEN_5:
|
||||
/*
|
||||
* NOTE: We should probably use
|
||||
* drm_dev_enter()/drm_dev_exit() here, but this
|
||||
* function is only used during the DRM device
|
||||
* initialization, so we should be fine.
|
||||
*/
|
||||
|
||||
switch (output) {
|
||||
case 0:
|
||||
return 0;
|
||||
switch (output) {
|
||||
case 0:
|
||||
return 0;
|
||||
|
||||
case 1:
|
||||
return 1;
|
||||
case 1:
|
||||
return 1;
|
||||
|
||||
case 2:
|
||||
reg = HVS_READ(SCALER_DISPECTRL);
|
||||
ret = FIELD_GET(SCALER_DISPECTRL_DSP2_MUX_MASK, reg);
|
||||
if (ret == 0)
|
||||
return 2;
|
||||
case 2:
|
||||
reg = HVS_READ(SCALER_DISPECTRL);
|
||||
ret = FIELD_GET(SCALER_DISPECTRL_DSP2_MUX_MASK, reg);
|
||||
if (ret == 0)
|
||||
return 2;
|
||||
|
||||
return 0;
|
||||
return 0;
|
||||
|
||||
case 3:
|
||||
reg = HVS_READ(SCALER_DISPCTRL);
|
||||
ret = FIELD_GET(SCALER_DISPCTRL_DSP3_MUX_MASK, reg);
|
||||
if (ret == 3)
|
||||
case 3:
|
||||
reg = HVS_READ(SCALER_DISPCTRL);
|
||||
ret = FIELD_GET(SCALER_DISPCTRL_DSP3_MUX_MASK, reg);
|
||||
if (ret == 3)
|
||||
return -EPIPE;
|
||||
|
||||
return ret;
|
||||
|
||||
case 4:
|
||||
reg = HVS_READ(SCALER_DISPEOLN);
|
||||
ret = FIELD_GET(SCALER_DISPEOLN_DSP4_MUX_MASK, reg);
|
||||
if (ret == 3)
|
||||
return -EPIPE;
|
||||
|
||||
return ret;
|
||||
|
||||
case 5:
|
||||
reg = HVS_READ(SCALER_DISPDITHER);
|
||||
ret = FIELD_GET(SCALER_DISPDITHER_DSP5_MUX_MASK, reg);
|
||||
if (ret == 3)
|
||||
return -EPIPE;
|
||||
|
||||
return ret;
|
||||
|
||||
default:
|
||||
return -EPIPE;
|
||||
|
||||
return ret;
|
||||
|
||||
case 4:
|
||||
reg = HVS_READ(SCALER_DISPEOLN);
|
||||
ret = FIELD_GET(SCALER_DISPEOLN_DSP4_MUX_MASK, reg);
|
||||
if (ret == 3)
|
||||
return -EPIPE;
|
||||
|
||||
return ret;
|
||||
|
||||
case 5:
|
||||
reg = HVS_READ(SCALER_DISPDITHER);
|
||||
ret = FIELD_GET(SCALER_DISPDITHER_DSP5_MUX_MASK, reg);
|
||||
if (ret == 3)
|
||||
return -EPIPE;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
default:
|
||||
return -EPIPE;
|
||||
|
||||
Reference in New Issue
Block a user