mirror of https://github.com/armbian/build.git
118 lines
4.7 KiB
Diff
118 lines
4.7 KiB
Diff
|
|
From a756d6b4ac645ac3c18d5758faec068b3c8819a6 Mon Sep 17 00:00:00 2001
|
||
|
|
From: Jernej Skrabec <jernej.skrabec@gmail.com>
|
||
|
|
Date: Sun, 29 Sep 2024 22:04:49 +1300
|
||
|
|
Subject: drm: sun4i: de2/de3: use generic register reference function for
|
||
|
|
layer configuration
|
||
|
|
|
||
|
|
Use the new blender register lookup function where required in the layer
|
||
|
|
commit and update code.
|
||
|
|
|
||
|
|
Signed-off-by: Jernej Skrabec <jernej.skrabec@gmail.com>
|
||
|
|
Signed-off-by: Ryan Walklin <ryan@testtoast.com>
|
||
|
|
---
|
||
|
|
drivers/gpu/drm/sun4i/sun8i_mixer.c | 5 +++--
|
||
|
|
drivers/gpu/drm/sun4i/sun8i_ui_layer.c | 7 +++++--
|
||
|
|
drivers/gpu/drm/sun4i/sun8i_vi_layer.c | 6 ++++--
|
||
|
|
3 files changed, 12 insertions(+), 6 deletions(-)
|
||
|
|
|
||
|
|
diff --git a/drivers/gpu/drm/sun4i/sun8i_mixer.c b/drivers/gpu/drm/sun4i/sun8i_mixer.c
|
||
|
|
index 18745af08954..600084286b39 100644
|
||
|
|
--- a/drivers/gpu/drm/sun4i/sun8i_mixer.c
|
||
|
|
+++ b/drivers/gpu/drm/sun4i/sun8i_mixer.c
|
||
|
|
@@ -277,6 +277,7 @@ static void sun8i_mixer_commit(struct sunxi_engine *engine,
|
||
|
|
{
|
||
|
|
struct sun8i_mixer *mixer = engine_to_sun8i_mixer(engine);
|
||
|
|
u32 bld_base = sun8i_blender_base(mixer);
|
||
|
|
+ struct regmap *bld_regs = sun8i_blender_regmap(mixer);
|
||
|
|
struct drm_plane_state *plane_state;
|
||
|
|
struct drm_plane *plane;
|
||
|
|
u32 route = 0, pipe_en = 0;
|
||
|
|
@@ -316,8 +317,8 @@ static void sun8i_mixer_commit(struct sunxi_engine *engine,
|
||
|
|
pipe_en |= SUN8I_MIXER_BLEND_PIPE_CTL_EN(zpos);
|
||
|
|
}
|
||
|
|
|
||
|
|
- regmap_write(mixer->engine.regs, SUN8I_MIXER_BLEND_ROUTE(bld_base), route);
|
||
|
|
- regmap_write(mixer->engine.regs, SUN8I_MIXER_BLEND_PIPE_CTL(bld_base),
|
||
|
|
+ regmap_write(bld_regs, SUN8I_MIXER_BLEND_ROUTE(bld_base), route);
|
||
|
|
+ regmap_write(bld_regs, SUN8I_MIXER_BLEND_PIPE_CTL(bld_base),
|
||
|
|
pipe_en | SUN8I_MIXER_BLEND_PIPE_CTL_FC_EN(0));
|
||
|
|
|
||
|
|
regmap_write(engine->regs, SUN8I_MIXER_GLOBAL_DBUFF,
|
||
|
|
diff --git a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c b/drivers/gpu/drm/sun4i/sun8i_ui_layer.c
|
||
|
|
index cb9b694fef10..7f1231cf0f01 100644
|
||
|
|
--- a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c
|
||
|
|
+++ b/drivers/gpu/drm/sun4i/sun8i_ui_layer.c
|
||
|
|
@@ -24,6 +24,7 @@
|
||
|
|
#include "sun8i_mixer.h"
|
||
|
|
#include "sun8i_ui_layer.h"
|
||
|
|
#include "sun8i_ui_scaler.h"
|
||
|
|
+#include "sun8i_vi_scaler.h"
|
||
|
|
|
||
|
|
static void sun8i_ui_layer_update_alpha(struct sun8i_mixer *mixer, int channel,
|
||
|
|
int overlay, struct drm_plane *plane)
|
||
|
|
@@ -52,6 +53,7 @@ static int sun8i_ui_layer_update_coord(struct sun8i_mixer *mixer, int channel,
|
||
|
|
{
|
||
|
|
struct drm_plane_state *state = plane->state;
|
||
|
|
u32 src_w, src_h, dst_w, dst_h;
|
||
|
|
+ struct regmap *bld_regs;
|
||
|
|
u32 bld_base, ch_base;
|
||
|
|
u32 outsize, insize;
|
||
|
|
u32 hphase, vphase;
|
||
|
|
@@ -60,6 +62,7 @@ static int sun8i_ui_layer_update_coord(struct sun8i_mixer *mixer, int channel,
|
||
|
|
channel, overlay);
|
||
|
|
|
||
|
|
bld_base = sun8i_blender_base(mixer);
|
||
|
|
+ bld_regs = sun8i_blender_regmap(mixer);
|
||
|
|
ch_base = sun8i_channel_base(mixer, channel);
|
||
|
|
|
||
|
|
src_w = drm_rect_width(&state->src) >> 16;
|
||
|
|
@@ -104,10 +107,10 @@ static int sun8i_ui_layer_update_coord(struct sun8i_mixer *mixer, int channel,
|
||
|
|
DRM_DEBUG_DRIVER("Layer destination coordinates X: %d Y: %d\n",
|
||
|
|
state->dst.x1, state->dst.y1);
|
||
|
|
DRM_DEBUG_DRIVER("Layer destination size W: %d H: %d\n", dst_w, dst_h);
|
||
|
|
- regmap_write(mixer->engine.regs,
|
||
|
|
+ regmap_write(bld_regs,
|
||
|
|
SUN8I_MIXER_BLEND_ATTR_COORD(bld_base, zpos),
|
||
|
|
SUN8I_MIXER_COORD(state->dst.x1, state->dst.y1));
|
||
|
|
- regmap_write(mixer->engine.regs,
|
||
|
|
+ regmap_write(bld_regs,
|
||
|
|
SUN8I_MIXER_BLEND_ATTR_INSIZE(bld_base, zpos),
|
||
|
|
outsize);
|
||
|
|
|
||
|
|
diff --git a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c
|
||
|
|
index e348fd0a3d81..d19349eecc9d 100644
|
||
|
|
--- a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c
|
||
|
|
+++ b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c
|
||
|
|
@@ -55,6 +55,7 @@ static int sun8i_vi_layer_update_coord(struct sun8i_mixer *mixer, int channel,
|
||
|
|
struct drm_plane_state *state = plane->state;
|
||
|
|
const struct drm_format_info *format = state->fb->format;
|
||
|
|
u32 src_w, src_h, dst_w, dst_h;
|
||
|
|
+ struct regmap *bld_regs;
|
||
|
|
u32 bld_base, ch_base;
|
||
|
|
u32 outsize, insize;
|
||
|
|
u32 hphase, vphase;
|
||
|
|
@@ -66,6 +67,7 @@ static int sun8i_vi_layer_update_coord(struct sun8i_mixer *mixer, int channel,
|
||
|
|
channel, overlay);
|
||
|
|
|
||
|
|
bld_base = sun8i_blender_base(mixer);
|
||
|
|
+ bld_regs = sun8i_blender_regmap(mixer);
|
||
|
|
ch_base = sun8i_channel_base(mixer, channel);
|
||
|
|
|
||
|
|
src_w = drm_rect_width(&state->src) >> 16;
|
||
|
|
@@ -182,10 +184,10 @@ static int sun8i_vi_layer_update_coord(struct sun8i_mixer *mixer, int channel,
|
||
|
|
DRM_DEBUG_DRIVER("Layer destination coordinates X: %d Y: %d\n",
|
||
|
|
state->dst.x1, state->dst.y1);
|
||
|
|
DRM_DEBUG_DRIVER("Layer destination size W: %d H: %d\n", dst_w, dst_h);
|
||
|
|
- regmap_write(mixer->engine.regs,
|
||
|
|
+ regmap_write(bld_regs,
|
||
|
|
SUN8I_MIXER_BLEND_ATTR_COORD(bld_base, zpos),
|
||
|
|
SUN8I_MIXER_COORD(state->dst.x1, state->dst.y1));
|
||
|
|
- regmap_write(mixer->engine.regs,
|
||
|
|
+ regmap_write(bld_regs,
|
||
|
|
SUN8I_MIXER_BLEND_ATTR_INSIZE(bld_base, zpos),
|
||
|
|
outsize);
|
||
|
|
|
||
|
|
--
|
||
|
|
2.35.3
|
||
|
|
|