]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/mgag200: Remove vidrst callbacks from struct mgag200_device_funcs
authorThomas Zimmermann <tzimmermann@suse.de>
Thu, 11 Jul 2024 07:23:05 +0000 (09:23 +0200)
committerThomas Zimmermann <tzimmermann@suse.de>
Mon, 15 Jul 2024 06:17:17 +0000 (08:17 +0200)
The callbacks disable_vidrst and enable_vidrst are obsolete. Remove
the fields from struct mgag200_device_funcs. Instead call their
implementations directly of the field 'has_vidrst' has been set in
struct mgag200_device_info.

Also change the logic slightly. The BMC used to start and stop scanout
during the CRTC's atomic_enable and atomic_disable. Plane updates were
done while the BMC scanned out the display. Now only stop once in
atomic_disable at the beginning of a modeset and then restart the
scanout at the end of a modeset in atomic_enable. While the modeset
takes place, the BMC does not scanout at all.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Jocelyn Falempe <jfalempe@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240711072415.11831-3-tzimmermann@suse.de
drivers/gpu/drm/mgag200/mgag200_drv.h
drivers/gpu/drm/mgag200/mgag200_g200er.c
drivers/gpu/drm/mgag200/mgag200_g200ev.c
drivers/gpu/drm/mgag200/mgag200_g200ew3.c
drivers/gpu/drm/mgag200/mgag200_g200se.c
drivers/gpu/drm/mgag200/mgag200_g200wb.c
drivers/gpu/drm/mgag200/mgag200_mode.c

