// SPDX-License-Identifier: GPL-2.0 /* * Copyright (C) 2018 Texas Instruments Incorporated - http://www.ti.com/ * Author: Benoit Parrot <[email protected]> */ #include <drm/drm_atomic.h> #include <drm/drm_atomic_helper.h> #include "omap_dmm_tiler.h" #include "omap_drv.h" /* * overlay funcs */ static const char * const overlay_id_to_name[] = …; /* * Find a free overlay with the required caps and supported fourcc */ static struct omap_hw_overlay * omap_plane_find_free_overlay(struct drm_device *dev, struct drm_plane *hwoverlay_to_plane[], u32 caps, u32 fourcc) { … } /* * Assign a new overlay to a plane with the required caps and supported fourcc * If a plane need a new overlay, the previous one should have been released * with omap_overlay_release() * This should be called from the plane atomic_check() in order to prepare the * next global overlay_map to be enabled when atomic transaction is valid. */ int omap_overlay_assign(struct drm_atomic_state *s, struct drm_plane *plane, u32 caps, u32 fourcc, struct omap_hw_overlay **overlay, struct omap_hw_overlay **r_overlay) { … } /* * Release an overlay from a plane if the plane gets not visible or the plane * need a new overlay if overlay caps changes. * This should be called from the plane atomic_check() in order to prepare the * next global overlay_map to be enabled when atomic transaction is valid. */ void omap_overlay_release(struct drm_atomic_state *s, struct omap_hw_overlay *overlay) { … } /* * Update an overlay state that was attached to a plane before the current atomic state. * This should be called from the plane atomic_update() or atomic_disable(), * where an overlay association to a plane could have changed between the old and current * atomic state. */ void omap_overlay_update_state(struct omap_drm_private *priv, struct omap_hw_overlay *overlay) { … } static void omap_overlay_destroy(struct omap_hw_overlay *overlay) { … } static struct omap_hw_overlay *omap_overlay_init(enum omap_plane_id overlay_id, enum omap_overlay_caps caps) { … } int omap_hwoverlays_init(struct omap_drm_private *priv) { … } void omap_hwoverlays_destroy(struct omap_drm_private *priv) { … }