Commit 255c35f8 authored by Liu Ying's avatar Liu Ying Committed by Philipp Zabel

drm/imx: atomic phase 2 step 1: Wire up state ->reset, ->duplicate and ->destroy

Wire up CRTCs', planes' and connectors' ->reset, ->duplicate and ->destroy state
hooks to use the default implementations from the atomic helper library.
The helpers track each DRM object state.
Signed-off-by: default avatarLiu Ying <gnuiyl@gmail.com>
Acked-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: default avatarPhilipp Zabel <p.zabel@pengutronix.de>
parent 33f14235
...@@ -1500,6 +1500,9 @@ static const struct drm_connector_funcs dw_hdmi_connector_funcs = { ...@@ -1500,6 +1500,9 @@ static const struct drm_connector_funcs dw_hdmi_connector_funcs = {
.detect = dw_hdmi_connector_detect, .detect = dw_hdmi_connector_detect,
.destroy = dw_hdmi_connector_destroy, .destroy = dw_hdmi_connector_destroy,
.force = dw_hdmi_connector_force, .force = dw_hdmi_connector_force,
.reset = drm_atomic_helper_connector_reset,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
}; };
static const struct drm_connector_funcs dw_hdmi_atomic_connector_funcs = { static const struct drm_connector_funcs dw_hdmi_atomic_connector_funcs = {
......
...@@ -279,6 +279,8 @@ static int imx_drm_driver_load(struct drm_device *drm, unsigned long flags) ...@@ -279,6 +279,8 @@ static int imx_drm_driver_load(struct drm_device *drm, unsigned long flags)
} }
} }
drm_mode_config_reset(drm);
/* /*
* All components are now initialised, so setup the fb helper. * All components are now initialised, so setup the fb helper.
* The fb helper takes copies of key hardware information, so the * The fb helper takes copies of key hardware information, so the
......
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
#include <linux/clk.h> #include <linux/clk.h>
#include <linux/component.h> #include <linux/component.h>
#include <drm/drmP.h> #include <drm/drmP.h>
#include <drm/drm_atomic_helper.h>
#include <drm/drm_fb_helper.h> #include <drm/drm_fb_helper.h>
#include <drm/drm_crtc_helper.h> #include <drm/drm_crtc_helper.h>
#include <drm/drm_of.h> #include <drm/drm_of.h>
...@@ -362,6 +363,9 @@ static const struct drm_connector_funcs imx_ldb_connector_funcs = { ...@@ -362,6 +363,9 @@ static const struct drm_connector_funcs imx_ldb_connector_funcs = {
.fill_modes = drm_helper_probe_single_connector_modes, .fill_modes = drm_helper_probe_single_connector_modes,
.detect = imx_ldb_connector_detect, .detect = imx_ldb_connector_detect,
.destroy = imx_drm_connector_destroy, .destroy = imx_drm_connector_destroy,
.reset = drm_atomic_helper_connector_reset,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
}; };
static const struct drm_connector_helper_funcs imx_ldb_connector_helper_funcs = { static const struct drm_connector_helper_funcs imx_ldb_connector_helper_funcs = {
......
...@@ -23,6 +23,7 @@ ...@@ -23,6 +23,7 @@
#include <linux/spinlock.h> #include <linux/spinlock.h>
#include <linux/videodev2.h> #include <linux/videodev2.h>
#include <drm/drmP.h> #include <drm/drmP.h>
#include <drm/drm_atomic_helper.h>
#include <drm/drm_fb_helper.h> #include <drm/drm_fb_helper.h>
#include <drm/drm_crtc_helper.h> #include <drm/drm_crtc_helper.h>
#include <video/imx-ipu-v3.h> #include <video/imx-ipu-v3.h>
...@@ -360,6 +361,9 @@ static const struct drm_connector_funcs imx_tve_connector_funcs = { ...@@ -360,6 +361,9 @@ static const struct drm_connector_funcs imx_tve_connector_funcs = {
.fill_modes = drm_helper_probe_single_connector_modes, .fill_modes = drm_helper_probe_single_connector_modes,
.detect = imx_tve_connector_detect, .detect = imx_tve_connector_detect,
.destroy = imx_drm_connector_destroy, .destroy = imx_drm_connector_destroy,
.reset = drm_atomic_helper_connector_reset,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
}; };
static const struct drm_connector_helper_funcs imx_tve_connector_helper_funcs = { static const struct drm_connector_helper_funcs imx_tve_connector_helper_funcs = {
......
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
#include <linux/device.h> #include <linux/device.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <drm/drmP.h> #include <drm/drmP.h>
#include <drm/drm_atomic_helper.h>
#include <drm/drm_crtc_helper.h> #include <drm/drm_crtc_helper.h>
#include <linux/fb.h> #include <linux/fb.h>
#include <linux/clk.h> #include <linux/clk.h>
...@@ -232,6 +233,9 @@ static const struct drm_crtc_funcs ipu_crtc_funcs = { ...@@ -232,6 +233,9 @@ static const struct drm_crtc_funcs ipu_crtc_funcs = {
.set_config = drm_crtc_helper_set_config, .set_config = drm_crtc_helper_set_config,
.destroy = drm_crtc_cleanup, .destroy = drm_crtc_cleanup,
.page_flip = ipu_page_flip, .page_flip = ipu_page_flip,
.reset = drm_atomic_helper_crtc_reset,
.atomic_duplicate_state = drm_atomic_helper_crtc_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_crtc_destroy_state,
}; };
static void ipu_crtc_handle_pageflip(struct ipu_crtc *ipu_crtc) static void ipu_crtc_handle_pageflip(struct ipu_crtc *ipu_crtc)
......
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
*/ */
#include <drm/drmP.h> #include <drm/drmP.h>
#include <drm/drm_atomic_helper.h>
#include <drm/drm_fb_cma_helper.h> #include <drm/drm_fb_cma_helper.h>
#include <drm/drm_gem_cma_helper.h> #include <drm/drm_gem_cma_helper.h>
#include <drm/drm_plane_helper.h> #include <drm/drm_plane_helper.h>
...@@ -362,6 +363,9 @@ static const struct drm_plane_funcs ipu_plane_funcs = { ...@@ -362,6 +363,9 @@ static const struct drm_plane_funcs ipu_plane_funcs = {
.update_plane = drm_plane_helper_update, .update_plane = drm_plane_helper_update,
.disable_plane = drm_plane_helper_disable, .disable_plane = drm_plane_helper_disable,
.destroy = ipu_plane_destroy, .destroy = ipu_plane_destroy,
.reset = drm_atomic_helper_plane_reset,
.atomic_duplicate_state = drm_atomic_helper_plane_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_plane_destroy_state,
}; };
static int ipu_plane_atomic_check(struct drm_plane *plane, static int ipu_plane_atomic_check(struct drm_plane *plane,
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
#include <linux/component.h> #include <linux/component.h>
#include <linux/module.h> #include <linux/module.h>
#include <drm/drmP.h> #include <drm/drmP.h>
#include <drm/drm_atomic_helper.h>
#include <drm/drm_fb_helper.h> #include <drm/drm_fb_helper.h>
#include <drm/drm_crtc_helper.h> #include <drm/drm_crtc_helper.h>
#include <drm/drm_panel.h> #include <drm/drm_panel.h>
...@@ -134,6 +135,9 @@ static const struct drm_connector_funcs imx_pd_connector_funcs = { ...@@ -134,6 +135,9 @@ static const struct drm_connector_funcs imx_pd_connector_funcs = {
.fill_modes = drm_helper_probe_single_connector_modes, .fill_modes = drm_helper_probe_single_connector_modes,
.detect = imx_pd_connector_detect, .detect = imx_pd_connector_detect,
.destroy = imx_drm_connector_destroy, .destroy = imx_drm_connector_destroy,
.reset = drm_atomic_helper_connector_reset,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
}; };
static const struct drm_connector_helper_funcs imx_pd_connector_helper_funcs = { static const struct drm_connector_helper_funcs imx_pd_connector_helper_funcs = {
......
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