UCODE_ID_CP_MEC_JT1_MASK |
                                UCODE_ID_CP_MEC_JT2_MASK;
 
+       if (adev->asic_type == CHIP_STONEY)
+               fw_to_check &= ~(UCODE_ID_SDMA1_MASK | UCODE_ID_CP_MEC_JT2_MASK);
+
        cz_smu_request_load_fw(adev);
        ret = cz_smu_check_fw_load_finish(adev, fw_to_check);
        if (ret)
                return ret;
 
        /* manually load MEC firmware for CZ */
-       if (adev->asic_type == CHIP_CARRIZO) {
+       if (adev->asic_type == CHIP_CARRIZO || adev->asic_type == CHIP_STONEY) {
                ret = cz_load_mec_firmware(adev);
                if (ret) {
                        dev_err(adev->dev, "(%d) Mec Firmware load failed\n", ret);
                                AMDGPU_CPMEC2_UCODE_LOADED |
                                AMDGPU_CPRLC_UCODE_LOADED;
 
+       if (adev->asic_type == CHIP_STONEY)
+               adev->smu.fw_flags &= ~(AMDGPU_SDMA1_UCODE_LOADED | AMDGPU_CPMEC2_UCODE_LOADED);
+
        return ret;
 }
 
                                CZ_SCRATCH_ENTRY_UCODE_ID_CP_ME, false);
                cz_smu_populate_single_ucode_load_task(adev,
                                CZ_SCRATCH_ENTRY_UCODE_ID_CP_MEC_JT1, false);
-               cz_smu_populate_single_ucode_load_task(adev,
+               if (adev->asic_type == CHIP_STONEY) {
+                       cz_smu_populate_single_ucode_load_task(adev,
+                               CZ_SCRATCH_ENTRY_UCODE_ID_CP_MEC_JT1, false);
+               } else {
+                       cz_smu_populate_single_ucode_load_task(adev,
                                CZ_SCRATCH_ENTRY_UCODE_ID_CP_MEC_JT2, false);
+               }
                cz_smu_populate_single_ucode_load_task(adev,
                                CZ_SCRATCH_ENTRY_UCODE_ID_RLC_G, false);
        }
        if (adev->firmware.smu_load) {
                cz_smu_populate_single_ucode_load_task(adev,
                                CZ_SCRATCH_ENTRY_UCODE_ID_SDMA0, false);
-               cz_smu_populate_single_ucode_load_task(adev,
+               if (adev->asic_type == CHIP_STONEY) {
+                       cz_smu_populate_single_ucode_load_task(adev,
+                               CZ_SCRATCH_ENTRY_UCODE_ID_SDMA0, false);
+               } else {
+                       cz_smu_populate_single_ucode_load_task(adev,
                                CZ_SCRATCH_ENTRY_UCODE_ID_SDMA1, false);
+               }
                cz_smu_populate_single_ucode_load_task(adev,
                                CZ_SCRATCH_ENTRY_UCODE_ID_CP_CE, false);
                cz_smu_populate_single_ucode_load_task(adev,
                                CZ_SCRATCH_ENTRY_UCODE_ID_CP_ME, false);
                cz_smu_populate_single_ucode_load_task(adev,
                                CZ_SCRATCH_ENTRY_UCODE_ID_CP_MEC_JT1, false);
-               cz_smu_populate_single_ucode_load_task(adev,
+               if (adev->asic_type == CHIP_STONEY) {
+                       cz_smu_populate_single_ucode_load_task(adev,
+                               CZ_SCRATCH_ENTRY_UCODE_ID_CP_MEC_JT1, false);
+               } else {
+                       cz_smu_populate_single_ucode_load_task(adev,
                                CZ_SCRATCH_ENTRY_UCODE_ID_CP_MEC_JT2, false);
+               }
                cz_smu_populate_single_ucode_load_task(adev,
                                CZ_SCRATCH_ENTRY_UCODE_ID_RLC_G, true);
        }
                                CZ_SCRATCH_ENTRY_UCODE_ID_SDMA0,
                                &priv->driver_buffer[priv->driver_buffer_length++]))
                        goto smu_init_failed;
-               if (cz_smu_populate_single_firmware_entry(adev,
-                               CZ_SCRATCH_ENTRY_UCODE_ID_SDMA1,
-                               &priv->driver_buffer[priv->driver_buffer_length++]))
-                       goto smu_init_failed;
+
+               if (adev->asic_type == CHIP_STONEY) {
+                       if (cz_smu_populate_single_firmware_entry(adev,
+                                       CZ_SCRATCH_ENTRY_UCODE_ID_SDMA0,
+                                       &priv->driver_buffer[priv->driver_buffer_length++]))
+                               goto smu_init_failed;
+               } else {
+                       if (cz_smu_populate_single_firmware_entry(adev,
+                                       CZ_SCRATCH_ENTRY_UCODE_ID_SDMA1,
+                                       &priv->driver_buffer[priv->driver_buffer_length++]))
+                               goto smu_init_failed;
+               }
                if (cz_smu_populate_single_firmware_entry(adev,
                                CZ_SCRATCH_ENTRY_UCODE_ID_CP_CE,
                                &priv->driver_buffer[priv->driver_buffer_length++]))
                                CZ_SCRATCH_ENTRY_UCODE_ID_CP_MEC_JT1,
                                &priv->driver_buffer[priv->driver_buffer_length++]))
                        goto smu_init_failed;
-               if (cz_smu_populate_single_firmware_entry(adev,
-                               CZ_SCRATCH_ENTRY_UCODE_ID_CP_MEC_JT2,
-                               &priv->driver_buffer[priv->driver_buffer_length++]))
-                       goto smu_init_failed;
+               if (adev->asic_type == CHIP_STONEY) {
+                       if (cz_smu_populate_single_firmware_entry(adev,
+                                       CZ_SCRATCH_ENTRY_UCODE_ID_CP_MEC_JT1,
+                                       &priv->driver_buffer[priv->driver_buffer_length++]))
+                               goto smu_init_failed;
+               } else {
+                       if (cz_smu_populate_single_firmware_entry(adev,
+                                       CZ_SCRATCH_ENTRY_UCODE_ID_CP_MEC_JT2,
+                                       &priv->driver_buffer[priv->driver_buffer_length++]))
+                               goto smu_init_failed;
+               }
                if (cz_smu_populate_single_firmware_entry(adev,
                                CZ_SCRATCH_ENTRY_UCODE_ID_RLC_G,
                                &priv->driver_buffer[priv->driver_buffer_length++]))