#include <linux/backlight.h>
#include <linux/delay.h>
#include <linux/gpio/consumer.h>
#include <linux/jiffies.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/regulator/consumer.h>
#include <drm/drm_connector.h>
#include <drm/drm_mipi_dsi.h>
#include <drm/drm_modes.h>
#include <drm/drm_panel.h>
#include <video/mipi_display.h>
#define DCS_GET_ID1 …
#define DCS_GET_ID2 …
#define DCS_GET_ID3 …
#define DCS_REGULATOR_SUPPLY_NUM …
static const struct of_device_id dsicm_of_match[];
struct dsic_panel_data { … };
struct panel_drv_data { … };
static inline struct panel_drv_data *panel_to_ddata(struct drm_panel *panel)
{ … }
static void dsicm_bl_power(struct panel_drv_data *ddata, bool enable)
{ … }
static void hw_guard_start(struct panel_drv_data *ddata, int guard_msec)
{ … }
static void hw_guard_wait(struct panel_drv_data *ddata)
{ … }
static int dsicm_dcs_read_1(struct panel_drv_data *ddata, u8 dcs_cmd, u8 *data)
{ … }
static int dsicm_dcs_write_1(struct panel_drv_data *ddata, u8 dcs_cmd, u8 param)
{ … }
static int dsicm_sleep_in(struct panel_drv_data *ddata)
{ … }
static int dsicm_sleep_out(struct panel_drv_data *ddata)
{ … }
static int dsicm_get_id(struct panel_drv_data *ddata, u8 *id1, u8 *id2, u8 *id3)
{ … }
static int dsicm_set_update_window(struct panel_drv_data *ddata)
{ … }
static int dsicm_bl_update_status(struct backlight_device *dev)
{ … }
static int dsicm_bl_get_intensity(struct backlight_device *dev)
{ … }
static const struct backlight_ops dsicm_bl_ops = …;
static ssize_t num_dsi_errors_show(struct device *dev,
struct device_attribute *attr, char *buf)
{ … }
static ssize_t hw_revision_show(struct device *dev,
struct device_attribute *attr, char *buf)
{ … }
static DEVICE_ATTR_RO(num_dsi_errors);
static DEVICE_ATTR_RO(hw_revision);
static struct attribute *dsicm_attrs[] = …;
static const struct attribute_group dsicm_attr_group = …;
static void dsicm_hw_reset(struct panel_drv_data *ddata)
{ … }
static int dsicm_power_on(struct panel_drv_data *ddata)
{ … }
static int dsicm_power_off(struct panel_drv_data *ddata)
{ … }
static int dsicm_prepare(struct drm_panel *panel)
{ … }
static int dsicm_enable(struct drm_panel *panel)
{ … }
static int dsicm_unprepare(struct drm_panel *panel)
{ … }
static int dsicm_disable(struct drm_panel *panel)
{ … }
static int dsicm_get_modes(struct drm_panel *panel,
struct drm_connector *connector)
{ … }
static const struct drm_panel_funcs dsicm_panel_funcs = …;
static int dsicm_probe_of(struct mipi_dsi_device *dsi)
{ … }
static int dsicm_probe(struct mipi_dsi_device *dsi)
{ … }
static void dsicm_remove(struct mipi_dsi_device *dsi)
{ … }
static const struct dsic_panel_data taal_data = …;
static const struct dsic_panel_data himalaya_data = …;
static const struct dsic_panel_data droid4_data = …;
static const struct of_device_id dsicm_of_match[] = …;
MODULE_DEVICE_TABLE(of, dsicm_of_match);
static struct mipi_dsi_driver dsicm_driver = …;
module_mipi_dsi_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;