Commit 2f5af82e authored by Alex Deucher's avatar Alex Deucher

drm/amdgpu/atpx: track whether if this is a hybrid graphics platform

hybrid graphics in this case refers to systems which use the new
platform d3 cold ACPI methods as opposed to ATPX for dGPU power
control.
Reviewed-by: default avatarHawking Zhang <Hawking.Zhang@amd.com>
Acked-by: default avatarChristian König <christian.koenig@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 410ca8d1
...@@ -2401,10 +2401,12 @@ bool amdgpu_device_is_px(struct drm_device *dev); ...@@ -2401,10 +2401,12 @@ bool amdgpu_device_is_px(struct drm_device *dev);
void amdgpu_register_atpx_handler(void); 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);
#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; }
#endif #endif
/* /*
......
...@@ -28,6 +28,7 @@ struct amdgpu_atpx_functions { ...@@ -28,6 +28,7 @@ struct amdgpu_atpx_functions {
struct amdgpu_atpx { struct amdgpu_atpx {
acpi_handle handle; acpi_handle handle;
struct amdgpu_atpx_functions functions; struct amdgpu_atpx_functions functions;
bool is_hybrid;
}; };
static struct amdgpu_atpx_priv { static struct amdgpu_atpx_priv {
...@@ -68,6 +69,10 @@ bool amdgpu_has_atpx_dgpu_power_cntl(void) { ...@@ -68,6 +69,10 @@ bool amdgpu_has_atpx_dgpu_power_cntl(void) {
return amdgpu_atpx_priv.atpx.functions.power_cntl; return amdgpu_atpx_priv.atpx.functions.power_cntl;
} }
bool amdgpu_is_atpx_hybrid(void) {
return amdgpu_atpx_priv.atpx.is_hybrid;
}
/** /**
* amdgpu_atpx_call - call an ATPX method * amdgpu_atpx_call - call an ATPX method
* *
...@@ -192,9 +197,11 @@ static int amdgpu_atpx_validate(struct amdgpu_atpx *atpx) ...@@ -192,9 +197,11 @@ static int amdgpu_atpx_validate(struct amdgpu_atpx *atpx)
ATPX_DYNAMIC_DGPU_POWER_OFF_SUPPORTED)) ATPX_DYNAMIC_DGPU_POWER_OFF_SUPPORTED))
atpx->functions.power_cntl = true; atpx->functions.power_cntl = true;
atpx->is_hybrid = false;
if (valid_bits & ATPX_MS_HYBRID_GFX_SUPPORTED) { if (valid_bits & ATPX_MS_HYBRID_GFX_SUPPORTED) {
printk("Hybrid Graphics, ATPX dGPU power cntl disabled\n"); printk("ATPX Hybrid Graphics\n");
atpx->functions.power_cntl = false; atpx->functions.power_cntl = false;
atpx->is_hybrid = 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