drm/amd/display: Change ABM config init interface
[Why & How] change abm config init interface to support multiple ABMs. Signed-off-by: Yongqiang Sun <yongqiang.sun@amd.com> Reviewed-by: Chris Park <Chris.Park@amd.com> Acked-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
dcba603f82
commit
33c8256b3b
@ -1409,7 +1409,7 @@ static int dm_late_init(void *handle)
|
|||||||
if (dmcu)
|
if (dmcu)
|
||||||
ret = dmcu_load_iram(dmcu, params);
|
ret = dmcu_load_iram(dmcu, params);
|
||||||
else if (adev->dm.dc->ctx->dmub_srv)
|
else if (adev->dm.dc->ctx->dmub_srv)
|
||||||
ret = dmub_init_abm_config(adev->dm.dc->res_pool->abm, params);
|
ret = dmub_init_abm_config(adev->dm.dc->res_pool, params);
|
||||||
|
|
||||||
if (!ret)
|
if (!ret)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
@ -657,7 +657,7 @@ void fill_iram_v_2_3(struct iram_table_v_2_2 *ram_table, struct dmcu_iram_parame
|
|||||||
params, ram_table, big_endian);
|
params, ram_table, big_endian);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool dmub_init_abm_config(struct abm *abm,
|
bool dmub_init_abm_config(struct resource_pool *res_pool,
|
||||||
struct dmcu_iram_parameters params)
|
struct dmcu_iram_parameters params)
|
||||||
{
|
{
|
||||||
struct iram_table_v_2_2 ram_table;
|
struct iram_table_v_2_2 ram_table;
|
||||||
@ -665,8 +665,13 @@ bool dmub_init_abm_config(struct abm *abm,
|
|||||||
bool result = false;
|
bool result = false;
|
||||||
uint32_t i, j = 0;
|
uint32_t i, j = 0;
|
||||||
|
|
||||||
if (abm == NULL)
|
#if defined(CONFIG_DRM_AMD_DC_DCN3_0)
|
||||||
|
if (res_pool->abm == NULL && res_pool->multiple_abms[0] == NULL)
|
||||||
return false;
|
return false;
|
||||||
|
#else
|
||||||
|
if (res_pool->abm == NULL)
|
||||||
|
return false;
|
||||||
|
#endif
|
||||||
|
|
||||||
memset(&ram_table, 0, sizeof(ram_table));
|
memset(&ram_table, 0, sizeof(ram_table));
|
||||||
memset(&config, 0, sizeof(config));
|
memset(&config, 0, sizeof(config));
|
||||||
@ -707,8 +712,14 @@ bool dmub_init_abm_config(struct abm *abm,
|
|||||||
|
|
||||||
config.min_abm_backlight = ram_table.min_abm_backlight;
|
config.min_abm_backlight = ram_table.min_abm_backlight;
|
||||||
|
|
||||||
result = abm->funcs->init_abm_config(
|
#if defined(CONFIG_DRM_AMD_DC_DCN3_0)
|
||||||
abm, (char *)(&config), sizeof(struct abm_config_table));
|
if (res_pool->multiple_abms[0]) {
|
||||||
|
result = res_pool->multiple_abms[0]->funcs->init_abm_config(
|
||||||
|
res_pool->multiple_abms[0], (char *)(&config), sizeof(struct abm_config_table));
|
||||||
|
} else
|
||||||
|
#endif
|
||||||
|
result = res_pool->abm->funcs->init_abm_config(
|
||||||
|
res_pool->abm, (char *)(&config), sizeof(struct abm_config_table));
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -28,6 +28,8 @@
|
|||||||
#include "dc/inc/hw/dmcu.h"
|
#include "dc/inc/hw/dmcu.h"
|
||||||
#include "dc/inc/hw/abm.h"
|
#include "dc/inc/hw/abm.h"
|
||||||
|
|
||||||
|
struct resource_pool;
|
||||||
|
|
||||||
|
|
||||||
enum abm_defines {
|
enum abm_defines {
|
||||||
abm_defines_max_level = 4,
|
abm_defines_max_level = 4,
|
||||||
@ -45,7 +47,7 @@ struct dmcu_iram_parameters {
|
|||||||
|
|
||||||
bool dmcu_load_iram(struct dmcu *dmcu,
|
bool dmcu_load_iram(struct dmcu *dmcu,
|
||||||
struct dmcu_iram_parameters params);
|
struct dmcu_iram_parameters params);
|
||||||
bool dmub_init_abm_config(struct abm *abm,
|
bool dmub_init_abm_config(struct resource_pool *res_pool,
|
||||||
struct dmcu_iram_parameters params);
|
struct dmcu_iram_parameters params);
|
||||||
|
|
||||||
#endif /* MODULES_POWER_POWER_HELPERS_H_ */
|
#endif /* MODULES_POWER_POWER_HELPERS_H_ */
|
||||||
|
Loading…
Reference in New Issue
Block a user