drm/radeon/dpm: endian fixes for extended power tables
authorAlex Deucher <alexander.deucher@amd.com>
Wed, 20 Mar 2013 16:44:11 +0000 (12:44 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 27 Jun 2013 23:16:34 +0000 (19:16 -0400)
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/radeon/r600_dpm.c

index a213d5a..e220023 100644 (file)
@@ -786,7 +786,8 @@ int r600_parse_extended_power_table(struct radeon_device *rdev)
        power_info = (union power_info *)(mode_info->atom_context->bios + data_offset);
 
        /* fan table */
-       if (power_info->pplib.usTableSize >= sizeof(struct _ATOM_PPLIB_POWERPLAYTABLE3)) {
+       if (le16_to_cpu(power_info->pplib.usTableSize) >=
+           sizeof(struct _ATOM_PPLIB_POWERPLAYTABLE3)) {
                if (power_info->pplib3.usFanTableOffset) {
                        fan_info = (union fan_info *)(mode_info->atom_context->bios + data_offset +
                                                      le16_to_cpu(power_info->pplib3.usFanTableOffset));
@@ -807,7 +808,8 @@ int r600_parse_extended_power_table(struct radeon_device *rdev)
        }
 
        /* clock dependancy tables, shedding tables */
-       if (power_info->pplib.usTableSize >= sizeof(struct _ATOM_PPLIB_POWERPLAYTABLE4)) {
+       if (le16_to_cpu(power_info->pplib.usTableSize) >=
+           sizeof(struct _ATOM_PPLIB_POWERPLAYTABLE4)) {
                if (power_info->pplib4.usVddcDependencyOnSCLKOffset) {
                        dep_table = (ATOM_PPLIB_Clock_Voltage_Dependency_Table *)
                                (mode_info->atom_context->bios + data_offset +
@@ -887,7 +889,8 @@ int r600_parse_extended_power_table(struct radeon_device *rdev)
        }
 
        /* cac data */
-       if (power_info->pplib.usTableSize >= sizeof(struct _ATOM_PPLIB_POWERPLAYTABLE5)) {
+       if (le16_to_cpu(power_info->pplib.usTableSize) >=
+           sizeof(struct _ATOM_PPLIB_POWERPLAYTABLE5)) {
                rdev->pm.dpm.tdp_limit = le32_to_cpu(power_info->pplib5.ulTDPLimit);
                rdev->pm.dpm.near_tdp_limit = le32_to_cpu(power_info->pplib5.ulNearTDPLimit);
                rdev->pm.dpm.tdp_od_limit = le16_to_cpu(power_info->pplib5.usTDPODLimit);