abm
bool abm;
if (stream_update->abm_level && pipe_ctx->stream_res.abm) {
pipe_ctx->stream_res.abm->funcs->set_abm_level(
pipe_ctx->stream_res.abm, stream->abm_level);
pipe_ctx->stream_res.abm->funcs->set_abm_level(
pipe_ctx->stream_res.abm, stream->abm_level);
struct abm *abm = link->ctx->dc->res_pool->abm;
if (abm == NULL || abm->funcs->get_current_backlight_8_bit == NULL)
return (int) abm->funcs->get_current_backlight_8_bit(abm);
struct abm *abm = core_dc->res_pool->abm;
(abm == NULL) ||
(abm->funcs->set_backlight_level == NULL))
abm->funcs->set_backlight_level(
abm,
struct abm *abm = core_dc->res_pool->abm;
if ((abm == NULL) || (abm->funcs->set_backlight_level == NULL))
abm->funcs->set_abm_immediate_disable(abm);
free_pipe->stream_res.abm = tail_pipe->stream_res.abm;
pipe_ctx->stream_res.abm = pool->abm;
static void dce_abm_init(struct abm *abm)
struct dce_abm *abm_dce = TO_DCE_ABM(abm);
static unsigned int dce_abm_get_current_backlight_8_bit(struct abm *abm)
struct dce_abm *abm_dce = TO_DCE_ABM(abm);
static bool dce_abm_set_level(struct abm *abm, uint32_t level)
struct dce_abm *abm_dce = TO_DCE_ABM(abm);
static bool dce_abm_immediate_disable(struct abm *abm)
struct dce_abm *abm_dce = TO_DCE_ABM(abm);
abm->stored_backlight_registers.BL_PWM_CNTL =
abm->stored_backlight_registers.BL_PWM_CNTL2 =
abm->stored_backlight_registers.BL_PWM_PERIOD_CNTL =
&abm->stored_backlight_registers.LVTMA_PWRSEQ_REF_DIV_BL_PWM_REF_DIV);
static bool dce_abm_init_backlight(struct abm *abm)
struct dce_abm *abm_dce = TO_DCE_ABM(abm);
#define TO_DCE_ABM(abm)\
if (abm->stored_backlight_registers.BL_PWM_CNTL != 0) {
abm->stored_backlight_registers.BL_PWM_CNTL);
abm->stored_backlight_registers.BL_PWM_CNTL2);
container_of(abm, struct dce_abm, base)
abm->stored_backlight_registers.BL_PWM_PERIOD_CNTL);
abm->stored_backlight_registers.
abm->stored_backlight_registers.BL_PWM_CNTL =
abm->stored_backlight_registers.BL_PWM_CNTL2 =
abm->stored_backlight_registers.BL_PWM_PERIOD_CNTL =
&abm->stored_backlight_registers.
struct abm *abm,
struct dce_abm *abm_dce = TO_DCE_ABM(abm);
struct abm *base = &abm_dce->base;
struct abm *dce_abm_create(
abm->ctx->logger
void dce_abm_destroy(struct abm **abm)
struct dce_abm *abm_dce = TO_DCE_ABM(*abm);
*abm = NULL;
struct abm base;
struct abm *dce_abm_create(
void dce_abm_destroy(struct abm **abm);
if (pool->base.abm != NULL)
dce_abm_destroy(&pool->base.abm);
pool->base.abm = dce_abm_create(ctx,
if (pool->base.abm == NULL) {
struct abm *abm;
abm = dc->res_pool->abm;
if (abm != NULL) {
abm->funcs->init_backlight(abm);
abm->funcs->abm_init(abm);
pool->base.abm = dce_abm_create(ctx,
if (pool->base.abm == NULL) {
if (pool->base.abm != NULL)
dce_abm_destroy(&pool->base.abm);
pool->base.abm = dce_abm_create(ctx,
if (pool->base.abm == NULL) {
if (pool->base.abm != NULL)
dce_abm_destroy(&pool->base.abm);
if (pool->base.abm == NULL) {
if (pool->base.abm != NULL)
dce_abm_destroy(&pool->base.abm);
pool->base.abm = dce_abm_create(ctx,
pool->base.abm = dce_abm_create(ctx,
if (pool->base.abm == NULL) {
pool->base.abm = dce_abm_create(ctx,
if (pool->base.abm == NULL) {
if (pool->base.abm != NULL)
dce_abm_destroy(&pool->base.abm);
pool->base.abm = dce_abm_create(ctx,
if (pool->base.abm == NULL) {
if (abm != NULL) {
abm->funcs->init_backlight(abm);
abm->funcs->abm_init(abm);
if (stream_res->abm)
stream_res->abm->funcs->set_abm_level(stream_res->abm, stream->abm_level);
if (stream_res->abm)
stream_res->abm->funcs->set_abm_immediate_disable(stream_res->abm);
struct abm *abm = dc->res_pool->abm;
idle_pipe->stream_res.abm = head_pipe->stream_res.abm;
pool->base.abm = dce_abm_create(ctx,
if (pool->base.abm == NULL) {
if (pool->base.abm != NULL)
dce_abm_destroy(&pool->base.abm);
struct abm *abm;
struct abm *abm;
void (*abm_init)(struct abm *abm);
bool (*set_abm_level)(struct abm *abm, unsigned int abm_level);
bool (*set_abm_immediate_disable)(struct abm *abm);
bool (*init_backlight)(struct abm *abm);
bool (*set_backlight_level)(struct abm *abm,
unsigned int (*get_current_backlight_8_bit)(struct abm *abm);
eg_pi->abm = true;
eg_pi->abm = true;
bool abm;
eg_pi->abm = true;