diff options
author | Dave Airlie <airlied@redhat.com> | 2016-11-29 23:18:51 -0500 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2016-11-29 23:18:51 -0500 |
commit | 63207455963053ca212e61c75f43b3502ea69f0e (patch) | |
tree | 96b2bbcee059a41eb580c17a6c473a259189072a /drivers/gpu/drm/amd/amdgpu | |
parent | 7625e05286cf3f37c8a5e633379a4d014ddbe555 (diff) | |
parent | 348a4b6dd77d183ef4ea67673ecf30a09ae3f9d7 (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.c | 5 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c | 13 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 26 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/vi.c | 2 |
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 | ||
743 | static int __init amdgpu_init(void) | 743 | static 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 | |||
771 | error_sched: | ||
772 | amdgpu_fence_slab_fini(); | ||
773 | |||
774 | error_fence: | ||
775 | amdgpu_sync_fini(); | ||
776 | |||
777 | error_sync: | ||
778 | return r; | ||
758 | } | 779 | } |
759 | 780 | ||
760 | static void __exit amdgpu_exit(void) | 781 | static 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 | ||
82 | MODULE_FIRMWARE("amdgpu/topaz_smc.bin"); | 82 | MODULE_FIRMWARE("amdgpu/topaz_smc.bin"); |
83 | MODULE_FIRMWARE("amdgpu/topaz_k_smc.bin"); | ||
83 | MODULE_FIRMWARE("amdgpu/tonga_smc.bin"); | 84 | MODULE_FIRMWARE("amdgpu/tonga_smc.bin"); |
85 | MODULE_FIRMWARE("amdgpu/tonga_k_smc.bin"); | ||
84 | MODULE_FIRMWARE("amdgpu/fiji_smc.bin"); | 86 | MODULE_FIRMWARE("amdgpu/fiji_smc.bin"); |
85 | MODULE_FIRMWARE("amdgpu/polaris10_smc.bin"); | 87 | MODULE_FIRMWARE("amdgpu/polaris10_smc.bin"); |
86 | MODULE_FIRMWARE("amdgpu/polaris10_smc_sk.bin"); | 88 | MODULE_FIRMWARE("amdgpu/polaris10_smc_sk.bin"); |