Skip to content

Commit f54c353

Browse files
jernejskwens
authored andcommitted
drm/sun4i: vi_scaler: use layer instead of mixer for args
Layer related peripherals should take layer struct as a input. This looks cleaner and also necessary for proper DE33 support later. Reviewed-by: Chen-Yu Tsai <wens@kernel.org> Tested-by: Ryan Walklin <ryan@testtoast.com> Signed-off-by: Jernej Skrabec <jernej.skrabec@gmail.com> Link: https://patch.msgid.link/20251104180942.61538-20-jernej.skrabec@gmail.com Signed-off-by: Chen-Yu Tsai <wens@kernel.org>
1 parent 1ebec02 commit f54c353

4 files changed

Lines changed: 16 additions & 16 deletions

File tree

drivers/gpu/drm/sun4i/sun8i_ui_layer.c

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -104,11 +104,10 @@ static void sun8i_ui_layer_update_coord(struct sun8i_layer *layer,
104104
vscale = state->src_h / state->crtc_h;
105105

106106
if (mixer->cfg->de_type == SUN8I_MIXER_DE33) {
107-
sun8i_vi_scaler_setup(mixer, layer->channel, src_w, src_h,
108-
dst_w, dst_h, hscale, vscale,
109-
hphase, vphase,
107+
sun8i_vi_scaler_setup(layer, src_w, src_h, dst_w, dst_h,
108+
hscale, vscale, hphase, vphase,
110109
state->fb->format);
111-
sun8i_vi_scaler_enable(mixer, layer->channel, true);
110+
sun8i_vi_scaler_enable(layer, true);
112111
} else {
113112
sun8i_ui_scaler_setup(layer, src_w, src_h, dst_w, dst_h,
114113
hscale, vscale, hphase, vphase);
@@ -117,7 +116,7 @@ static void sun8i_ui_layer_update_coord(struct sun8i_layer *layer,
117116
} else {
118117
DRM_DEBUG_DRIVER("HW scaling is not needed\n");
119118
if (mixer->cfg->de_type == SUN8I_MIXER_DE33)
120-
sun8i_vi_scaler_enable(mixer, layer->channel, false);
119+
sun8i_vi_scaler_enable(layer, false);
121120
else
122121
sun8i_ui_scaler_enable(layer, false);
123122
}

drivers/gpu/drm/sun4i/sun8i_vi_layer.c

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -163,13 +163,12 @@ static void sun8i_vi_layer_update_coord(struct sun8i_layer *layer,
163163
hscale = (src_w << 16) / dst_w;
164164
vscale = (src_h << 16) / dst_h;
165165

166-
sun8i_vi_scaler_setup(mixer, layer->channel, src_w, src_h, dst_w,
167-
dst_h, hscale, vscale, hphase, vphase,
168-
format);
169-
sun8i_vi_scaler_enable(mixer, layer->channel, true);
166+
sun8i_vi_scaler_setup(layer, src_w, src_h, dst_w, dst_h,
167+
hscale, vscale, hphase, vphase, format);
168+
sun8i_vi_scaler_enable(layer, true);
170169
} else {
171170
DRM_DEBUG_DRIVER("HW scaling is not needed\n");
172-
sun8i_vi_scaler_enable(mixer, layer->channel, false);
171+
sun8i_vi_scaler_enable(layer, false);
173172
}
174173

175174
regmap_write(mixer->engine.regs,

drivers/gpu/drm/sun4i/sun8i_vi_scaler.c

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -909,11 +909,12 @@ static void sun8i_vi_scaler_set_coeff(struct regmap *map, u32 base,
909909
}
910910
}
911911

912-
void sun8i_vi_scaler_enable(struct sun8i_mixer *mixer, int layer, bool enable)
912+
void sun8i_vi_scaler_enable(struct sun8i_layer *layer, bool enable)
913913
{
914+
struct sun8i_mixer *mixer = layer->mixer;
914915
u32 val, base;
915916

916-
base = sun8i_vi_scaler_base(mixer, layer);
917+
base = sun8i_vi_scaler_base(mixer, layer->channel);
917918

918919
if (enable)
919920
val = SUN8I_SCALER_VSU_CTRL_EN |
@@ -925,16 +926,17 @@ void sun8i_vi_scaler_enable(struct sun8i_mixer *mixer, int layer, bool enable)
925926
SUN8I_SCALER_VSU_CTRL(base), val);
926927
}
927928

928-
void sun8i_vi_scaler_setup(struct sun8i_mixer *mixer, int layer,
929+
void sun8i_vi_scaler_setup(struct sun8i_layer *layer,
929930
u32 src_w, u32 src_h, u32 dst_w, u32 dst_h,
930931
u32 hscale, u32 vscale, u32 hphase, u32 vphase,
931932
const struct drm_format_info *format)
932933
{
934+
struct sun8i_mixer *mixer = layer->mixer;
933935
u32 chphase, cvphase;
934936
u32 insize, outsize;
935937
u32 base;
936938

937-
base = sun8i_vi_scaler_base(mixer, layer);
939+
base = sun8i_vi_scaler_base(mixer, layer->channel);
938940

939941
hphase <<= SUN8I_VI_SCALER_PHASE_FRAC - 16;
940942
vphase <<= SUN8I_VI_SCALER_PHASE_FRAC - 16;

drivers/gpu/drm/sun4i/sun8i_vi_scaler.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,8 @@
6969
#define SUN50I_SCALER_VSU_ANGLE_SHIFT(x) (((x) << 16) & 0xF)
7070
#define SUN50I_SCALER_VSU_ANGLE_OFFSET(x) ((x) & 0xFF)
7171

72-
void sun8i_vi_scaler_enable(struct sun8i_mixer *mixer, int layer, bool enable);
73-
void sun8i_vi_scaler_setup(struct sun8i_mixer *mixer, int layer,
72+
void sun8i_vi_scaler_enable(struct sun8i_layer *layer, bool enable);
73+
void sun8i_vi_scaler_setup(struct sun8i_layer *layer,
7474
u32 src_w, u32 src_h, u32 dst_w, u32 dst_h,
7575
u32 hscale, u32 vscale, u32 hphase, u32 vphase,
7676
const struct drm_format_info *format);

0 commit comments

Comments
 (0)