#include <linux/of.h>
#include <linux/types.h>
#include <drm/drm_atomic.h>
#include <drm/drm_atomic_helper.h>
#include <drm/drm_blend.h>
#include <drm/drm_fb_dma_helper.h>
#include <drm/drm_fourcc.h>
#include <drm/drm_framebuffer.h>
#include <drm/drm_plane.h>
#include <drm/drm_print.h>
#include "logicvc_crtc.h"
#include "logicvc_drm.h"
#include "logicvc_layer.h"
#include "logicvc_of.h"
#include "logicvc_regs.h"
#define logicvc_layer(p) …
static uint32_t logicvc_layer_formats_rgb16[] = …;
static uint32_t logicvc_layer_formats_rgb24[] = …;
static uint32_t logicvc_layer_formats_rgb24_alpha[] = …;
static struct logicvc_layer_formats logicvc_layer_formats[] = …;
static bool logicvc_layer_format_inverted(uint32_t format)
{ … }
static int logicvc_plane_atomic_check(struct drm_plane *drm_plane,
struct drm_atomic_state *state)
{ … }
static void logicvc_plane_atomic_update(struct drm_plane *drm_plane,
struct drm_atomic_state *state)
{ … }
static void logicvc_plane_atomic_disable(struct drm_plane *drm_plane,
struct drm_atomic_state *state)
{ … }
static struct drm_plane_helper_funcs logicvc_plane_helper_funcs = …;
static const struct drm_plane_funcs logicvc_plane_funcs = …;
int logicvc_layer_buffer_find_setup(struct logicvc_drm *logicvc,
struct logicvc_layer *layer,
struct drm_plane_state *state,
struct logicvc_layer_buffer_setup *setup)
{ … }
static struct logicvc_layer_formats *logicvc_layer_formats_lookup(struct logicvc_layer *layer)
{ … }
static unsigned int logicvc_layer_formats_count(struct logicvc_layer_formats *formats)
{ … }
static int logicvc_layer_config_parse(struct logicvc_drm *logicvc,
struct logicvc_layer *layer)
{ … }
struct logicvc_layer *logicvc_layer_get_from_index(struct logicvc_drm *logicvc,
u32 index)
{ … }
struct logicvc_layer *logicvc_layer_get_from_type(struct logicvc_drm *logicvc,
enum drm_plane_type type)
{ … }
struct logicvc_layer *logicvc_layer_get_primary(struct logicvc_drm *logicvc)
{ … }
static int logicvc_layer_init(struct logicvc_drm *logicvc,
struct device_node *of_node, u32 index)
{ … }
static void logicvc_layer_fini(struct logicvc_drm *logicvc,
struct logicvc_layer *layer)
{ … }
void logicvc_layers_attach_crtc(struct logicvc_drm *logicvc)
{ … }
int logicvc_layers_init(struct logicvc_drm *logicvc)
{ … }