Commit 3997eea5 authored by Noralf Trønnes's avatar Noralf Trønnes Committed by Alex Deucher

drm/radeon: Use drm_fb_helper_lastclose() and _poll_changed()

This driver can use drm_fb_helper_lastclose() in its .lastclose function.
It can also use drm_fb_helper_output_poll_changed() as its
.output_poll_changed callback.

Cc: Alex Deucher <alexander.deucher@amd.com>
Cc: "Christian König" <christian.koenig@amd.com>
Signed-off-by: default avatarNoralf Trønnes <noralf@tronnes.org>
Acked-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent ab77e02c
...@@ -32,6 +32,7 @@ ...@@ -32,6 +32,7 @@
#include <linux/pm_runtime.h> #include <linux/pm_runtime.h>
#include <drm/drm_crtc_helper.h> #include <drm/drm_crtc_helper.h>
#include <drm/drm_fb_helper.h>
#include <drm/drm_plane_helper.h> #include <drm/drm_plane_helper.h>
#include <drm/drm_edid.h> #include <drm/drm_edid.h>
...@@ -1362,15 +1363,9 @@ radeon_user_framebuffer_create(struct drm_device *dev, ...@@ -1362,15 +1363,9 @@ radeon_user_framebuffer_create(struct drm_device *dev,
return &radeon_fb->base; return &radeon_fb->base;
} }
static void radeon_output_poll_changed(struct drm_device *dev)
{
struct radeon_device *rdev = dev->dev_private;
radeon_fb_output_poll_changed(rdev);
}
static const struct drm_mode_config_funcs radeon_mode_funcs = { static const struct drm_mode_config_funcs radeon_mode_funcs = {
.fb_create = radeon_user_framebuffer_create, .fb_create = radeon_user_framebuffer_create,
.output_poll_changed = radeon_output_poll_changed .output_poll_changed = drm_fb_helper_output_poll_changed,
}; };
static const struct drm_prop_enum_list radeon_tmds_pll_enum_list[] = static const struct drm_prop_enum_list radeon_tmds_pll_enum_list[] =
......
...@@ -306,12 +306,6 @@ static int radeonfb_create(struct drm_fb_helper *helper, ...@@ -306,12 +306,6 @@ static int radeonfb_create(struct drm_fb_helper *helper,
return ret; return ret;
} }
void radeon_fb_output_poll_changed(struct radeon_device *rdev)
{
if (rdev->mode_info.rfbdev)
drm_fb_helper_hotplug_event(&rdev->mode_info.rfbdev->helper);
}
static int radeon_fbdev_destroy(struct drm_device *dev, struct radeon_fbdev *rfbdev) static int radeon_fbdev_destroy(struct drm_device *dev, struct radeon_fbdev *rfbdev)
{ {
struct radeon_framebuffer *rfb = &rfbdev->rfb; struct radeon_framebuffer *rfb = &rfbdev->rfb;
...@@ -422,19 +416,3 @@ void radeon_fb_remove_connector(struct radeon_device *rdev, struct drm_connector ...@@ -422,19 +416,3 @@ void radeon_fb_remove_connector(struct radeon_device *rdev, struct drm_connector
if (rdev->mode_info.rfbdev) if (rdev->mode_info.rfbdev)
drm_fb_helper_remove_one_connector(&rdev->mode_info.rfbdev->helper, connector); drm_fb_helper_remove_one_connector(&rdev->mode_info.rfbdev->helper, connector);
} }
void radeon_fbdev_restore_mode(struct radeon_device *rdev)
{
struct radeon_fbdev *rfbdev = rdev->mode_info.rfbdev;
struct drm_fb_helper *fb_helper;
int ret;
if (!rfbdev)
return;
fb_helper = &rfbdev->helper;
ret = drm_fb_helper_restore_fbdev_mode_unlocked(fb_helper);
if (ret)
DRM_DEBUG("failed to restore crtc mode\n");
}
...@@ -26,6 +26,7 @@ ...@@ -26,6 +26,7 @@
* Jerome Glisse * Jerome Glisse
*/ */
#include <drm/drmP.h> #include <drm/drmP.h>
#include <drm/drm_fb_helper.h>
#include "radeon.h" #include "radeon.h"
#include <drm/radeon_drm.h> #include <drm/radeon_drm.h>
#include "radeon_asic.h" #include "radeon_asic.h"
...@@ -629,9 +630,7 @@ static int radeon_info_ioctl(struct drm_device *dev, void *data, struct drm_file ...@@ -629,9 +630,7 @@ static int radeon_info_ioctl(struct drm_device *dev, void *data, struct drm_file
*/ */
void radeon_driver_lastclose_kms(struct drm_device *dev) void radeon_driver_lastclose_kms(struct drm_device *dev)
{ {
struct radeon_device *rdev = dev->dev_private; drm_fb_helper_lastclose(dev);
radeon_fbdev_restore_mode(rdev);
vga_switcheroo_process_delayed_switch(); vga_switcheroo_process_delayed_switch();
} }
......
...@@ -984,9 +984,6 @@ int radeon_fbdev_init(struct radeon_device *rdev); ...@@ -984,9 +984,6 @@ int radeon_fbdev_init(struct radeon_device *rdev);
void radeon_fbdev_fini(struct radeon_device *rdev); void radeon_fbdev_fini(struct radeon_device *rdev);
void radeon_fbdev_set_suspend(struct radeon_device *rdev, int state); void radeon_fbdev_set_suspend(struct radeon_device *rdev, int state);
bool radeon_fbdev_robj_is_fb(struct radeon_device *rdev, struct radeon_bo *robj); bool radeon_fbdev_robj_is_fb(struct radeon_device *rdev, struct radeon_bo *robj);
void radeon_fbdev_restore_mode(struct radeon_device *rdev);
void radeon_fb_output_poll_changed(struct radeon_device *rdev);
void radeon_crtc_handle_vblank(struct radeon_device *rdev, int crtc_id); void radeon_crtc_handle_vblank(struct radeon_device *rdev, int crtc_id);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment