Commit 4aa3df71 authored by Thierry Reding's avatar Thierry Reding

drm/tegra: Atomic conversion, phase 1

Implement initial atomic state handling. Hook up the CRTCs, planes' and
connectors' ->atomic_destroy_state() callback to ensure that the atomic
state objects don't leak.

Furthermore the CRTC now implements the ->mode_set_nofb() callback that
is used by new helpers to implement ->mode_set() and ->mode_set_base().
These new helpers also make use of the new plane helper functions which
the driver now provides.
Signed-off-by: default avatarThierry Reding <treding@nvidia.com>
parent 05f175f4
This diff is collapsed.
...@@ -121,8 +121,8 @@ static int tegra_drm_unload(struct drm_device *drm) ...@@ -121,8 +121,8 @@ static int tegra_drm_unload(struct drm_device *drm)
drm_kms_helper_poll_fini(drm); drm_kms_helper_poll_fini(drm);
tegra_drm_fb_exit(drm); tegra_drm_fb_exit(drm);
drm_vblank_cleanup(drm);
drm_mode_config_cleanup(drm); drm_mode_config_cleanup(drm);
drm_vblank_cleanup(drm);
err = host1x_device_exit(device); err = host1x_device_exit(device);
if (err < 0) if (err < 0)
......
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
#include <linux/regulator/consumer.h> #include <linux/regulator/consumer.h>
#include <drm/drm_atomic_helper.h>
#include <drm/drm_mipi_dsi.h> #include <drm/drm_mipi_dsi.h>
#include <drm/drm_panel.h> #include <drm/drm_panel.h>
...@@ -736,6 +737,7 @@ static const struct drm_connector_funcs tegra_dsi_connector_funcs = { ...@@ -736,6 +737,7 @@ static const struct drm_connector_funcs tegra_dsi_connector_funcs = {
.detect = tegra_output_connector_detect, .detect = tegra_output_connector_detect,
.fill_modes = drm_helper_probe_single_connector_modes, .fill_modes = drm_helper_probe_single_connector_modes,
.destroy = tegra_output_connector_destroy, .destroy = tegra_output_connector_destroy,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
}; };
static enum drm_mode_status static enum drm_mode_status
......
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
#include <linux/regulator/consumer.h> #include <linux/regulator/consumer.h>
#include <linux/reset.h> #include <linux/reset.h>
#include <drm/drm_atomic_helper.h>
#include <drm/drm_crtc.h> #include <drm/drm_crtc.h>
#include <drm/drm_crtc_helper.h> #include <drm/drm_crtc_helper.h>
...@@ -781,6 +782,7 @@ static const struct drm_connector_funcs tegra_hdmi_connector_funcs = { ...@@ -781,6 +782,7 @@ static const struct drm_connector_funcs tegra_hdmi_connector_funcs = {
.detect = tegra_output_connector_detect, .detect = tegra_output_connector_detect,
.fill_modes = drm_helper_probe_single_connector_modes, .fill_modes = drm_helper_probe_single_connector_modes,
.destroy = tegra_output_connector_destroy, .destroy = tegra_output_connector_destroy,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
}; };
static enum drm_mode_status static enum drm_mode_status
......
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
#include <linux/of_gpio.h> #include <linux/of_gpio.h>
#include <drm/drm_atomic_helper.h>
#include <drm/drm_panel.h> #include <drm/drm_panel.h>
#include "drm.h" #include "drm.h"
......
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
#include <linux/clk.h> #include <linux/clk.h>
#include <drm/drm_atomic_helper.h>
#include <drm/drm_panel.h> #include <drm/drm_panel.h>
#include "drm.h" #include "drm.h"
...@@ -97,6 +98,7 @@ static const struct drm_connector_funcs tegra_rgb_connector_funcs = { ...@@ -97,6 +98,7 @@ static const struct drm_connector_funcs tegra_rgb_connector_funcs = {
.detect = tegra_output_connector_detect, .detect = tegra_output_connector_detect,
.fill_modes = drm_helper_probe_single_connector_modes, .fill_modes = drm_helper_probe_single_connector_modes,
.destroy = tegra_output_connector_destroy, .destroy = tegra_output_connector_destroy,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
}; };
static enum drm_mode_status static enum drm_mode_status
......
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
#include <soc/tegra/pmc.h> #include <soc/tegra/pmc.h>
#include <drm/drm_atomic_helper.h>
#include <drm/drm_dp_helper.h> #include <drm/drm_dp_helper.h>
#include <drm/drm_panel.h> #include <drm/drm_panel.h>
...@@ -737,6 +738,7 @@ static const struct drm_connector_funcs tegra_sor_connector_funcs = { ...@@ -737,6 +738,7 @@ static const struct drm_connector_funcs tegra_sor_connector_funcs = {
.detect = tegra_sor_connector_detect, .detect = tegra_sor_connector_detect,
.fill_modes = drm_helper_probe_single_connector_modes, .fill_modes = drm_helper_probe_single_connector_modes,
.destroy = tegra_output_connector_destroy, .destroy = tegra_output_connector_destroy,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
}; };
static int tegra_sor_connector_get_modes(struct drm_connector *connector) static int tegra_sor_connector_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