Commit 4ea9526b authored by Gustavo Padovan's avatar Gustavo Padovan Committed by Inki Dae

drm/exynos: atomic phase 2: wire up state reset(), duplicate() and destroy()

Set CRTC, planes and connectors to use the default implementations from
the atomic helper library. The helpers will work to keep track of state
for each DRM object.
Signed-off-by: default avatarGustavo Padovan <gustavo.padovan@collabora.co.uk>
Reviewed-by: default avatarJoonyoung Shim <jy0922.shim@samsung.com>
Tested-by: default avatarTobias Jakobi <tjakobi@math.uni-bielefeld.de>
Signed-off-by: default avatarInki Dae <inki.dae@samsung.com>
parent 020e79de
...@@ -32,6 +32,7 @@ ...@@ -32,6 +32,7 @@
#include "drmP.h" #include "drmP.h"
#include "drm_crtc.h" #include "drm_crtc.h"
#include "drm_crtc_helper.h" #include "drm_crtc_helper.h"
#include "drm_atomic_helper.h"
/* Brightness scale on the Parade chip */ /* Brightness scale on the Parade chip */
#define PS8622_MAX_BRIGHTNESS 0xff #define PS8622_MAX_BRIGHTNESS 0xff
...@@ -503,6 +504,9 @@ static const struct drm_connector_funcs ps8622_connector_funcs = { ...@@ -503,6 +504,9 @@ static const struct drm_connector_funcs ps8622_connector_funcs = {
.fill_modes = drm_helper_probe_single_connector_modes, .fill_modes = drm_helper_probe_single_connector_modes,
.detect = ps8622_detect, .detect = ps8622_detect,
.destroy = ps8622_connector_destroy, .destroy = ps8622_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 int ps8622_attach(struct drm_bridge *bridge) static int ps8622_attach(struct drm_bridge *bridge)
......
...@@ -26,6 +26,7 @@ ...@@ -26,6 +26,7 @@
#include "drm_crtc.h" #include "drm_crtc.h"
#include "drm_crtc_helper.h" #include "drm_crtc_helper.h"
#include "drm_atomic_helper.h"
#include "drm_edid.h" #include "drm_edid.h"
#include "drmP.h" #include "drmP.h"
...@@ -262,6 +263,9 @@ static struct drm_connector_funcs ptn3460_connector_funcs = { ...@@ -262,6 +263,9 @@ static struct drm_connector_funcs ptn3460_connector_funcs = {
.fill_modes = drm_helper_probe_single_connector_modes, .fill_modes = drm_helper_probe_single_connector_modes,
.detect = ptn3460_detect, .detect = ptn3460_detect,
.destroy = ptn3460_connector_destroy, .destroy = ptn3460_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 int ptn3460_bridge_attach(struct drm_bridge *bridge) static int ptn3460_bridge_attach(struct drm_bridge *bridge)
......
...@@ -28,6 +28,7 @@ ...@@ -28,6 +28,7 @@
#include <drm/drmP.h> #include <drm/drmP.h>
#include <drm/drm_crtc.h> #include <drm/drm_crtc.h>
#include <drm/drm_crtc_helper.h> #include <drm/drm_crtc_helper.h>
#include <drm/drm_atomic_helper.h>
#include <drm/drm_panel.h> #include <drm/drm_panel.h>
#include "exynos_dp_core.h" #include "exynos_dp_core.h"
...@@ -956,6 +957,9 @@ static struct drm_connector_funcs exynos_dp_connector_funcs = { ...@@ -956,6 +957,9 @@ static struct drm_connector_funcs exynos_dp_connector_funcs = {
.fill_modes = drm_helper_probe_single_connector_modes, .fill_modes = drm_helper_probe_single_connector_modes,
.detect = exynos_dp_detect, .detect = exynos_dp_detect,
.destroy = exynos_dp_connector_destroy, .destroy = exynos_dp_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 int exynos_dp_get_modes(struct drm_connector *connector) static int exynos_dp_get_modes(struct drm_connector *connector)
......
...@@ -14,6 +14,8 @@ ...@@ -14,6 +14,8 @@
#include <drm/drmP.h> #include <drm/drmP.h>
#include <drm/drm_crtc_helper.h> #include <drm/drm_crtc_helper.h>
#include <drm/drm_atomic.h>
#include <drm/drm_atomic_helper.h>
#include "exynos_drm_crtc.h" #include "exynos_drm_crtc.h"
#include "exynos_drm_drv.h" #include "exynos_drm_drv.h"
...@@ -188,6 +190,9 @@ static struct drm_crtc_funcs exynos_crtc_funcs = { ...@@ -188,6 +190,9 @@ static struct drm_crtc_funcs exynos_crtc_funcs = {
.set_config = drm_crtc_helper_set_config, .set_config = drm_crtc_helper_set_config,
.page_flip = exynos_drm_crtc_page_flip, .page_flip = exynos_drm_crtc_page_flip,
.destroy = exynos_drm_crtc_destroy, .destroy = exynos_drm_crtc_destroy,
.reset = drm_atomic_helper_crtc_reset,
.atomic_duplicate_state = drm_atomic_helper_crtc_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_crtc_destroy_state,
}; };
struct exynos_drm_crtc *exynos_drm_crtc_create(struct drm_device *drm_dev, struct exynos_drm_crtc *exynos_drm_crtc_create(struct drm_device *drm_dev,
......
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
#include <drm/drmP.h> #include <drm/drmP.h>
#include <drm/drm_crtc_helper.h> #include <drm/drm_crtc_helper.h>
#include <drm/drm_panel.h> #include <drm/drm_panel.h>
#include <drm/drm_atomic_helper.h>
#include <linux/regulator/consumer.h> #include <linux/regulator/consumer.h>
...@@ -63,6 +64,9 @@ static struct drm_connector_funcs exynos_dpi_connector_funcs = { ...@@ -63,6 +64,9 @@ static struct drm_connector_funcs exynos_dpi_connector_funcs = {
.detect = exynos_dpi_detect, .detect = exynos_dpi_detect,
.fill_modes = drm_helper_probe_single_connector_modes, .fill_modes = drm_helper_probe_single_connector_modes,
.destroy = exynos_dpi_connector_destroy, .destroy = exynos_dpi_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 int exynos_dpi_get_modes(struct drm_connector *connector) static int exynos_dpi_get_modes(struct drm_connector *connector)
......
...@@ -98,6 +98,8 @@ static int exynos_drm_load(struct drm_device *dev, unsigned long flags) ...@@ -98,6 +98,8 @@ static int exynos_drm_load(struct drm_device *dev, unsigned long flags)
if (ret) if (ret)
goto err_cleanup_vblank; goto err_cleanup_vblank;
drm_mode_config_reset(dev);
/* /*
* enable drm irq mode. * enable drm irq mode.
* - with irq_enabled = true, we can use the vblank feature. * - with irq_enabled = true, we can use the vblank feature.
......
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
#include <drm/drm_crtc_helper.h> #include <drm/drm_crtc_helper.h>
#include <drm/drm_mipi_dsi.h> #include <drm/drm_mipi_dsi.h>
#include <drm/drm_panel.h> #include <drm/drm_panel.h>
#include <drm/drm_atomic_helper.h>
#include <linux/clk.h> #include <linux/clk.h>
#include <linux/gpio/consumer.h> #include <linux/gpio/consumer.h>
...@@ -1461,6 +1462,9 @@ static struct drm_connector_funcs exynos_dsi_connector_funcs = { ...@@ -1461,6 +1462,9 @@ static struct drm_connector_funcs exynos_dsi_connector_funcs = {
.detect = exynos_dsi_detect, .detect = exynos_dsi_detect,
.fill_modes = drm_helper_probe_single_connector_modes, .fill_modes = drm_helper_probe_single_connector_modes,
.destroy = exynos_dsi_connector_destroy, .destroy = exynos_dsi_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 int exynos_dsi_get_modes(struct drm_connector *connector) static int exynos_dsi_get_modes(struct drm_connector *connector)
......
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
#include <drm/exynos_drm.h> #include <drm/exynos_drm.h>
#include <drm/drm_plane_helper.h> #include <drm/drm_plane_helper.h>
#include <drm/drm_atomic_helper.h>
#include "exynos_drm_drv.h" #include "exynos_drm_drv.h"
#include "exynos_drm_crtc.h" #include "exynos_drm_crtc.h"
#include "exynos_drm_fb.h" #include "exynos_drm_fb.h"
...@@ -170,6 +171,9 @@ static struct drm_plane_funcs exynos_plane_funcs = { ...@@ -170,6 +171,9 @@ static struct drm_plane_funcs exynos_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 = drm_plane_cleanup, .destroy = drm_plane_cleanup,
.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 exynos_plane_atomic_check(struct drm_plane *plane, static int exynos_plane_atomic_check(struct drm_plane *plane,
......
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
#include <drm/drm_edid.h> #include <drm/drm_edid.h>
#include <drm/drm_crtc_helper.h> #include <drm/drm_crtc_helper.h>
#include <drm/drm_atomic_helper.h>
#include "exynos_drm_drv.h" #include "exynos_drm_drv.h"
#include "exynos_drm_crtc.h" #include "exynos_drm_crtc.h"
...@@ -388,6 +389,9 @@ static struct drm_connector_funcs vidi_connector_funcs = { ...@@ -388,6 +389,9 @@ static struct drm_connector_funcs vidi_connector_funcs = {
.fill_modes = drm_helper_probe_single_connector_modes, .fill_modes = drm_helper_probe_single_connector_modes,
.detect = vidi_detect, .detect = vidi_detect,
.destroy = vidi_connector_destroy, .destroy = vidi_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 int vidi_get_modes(struct drm_connector *connector) static int vidi_get_modes(struct drm_connector *connector)
......
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
#include <drm/drmP.h> #include <drm/drmP.h>
#include <drm/drm_edid.h> #include <drm/drm_edid.h>
#include <drm/drm_crtc_helper.h> #include <drm/drm_crtc_helper.h>
#include <drm/drm_atomic_helper.h>
#include "regs-hdmi.h" #include "regs-hdmi.h"
...@@ -1054,6 +1055,9 @@ static struct drm_connector_funcs hdmi_connector_funcs = { ...@@ -1054,6 +1055,9 @@ static struct drm_connector_funcs hdmi_connector_funcs = {
.fill_modes = drm_helper_probe_single_connector_modes, .fill_modes = drm_helper_probe_single_connector_modes,
.detect = hdmi_detect, .detect = hdmi_detect,
.destroy = hdmi_connector_destroy, .destroy = hdmi_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 int hdmi_get_modes(struct drm_connector *connector) static int hdmi_get_modes(struct drm_connector *connector)
......
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