aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2016-11-29 23:18:51 -0500
committerDave Airlie <airlied@redhat.com>2016-11-29 23:18:51 -0500
commit63207455963053ca212e61c75f43b3502ea69f0e (patch)
tree96b2bbcee059a41eb580c17a6c473a259189072a /drivers/gpu/drm/amd/amdgpu
parent7625e05286cf3f37c8a5e633379a4d014ddbe555 (diff)
parent348a4b6dd77d183ef4ea67673ecf30a09ae3f9d7 (diff)
Merge tag 'drm-qemu-20161121' of git://git.kraxel.org/linux into drm-next
drm/virtio: fix busid in a different way, allocate more vbufs. drm/qxl: various bugfixes and cleanups, * tag 'drm-qemu-20161121' of git://git.kraxel.org/linux: (224 commits) drm/virtio: allocate some extra bufs qxl: Allow resolution which are not multiple of 8 qxl: Don't notify userspace when monitors config is unchanged qxl: Remove qxl_bo_init() return value qxl: Call qxl_gem_{init, fini} qxl: Add missing '\n' to qxl_io_log() call qxl: Remove unused prototype qxl: Mark some internal functions as static Revert "drm: virtio: reinstate drm_virtio_set_busid()" drm/virtio: fix busid regression drm: re-export drm_dev_set_unique Linux 4.9-rc5 gp8psk: Fix DVB frontend attach gp8psk: fix gp8psk_usb_in_op() logic dvb-usb: move data_mutex to struct dvb_usb_device iio: maxim_thermocouple: detect invalid storage size in read() aoe: fix crash in page count manipulation lightnvm: invalid offset calculation for lba_shift Kbuild: enable -Wmaybe-uninitialized warnings by default pcmcia: fix return value of soc_pcmcia_regulator_set ...
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_acp.c5
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c13
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c2
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c26
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c2
-rw-r--r--drivers/gpu/drm/amd/amdgpu/vi.c2
6 files changed, 44 insertions, 6 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_acp.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_acp.c
index 2f9f96cc9f65..06879d1dcabd 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_acp.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_acp.c
@@ -395,9 +395,12 @@ static int acp_hw_fini(void *handle)
395{ 395{
396 int i, ret; 396 int i, ret;
397 struct device *dev; 397 struct device *dev;
398
399 struct amdgpu_device *adev = (struct amdgpu_device *)handle; 398 struct amdgpu_device *adev = (struct amdgpu_device *)handle;
400 399
400 /* return early if no ACP */
401 if (!adev->acp.acp_genpd)
402 return 0;
403
401 for (i = 0; i < ACP_DEVS ; i++) { 404 for (i = 0; i < ACP_DEVS ; i++) {
402 dev = get_mfd_cell_dev(adev->acp.acp_cell[i].name, i); 405 dev = get_mfd_cell_dev(adev->acp.acp_cell[i].name, i);
403 ret = pm_genpd_remove_device(&adev->acp.acp_genpd->gpd, dev); 406 ret = pm_genpd_remove_device(&adev->acp.acp_genpd->gpd, dev);
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c
index 017556ca22e6..7ded61e6dd81 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c
@@ -809,10 +809,19 @@ static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device,
809 if (!adev->pm.fw) { 809 if (!adev->pm.fw) {
810 switch (adev->asic_type) { 810 switch (adev->asic_type) {
811 case CHIP_TOPAZ: 811 case CHIP_TOPAZ:
812 strcpy(fw_name, "amdgpu/topaz_smc.bin"); 812 if (((adev->pdev->device == 0x6900) && (adev->pdev->revision == 0x81)) ||
813 ((adev->pdev->device == 0x6900) && (adev->pdev->revision == 0x83)) ||
814 ((adev->pdev->device == 0x6907) && (adev->pdev->revision == 0x87)))
815 strcpy(fw_name, "amdgpu/topaz_k_smc.bin");
816 else
817 strcpy(fw_name, "amdgpu/topaz_smc.bin");
813 break; 818 break;
814 case CHIP_TONGA: 819 case CHIP_TONGA:
815 strcpy(fw_name, "amdgpu/tonga_smc.bin"); 820 if (((adev->pdev->device == 0x6939) && (adev->pdev->revision == 0xf1)) ||
821 ((adev->pdev->device == 0x6938) && (adev->pdev->revision == 0xf1)))
822 strcpy(fw_name, "amdgpu/tonga_k_smc.bin");
823 else
824 strcpy(fw_name, "amdgpu/tonga_smc.bin");
816 break; 825 break;
817 case CHIP_FIJI: 826 case CHIP_FIJI:
818 strcpy(fw_name, "amdgpu/fiji_smc.bin"); 827 strcpy(fw_name, "amdgpu/fiji_smc.bin");
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c
index 3af8ffb45b64..8d1cf2d3e663 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c
@@ -769,7 +769,7 @@ static void amdgpu_connector_unregister(struct drm_connector *connector)
769{ 769{
770 struct amdgpu_connector *amdgpu_connector = to_amdgpu_connector(connector); 770 struct amdgpu_connector *amdgpu_connector = to_amdgpu_connector(connector);
771 771
772 if (amdgpu_connector->ddc_bus->has_aux) { 772 if (amdgpu_connector->ddc_bus && amdgpu_connector->ddc_bus->has_aux) {
773 drm_dp_aux_unregister(&amdgpu_connector->ddc_bus->aux); 773 drm_dp_aux_unregister(&amdgpu_connector->ddc_bus->aux);
774 amdgpu_connector->ddc_bus->has_aux = false; 774 amdgpu_connector->ddc_bus->has_aux = false;
775 } 775 }
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
index 6bb4d9e9afe4..42da6163b893 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
@@ -742,8 +742,20 @@ static struct pci_driver amdgpu_kms_pci_driver = {
742 742
743static int __init amdgpu_init(void) 743static int __init amdgpu_init(void)
744{ 744{
745 amdgpu_sync_init(); 745 int r;
746 amdgpu_fence_slab_init(); 746
747 r = amdgpu_sync_init();
748 if (r)
749 goto error_sync;
750
751 r = amdgpu_fence_slab_init();
752 if (r)
753 goto error_fence;
754
755 r = amd_sched_fence_slab_init();
756 if (r)
757 goto error_sched;
758
747 if (vgacon_text_force()) { 759 if (vgacon_text_force()) {
748 DRM_ERROR("VGACON disables amdgpu kernel modesetting.\n"); 760 DRM_ERROR("VGACON disables amdgpu kernel modesetting.\n");
749 return -EINVAL; 761 return -EINVAL;
@@ -755,6 +767,15 @@ static int __init amdgpu_init(void)
755 amdgpu_register_atpx_handler(); 767 amdgpu_register_atpx_handler();
756 /* let modprobe override vga console setting */ 768 /* let modprobe override vga console setting */
757 return drm_pci_init(driver, pdriver); 769 return drm_pci_init(driver, pdriver);
770
771error_sched:
772 amdgpu_fence_slab_fini();
773
774error_fence:
775 amdgpu_sync_fini();
776
777error_sync:
778 return r;
758} 779}
759 780
760static void __exit amdgpu_exit(void) 781static void __exit amdgpu_exit(void)
@@ -763,6 +784,7 @@ static void __exit amdgpu_exit(void)
763 drm_pci_exit(driver, pdriver); 784 drm_pci_exit(driver, pdriver);
764 amdgpu_unregister_atpx_handler(); 785 amdgpu_unregister_atpx_handler();
765 amdgpu_sync_fini(); 786 amdgpu_sync_fini();
787 amd_sched_fence_slab_fini();
766 amdgpu_fence_slab_fini(); 788 amdgpu_fence_slab_fini();
767} 789}
768 790
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
index ad908612aff9..d1cf9ac0dff1 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
@@ -99,6 +99,8 @@ int amdgpu_driver_load_kms(struct drm_device *dev, unsigned long flags)
99 99
100 if ((amdgpu_runtime_pm != 0) && 100 if ((amdgpu_runtime_pm != 0) &&
101 amdgpu_has_atpx() && 101 amdgpu_has_atpx() &&
102 (amdgpu_is_atpx_hybrid() ||
103 amdgpu_has_atpx_dgpu_power_cntl()) &&
102 ((flags & AMD_IS_APU) == 0)) 104 ((flags & AMD_IS_APU) == 0))
103 flags |= AMD_IS_PX; 105 flags |= AMD_IS_PX;
104 106
diff --git a/drivers/gpu/drm/amd/amdgpu/vi.c b/drivers/gpu/drm/amd/amdgpu/vi.c
index 52d0a83e6ad1..0b21e7beda91 100644
--- a/drivers/gpu/drm/amd/amdgpu/vi.c
+++ b/drivers/gpu/drm/amd/amdgpu/vi.c
@@ -80,7 +80,9 @@
80#include "dce_virtual.h" 80#include "dce_virtual.h"
81 81
82MODULE_FIRMWARE("amdgpu/topaz_smc.bin"); 82MODULE_FIRMWARE("amdgpu/topaz_smc.bin");
83MODULE_FIRMWARE("amdgpu/topaz_k_smc.bin");
83MODULE_FIRMWARE("amdgpu/tonga_smc.bin"); 84MODULE_FIRMWARE("amdgpu/tonga_smc.bin");
85MODULE_FIRMWARE("amdgpu/tonga_k_smc.bin");
84MODULE_FIRMWARE("amdgpu/fiji_smc.bin"); 86MODULE_FIRMWARE("amdgpu/fiji_smc.bin");
85MODULE_FIRMWARE("amdgpu/polaris10_smc.bin"); 87MODULE_FIRMWARE("amdgpu/polaris10_smc.bin");
86MODULE_FIRMWARE("amdgpu/polaris10_smc_sk.bin"); 88MODULE_FIRMWARE("amdgpu/polaris10_smc_sk.bin");