atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args);
 }
 
+union atom_enable_ss {
+       ENABLE_LVDS_SS_PARAMETERS legacy;
+       ENABLE_SPREAD_SPECTRUM_ON_PPLL_PS_ALLOCATION v1;
+};
+
 static void atombios_set_ss(struct drm_crtc *crtc, int enable)
 {
        struct radeon_crtc *radeon_crtc = to_radeon_crtc(crtc);
        struct radeon_encoder *radeon_encoder = NULL;
        struct radeon_encoder_atom_dig *dig = NULL;
        int index = GetIndexIntoMasterTable(COMMAND, EnableSpreadSpectrumOnPPLL);
-       ENABLE_SPREAD_SPECTRUM_ON_PPLL_PS_ALLOCATION args;
-       ENABLE_LVDS_SS_PARAMETERS legacy_args;
+       union atom_enable_ss args;
        uint16_t percentage = 0;
        uint8_t type = 0, step = 0, delay = 0, range = 0;
 
        if (!radeon_encoder)
                return;
 
+       memset(&args, 0, sizeof(args));
        if (ASIC_IS_AVIVO(rdev)) {
-               memset(&args, 0, sizeof(args));
-               args.usSpreadSpectrumPercentage = cpu_to_le16(percentage);
-               args.ucSpreadSpectrumType = type;
-               args.ucSpreadSpectrumStep = step;
-               args.ucSpreadSpectrumDelay = delay;
-               args.ucSpreadSpectrumRange = range;
-               args.ucPpll = radeon_crtc->crtc_id ? ATOM_PPLL2 : ATOM_PPLL1;
-               args.ucEnable = enable;
-               atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args);
+               args.v1.usSpreadSpectrumPercentage = cpu_to_le16(percentage);
+               args.v1.ucSpreadSpectrumType = type;
+               args.v1.ucSpreadSpectrumStep = step;
+               args.v1.ucSpreadSpectrumDelay = delay;
+               args.v1.ucSpreadSpectrumRange = range;
+               args.v1.ucPpll = radeon_crtc->crtc_id ? ATOM_PPLL2 : ATOM_PPLL1;
+               args.v1.ucEnable = enable;
        } else {
-               memset(&legacy_args, 0, sizeof(legacy_args));
-               legacy_args.usSpreadSpectrumPercentage = cpu_to_le16(percentage);
-               legacy_args.ucSpreadSpectrumType = type;
-               legacy_args.ucSpreadSpectrumStepSize_Delay = (step & 3) << 2;
-               legacy_args.ucSpreadSpectrumStepSize_Delay |= (delay & 7) << 4;
-               legacy_args.ucEnable = enable;
-               atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&legacy_args);
+               args.legacy.usSpreadSpectrumPercentage = cpu_to_le16(percentage);
+               args.legacy.ucSpreadSpectrumType = type;
+               args.legacy.ucSpreadSpectrumStepSize_Delay = (step & 3) << 2;
+               args.legacy.ucSpreadSpectrumStepSize_Delay |= (delay & 7) << 4;
+               args.legacy.ucEnable = enable;
        }
+       atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args);
 }
 
 union adjust_pixel_clock {