aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2015-03-05 14:38:16 -0500
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2015-06-12 15:52:47 -0400
commit69a12263f6f919cd53b10c849e1674e38931e74e (patch)
tree95e77810048a18171c400cadeec46fd8ce809a6d
parent68dc0390d4e9d3f73fa6a7756a948ff97a40eccb (diff)
drm: omapdrm: Wire up atomic state object scaffolding
Hook up the default .reset(), .atomic_duplicate_state() and .atomic_free_state() helpers to ensure that state objects are properly created and destroyed, and call drm_mode_config_reset() at init time to create the initial state objects. Framebuffer reference count also gets maintained automatically by the transitional helpers except for the legacy page flip operation. Maintain it explicitly there. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
-rw-r--r--drivers/gpu/drm/omapdrm/omap_connector.c4
-rw-r--r--drivers/gpu/drm/omapdrm/omap_crtc.c6
-rw-r--r--drivers/gpu/drm/omapdrm/omap_drv.c2
-rw-r--r--drivers/gpu/drm/omapdrm/omap_plane.c5
4 files changed, 17 insertions, 0 deletions
diff --git a/drivers/gpu/drm/omapdrm/omap_connector.c b/drivers/gpu/drm/omapdrm/omap_connector.c
index cd1b10d660ac..d170f0cb1aa9 100644
--- a/drivers/gpu/drm/omapdrm/omap_connector.c
+++ b/drivers/gpu/drm/omapdrm/omap_connector.c
@@ -17,6 +17,7 @@
17 * this program. If not, see <http://www.gnu.org/licenses/>. 17 * this program. If not, see <http://www.gnu.org/licenses/>.
18 */ 18 */
19 19
20#include <drm/drm_atomic_helper.h>
20#include <drm/drm_crtc.h> 21#include <drm/drm_crtc.h>
21#include <drm/drm_crtc_helper.h> 22#include <drm/drm_crtc_helper.h>
22 23
@@ -260,9 +261,12 @@ struct drm_encoder *omap_connector_attached_encoder(
260 261
261static const struct drm_connector_funcs omap_connector_funcs = { 262static const struct drm_connector_funcs omap_connector_funcs = {
262 .dpms = drm_helper_connector_dpms, 263 .dpms = drm_helper_connector_dpms,
264 .reset = drm_atomic_helper_connector_reset,
263 .detect = omap_connector_detect, 265 .detect = omap_connector_detect,
264 .fill_modes = drm_helper_probe_single_connector_modes, 266 .fill_modes = drm_helper_probe_single_connector_modes,
265 .destroy = omap_connector_destroy, 267 .destroy = omap_connector_destroy,
268 .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
269 .atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
266}; 270};
267 271
268static const struct drm_connector_helper_funcs omap_connector_helper_funcs = { 272static const struct drm_connector_helper_funcs omap_connector_helper_funcs = {
diff --git a/drivers/gpu/drm/omapdrm/omap_crtc.c b/drivers/gpu/drm/omapdrm/omap_crtc.c
index 0359a67f8f8d..5f4f5ad93345 100644
--- a/drivers/gpu/drm/omapdrm/omap_crtc.c
+++ b/drivers/gpu/drm/omapdrm/omap_crtc.c
@@ -19,6 +19,8 @@
19 19
20#include <linux/completion.h> 20#include <linux/completion.h>
21 21
22#include <drm/drm_atomic.h>
23#include <drm/drm_atomic_helper.h>
22#include <drm/drm_crtc.h> 24#include <drm/drm_crtc.h>
23#include <drm/drm_crtc_helper.h> 25#include <drm/drm_crtc_helper.h>
24#include <drm/drm_mode.h> 26#include <drm/drm_mode.h>
@@ -742,6 +744,7 @@ static int omap_crtc_page_flip(struct drm_crtc *crtc,
742 omap_crtc->flip_event = event; 744 omap_crtc->flip_event = event;
743 omap_crtc->flip_state = OMAP_PAGE_FLIP_WAIT; 745 omap_crtc->flip_state = OMAP_PAGE_FLIP_WAIT;
744 746
747 drm_atomic_set_fb_for_plane(primary->state, fb);
745 primary->fb = fb; 748 primary->fb = fb;
746 749
747 spin_unlock_irqrestore(&dev->event_lock, flags); 750 spin_unlock_irqrestore(&dev->event_lock, flags);
@@ -771,10 +774,13 @@ static int omap_crtc_set_property(struct drm_crtc *crtc,
771} 774}
772 775
773static const struct drm_crtc_funcs omap_crtc_funcs = { 776static const struct drm_crtc_funcs omap_crtc_funcs = {
777 .reset = drm_atomic_helper_crtc_reset,
774 .set_config = drm_crtc_helper_set_config, 778 .set_config = drm_crtc_helper_set_config,
775 .destroy = omap_crtc_destroy, 779 .destroy = omap_crtc_destroy,
776 .page_flip = omap_crtc_page_flip, 780 .page_flip = omap_crtc_page_flip,
777 .set_property = omap_crtc_set_property, 781 .set_property = omap_crtc_set_property,
782 .atomic_duplicate_state = drm_atomic_helper_crtc_duplicate_state,
783 .atomic_destroy_state = drm_atomic_helper_crtc_destroy_state,
778}; 784};
779 785
780static const struct drm_crtc_helper_funcs omap_crtc_helper_funcs = { 786static const struct drm_crtc_helper_funcs omap_crtc_helper_funcs = {
diff --git a/drivers/gpu/drm/omapdrm/omap_drv.c b/drivers/gpu/drm/omapdrm/omap_drv.c
index dbd304691281..5bf4b2b71126 100644
--- a/drivers/gpu/drm/omapdrm/omap_drv.c
+++ b/drivers/gpu/drm/omapdrm/omap_drv.c
@@ -350,6 +350,8 @@ static int omap_modeset_init(struct drm_device *dev)
350 350
351 dev->mode_config.funcs = &omap_mode_config_funcs; 351 dev->mode_config.funcs = &omap_mode_config_funcs;
352 352
353 drm_mode_config_reset(dev);
354
353 return 0; 355 return 0;
354} 356}
355 357
diff --git a/drivers/gpu/drm/omapdrm/omap_plane.c b/drivers/gpu/drm/omapdrm/omap_plane.c
index 57d5b035d078..533dcc15f03c 100644
--- a/drivers/gpu/drm/omapdrm/omap_plane.c
+++ b/drivers/gpu/drm/omapdrm/omap_plane.c
@@ -17,6 +17,8 @@
17 * this program. If not, see <http://www.gnu.org/licenses/>. 17 * this program. If not, see <http://www.gnu.org/licenses/>.
18 */ 18 */
19 19
20#include <drm/drm_atomic_helper.h>
21
20#include "omap_dmm_tiler.h" 22#include "omap_dmm_tiler.h"
21#include "omap_drv.h" 23#include "omap_drv.h"
22 24
@@ -287,8 +289,11 @@ int omap_plane_set_property(struct drm_plane *plane,
287static const struct drm_plane_funcs omap_plane_funcs = { 289static const struct drm_plane_funcs omap_plane_funcs = {
288 .update_plane = omap_plane_update, 290 .update_plane = omap_plane_update,
289 .disable_plane = omap_plane_disable, 291 .disable_plane = omap_plane_disable,
292 .reset = drm_atomic_helper_plane_reset,
290 .destroy = omap_plane_destroy, 293 .destroy = omap_plane_destroy,
291 .set_property = omap_plane_set_property, 294 .set_property = omap_plane_set_property,
295 .atomic_duplicate_state = drm_atomic_helper_plane_duplicate_state,
296 .atomic_destroy_state = drm_atomic_helper_plane_destroy_state,
292}; 297};
293 298
294static void omap_plane_error_irq(struct omap_drm_irq *irq, uint32_t irqstatus) 299static void omap_plane_error_irq(struct omap_drm_irq *irq, uint32_t irqstatus)