drm/amdgpu: add ELM/BAF pci ids
[linux-2.6-block.git] / drivers / gpu / drm / amd / amdgpu / amdgpu_device.c
index 612117478b5701a8b0ddbd76f3bdd36ea4099797..52245c4c6d6521bfaa8a20b0cfd2cf7ec2fc8258 100644 (file)
@@ -59,6 +59,8 @@ static const char *amdgpu_asic_name[] = {
        "FIJI",
        "CARRIZO",
        "STONEY",
+       "ELLESMERE",
+       "BAFFIN",
        "LAST",
 };
 
@@ -942,15 +944,11 @@ static void amdgpu_check_arguments(struct amdgpu_device *adev)
        }
 
        if (amdgpu_gart_size != -1) {
-               /* gtt size must be power of two and greater or equal to 32M */
+               /* gtt size must be greater or equal to 32M */
                if (amdgpu_gart_size < 32) {
                        dev_warn(adev->dev, "gart size (%d) too small\n",
                                 amdgpu_gart_size);
                        amdgpu_gart_size = -1;
-               } else if (!amdgpu_check_pot_argument(amdgpu_gart_size)) {
-                       dev_warn(adev->dev, "gart size (%d) must be a power of 2\n",
-                                amdgpu_gart_size);
-                       amdgpu_gart_size = -1;
                }
        }
 
@@ -1150,6 +1148,8 @@ static int amdgpu_early_init(struct amdgpu_device *adev)
        case CHIP_TOPAZ:
        case CHIP_TONGA:
        case CHIP_FIJI:
+       case CHIP_BAFFIN:
+       case CHIP_ELLESMERE:
        case CHIP_CARRIZO:
        case CHIP_STONEY:
                if (adev->asic_type == CHIP_CARRIZO || adev->asic_type == CHIP_STONEY)
@@ -1338,14 +1338,23 @@ static int amdgpu_suspend(struct amdgpu_device *adev)
 {
        int i, r;
 
+       /* ungate SMC block first */
+       r = amdgpu_set_clockgating_state(adev, AMD_IP_BLOCK_TYPE_SMC,
+                                        AMD_CG_STATE_UNGATE);
+       if (r) {
+               DRM_ERROR("set_clockgating_state(ungate) SMC failed %d\n",r);
+       }
+
        for (i = adev->num_ip_blocks - 1; i >= 0; i--) {
                if (!adev->ip_block_status[i].valid)
                        continue;
                /* ungate blocks so that suspend can properly shut them down */
-               r = adev->ip_blocks[i].funcs->set_clockgating_state((void *)adev,
-                                                                   AMD_CG_STATE_UNGATE);
-               if (r) {
-                       DRM_ERROR("set_clockgating_state(ungate) %d failed %d\n", i, r);
+               if (i != AMD_IP_BLOCK_TYPE_SMC) {
+                       r = adev->ip_blocks[i].funcs->set_clockgating_state((void *)adev,
+                                                                           AMD_CG_STATE_UNGATE);
+                       if (r) {
+                               DRM_ERROR("set_clockgating_state(ungate) %d failed %d\n", i, r);
+                       }
                }
                /* XXX handle errors */
                r = adev->ip_blocks[i].funcs->suspend(adev);
@@ -2013,7 +2022,7 @@ void amdgpu_get_pcie_info(struct amdgpu_device *adev)
  * Debugfs
  */
 int amdgpu_debugfs_add_files(struct amdgpu_device *adev,
-                            struct drm_info_list *files,
+                            const struct drm_info_list *files,
                             unsigned nfiles)
 {
        unsigned i;