index 4b75613de882dea0fb6167b186d51e41130466a8..4a46c8c006c84a500b082098d0cd25eb5103c922 100644 (file)
@@ -247,18 +247,6 @@ struct mgag200_device_info {
        }
 
 struct mgag200_device_funcs {
-       /*
-        * Disables an external reset source (i.e., BMC) before programming
-        * a new display mode.
-        */
-       void (*disable_vidrst)(struct mga_device *mdev);
-
-       /*
-        * Enables an external reset source (i.e., BMC) after programming
-        * a new display mode.
-        */
-       void (*enable_vidrst)(struct mga_device *mdev);
-
        /*
         * Validate that the given state can be programmed into PIXPLLC. On
         * success, the calculated parameters should be stored in the CRTC's
index abfbed6ec3907116850bb5e331f0bdf3831e2764..b3bb3e9fb0d1d55e9cb7f47a5c40a64ec69ac186 100644 (file)
@@ -191,9 +191,6 @@ static void mgag200_g200er_crtc_helper_atomic_enable(struct drm_crtc *crtc,
        struct mgag200_crtc_state *mgag200_crtc_state = to_mgag200_crtc_state(crtc_state);
        const struct drm_format_info *format = mgag200_crtc_state->format;
 
-       if (funcs->disable_vidrst)
-               funcs->disable_vidrst(mdev);
-
        mgag200_set_format_regs(mdev, format);
        mgag200_set_mode_regs(mdev, adjusted_mode, mgag200_crtc_state->set_vidrst);
 
@@ -209,8 +206,8 @@ static void mgag200_g200er_crtc_helper_atomic_enable(struct drm_crtc *crtc,
 
        mgag200_enable_display(mdev);
 
-       if (funcs->enable_vidrst)
-               funcs->enable_vidrst(mdev);
+       if (mdev->info->has_vidrst)
+               mgag200_bmc_enable_vidrst(mdev);
 }
 
 static const struct drm_crtc_helper_funcs mgag200_g200er_crtc_helper_funcs = {
index acc99999e2b522813be4c6beacedea9f2cc375de..3ac0a508e2c512a171b598e54a7dd7497935ed08 100644 (file)
@@ -192,9 +192,6 @@ static void mgag200_g200ev_crtc_helper_atomic_enable(struct drm_crtc *crtc,
        struct mgag200_crtc_state *mgag200_crtc_state = to_mgag200_crtc_state(crtc_state);
        const struct drm_format_info *format = mgag200_crtc_state->format;
 
-       if (funcs->disable_vidrst)
-               funcs->disable_vidrst(mdev);
-
        mgag200_set_format_regs(mdev, format);
        mgag200_set_mode_regs(mdev, adjusted_mode, mgag200_crtc_state->set_vidrst);
 
@@ -210,8 +207,8 @@ static void mgag200_g200ev_crtc_helper_atomic_enable(struct drm_crtc *crtc,
 
        mgag200_enable_display(mdev);
 
-       if (funcs->enable_vidrst)
-               funcs->enable_vidrst(mdev);
+       if (mdev->info->has_vidrst)
+               mgag200_bmc_enable_vidrst(mdev);
 }
 
 static const struct drm_crtc_helper_funcs mgag200_g200ev_crtc_helper_funcs = {
index 839401e8b46545a476db523351a39ffa7ce3e4dc..265f3e95830ae6db98bcb2c497ce7b5a3793fc2a 100644 (file)
@@ -146,8 +146,6 @@ static const struct mgag200_device_info mgag200_g200ew3_device_info =
        MGAG200_DEVICE_INFO_INIT(2048, 2048, 0, true, 0, 1, false);
 
 static const struct mgag200_device_funcs mgag200_g200ew3_device_funcs = {
-       .disable_vidrst = mgag200_bmc_disable_vidrst,
-       .enable_vidrst = mgag200_bmc_enable_vidrst,
        .pixpllc_atomic_check = mgag200_g200ew3_pixpllc_atomic_check,
        .pixpllc_atomic_update = mgag200_g200wb_pixpllc_atomic_update, // same as G200WB
 };
index be4e124102c66ca6a11b5a62b5226c7584ab7aa7..7a8099eb100c9aa18ff25262de256bd609ee8b25 100644 (file)
@@ -323,9 +323,6 @@ static void mgag200_g200se_crtc_helper_atomic_enable(struct drm_crtc *crtc,
        struct mgag200_crtc_state *mgag200_crtc_state = to_mgag200_crtc_state(crtc_state);
        const struct drm_format_info *format = mgag200_crtc_state->format;
 
-       if (funcs->disable_vidrst)
-               funcs->disable_vidrst(mdev);
-
        mgag200_set_format_regs(mdev, format);
        mgag200_set_mode_regs(mdev, adjusted_mode, mgag200_crtc_state->set_vidrst);
 
@@ -341,8 +338,8 @@ static void mgag200_g200se_crtc_helper_atomic_enable(struct drm_crtc *crtc,
 
        mgag200_enable_display(mdev);
 
-       if (funcs->enable_vidrst)
-               funcs->enable_vidrst(mdev);
+       if (mdev->info->has_vidrst)
+               mgag200_bmc_enable_vidrst(mdev);
 }
 
 static const struct drm_crtc_helper_funcs mgag200_g200se_crtc_helper_funcs = {
index 835df0f4fc13d50d4fa7f2c92447af1e9b66682f..e25477347c3ed0bbf3203afeb8db251620fff69a 100644 (file)
@@ -280,8 +280,6 @@ static const struct mgag200_device_info mgag200_g200wb_device_info =
        MGAG200_DEVICE_INFO_INIT(1280, 1024, 31877, true, 0, 1, false);
 
 static const struct mgag200_device_funcs mgag200_g200wb_device_funcs = {
-       .disable_vidrst = mgag200_bmc_disable_vidrst,
-       .enable_vidrst = mgag200_bmc_enable_vidrst,
        .pixpllc_atomic_check = mgag200_g200wb_pixpllc_atomic_check,
        .pixpllc_atomic_update = mgag200_g200wb_pixpllc_atomic_update,
 };
index 6ecb7c334f2ba74e0a56d1254a6239a9f800f57e..276d5d61fe14aa9bd470e9cd9f003dc2e1da5ce7 100644 (file)
@@ -655,9 +655,6 @@ void mgag200_crtc_helper_atomic_enable(struct drm_crtc *crtc, struct drm_atomic_
        struct mgag200_crtc_state *mgag200_crtc_state = to_mgag200_crtc_state(crtc_state);
        const struct drm_format_info *format = mgag200_crtc_state->format;
 
-       if (funcs->disable_vidrst)
-               funcs->disable_vidrst(mdev);
-
        mgag200_set_format_regs(mdev, format);
        mgag200_set_mode_regs(mdev, adjusted_mode, mgag200_crtc_state->set_vidrst);
 
@@ -671,22 +668,18 @@ void mgag200_crtc_helper_atomic_enable(struct drm_crtc *crtc, struct drm_atomic_
 
        mgag200_enable_display(mdev);
 
-       if (funcs->enable_vidrst)
-               funcs->enable_vidrst(mdev);
+       if (mdev->info->has_vidrst)
+               mgag200_bmc_enable_vidrst(mdev);
 }
 
 void mgag200_crtc_helper_atomic_disable(struct drm_crtc *crtc, struct drm_atomic_state *old_state)
 {
        struct mga_device *mdev = to_mga_device(crtc->dev);
-       const struct mgag200_device_funcs *funcs = mdev->funcs;
 
-       if (funcs->disable_vidrst)
-               funcs->disable_vidrst(mdev);
+       if (mdev->info->has_vidrst)
+               mgag200_bmc_disable_vidrst(mdev);
 
        mgag200_disable_display(mdev);
-
-       if (funcs->enable_vidrst)
-               funcs->enable_vidrst(mdev);
 }
 
 void mgag200_crtc_reset(struct drm_crtc *crtc)