drm/amdgpu/atpx: track whether if this is a hybrid graphics platform
authorAlex Deucher <alexander.deucher@amd.com>
Thu, 2 Jun 2016 13:04:01 +0000 (09:04 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 7 Jul 2016 18:51:07 +0000 (14:51 -0400)
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: Hawking Zhang <Hawking.Zhang@amd.com>
Acked-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu.h
drivers/gpu/drm/amd/amdgpu/amdgpu_atpx_handler.c

index 3cc2bd797e51661c70893cf62e8ec3b7d859edba..b6c8309ce89105bffc2f784cfa9161be73fde7ea 100644 (file)
@@ -2401,10 +2401,12 @@ bool amdgpu_device_is_px(struct drm_device *dev);
 void amdgpu_register_atpx_handler(void);
 void amdgpu_unregister_atpx_handler(void);
 bool amdgpu_has_atpx_dgpu_power_cntl(void);
+bool amdgpu_is_atpx_hybrid(void);
 #else
 static inline void amdgpu_register_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_is_atpx_hybrid(void) { return false; }
 #endif
 
 /*
index 90dfedc5a5caa8cf291408658c3543b4d90b9efe..3e973c7942f0b5ad0df94c9f887ff8a32c952d14 100644 (file)
@@ -28,6 +28,7 @@ struct amdgpu_atpx_functions {
 struct amdgpu_atpx {
        acpi_handle handle;
        struct amdgpu_atpx_functions functions;
+       bool is_hybrid;
 };
 
 static struct amdgpu_atpx_priv {
@@ -68,6 +69,10 @@ bool amdgpu_has_atpx_dgpu_power_cntl(void) {
        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
  *
@@ -192,9 +197,11 @@ static int amdgpu_atpx_validate(struct amdgpu_atpx *atpx)
                          ATPX_DYNAMIC_DGPU_POWER_OFF_SUPPORTED))
                atpx->functions.power_cntl = true;
 
+       atpx->is_hybrid = false;
        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->is_hybrid = true;
        }
 
        return 0;