]> Git Repo - linux.git/blobdiff - drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c
Merge tag 'at91-5.2-defconfig' of git://git.kernel.org/pub/scm/linux/kernel/git/at91...
[linux.git] / drivers / gpu / drm / amd / amdgpu / amdgpu_virt.c
index 462a04e0f5e6bab450d710eb718ba1cfe193b60f..7d484fad3909015d956125995be9ff535450ea70 100644 (file)
@@ -36,6 +36,7 @@ void amdgpu_virt_init_setting(struct amdgpu_device *adev)
        /* enable virtual display */
        adev->mode_info.num_crtc = 1;
        adev->enable_virtual_display = true;
+       adev->ddev->driver->driver_features &= ~DRIVER_ATOMIC;
        adev->cg_flags = 0;
        adev->pg_flags = 0;
 }
@@ -375,4 +376,53 @@ void amdgpu_virt_init_data_exchange(struct amdgpu_device *adev)
        }
 }
 
+static uint32_t parse_clk(char *buf, bool min)
+{
+        char *ptr = buf;
+        uint32_t clk = 0;
+
+        do {
+                ptr = strchr(ptr, ':');
+                if (!ptr)
+                        break;
+                ptr+=2;
+                clk = simple_strtoul(ptr, NULL, 10);
+        } while (!min);
+
+        return clk * 100;
+}
+
+uint32_t amdgpu_virt_get_sclk(struct amdgpu_device *adev, bool lowest)
+{
+       char *buf = NULL;
+       uint32_t clk = 0;
+
+       buf = kzalloc(PAGE_SIZE, GFP_KERNEL);
+       if (!buf)
+               return -ENOMEM;
+
+       adev->virt.ops->get_pp_clk(adev, PP_SCLK, buf);
+       clk = parse_clk(buf, lowest);
+
+       kfree(buf);
+
+       return clk;
+}
+
+uint32_t amdgpu_virt_get_mclk(struct amdgpu_device *adev, bool lowest)
+{
+       char *buf = NULL;
+       uint32_t clk = 0;
+
+       buf = kzalloc(PAGE_SIZE, GFP_KERNEL);
+       if (!buf)
+               return -ENOMEM;
+
+       adev->virt.ops->get_pp_clk(adev, PP_MCLK, buf);
+       clk = parse_clk(buf, lowest);
+
+       kfree(buf);
+
+       return clk;
+}
 
This page took 0.037883 seconds and 4 git commands to generate.