MODULE_FIRMWARE("amdgpu/vega20_sdma.bin");
 MODULE_FIRMWARE("amdgpu/vega20_sdma1.bin");
 MODULE_FIRMWARE("amdgpu/raven_sdma.bin");
+MODULE_FIRMWARE("amdgpu/picasso_sdma.bin");
 
 #define SDMA0_POWER_CNTL__ON_OFF_CONDITION_HOLD_TIME_MASK  0x000000F8L
 #define SDMA0_POWER_CNTL__ON_OFF_STATUS_DURATION_TIME_MASK 0xFC000000L
                                                ARRAY_SIZE(golden_settings_sdma1_4_2));
                break;
        case CHIP_RAVEN:
+       case CHIP_PICASSO:
                soc15_program_register_sequence(adev,
                                                 golden_settings_sdma_4_1,
                                                 ARRAY_SIZE(golden_settings_sdma_4_1));
        case CHIP_RAVEN:
                chip_name = "raven";
                break;
+       case CHIP_PICASSO:
+               chip_name = "picasso";
+               break;
        default:
                BUG();
        }
 
        switch (adev->asic_type) {
        case CHIP_RAVEN:
+       case CHIP_PICASSO:
                sdma_v4_1_init_power_gating(adev);
                sdma_v4_1_update_power_gating(adev, true);
                break;
 {
        struct amdgpu_device *adev = (struct amdgpu_device *)handle;
 
-       if (adev->asic_type == CHIP_RAVEN)
+       if (adev->asic_type == CHIP_RAVEN || adev->asic_type == CHIP_PICASSO)
                adev->sdma.num_instances = 1;
        else
                adev->sdma.num_instances = 2;
        case CHIP_VEGA12:
        case CHIP_VEGA20:
        case CHIP_RAVEN:
+       case CHIP_PICASSO:
                sdma_v4_0_update_medium_grain_clock_gating(adev,
                                state == AMD_CG_STATE_GATE ? true : false);
                sdma_v4_0_update_medium_grain_light_sleep(adev,
 
        switch (adev->asic_type) {
        case CHIP_RAVEN:
+       case CHIP_PICASSO:
                sdma_v4_1_update_power_gating(adev,
                                state == AMD_PG_STATE_GATE ? true : false);
                break;