#include <linux/backlight.h>
#include <linux/delay.h>
#include <linux/gpio/consumer.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/regulator/consumer.h>
#include <drm/drm_mipi_dsi.h>
#include <drm/drm_modes.h>
#include <drm/drm_panel.h>
#define S6E3HA2_MIN_BRIGHTNESS …
#define S6E3HA2_MAX_BRIGHTNESS …
#define S6E3HA2_DEFAULT_BRIGHTNESS …
#define S6E3HA2_NUM_GAMMA_STEPS …
#define S6E3HA2_GAMMA_CMD_CNT …
#define S6E3HA2_VINT_STATUS_MAX …
static const u8 gamma_tbl[S6E3HA2_NUM_GAMMA_STEPS][S6E3HA2_GAMMA_CMD_CNT] = …;
static const unsigned char vint_table[S6E3HA2_VINT_STATUS_MAX] = …;
enum s6e3ha2_type { … };
struct s6e3ha2_panel_desc { … };
struct s6e3ha2 { … };
static int s6e3ha2_dcs_write(struct s6e3ha2 *ctx, const void *data, size_t len)
{ … }
#define s6e3ha2_dcs_write_seq_static(ctx, seq...) …
#define s6e3ha2_call_write_func(ret, func) …
static int s6e3ha2_test_key_on_f0(struct s6e3ha2 *ctx)
{ … }
static int s6e3ha2_test_key_off_f0(struct s6e3ha2 *ctx)
{ … }
static int s6e3ha2_test_key_on_fc(struct s6e3ha2 *ctx)
{ … }
static int s6e3ha2_test_key_off_fc(struct s6e3ha2 *ctx)
{ … }
static int s6e3ha2_single_dsi_set(struct s6e3ha2 *ctx)
{ … }
static int s6e3ha2_freq_calibration(struct s6e3ha2 *ctx)
{ … }
static int s6e3ha2_aor_control(struct s6e3ha2 *ctx)
{ … }
static int s6e3ha2_caps_elvss_set(struct s6e3ha2 *ctx)
{ … }
static int s6e3ha2_acl_off(struct s6e3ha2 *ctx)
{ … }
static int s6e3ha2_acl_off_opr(struct s6e3ha2 *ctx)
{ … }
static int s6e3ha2_test_global(struct s6e3ha2 *ctx)
{ … }
static int s6e3ha2_test(struct s6e3ha2 *ctx)
{ … }
static int s6e3ha2_touch_hsync_on1(struct s6e3ha2 *ctx)
{ … }
static int s6e3ha2_pentile_control(struct s6e3ha2 *ctx)
{ … }
static int s6e3ha2_poc_global(struct s6e3ha2 *ctx)
{ … }
static int s6e3ha2_poc_setting(struct s6e3ha2 *ctx)
{ … }
static int s6e3ha2_pcd_set_off(struct s6e3ha2 *ctx)
{ … }
static int s6e3ha2_err_fg_set(struct s6e3ha2 *ctx)
{ … }
static int s6e3ha2_hbm_off(struct s6e3ha2 *ctx)
{ … }
static int s6e3ha2_te_start_setting(struct s6e3ha2 *ctx)
{ … }
static int s6e3ha2_gamma_update(struct s6e3ha2 *ctx)
{ … }
static int s6e3ha2_get_brightness(struct backlight_device *bl_dev)
{ … }
static int s6e3ha2_set_vint(struct s6e3ha2 *ctx)
{ … }
static unsigned int s6e3ha2_get_brightness_index(unsigned int brightness)
{ … }
static int s6e3ha2_update_gamma(struct s6e3ha2 *ctx, unsigned int brightness)
{ … }
static int s6e3ha2_set_brightness(struct backlight_device *bl_dev)
{ … }
static const struct backlight_ops s6e3ha2_bl_ops = …;
static int s6e3ha2_panel_init(struct s6e3ha2 *ctx)
{ … }
static int s6e3ha2_power_off(struct s6e3ha2 *ctx)
{ … }
static int s6e3ha2_disable(struct drm_panel *panel)
{ … }
static int s6e3ha2_unprepare(struct drm_panel *panel)
{ … }
static int s6e3ha2_power_on(struct s6e3ha2 *ctx)
{ … }
static int s6e3ha2_prepare(struct drm_panel *panel)
{ … }
static int s6e3ha2_enable(struct drm_panel *panel)
{ … }
static const struct drm_display_mode s6e3ha2_mode = …;
static const struct s6e3ha2_panel_desc samsung_s6e3ha2 = …;
static const struct drm_display_mode s6e3hf2_mode = …;
static const struct s6e3ha2_panel_desc samsung_s6e3hf2 = …;
static int s6e3ha2_get_modes(struct drm_panel *panel,
struct drm_connector *connector)
{ … }
static const struct drm_panel_funcs s6e3ha2_drm_funcs = …;
static int s6e3ha2_probe(struct mipi_dsi_device *dsi)
{ … }
static void s6e3ha2_remove(struct mipi_dsi_device *dsi)
{ … }
static const struct of_device_id s6e3ha2_of_match[] = …;
MODULE_DEVICE_TABLE(of, s6e3ha2_of_match);
static struct mipi_dsi_driver s6e3ha2_driver = …;
module_mipi_dsi_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_AUTHOR(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;