Skip to content

Commit 33c8256

Browse files
Yongqiang Sunalexdeucher
authored andcommitted
drm/amd/display: Change ABM config init interface
[Why & How] change abm config init interface to support multiple ABMs. Signed-off-by: Yongqiang Sun <[email protected]> Reviewed-by: Chris Park <[email protected]> Acked-by: Rodrigo Siqueira <[email protected]> Signed-off-by: Alex Deucher <[email protected]>
1 parent dcba603 commit 33c8256

File tree

3 files changed

+19
-6
lines changed

3 files changed

+19
-6
lines changed

drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1409,7 +1409,7 @@ static int dm_late_init(void *handle)
14091409
if (dmcu)
14101410
ret = dmcu_load_iram(dmcu, params);
14111411
else if (adev->dm.dc->ctx->dmub_srv)
1412-
ret = dmub_init_abm_config(adev->dm.dc->res_pool->abm, params);
1412+
ret = dmub_init_abm_config(adev->dm.dc->res_pool, params);
14131413

14141414
if (!ret)
14151415
return -EINVAL;

drivers/gpu/drm/amd/display/modules/power/power_helpers.c

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -657,16 +657,21 @@ void fill_iram_v_2_3(struct iram_table_v_2_2 *ram_table, struct dmcu_iram_parame
657657
params, ram_table, big_endian);
658658
}
659659

660-
bool dmub_init_abm_config(struct abm *abm,
660+
bool dmub_init_abm_config(struct resource_pool *res_pool,
661661
struct dmcu_iram_parameters params)
662662
{
663663
struct iram_table_v_2_2 ram_table;
664664
struct abm_config_table config;
665665
bool result = false;
666666
uint32_t i, j = 0;
667667

668-
if (abm == NULL)
668+
#if defined(CONFIG_DRM_AMD_DC_DCN3_0)
669+
if (res_pool->abm == NULL && res_pool->multiple_abms[0] == NULL)
669670
return false;
671+
#else
672+
if (res_pool->abm == NULL)
673+
return false;
674+
#endif
670675

671676
memset(&ram_table, 0, sizeof(ram_table));
672677
memset(&config, 0, sizeof(config));
@@ -707,8 +712,14 @@ bool dmub_init_abm_config(struct abm *abm,
707712

708713
config.min_abm_backlight = ram_table.min_abm_backlight;
709714

710-
result = abm->funcs->init_abm_config(
711-
abm, (char *)(&config), sizeof(struct abm_config_table));
715+
#if defined(CONFIG_DRM_AMD_DC_DCN3_0)
716+
if (res_pool->multiple_abms[0]) {
717+
result = res_pool->multiple_abms[0]->funcs->init_abm_config(
718+
res_pool->multiple_abms[0], (char *)(&config), sizeof(struct abm_config_table));
719+
} else
720+
#endif
721+
result = res_pool->abm->funcs->init_abm_config(
722+
res_pool->abm, (char *)(&config), sizeof(struct abm_config_table));
712723

713724
return result;
714725
}

drivers/gpu/drm/amd/display/modules/power/power_helpers.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@
2828
#include "dc/inc/hw/dmcu.h"
2929
#include "dc/inc/hw/abm.h"
3030

31+
struct resource_pool;
32+
3133

3234
enum abm_defines {
3335
abm_defines_max_level = 4,
@@ -45,7 +47,7 @@ struct dmcu_iram_parameters {
4547

4648
bool dmcu_load_iram(struct dmcu *dmcu,
4749
struct dmcu_iram_parameters params);
48-
bool dmub_init_abm_config(struct abm *abm,
50+
bool dmub_init_abm_config(struct resource_pool *res_pool,
4951
struct dmcu_iram_parameters params);
5052

5153
#endif /* MODULES_POWER_POWER_HELPERS_H_ */

0 commit comments

Comments
 (0)