mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 17:47:41 +02:00
drm/i915/casf: Handle CASF in skl_scaler_get_filter_select()
Nuke the duplicate CASF_SCALER_FILTER_SELECT and just have skl_scaler_get_filter_select() return the proper value for sharpness filter use. It is the same "use programmable coefficients" value we already use for the nearest neighbor filtering. Reviewed-by: Michał Grzelak <michal.grzelak@intel.com> Reviewed-by: Nemesa Garg <nemesa.garg@intel.com> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Link: https://patch.msgid.link/20260407175244.19654-6-ville.syrjala@linux.intel.com
This commit is contained in:
parent
17d70a0760
commit
7583232af1
|
|
@ -730,9 +730,9 @@ static void glk_program_nearest_filter_coefs(struct intel_display *display,
|
|||
GLK_PS_COEF_INDEX_SET(pipe, id, set), 0);
|
||||
}
|
||||
|
||||
static u32 skl_scaler_get_filter_select(enum drm_scaling_filter filter)
|
||||
static u32 skl_scaler_get_filter_select(enum drm_scaling_filter filter, bool casf)
|
||||
{
|
||||
if (filter == DRM_SCALING_FILTER_NEAREST_NEIGHBOR)
|
||||
if (filter == DRM_SCALING_FILTER_NEAREST_NEIGHBOR || casf)
|
||||
return (PS_FILTER_PROGRAMMED |
|
||||
PS_Y_VERT_FILTER_SELECT(0) |
|
||||
PS_Y_HORZ_FILTER_SELECT(0) |
|
||||
|
|
@ -757,13 +757,6 @@ static void skl_scaler_setup_filter(struct intel_display *display,
|
|||
}
|
||||
}
|
||||
|
||||
#define CASF_SCALER_FILTER_SELECT \
|
||||
(PS_FILTER_PROGRAMMED | \
|
||||
PS_Y_VERT_FILTER_SELECT(0) | \
|
||||
PS_Y_HORZ_FILTER_SELECT(0) | \
|
||||
PS_UV_VERT_FILTER_SELECT(0) | \
|
||||
PS_UV_HORZ_FILTER_SELECT(0))
|
||||
|
||||
void skl_scaler_setup_casf(struct intel_crtc_state *crtc_state)
|
||||
{
|
||||
struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
|
||||
|
|
@ -794,7 +787,7 @@ void skl_scaler_setup_casf(struct intel_crtc_state *crtc_state)
|
|||
trace_intel_pipe_scaler_update_arm(crtc, id, x, y, width, height);
|
||||
|
||||
ps_ctrl = PS_SCALER_EN | PS_BINDING_PIPE | scaler_state->scalers[id].mode |
|
||||
CASF_SCALER_FILTER_SELECT;
|
||||
skl_scaler_get_filter_select(crtc_state->hw.scaling_filter, true);
|
||||
|
||||
intel_de_write_fw(display, SKL_PS_CTRL(pipe, id), ps_ctrl);
|
||||
intel_de_write_fw(display, SKL_PS_WIN_POS(pipe, id),
|
||||
|
|
@ -844,7 +837,7 @@ void skl_pfit_enable(const struct intel_crtc_state *crtc_state)
|
|||
id = scaler_state->scaler_id;
|
||||
|
||||
ps_ctrl = PS_SCALER_EN | PS_BINDING_PIPE | scaler_state->scalers[id].mode |
|
||||
skl_scaler_get_filter_select(crtc_state->hw.scaling_filter);
|
||||
skl_scaler_get_filter_select(crtc_state->hw.scaling_filter, false);
|
||||
|
||||
trace_intel_pipe_scaler_update_arm(crtc, id, x, y, width, height);
|
||||
|
||||
|
|
@ -910,7 +903,7 @@ skl_program_plane_scaler(struct intel_dsb *dsb,
|
|||
}
|
||||
|
||||
ps_ctrl = PS_SCALER_EN | PS_BINDING_PLANE(plane->id) | scaler->mode |
|
||||
skl_scaler_get_filter_select(plane_state->hw.scaling_filter);
|
||||
skl_scaler_get_filter_select(plane_state->hw.scaling_filter, false);
|
||||
|
||||
trace_intel_plane_scaler_update_arm(plane, scaler_id,
|
||||
crtc_x, crtc_y, crtc_w, crtc_h);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user