mirror of
https://github.com/torvalds/linux.git
synced 2026-10-17 06:20:02 +02:00
The KMS framework uses two slightly different definitions for the state concept. For a given object (plane, CRTC, encoder, etc., so drm_$OBJECT_state), the state is the entire state of that object. However, at the device level, drm_atomic_state refers to a state update for a limited number of objects. Thus, drm_atomic_state isn't the entire device state, but only the full state of some objects in that device. This has been an endless source of confusion and thus bugs. We can rename the drm_atomic_state structure to drm_atomic_commit to make it less confusing. This patch was created using: rg -l drm_atomic_state | \ xargs sed -i 's/drm_atomic_state/drm_atomic_commit/g; s/drm_atomic_commit_helper/drm_atomic_state_helper/g' mv drivers/gpu/drm/tests/drm_atomic_state_test.c drivers/gpu/drm/tests/drm_atomic_commit_test.c Acked-by: Simona Vetter <simona.vetter@ffwll.ch> Acked-by: Thomas Zimmermann <tzimmermann@suse.de> Acked-by: Jani Nikula <jani.nikula@intel.com> Reviewed-by: Luca Ceresoli <luca.ceresoli@bootlin.com> Tested-by: Luca Ceresoli <luca.ceresoli@bootlin.com> Signed-off-by: Maxime Ripard <mripard@kernel.org> Signed-off-by: Dave Airlie <airlied@redhat.com> Link: https://patch.msgid.link/20260427-drm-drm-atomic-update-v4-1-c0e713bfdf25@kernel.org
87 lines
2.2 KiB
C
87 lines
2.2 KiB
C
/* SPDX-License-Identifier: GPL-2.0+ */
|
|
/*
|
|
* R-Car Display Unit Planes
|
|
*
|
|
* Copyright (C) 2013-2014 Renesas Electronics Corporation
|
|
*
|
|
* Contact: Laurent Pinchart (laurent.pinchart@ideasonboard.com)
|
|
*/
|
|
|
|
#ifndef __RCAR_DU_PLANE_H__
|
|
#define __RCAR_DU_PLANE_H__
|
|
|
|
#include <drm/drm_plane.h>
|
|
|
|
struct rcar_du_format_info;
|
|
struct rcar_du_group;
|
|
|
|
/*
|
|
* The R-Car DU has 8 hardware planes, shared between primary and overlay planes.
|
|
* As using overlay planes requires at least one of the CRTCs being enabled, no
|
|
* more than 7 overlay planes can be available. We thus create 1 primary plane
|
|
* per CRTC and 7 overlay planes, for a total of up to 9 KMS planes.
|
|
*/
|
|
#define RCAR_DU_NUM_KMS_PLANES 9
|
|
#define RCAR_DU_NUM_HW_PLANES 8
|
|
|
|
enum rcar_du_plane_source {
|
|
RCAR_DU_PLANE_MEMORY,
|
|
RCAR_DU_PLANE_VSPD0,
|
|
RCAR_DU_PLANE_VSPD1,
|
|
};
|
|
|
|
struct rcar_du_plane {
|
|
struct drm_plane plane;
|
|
struct rcar_du_group *group;
|
|
};
|
|
|
|
static inline struct rcar_du_plane *to_rcar_plane(struct drm_plane *plane)
|
|
{
|
|
return container_of(plane, struct rcar_du_plane, plane);
|
|
}
|
|
|
|
/**
|
|
* struct rcar_du_plane_state - Driver-specific plane state
|
|
* @state: base DRM plane state
|
|
* @format: information about the pixel format used by the plane
|
|
* @hwindex: 0-based hardware plane index, -1 means unused
|
|
* @colorkey: value of the plane colorkey property
|
|
*/
|
|
struct rcar_du_plane_state {
|
|
struct drm_plane_state state;
|
|
|
|
const struct rcar_du_format_info *format;
|
|
int hwindex;
|
|
enum rcar_du_plane_source source;
|
|
|
|
unsigned int colorkey;
|
|
};
|
|
|
|
static inline struct rcar_du_plane_state *
|
|
to_rcar_plane_state(struct drm_plane_state *state)
|
|
{
|
|
return container_of(state, struct rcar_du_plane_state, state);
|
|
}
|
|
|
|
int rcar_du_atomic_check_planes(struct drm_device *dev,
|
|
struct drm_atomic_commit *state);
|
|
|
|
int __rcar_du_plane_atomic_check(struct drm_plane *plane,
|
|
struct drm_plane_state *state,
|
|
const struct rcar_du_format_info **format);
|
|
|
|
int rcar_du_planes_init(struct rcar_du_group *rgrp);
|
|
|
|
void __rcar_du_plane_setup(struct rcar_du_group *rgrp,
|
|
const struct rcar_du_plane_state *state);
|
|
|
|
static inline void rcar_du_plane_setup(struct rcar_du_plane *plane)
|
|
{
|
|
struct rcar_du_plane_state *state =
|
|
to_rcar_plane_state(plane->plane.state);
|
|
|
|
return __rcar_du_plane_setup(plane->group, state);
|
|
}
|
|
|
|
#endif /* __RCAR_DU_PLANE_H__ */
|