@@ -3467,26 +3467,28 @@ static u32 convert_brightness_to_user(const struct amdgpu_dm_backlight_caps *cap
3467
3467
max - min );
3468
3468
}
3469
3469
3470
- static int amdgpu_dm_backlight_update_status (struct backlight_device * bd )
3470
+ static int amdgpu_dm_backlight_set_level (struct amdgpu_display_manager * dm ,
3471
+ u32 user_brightness )
3471
3472
{
3472
- struct amdgpu_display_manager * dm = bl_get_data (bd );
3473
3473
struct amdgpu_dm_backlight_caps caps ;
3474
3474
struct dc_link * link [AMDGPU_DM_MAX_NUM_EDP ];
3475
- u32 brightness ;
3475
+ u32 brightness [ AMDGPU_DM_MAX_NUM_EDP ] ;
3476
3476
bool rc ;
3477
3477
int i ;
3478
3478
3479
3479
amdgpu_dm_update_backlight_caps (dm );
3480
3480
caps = dm -> backlight_caps ;
3481
3481
3482
- for (i = 0 ; i < dm -> num_of_edps ; i ++ )
3482
+ for (i = 0 ; i < dm -> num_of_edps ; i ++ ) {
3483
+ dm -> brightness [i ] = user_brightness ;
3484
+ brightness [i ] = convert_brightness_from_user (& caps , dm -> brightness [i ]);
3483
3485
link [i ] = (struct dc_link * )dm -> backlight_link [i ];
3486
+ }
3484
3487
3485
- brightness = convert_brightness_from_user (& caps , bd -> props .brightness );
3486
- // Change brightness based on AUX property
3488
+ /* Change brightness based on AUX property */
3487
3489
if (caps .aux_support ) {
3488
3490
for (i = 0 ; i < dm -> num_of_edps ; i ++ ) {
3489
- rc = dc_link_set_backlight_level_nits (link [i ], true, brightness ,
3491
+ rc = dc_link_set_backlight_level_nits (link [i ], true, brightness [ i ] ,
3490
3492
AUX_BL_DEFAULT_TRANSITION_TIME_MS );
3491
3493
if (!rc ) {
3492
3494
DRM_ERROR ("DM: Failed to update backlight via AUX on eDP[%d]\n" , i );
@@ -3495,7 +3497,7 @@ static int amdgpu_dm_backlight_update_status(struct backlight_device *bd)
3495
3497
}
3496
3498
} else {
3497
3499
for (i = 0 ; i < dm -> num_of_edps ; i ++ ) {
3498
- rc = dc_link_set_backlight_level (dm -> backlight_link [i ], brightness , 0 );
3500
+ rc = dc_link_set_backlight_level (dm -> backlight_link [i ], brightness [ i ] , 0 );
3499
3501
if (!rc ) {
3500
3502
DRM_ERROR ("DM: Failed to update backlight on eDP[%d]\n" , i );
3501
3503
break ;
@@ -3506,9 +3508,17 @@ static int amdgpu_dm_backlight_update_status(struct backlight_device *bd)
3506
3508
return rc ? 0 : 1 ;
3507
3509
}
3508
3510
3509
- static int amdgpu_dm_backlight_get_brightness (struct backlight_device * bd )
3511
+ static int amdgpu_dm_backlight_update_status (struct backlight_device * bd )
3510
3512
{
3511
3513
struct amdgpu_display_manager * dm = bl_get_data (bd );
3514
+
3515
+ amdgpu_dm_backlight_set_level (dm , bd -> props .brightness );
3516
+
3517
+ return 0 ;
3518
+ }
3519
+
3520
+ static u32 amdgpu_dm_backlight_get_level (struct amdgpu_display_manager * dm )
3521
+ {
3512
3522
struct amdgpu_dm_backlight_caps caps ;
3513
3523
3514
3524
amdgpu_dm_update_backlight_caps (dm );
@@ -3521,17 +3531,24 @@ static int amdgpu_dm_backlight_get_brightness(struct backlight_device *bd)
3521
3531
3522
3532
rc = dc_link_get_backlight_level_nits (link , & avg , & peak );
3523
3533
if (!rc )
3524
- return bd -> props . brightness ;
3534
+ return dm -> brightness [ 0 ] ;
3525
3535
return convert_brightness_to_user (& caps , avg );
3526
3536
} else {
3527
3537
int ret = dc_link_get_backlight_level (dm -> backlight_link [0 ]);
3528
3538
3529
3539
if (ret == DC_ERROR_UNEXPECTED )
3530
- return bd -> props . brightness ;
3540
+ return dm -> brightness [ 0 ] ;
3531
3541
return convert_brightness_to_user (& caps , ret );
3532
3542
}
3533
3543
}
3534
3544
3545
+ static int amdgpu_dm_backlight_get_brightness (struct backlight_device * bd )
3546
+ {
3547
+ struct amdgpu_display_manager * dm = bl_get_data (bd );
3548
+
3549
+ return amdgpu_dm_backlight_get_level (dm );
3550
+ }
3551
+
3535
3552
static const struct backlight_ops amdgpu_dm_backlight_ops = {
3536
3553
.options = BL_CORE_SUSPENDRESUME ,
3537
3554
.get_brightness = amdgpu_dm_backlight_get_brightness ,
@@ -3543,8 +3560,11 @@ amdgpu_dm_register_backlight_device(struct amdgpu_display_manager *dm)
3543
3560
{
3544
3561
char bl_name [16 ];
3545
3562
struct backlight_properties props = { 0 };
3563
+ int i ;
3546
3564
3547
3565
amdgpu_dm_update_backlight_caps (dm );
3566
+ for (i = 0 ; i < dm -> num_of_edps ; i ++ )
3567
+ dm -> brightness [i ] = AMDGPU_MAX_BL_LEVEL ;
3548
3568
3549
3569
props .max_brightness = AMDGPU_MAX_BL_LEVEL ;
3550
3570
props .brightness = AMDGPU_MAX_BL_LEVEL ;
0 commit comments