void amdgpu_aca_smu_debugfs_init(struct amdgpu_device *adev, struct dentry *root)
 {
 #if defined(CONFIG_DEBUG_FS)
-       if (!root || adev->ip_versions[MP1_HWIP][0] != IP_VERSION(13, 0, 6))
+       if (!root ||
+           (adev->ip_versions[MP1_HWIP][0] != IP_VERSION(13, 0, 6) &&
+            adev->ip_versions[MP1_HWIP][0] != IP_VERSION(13, 0, 14)))
                return;
 
        debugfs_create_file("aca_debug_mode", 0200, root, adev, &aca_debug_mode_fops);
 
        case IP_VERSION(13, 0, 8):
        case IP_VERSION(13, 0, 10):
        case IP_VERSION(13, 0, 11):
+       case IP_VERSION(13, 0, 14):
                amdgpu_device_ip_block_add(adev, &smu_v13_0_ip_block);
                break;
        case IP_VERSION(14, 0, 0):
 
                                *fru_addr = FRU_EEPROM_MADDR_6;
                return true;
        case IP_VERSION(13, 0, 6):
+       case IP_VERSION(13, 0, 14):
                        if (fru_addr)
                                *fru_addr = FRU_EEPROM_MADDR_8;
                        return true;
 
 void amdgpu_mca_smu_debugfs_init(struct amdgpu_device *adev, struct dentry *root)
 {
 #if defined(CONFIG_DEBUG_FS)
-       if (!root || amdgpu_ip_version(adev, MP1_HWIP, 0) != IP_VERSION(13, 0, 6))
+       if (!root ||
+           (amdgpu_ip_version(adev, MP1_HWIP, 0) != IP_VERSION(13, 0, 6) &&
+            amdgpu_ip_version(adev, MP1_HWIP, 0) != IP_VERSION(13, 0, 14)))
                return;
 
        debugfs_create_file("mca_debug_mode", 0200, root, adev, &mca_debug_mode_fops);
 
        case IP_VERSION(13, 0, 10):
                return true;
        case IP_VERSION(13, 0, 6):
+       case IP_VERSION(13, 0, 14):
                return (adev->gmc.is_app_apu) ? false : true;
        default:
                return false;
                return true;
        case IP_VERSION(13, 0, 6):
        case IP_VERSION(13, 0, 10):
+       case IP_VERSION(13, 0, 14):
                control->i2c_address = EEPROM_I2C_MADDR_4;
                return true;
        default:
 
        switch (amdgpu_ip_version(adev, MP1_HWIP, 0)) {
        case IP_VERSION(13, 0, 2):
        case IP_VERSION(13, 0, 6):
+       case IP_VERSION(13, 0, 14):
                ret = aldebaran_reset_init(adev);
                break;
        case IP_VERSION(11, 0, 7):
        switch (amdgpu_ip_version(adev, MP1_HWIP, 0)) {
        case IP_VERSION(13, 0, 2):
        case IP_VERSION(13, 0, 6):
+       case IP_VERSION(13, 0, 14):
                ret = aldebaran_reset_fini(adev);
                break;
        case IP_VERSION(11, 0, 7):
 
 
        if (amdgpu_ip_version(adev, MP1_HWIP, 0) == IP_VERSION(12, 0, 0) ||
            amdgpu_ip_version(adev, MP1_HWIP, 0) == IP_VERSION(12, 0, 1) ||
-           amdgpu_ip_version(adev, MP1_HWIP, 0) == IP_VERSION(13, 0, 6))
+           amdgpu_ip_version(adev, MP1_HWIP, 0) == IP_VERSION(13, 0, 6) ||
+           amdgpu_ip_version(adev, MP1_HWIP, 0) == IP_VERSION(13, 0, 14))
                return 10000;
        if (amdgpu_ip_version(adev, MP1_HWIP, 0) == IP_VERSION(10, 0, 0) ||
            amdgpu_ip_version(adev, MP1_HWIP, 0) == IP_VERSION(10, 0, 1))
                        return AMD_RESET_METHOD_MODE2;
                break;
        case IP_VERSION(13, 0, 6):
+       case IP_VERSION(13, 0, 14):
                /* Use gpu_recovery param to target a reset method.
                 * Enable triggering of GPU reset only if specified
                 * by module parameter.
 
                smu_v13_0_0_set_ppt_funcs(smu);
                break;
        case IP_VERSION(13, 0, 6):
+       case IP_VERSION(13, 0, 14):
                smu_v13_0_6_set_ppt_funcs(smu);
                /* Enable pp_od_clk_voltage node */
                smu->od_enabled = true;
                        switch (amdgpu_ip_version(adev, MP1_HWIP, 0)) {
                        case IP_VERSION(13, 0, 2):
                        case IP_VERSION(13, 0, 6):
+                       case IP_VERSION(13, 0, 14):
                        case IP_VERSION(11, 0, 7):
                        case IP_VERSION(11, 0, 11):
                        case IP_VERSION(11, 0, 12):
 
        smu_minor = (smu_version >> 8) & 0xff;
        smu_debug = (smu_version >> 0) & 0xff;
        if (smu->is_apu ||
-           amdgpu_ip_version(adev, MP1_HWIP, 0) == IP_VERSION(13, 0, 6))
+           amdgpu_ip_version(adev, MP1_HWIP, 0) == IP_VERSION(13, 0, 6) ||
+           amdgpu_ip_version(adev, MP1_HWIP, 0) == IP_VERSION(13, 0, 14))
                adev->pm.fw_version = smu_version;
 
        /* only for dGPU w/ SMU13*/
 
 #undef pr_debug
 
 MODULE_FIRMWARE("amdgpu/smu_13_0_6.bin");
+MODULE_FIRMWARE("amdgpu/smu_13_0_14.bin");
 
 #define to_amdgpu_device(x) (container_of(x, struct amdgpu_device, pm.smu_i2c))
 
 
        memset(&pm_metrics->common_header, 0,
               sizeof(pm_metrics->common_header));
-       pm_metrics->common_header.mp1_ip_discovery_version =
-               IP_VERSION(13, 0, 6);
+       if (amdgpu_ip_version(smu->adev, MP1_HWIP, 0) == IP_VERSION(13, 0, 6))
+               pm_metrics->common_header.mp1_ip_discovery_version = IP_VERSION(13, 0, 6);
+       if (amdgpu_ip_version(smu->adev, MP1_HWIP, 0) == IP_VERSION(13, 0, 14))
+               pm_metrics->common_header.mp1_ip_discovery_version = IP_VERSION(13, 0, 14);
        pm_metrics->common_header.pmfw_version = pmfw_version;
        pm_metrics->common_header.pmmetrics_version = table_version;
        pm_metrics->common_header.structure_size =