summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/powerplay/hwmgr/ppevvmath.h
diff options
context:
space:
mode:
authorArnd Bergmann <arnd@arndb.de>2016-01-01 14:07:41 +0100
committerAlex Deucher <alexander.deucher@amd.com>2016-01-04 10:36:58 -0500
commit6a53b31349e7fbe6f742b7f09d7c2118d4fe81e3 (patch)
tree855a3ba3d3cfd2297141a7431e6cf3e54f47b151 /drivers/gpu/drm/amd/powerplay/hwmgr/ppevvmath.h
parentc11b8989635166c5a1e6aac1853a847bd664f8db (diff)
downloadlinux-6a53b31349e7fbe6f742b7f09d7c2118d4fe81e3.tar.bz2
drm: powerplay: use div64_s64 instead of do_div
The newly added code for Fiji creates a correct compiler warning about invalid use of the do_div macro: In file included from powerplay/hwmgr/ppatomctrl.c:31:0: drivers/gpu/drm/amd/amdgpu/../powerplay/hwmgr/ppevvmath.h: In function 'fDivide': drivers/gpu/drm/amd/amdgpu/../powerplay/hwmgr/ppevvmath.h:382:89: warning: comparison of distinct pointer types lacks a cast do_div(longlongX, longlongY); /*Q(32,32) divided by Q(16,16) = Q(16,16) Back to original format */ do_div() divides an unsigned 64-bit number by an unsigned 32-bit number. The code instead wants to divide two signed 64-bit numbers, which is done using the div64_s64 function. Reviewed-by: Thierry Reding <treding@nvidia.com> Reviewed-by: Christian König <christian.koenig@amd.com> Signed-off-by: Arnd Bergmann <arnd@arndb.de> Fixes: 770911a3cfbb ("drm/amd/powerplay: add/update headers for Fiji SMU and DPM") Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/powerplay/hwmgr/ppevvmath.h')
-rw-r--r--drivers/gpu/drm/amd/powerplay/hwmgr/ppevvmath.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/ppevvmath.h b/drivers/gpu/drm/amd/powerplay/hwmgr/ppevvmath.h
index 42f2423cddea..411cb0fcdf98 100644
--- a/drivers/gpu/drm/amd/powerplay/hwmgr/ppevvmath.h
+++ b/drivers/gpu/drm/amd/powerplay/hwmgr/ppevvmath.h
@@ -379,7 +379,7 @@ fInt fDivide (fInt X, fInt Y)
longlongX = longlongX << 16; /*Q(16,16) -> Q(32,32) */
- do_div(longlongX, longlongY); /*Q(32,32) divided by Q(16,16) = Q(16,16) Back to original format */
+ div64_s64(longlongX, longlongY); /*Q(32,32) divided by Q(16,16) = Q(16,16) Back to original format */
fQuotient.full = (int)longlongX;
return fQuotient;