#include <linux/component.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/of_graph.h>
#include <linux/platform_device.h>
#include <drm/drm_atomic_helper.h>
#include <drm/drm_drv.h>
#include <drm/drm_fbdev_dma.h>
#include <drm/drm_gem_dma_helper.h>
#include <drm/drm_gem_framebuffer_helper.h>
#include <drm/drm_module.h>
#include <drm/drm_of.h>
#include <drm/drm_probe_helper.h>
#include <drm/drm_vblank.h>
#include "kirin_drm_drv.h"
#define KIRIN_MAX_PLANE …
struct kirin_drm_private { … };
static int kirin_drm_crtc_init(struct drm_device *dev, struct drm_crtc *crtc,
struct drm_plane *plane,
const struct kirin_drm_data *driver_data)
{ … }
static int kirin_drm_plane_init(struct drm_device *dev, struct drm_plane *plane,
enum drm_plane_type type,
const struct kirin_drm_data *data)
{ … }
static void kirin_drm_private_cleanup(struct drm_device *dev)
{ … }
static int kirin_drm_private_init(struct drm_device *dev,
const struct kirin_drm_data *driver_data)
{ … }
static int kirin_drm_kms_init(struct drm_device *dev,
const struct kirin_drm_data *driver_data)
{ … }
static int kirin_drm_kms_cleanup(struct drm_device *dev)
{ … }
static int kirin_drm_bind(struct device *dev)
{ … }
static void kirin_drm_unbind(struct device *dev)
{ … }
static const struct component_master_ops kirin_drm_ops = …;
static int kirin_drm_platform_probe(struct platform_device *pdev)
{ … }
static void kirin_drm_platform_remove(struct platform_device *pdev)
{ … }
static void kirin_drm_platform_shutdown(struct platform_device *pdev)
{ … }
static const struct of_device_id kirin_drm_dt_ids[] = …;
MODULE_DEVICE_TABLE(of, kirin_drm_dt_ids);
static struct platform_driver kirin_drm_platform_driver = …;
drm_module_platform_driver(…);
MODULE_AUTHOR(…) …;
MODULE_AUTHOR(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;