linux/drivers/gpu/drm/arm/display/komeda/komeda_kms.h

/* SPDX-License-Identifier: GPL-2.0 */
/*
 * (C) COPYRIGHT 2018 ARM Limited. All rights reserved.
 * Author: James.Qian.Wang <[email protected]>
 *
 */
#ifndef _KOMEDA_KMS_H_
#define _KOMEDA_KMS_H_

#include <linux/list.h>
#include <drm/drm_atomic.h>
#include <drm/drm_atomic_helper.h>
#include <drm/drm_blend.h>
#include <drm/drm_device.h>
#include <drm/drm_writeback.h>
#include <drm/drm_print.h>

/**
 * struct komeda_plane - komeda instance of drm_plane
 */
struct komeda_plane {};

/**
 * struct komeda_plane_state
 *
 * The plane_state can be split into two data flow (left/right) and handled
 * by two layers &komeda_plane.layer and &komeda_plane.layer.right
 */
struct komeda_plane_state {};

/**
 * struct komeda_wb_connector
 */
struct komeda_wb_connector {};

/**
 * struct komeda_crtc
 */
struct komeda_crtc {};

/**
 * struct komeda_crtc_state
 */
struct komeda_crtc_state {};

/** struct komeda_kms_dev - for gather KMS related things */
struct komeda_kms_dev {};

#define to_kplane(p)
#define to_kplane_st(p)
#define to_kconn(p)
#define to_kcrtc(p)
#define to_kcrtc_st(p)
#define to_kdev(p)
#define to_wb_conn(x)

static inline bool is_writeback_only(struct drm_crtc_state *st)
{}

static inline bool
is_only_changed_connector(struct drm_crtc_state *st, struct drm_connector *conn)
{}

static inline bool has_flip_h(u32 rot)
{}

void komeda_crtc_get_color_config(struct drm_crtc_state *crtc_st,
				  u32 *color_depths, u32 *color_formats);
unsigned long komeda_crtc_get_aclk(struct komeda_crtc_state *kcrtc_st);

int komeda_kms_setup_crtcs(struct komeda_kms_dev *kms, struct komeda_dev *mdev);

int komeda_kms_add_crtcs(struct komeda_kms_dev *kms, struct komeda_dev *mdev);
int komeda_kms_add_planes(struct komeda_kms_dev *kms, struct komeda_dev *mdev);
int komeda_kms_add_private_objs(struct komeda_kms_dev *kms,
				struct komeda_dev *mdev);
int komeda_kms_add_wb_connectors(struct komeda_kms_dev *kms,
				 struct komeda_dev *mdev);
void komeda_kms_cleanup_private_objs(struct komeda_kms_dev *kms);

void komeda_crtc_handle_event(struct komeda_crtc   *kcrtc,
			      struct komeda_events *evts);
void komeda_crtc_flush_and_wait_for_flip_done(struct komeda_crtc *kcrtc,
					      struct completion *input_flip_done);

struct komeda_kms_dev *komeda_kms_attach(struct komeda_dev *mdev);
void komeda_kms_detach(struct komeda_kms_dev *kms);
void komeda_kms_shutdown(struct komeda_kms_dev *kms);
void komeda_pipeline_dump(struct komeda_pipeline *pipe);

#endif /*_KOMEDA_KMS_H_*/