#include <drm/drm_mipi_dbi.h>
#include <drm/drm_modes.h>
#include <drm/drm_panel.h>
#include <linux/delay.h>
#include <linux/gpio/consumer.h>
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/media-bus-format.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/regulator/consumer.h>
#include <linux/spi/spi.h>
#include <video/mipi_display.h>
#define S6D27A1_PASSWD_L2 …
#define S6D27A1_RESCTL …
#define S6D27A1_PANELCTL2 …
#define S6D27A1_READID1 …
#define S6D27A1_READID2 …
#define S6D27A1_READID3 …
#define S6D27A1_DISPCTL …
#define S6D27A1_MANPWR …
#define S6D27A1_PWRCTL1 …
#define S6D27A1_SRCCTL …
#define S6D27A1_PANELCTL …
static const u8 s6d27a1_dbi_read_commands[] = …;
struct s6d27a1 { … };
static const struct drm_display_mode s6d27a1_480_800_mode = …;
static inline struct s6d27a1 *to_s6d27a1(struct drm_panel *panel)
{ … }
static void s6d27a1_read_mtp_id(struct s6d27a1 *ctx)
{ … }
static int s6d27a1_power_on(struct s6d27a1 *ctx)
{ … }
static int s6d27a1_power_off(struct s6d27a1 *ctx)
{ … }
static int s6d27a1_unprepare(struct drm_panel *panel)
{ … }
static int s6d27a1_disable(struct drm_panel *panel)
{ … }
static int s6d27a1_prepare(struct drm_panel *panel)
{ … }
static int s6d27a1_enable(struct drm_panel *panel)
{ … }
static int s6d27a1_get_modes(struct drm_panel *panel,
struct drm_connector *connector)
{ … }
static const struct drm_panel_funcs s6d27a1_drm_funcs = …;
static int s6d27a1_probe(struct spi_device *spi)
{ … }
static void s6d27a1_remove(struct spi_device *spi)
{ … }
static const struct of_device_id s6d27a1_match[] = …;
MODULE_DEVICE_TABLE(of, s6d27a1_match);
static struct spi_driver s6d27a1_driver = …;
module_spi_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;