forked from Minki/linux
c4755fb906
The display architecture has changed in several significant ways with the new Tegra186 SoC. Shared between all display controllers is a set of common resources referred to as the display hub. The hub generates accesses to memory and feeds them into various composition pipelines, each of which being a window that can be assigned to arbitrary heads. Atomic state is subclassed in order to track the global bandwidth requirements and select and adjust the hub clocks appropriately. The plane code is shared to a large degree with earlier SoC generations, except where the programming differs. Signed-off-by: Thierry Reding <treding@nvidia.com>
62 lines
1.3 KiB
C
62 lines
1.3 KiB
C
/*
|
|
* Copyright (C) 2017 NVIDIA CORPORATION. All rights reserved.
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License version 2 as
|
|
* published by the Free Software Foundation.
|
|
*/
|
|
|
|
#ifndef TEGRA_PLANE_H
|
|
#define TEGRA_PLANE_H 1
|
|
|
|
#include <drm/drm_plane.h>
|
|
|
|
struct tegra_bo;
|
|
|
|
struct tegra_plane {
|
|
struct drm_plane base;
|
|
unsigned int offset;
|
|
unsigned int index;
|
|
unsigned int depth;
|
|
};
|
|
|
|
struct tegra_cursor {
|
|
struct tegra_plane base;
|
|
|
|
struct tegra_bo *bo;
|
|
unsigned int width;
|
|
unsigned int height;
|
|
};
|
|
|
|
static inline struct tegra_plane *to_tegra_plane(struct drm_plane *plane)
|
|
{
|
|
return container_of(plane, struct tegra_plane, base);
|
|
}
|
|
|
|
struct tegra_plane_state {
|
|
struct drm_plane_state base;
|
|
|
|
struct tegra_bo_tiling tiling;
|
|
u32 format;
|
|
u32 swap;
|
|
};
|
|
|
|
static inline struct tegra_plane_state *
|
|
to_tegra_plane_state(struct drm_plane_state *state)
|
|
{
|
|
if (state)
|
|
return container_of(state, struct tegra_plane_state, base);
|
|
|
|
return NULL;
|
|
}
|
|
|
|
extern const struct drm_plane_funcs tegra_plane_funcs;
|
|
|
|
int tegra_plane_state_add(struct tegra_plane *plane,
|
|
struct drm_plane_state *state);
|
|
|
|
int tegra_plane_format(u32 fourcc, u32 *format, u32 *swap);
|
|
bool tegra_plane_format_is_yuv(unsigned int format, bool *planar);
|
|
|
|
#endif /* TEGRA_PLANE_H */
|