diff options
author | Weizhung Ding <weizhungding@google.com> | 2021-07-12 09:41:37 +0800 |
---|---|---|
committer | TreeHugger Robot <treehugger-gerrit@google.com> | 2021-07-14 03:31:28 +0000 |
commit | c25c90856ba20c77da29fd058cce4d17aa845499 (patch) | |
tree | 15b99773cb37b89513e4f76d0d35cfbcdb3f0f34 | |
parent | 5a368eaaeaed3652f16b8eb7de49eef3890127a7 (diff) | |
download | display-c25c90856ba20c77da29fd058cce4d17aa845499.tar.gz |
samsung: panel: add set_power function
Add set_power function for panel specific power
on/off sequence.
Bug: 184105950
Test: suspend/resume
Change-Id: I8ed6a58f80edc18c26594831c6ec449a7cdc4a3c
Signed-off-by: Weizhung Ding <weizhungding@google.com>
-rw-r--r-- | samsung/panel/panel-samsung-drv.c | 26 | ||||
-rw-r--r-- | samsung/panel/panel-samsung-drv.h | 7 |
2 files changed, 29 insertions, 4 deletions
diff --git a/samsung/panel/panel-samsung-drv.c b/samsung/panel/panel-samsung-drv.c index f408b5b..76903ba 100644 --- a/samsung/panel/panel-samsung-drv.c +++ b/samsung/panel/panel-samsung-drv.c @@ -385,13 +385,10 @@ void exynos_panel_reset(struct exynos_panel *ctx) } EXPORT_SYMBOL(exynos_panel_reset); -int exynos_panel_set_power(struct exynos_panel *ctx, bool on) +static int _exynos_panel_set_power(struct exynos_panel *ctx, bool on) { int ret; - if (IS_ENABLED(CONFIG_BOARD_EMULATOR)) - return 0; - if (on) { if (ctx->enable_gpio) { gpiod_set_value(ctx->enable_gpio, 1); @@ -485,6 +482,27 @@ int exynos_panel_set_power(struct exynos_panel *ctx, bool on) } } + return 0; +} + +int exynos_panel_set_power(struct exynos_panel *ctx, bool on) +{ + const struct exynos_panel_funcs *funcs = ctx->desc->exynos_panel_func; + int ret; + + if (IS_ENABLED(CONFIG_BOARD_EMULATOR)) + return 0; + + if (funcs && funcs->set_power) + ret = funcs->set_power(ctx, on); + else + ret = _exynos_panel_set_power(ctx, on); + + if (ret) { + dev_err(ctx->dev, "failed to set power: ret %d \n", ret); + return ret; + } + ctx->bl->props.power = on ? FB_BLANK_UNBLANK : FB_BLANK_POWERDOWN; return 0; diff --git a/samsung/panel/panel-samsung-drv.h b/samsung/panel/panel-samsung-drv.h index c88a581..615eaeb 100644 --- a/samsung/panel/panel-samsung-drv.h +++ b/samsung/panel/panel-samsung-drv.h @@ -155,6 +155,13 @@ struct exynos_panel_funcs { void (*set_local_hbm_mode)(struct exynos_panel *exynos_panel, bool local_hbm_en); /** + * @set_power: + * + * This callback is used to implement panel specific power on/off sequence. + */ + int (*set_power)(struct exynos_panel *exynos_panel, bool enable); + + /** * @is_mode_seamless: * * This callback is used to check if a switch to a particular mode can be done |