Skip to content

Commit 0f9ff36

Browse files
committed
drm/mgag200: vga-bmc: Control BMC scanout from encoder
Move calls to stop and start BMC scanout from CRTC helpers to the VGA-BMC encoder's atomic_disable and atomic_enable. Makes the BMC scanout transparent to the CRTC. DRM's atomic helpers call an encoder's atomic_disable and atomic_enable helpers for all enabled encoders. The BMC stops scanning out the VGA signal if modeset disables the VGA encoder, and starts scanning out if the modeset enables the VGA encoder. Signed-off-by: Thomas Zimmermann <[email protected]> Reviewed-by: Jocelyn Falempe <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
1 parent 9d09cac commit 0f9ff36

File tree

5 files changed

+20
-15
lines changed

5 files changed

+20
-15
lines changed

drivers/gpu/drm/mgag200/mgag200_g200er.c

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -207,9 +207,6 @@ static void mgag200_g200er_crtc_helper_atomic_enable(struct drm_crtc *crtc,
207207

208208
mgag200_enable_display(mdev);
209209

210-
if (mdev->info->sync_bmc)
211-
mgag200_bmc_start_scanout(mdev);
212-
213210
drm_crtc_vblank_on(crtc);
214211
}
215212

drivers/gpu/drm/mgag200/mgag200_g200ev.c

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -208,9 +208,6 @@ static void mgag200_g200ev_crtc_helper_atomic_enable(struct drm_crtc *crtc,
208208

209209
mgag200_enable_display(mdev);
210210

211-
if (mdev->info->sync_bmc)
212-
mgag200_bmc_start_scanout(mdev);
213-
214211
drm_crtc_vblank_on(crtc);
215212
}
216213

drivers/gpu/drm/mgag200/mgag200_g200se.c

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -339,9 +339,6 @@ static void mgag200_g200se_crtc_helper_atomic_enable(struct drm_crtc *crtc,
339339

340340
mgag200_enable_display(mdev);
341341

342-
if (mdev->info->sync_bmc)
343-
mgag200_bmc_start_scanout(mdev);
344-
345342
drm_crtc_vblank_on(crtc);
346343
}
347344

drivers/gpu/drm/mgag200/mgag200_mode.c

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -693,9 +693,6 @@ void mgag200_crtc_helper_atomic_enable(struct drm_crtc *crtc, struct drm_atomic_
693693

694694
mgag200_enable_display(mdev);
695695

696-
if (mdev->info->sync_bmc)
697-
mgag200_bmc_start_scanout(mdev);
698-
699696
drm_crtc_vblank_on(crtc);
700697
}
701698

@@ -705,9 +702,6 @@ void mgag200_crtc_helper_atomic_disable(struct drm_crtc *crtc, struct drm_atomic
705702

706703
drm_crtc_vblank_off(crtc);
707704

708-
if (mdev->info->sync_bmc)
709-
mgag200_bmc_stop_scanout(mdev);
710-
711705
mgag200_disable_display(mdev);
712706
}
713707

drivers/gpu/drm/mgag200/mgag200_vga_bmc.c

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,24 @@
88
#include "mgag200_ddc.h"
99
#include "mgag200_drv.h"
1010

11+
static void mgag200_vga_bmc_encoder_atomic_disable(struct drm_encoder *encoder,
12+
struct drm_atomic_state *state)
13+
{
14+
struct mga_device *mdev = to_mga_device(encoder->dev);
15+
16+
if (mdev->info->sync_bmc)
17+
mgag200_bmc_stop_scanout(mdev);
18+
}
19+
20+
static void mgag200_vga_bmc_encoder_atomic_enable(struct drm_encoder *encoder,
21+
struct drm_atomic_state *state)
22+
{
23+
struct mga_device *mdev = to_mga_device(encoder->dev);
24+
25+
if (mdev->info->sync_bmc)
26+
mgag200_bmc_start_scanout(mdev);
27+
}
28+
1129
static int mgag200_vga_bmc_encoder_atomic_check(struct drm_encoder *encoder,
1230
struct drm_crtc_state *new_crtc_state,
1331
struct drm_connector_state *new_connector_state)
@@ -21,6 +39,8 @@ static int mgag200_vga_bmc_encoder_atomic_check(struct drm_encoder *encoder,
2139
}
2240

2341
static const struct drm_encoder_helper_funcs mgag200_dac_encoder_helper_funcs = {
42+
.atomic_disable = mgag200_vga_bmc_encoder_atomic_disable,
43+
.atomic_enable = mgag200_vga_bmc_encoder_atomic_enable,
2444
.atomic_check = mgag200_vga_bmc_encoder_atomic_check,
2545
};
2646

0 commit comments

Comments
 (0)