Commit efc83cf4 authored by Alex Deucher's avatar Alex Deucher

drm/amdgpu/atpx: check for ATIF dGPU wake for display events support

Some ATPX laptops implement special circuitry to generate
display hotplug events via ACPI when the dGPU is powered off.
Check if this is supported.
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 9cee3c1f
...@@ -2450,11 +2450,13 @@ void amdgpu_register_atpx_handler(void); ...@@ -2450,11 +2450,13 @@ void amdgpu_register_atpx_handler(void);
void amdgpu_unregister_atpx_handler(void); void amdgpu_unregister_atpx_handler(void);
bool amdgpu_has_atpx_dgpu_power_cntl(void); bool amdgpu_has_atpx_dgpu_power_cntl(void);
bool amdgpu_is_atpx_hybrid(void); bool amdgpu_is_atpx_hybrid(void);
bool amdgpu_atpx_dgpu_req_power_for_displays(void);
#else #else
static inline void amdgpu_register_atpx_handler(void) {} static inline void amdgpu_register_atpx_handler(void) {}
static inline void amdgpu_unregister_atpx_handler(void) {} static inline void amdgpu_unregister_atpx_handler(void) {}
static inline bool amdgpu_has_atpx_dgpu_power_cntl(void) { return false; } static inline bool amdgpu_has_atpx_dgpu_power_cntl(void) { return false; }
static inline bool amdgpu_is_atpx_hybrid(void) { return false; } static inline bool amdgpu_is_atpx_hybrid(void) { return false; }
static inline bool amdgpu_atpx_dgpu_req_power_for_displays(void) { return false; }
#endif #endif
/* /*
......
...@@ -29,6 +29,7 @@ struct amdgpu_atpx { ...@@ -29,6 +29,7 @@ struct amdgpu_atpx {
acpi_handle handle; acpi_handle handle;
struct amdgpu_atpx_functions functions; struct amdgpu_atpx_functions functions;
bool is_hybrid; bool is_hybrid;
bool dgpu_req_power_for_displays;
}; };
static struct amdgpu_atpx_priv { static struct amdgpu_atpx_priv {
...@@ -73,6 +74,10 @@ bool amdgpu_is_atpx_hybrid(void) { ...@@ -73,6 +74,10 @@ bool amdgpu_is_atpx_hybrid(void) {
return amdgpu_atpx_priv.atpx.is_hybrid; return amdgpu_atpx_priv.atpx.is_hybrid;
} }
bool amdgpu_atpx_dgpu_req_power_for_displays(void) {
return amdgpu_atpx_priv.atpx.dgpu_req_power_for_displays;
}
/** /**
* amdgpu_atpx_call - call an ATPX method * amdgpu_atpx_call - call an ATPX method
* *
...@@ -213,6 +218,10 @@ static int amdgpu_atpx_validate(struct amdgpu_atpx *atpx) ...@@ -213,6 +218,10 @@ static int amdgpu_atpx_validate(struct amdgpu_atpx *atpx)
atpx->is_hybrid = true; atpx->is_hybrid = true;
} }
atpx->dgpu_req_power_for_displays = false;
if (valid_bits & ATPX_DGPU_REQ_POWER_FOR_DISPLAYS)
atpx->dgpu_req_power_for_displays = true;
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment