diff options
author | Jerome Glisse <jglisse@redhat.com> | 2013-07-11 15:53:01 -0400 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2013-07-14 10:11:27 -0400 |
commit | 0a168933976eb483da91161316bbbbcb74d00486 (patch) | |
tree | eb69d3a686ae1e2f380c3fc91e1d998e50f9460c | |
parent | 1b6e5fd5f4fc152064f4f71cea0bcfeb49e29b8b (diff) |
drm/radeon: use radeon device for request firmware
Avoid creating temporary platform device that will lead to issue
when several radeon gpu are in same computer. Instead directly use
the radeon device for requesting firmware.
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Jerome Glisse <jglisse@redhat.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
-rw-r--r-- | drivers/gpu/drm/radeon/cik.c | 25 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/ni.c | 21 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/r100.c | 11 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/r600.c | 19 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_uvd.c | 13 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/si.c | 23 |
6 files changed, 24 insertions, 88 deletions
diff --git a/drivers/gpu/drm/radeon/cik.c b/drivers/gpu/drm/radeon/cik.c index ed1d91025928..27891d87c1d3 100644 --- a/drivers/gpu/drm/radeon/cik.c +++ b/drivers/gpu/drm/radeon/cik.c | |||
@@ -22,7 +22,6 @@ | |||
22 | * Authors: Alex Deucher | 22 | * Authors: Alex Deucher |
23 | */ | 23 | */ |
24 | #include <linux/firmware.h> | 24 | #include <linux/firmware.h> |
25 | #include <linux/platform_device.h> | ||
26 | #include <linux/slab.h> | 25 | #include <linux/slab.h> |
27 | #include <linux/module.h> | 26 | #include <linux/module.h> |
28 | #include "drmP.h" | 27 | #include "drmP.h" |
@@ -742,7 +741,6 @@ static int ci_mc_load_microcode(struct radeon_device *rdev) | |||
742 | */ | 741 | */ |
743 | static int cik_init_microcode(struct radeon_device *rdev) | 742 | static int cik_init_microcode(struct radeon_device *rdev) |
744 | { | 743 | { |
745 | struct platform_device *pdev; | ||
746 | const char *chip_name; | 744 | const char *chip_name; |
747 | size_t pfp_req_size, me_req_size, ce_req_size, | 745 | size_t pfp_req_size, me_req_size, ce_req_size, |
748 | mec_req_size, rlc_req_size, mc_req_size, | 746 | mec_req_size, rlc_req_size, mc_req_size, |
@@ -752,13 +750,6 @@ static int cik_init_microcode(struct radeon_device *rdev) | |||
752 | 750 | ||
753 | DRM_DEBUG("\n"); | 751 | DRM_DEBUG("\n"); |
754 | 752 | ||
755 | pdev = platform_device_register_simple("radeon_cp", 0, NULL, 0); | ||
756 | err = IS_ERR(pdev); | ||
757 | if (err) { | ||
758 | printk(KERN_ERR "radeon_cp: Failed to register firmware\n"); | ||
759 | return -EINVAL; | ||
760 | } | ||
761 | |||
762 | switch (rdev->family) { | 753 | switch (rdev->family) { |
763 | case CHIP_BONAIRE: | 754 | case CHIP_BONAIRE: |
764 | chip_name = "BONAIRE"; | 755 | chip_name = "BONAIRE"; |
@@ -794,7 +785,7 @@ static int cik_init_microcode(struct radeon_device *rdev) | |||
794 | DRM_INFO("Loading %s Microcode\n", chip_name); | 785 | DRM_INFO("Loading %s Microcode\n", chip_name); |
795 | 786 | ||
796 | snprintf(fw_name, sizeof(fw_name), "radeon/%s_pfp.bin", chip_name); | 787 | snprintf(fw_name, sizeof(fw_name), "radeon/%s_pfp.bin", chip_name); |
797 | err = request_firmware(&rdev->pfp_fw, fw_name, &pdev->dev); | 788 | err = request_firmware(&rdev->pfp_fw, fw_name, rdev->dev); |
798 | if (err) | 789 | if (err) |
799 | goto out; | 790 | goto out; |
800 | if (rdev->pfp_fw->size != pfp_req_size) { | 791 | if (rdev->pfp_fw->size != pfp_req_size) { |
@@ -806,7 +797,7 @@ static int cik_init_microcode(struct radeon_device *rdev) | |||
806 | } | 797 | } |
807 | 798 | ||
808 | snprintf(fw_name, sizeof(fw_name), "radeon/%s_me.bin", chip_name); | 799 | snprintf(fw_name, sizeof(fw_name), "radeon/%s_me.bin", chip_name); |
809 | err = request_firmware(&rdev->me_fw, fw_name, &pdev->dev); | 800 | err = request_firmware(&rdev->me_fw, fw_name, rdev->dev); |
810 | if (err) | 801 | if (err) |
811 | goto out; | 802 | goto out; |
812 | if (rdev->me_fw->size != me_req_size) { | 803 | if (rdev->me_fw->size != me_req_size) { |
@@ -817,7 +808,7 @@ static int cik_init_microcode(struct radeon_device *rdev) | |||
817 | } | 808 | } |
818 | 809 | ||
819 | snprintf(fw_name, sizeof(fw_name), "radeon/%s_ce.bin", chip_name); | 810 | snprintf(fw_name, sizeof(fw_name), "radeon/%s_ce.bin", chip_name); |
820 | err = request_firmware(&rdev->ce_fw, fw_name, &pdev->dev); | 811 | err = request_firmware(&rdev->ce_fw, fw_name, rdev->dev); |
821 | if (err) | 812 | if (err) |
822 | goto out; | 813 | goto out; |
823 | if (rdev->ce_fw->size != ce_req_size) { | 814 | if (rdev->ce_fw->size != ce_req_size) { |
@@ -828,7 +819,7 @@ static int cik_init_microcode(struct radeon_device *rdev) | |||
828 | } | 819 | } |
829 | 820 | ||
830 | snprintf(fw_name, sizeof(fw_name), "radeon/%s_mec.bin", chip_name); | 821 | snprintf(fw_name, sizeof(fw_name), "radeon/%s_mec.bin", chip_name); |
831 | err = request_firmware(&rdev->mec_fw, fw_name, &pdev->dev); | 822 | err = request_firmware(&rdev->mec_fw, fw_name, rdev->dev); |
832 | if (err) | 823 | if (err) |
833 | goto out; | 824 | goto out; |
834 | if (rdev->mec_fw->size != mec_req_size) { | 825 | if (rdev->mec_fw->size != mec_req_size) { |
@@ -839,7 +830,7 @@ static int cik_init_microcode(struct radeon_device *rdev) | |||
839 | } | 830 | } |
840 | 831 | ||
841 | snprintf(fw_name, sizeof(fw_name), "radeon/%s_rlc.bin", chip_name); | 832 | snprintf(fw_name, sizeof(fw_name), "radeon/%s_rlc.bin", chip_name); |
842 | err = request_firmware(&rdev->rlc_fw, fw_name, &pdev->dev); | 833 | err = request_firmware(&rdev->rlc_fw, fw_name, rdev->dev); |
843 | if (err) | 834 | if (err) |
844 | goto out; | 835 | goto out; |
845 | if (rdev->rlc_fw->size != rlc_req_size) { | 836 | if (rdev->rlc_fw->size != rlc_req_size) { |
@@ -850,7 +841,7 @@ static int cik_init_microcode(struct radeon_device *rdev) | |||
850 | } | 841 | } |
851 | 842 | ||
852 | snprintf(fw_name, sizeof(fw_name), "radeon/%s_sdma.bin", chip_name); | 843 | snprintf(fw_name, sizeof(fw_name), "radeon/%s_sdma.bin", chip_name); |
853 | err = request_firmware(&rdev->sdma_fw, fw_name, &pdev->dev); | 844 | err = request_firmware(&rdev->sdma_fw, fw_name, rdev->dev); |
854 | if (err) | 845 | if (err) |
855 | goto out; | 846 | goto out; |
856 | if (rdev->sdma_fw->size != sdma_req_size) { | 847 | if (rdev->sdma_fw->size != sdma_req_size) { |
@@ -863,7 +854,7 @@ static int cik_init_microcode(struct radeon_device *rdev) | |||
863 | /* No MC ucode on APUs */ | 854 | /* No MC ucode on APUs */ |
864 | if (!(rdev->flags & RADEON_IS_IGP)) { | 855 | if (!(rdev->flags & RADEON_IS_IGP)) { |
865 | snprintf(fw_name, sizeof(fw_name), "radeon/%s_mc.bin", chip_name); | 856 | snprintf(fw_name, sizeof(fw_name), "radeon/%s_mc.bin", chip_name); |
866 | err = request_firmware(&rdev->mc_fw, fw_name, &pdev->dev); | 857 | err = request_firmware(&rdev->mc_fw, fw_name, rdev->dev); |
867 | if (err) | 858 | if (err) |
868 | goto out; | 859 | goto out; |
869 | if (rdev->mc_fw->size != mc_req_size) { | 860 | if (rdev->mc_fw->size != mc_req_size) { |
@@ -875,8 +866,6 @@ static int cik_init_microcode(struct radeon_device *rdev) | |||
875 | } | 866 | } |
876 | 867 | ||
877 | out: | 868 | out: |
878 | platform_device_unregister(pdev); | ||
879 | |||
880 | if (err) { | 869 | if (err) { |
881 | if (err != -EINVAL) | 870 | if (err != -EINVAL) |
882 | printk(KERN_ERR | 871 | printk(KERN_ERR |
diff --git a/drivers/gpu/drm/radeon/ni.c b/drivers/gpu/drm/radeon/ni.c index f30127cb30ef..465b17e1fa4e 100644 --- a/drivers/gpu/drm/radeon/ni.c +++ b/drivers/gpu/drm/radeon/ni.c | |||
@@ -22,7 +22,6 @@ | |||
22 | * Authors: Alex Deucher | 22 | * Authors: Alex Deucher |
23 | */ | 23 | */ |
24 | #include <linux/firmware.h> | 24 | #include <linux/firmware.h> |
25 | #include <linux/platform_device.h> | ||
26 | #include <linux/slab.h> | 25 | #include <linux/slab.h> |
27 | #include <linux/module.h> | 26 | #include <linux/module.h> |
28 | #include <drm/drmP.h> | 27 | #include <drm/drmP.h> |
@@ -684,7 +683,6 @@ int ni_mc_load_microcode(struct radeon_device *rdev) | |||
684 | 683 | ||
685 | int ni_init_microcode(struct radeon_device *rdev) | 684 | int ni_init_microcode(struct radeon_device *rdev) |
686 | { | 685 | { |
687 | struct platform_device *pdev; | ||
688 | const char *chip_name; | 686 | const char *chip_name; |
689 | const char *rlc_chip_name; | 687 | const char *rlc_chip_name; |
690 | size_t pfp_req_size, me_req_size, rlc_req_size, mc_req_size; | 688 | size_t pfp_req_size, me_req_size, rlc_req_size, mc_req_size; |
@@ -694,13 +692,6 @@ int ni_init_microcode(struct radeon_device *rdev) | |||
694 | 692 | ||
695 | DRM_DEBUG("\n"); | 693 | DRM_DEBUG("\n"); |
696 | 694 | ||
697 | pdev = platform_device_register_simple("radeon_cp", 0, NULL, 0); | ||
698 | err = IS_ERR(pdev); | ||
699 | if (err) { | ||
700 | printk(KERN_ERR "radeon_cp: Failed to register firmware\n"); | ||
701 | return -EINVAL; | ||
702 | } | ||
703 | |||
704 | switch (rdev->family) { | 695 | switch (rdev->family) { |
705 | case CHIP_BARTS: | 696 | case CHIP_BARTS: |
706 | chip_name = "BARTS"; | 697 | chip_name = "BARTS"; |
@@ -753,7 +744,7 @@ int ni_init_microcode(struct radeon_device *rdev) | |||
753 | DRM_INFO("Loading %s Microcode\n", chip_name); | 744 | DRM_INFO("Loading %s Microcode\n", chip_name); |
754 | 745 | ||
755 | snprintf(fw_name, sizeof(fw_name), "radeon/%s_pfp.bin", chip_name); | 746 | snprintf(fw_name, sizeof(fw_name), "radeon/%s_pfp.bin", chip_name); |
756 | err = request_firmware(&rdev->pfp_fw, fw_name, &pdev->dev); | 747 | err = request_firmware(&rdev->pfp_fw, fw_name, rdev->dev); |
757 | if (err) | 748 | if (err) |
758 | goto out; | 749 | goto out; |
759 | if (rdev->pfp_fw->size != pfp_req_size) { | 750 | if (rdev->pfp_fw->size != pfp_req_size) { |
@@ -765,7 +756,7 @@ int ni_init_microcode(struct radeon_device *rdev) | |||
765 | } | 756 | } |
766 | 757 | ||
767 | snprintf(fw_name, sizeof(fw_name), "radeon/%s_me.bin", chip_name); | 758 | snprintf(fw_name, sizeof(fw_name), "radeon/%s_me.bin", chip_name); |
768 | err = request_firmware(&rdev->me_fw, fw_name, &pdev->dev); | 759 | err = request_firmware(&rdev->me_fw, fw_name, rdev->dev); |
769 | if (err) | 760 | if (err) |
770 | goto out; | 761 | goto out; |
771 | if (rdev->me_fw->size != me_req_size) { | 762 | if (rdev->me_fw->size != me_req_size) { |
@@ -776,7 +767,7 @@ int ni_init_microcode(struct radeon_device *rdev) | |||
776 | } | 767 | } |
777 | 768 | ||
778 | snprintf(fw_name, sizeof(fw_name), "radeon/%s_rlc.bin", rlc_chip_name); | 769 | snprintf(fw_name, sizeof(fw_name), "radeon/%s_rlc.bin", rlc_chip_name); |
779 | err = request_firmware(&rdev->rlc_fw, fw_name, &pdev->dev); | 770 | err = request_firmware(&rdev->rlc_fw, fw_name, rdev->dev); |
780 | if (err) | 771 | if (err) |
781 | goto out; | 772 | goto out; |
782 | if (rdev->rlc_fw->size != rlc_req_size) { | 773 | if (rdev->rlc_fw->size != rlc_req_size) { |
@@ -789,7 +780,7 @@ int ni_init_microcode(struct radeon_device *rdev) | |||
789 | /* no MC ucode on TN */ | 780 | /* no MC ucode on TN */ |
790 | if (!(rdev->flags & RADEON_IS_IGP)) { | 781 | if (!(rdev->flags & RADEON_IS_IGP)) { |
791 | snprintf(fw_name, sizeof(fw_name), "radeon/%s_mc.bin", chip_name); | 782 | snprintf(fw_name, sizeof(fw_name), "radeon/%s_mc.bin", chip_name); |
792 | err = request_firmware(&rdev->mc_fw, fw_name, &pdev->dev); | 783 | err = request_firmware(&rdev->mc_fw, fw_name, rdev->dev); |
793 | if (err) | 784 | if (err) |
794 | goto out; | 785 | goto out; |
795 | if (rdev->mc_fw->size != mc_req_size) { | 786 | if (rdev->mc_fw->size != mc_req_size) { |
@@ -802,7 +793,7 @@ int ni_init_microcode(struct radeon_device *rdev) | |||
802 | 793 | ||
803 | if ((rdev->family >= CHIP_BARTS) && (rdev->family <= CHIP_CAYMAN)) { | 794 | if ((rdev->family >= CHIP_BARTS) && (rdev->family <= CHIP_CAYMAN)) { |
804 | snprintf(fw_name, sizeof(fw_name), "radeon/%s_smc.bin", chip_name); | 795 | snprintf(fw_name, sizeof(fw_name), "radeon/%s_smc.bin", chip_name); |
805 | err = request_firmware(&rdev->smc_fw, fw_name, &pdev->dev); | 796 | err = request_firmware(&rdev->smc_fw, fw_name, rdev->dev); |
806 | if (err) | 797 | if (err) |
807 | goto out; | 798 | goto out; |
808 | if (rdev->smc_fw->size != smc_req_size) { | 799 | if (rdev->smc_fw->size != smc_req_size) { |
@@ -814,8 +805,6 @@ int ni_init_microcode(struct radeon_device *rdev) | |||
814 | } | 805 | } |
815 | 806 | ||
816 | out: | 807 | out: |
817 | platform_device_unregister(pdev); | ||
818 | |||
819 | if (err) { | 808 | if (err) { |
820 | if (err != -EINVAL) | 809 | if (err != -EINVAL) |
821 | printk(KERN_ERR | 810 | printk(KERN_ERR |
diff --git a/drivers/gpu/drm/radeon/r100.c b/drivers/gpu/drm/radeon/r100.c index c9affefd79f6..75349cdaa84b 100644 --- a/drivers/gpu/drm/radeon/r100.c +++ b/drivers/gpu/drm/radeon/r100.c | |||
@@ -39,7 +39,6 @@ | |||
39 | #include "atom.h" | 39 | #include "atom.h" |
40 | 40 | ||
41 | #include <linux/firmware.h> | 41 | #include <linux/firmware.h> |
42 | #include <linux/platform_device.h> | ||
43 | #include <linux/module.h> | 42 | #include <linux/module.h> |
44 | 43 | ||
45 | #include "r100_reg_safe.h" | 44 | #include "r100_reg_safe.h" |
@@ -989,18 +988,11 @@ void r100_ring_start(struct radeon_device *rdev, struct radeon_ring *ring) | |||
989 | /* Load the microcode for the CP */ | 988 | /* Load the microcode for the CP */ |
990 | static int r100_cp_init_microcode(struct radeon_device *rdev) | 989 | static int r100_cp_init_microcode(struct radeon_device *rdev) |
991 | { | 990 | { |
992 | struct platform_device *pdev; | ||
993 | const char *fw_name = NULL; | 991 | const char *fw_name = NULL; |
994 | int err; | 992 | int err; |
995 | 993 | ||
996 | DRM_DEBUG_KMS("\n"); | 994 | DRM_DEBUG_KMS("\n"); |
997 | 995 | ||
998 | pdev = platform_device_register_simple("radeon_cp", 0, NULL, 0); | ||
999 | err = IS_ERR(pdev); | ||
1000 | if (err) { | ||
1001 | printk(KERN_ERR "radeon_cp: Failed to register firmware\n"); | ||
1002 | return -EINVAL; | ||
1003 | } | ||
1004 | if ((rdev->family == CHIP_R100) || (rdev->family == CHIP_RV100) || | 996 | if ((rdev->family == CHIP_R100) || (rdev->family == CHIP_RV100) || |
1005 | (rdev->family == CHIP_RV200) || (rdev->family == CHIP_RS100) || | 997 | (rdev->family == CHIP_RV200) || (rdev->family == CHIP_RS100) || |
1006 | (rdev->family == CHIP_RS200)) { | 998 | (rdev->family == CHIP_RS200)) { |
@@ -1042,8 +1034,7 @@ static int r100_cp_init_microcode(struct radeon_device *rdev) | |||
1042 | fw_name = FIRMWARE_R520; | 1034 | fw_name = FIRMWARE_R520; |
1043 | } | 1035 | } |
1044 | 1036 | ||
1045 | err = request_firmware(&rdev->me_fw, fw_name, &pdev->dev); | 1037 | err = request_firmware(&rdev->me_fw, fw_name, rdev->dev); |
1046 | platform_device_unregister(pdev); | ||
1047 | if (err) { | 1038 | if (err) { |
1048 | printk(KERN_ERR "radeon_cp: Failed to load firmware \"%s\"\n", | 1039 | printk(KERN_ERR "radeon_cp: Failed to load firmware \"%s\"\n", |
1049 | fw_name); | 1040 | fw_name); |
diff --git a/drivers/gpu/drm/radeon/r600.c b/drivers/gpu/drm/radeon/r600.c index f7d494f264a5..4982cd8ce8b7 100644 --- a/drivers/gpu/drm/radeon/r600.c +++ b/drivers/gpu/drm/radeon/r600.c | |||
@@ -28,7 +28,6 @@ | |||
28 | #include <linux/slab.h> | 28 | #include <linux/slab.h> |
29 | #include <linux/seq_file.h> | 29 | #include <linux/seq_file.h> |
30 | #include <linux/firmware.h> | 30 | #include <linux/firmware.h> |
31 | #include <linux/platform_device.h> | ||
32 | #include <linux/module.h> | 31 | #include <linux/module.h> |
33 | #include <drm/drmP.h> | 32 | #include <drm/drmP.h> |
34 | #include <drm/radeon_drm.h> | 33 | #include <drm/radeon_drm.h> |
@@ -2144,7 +2143,6 @@ void r600_cp_stop(struct radeon_device *rdev) | |||
2144 | 2143 | ||
2145 | int r600_init_microcode(struct radeon_device *rdev) | 2144 | int r600_init_microcode(struct radeon_device *rdev) |
2146 | { | 2145 | { |
2147 | struct platform_device *pdev; | ||
2148 | const char *chip_name; | 2146 | const char *chip_name; |
2149 | const char *rlc_chip_name; | 2147 | const char *rlc_chip_name; |
2150 | const char *smc_chip_name = "RV770"; | 2148 | const char *smc_chip_name = "RV770"; |
@@ -2154,13 +2152,6 @@ int r600_init_microcode(struct radeon_device *rdev) | |||
2154 | 2152 | ||
2155 | DRM_DEBUG("\n"); | 2153 | DRM_DEBUG("\n"); |
2156 | 2154 | ||
2157 | pdev = platform_device_register_simple("radeon_cp", 0, NULL, 0); | ||
2158 | err = IS_ERR(pdev); | ||
2159 | if (err) { | ||
2160 | printk(KERN_ERR "radeon_cp: Failed to register firmware\n"); | ||
2161 | return -EINVAL; | ||
2162 | } | ||
2163 | |||
2164 | switch (rdev->family) { | 2155 | switch (rdev->family) { |
2165 | case CHIP_R600: | 2156 | case CHIP_R600: |
2166 | chip_name = "R600"; | 2157 | chip_name = "R600"; |
@@ -2272,7 +2263,7 @@ int r600_init_microcode(struct radeon_device *rdev) | |||
2272 | DRM_INFO("Loading %s Microcode\n", chip_name); | 2263 | DRM_INFO("Loading %s Microcode\n", chip_name); |
2273 | 2264 | ||
2274 | snprintf(fw_name, sizeof(fw_name), "radeon/%s_pfp.bin", chip_name); | 2265 | snprintf(fw_name, sizeof(fw_name), "radeon/%s_pfp.bin", chip_name); |
2275 | err = request_firmware(&rdev->pfp_fw, fw_name, &pdev->dev); | 2266 | err = request_firmware(&rdev->pfp_fw, fw_name, rdev->dev); |
2276 | if (err) | 2267 | if (err) |
2277 | goto out; | 2268 | goto out; |
2278 | if (rdev->pfp_fw->size != pfp_req_size) { | 2269 | if (rdev->pfp_fw->size != pfp_req_size) { |
@@ -2284,7 +2275,7 @@ int r600_init_microcode(struct radeon_device *rdev) | |||
2284 | } | 2275 | } |
2285 | 2276 | ||
2286 | snprintf(fw_name, sizeof(fw_name), "radeon/%s_me.bin", chip_name); | 2277 | snprintf(fw_name, sizeof(fw_name), "radeon/%s_me.bin", chip_name); |
2287 | err = request_firmware(&rdev->me_fw, fw_name, &pdev->dev); | 2278 | err = request_firmware(&rdev->me_fw, fw_name, rdev->dev); |
2288 | if (err) | 2279 | if (err) |
2289 | goto out; | 2280 | goto out; |
2290 | if (rdev->me_fw->size != me_req_size) { | 2281 | if (rdev->me_fw->size != me_req_size) { |
@@ -2295,7 +2286,7 @@ int r600_init_microcode(struct radeon_device *rdev) | |||
2295 | } | 2286 | } |
2296 | 2287 | ||
2297 | snprintf(fw_name, sizeof(fw_name), "radeon/%s_rlc.bin", rlc_chip_name); | 2288 | snprintf(fw_name, sizeof(fw_name), "radeon/%s_rlc.bin", rlc_chip_name); |
2298 | err = request_firmware(&rdev->rlc_fw, fw_name, &pdev->dev); | 2289 | err = request_firmware(&rdev->rlc_fw, fw_name, rdev->dev); |
2299 | if (err) | 2290 | if (err) |
2300 | goto out; | 2291 | goto out; |
2301 | if (rdev->rlc_fw->size != rlc_req_size) { | 2292 | if (rdev->rlc_fw->size != rlc_req_size) { |
@@ -2307,7 +2298,7 @@ int r600_init_microcode(struct radeon_device *rdev) | |||
2307 | 2298 | ||
2308 | if ((rdev->family >= CHIP_RV770) && (rdev->family <= CHIP_HEMLOCK)) { | 2299 | if ((rdev->family >= CHIP_RV770) && (rdev->family <= CHIP_HEMLOCK)) { |
2309 | snprintf(fw_name, sizeof(fw_name), "radeon/%s_smc.bin", smc_chip_name); | 2300 | snprintf(fw_name, sizeof(fw_name), "radeon/%s_smc.bin", smc_chip_name); |
2310 | err = request_firmware(&rdev->smc_fw, fw_name, &pdev->dev); | 2301 | err = request_firmware(&rdev->smc_fw, fw_name, rdev->dev); |
2311 | if (err) | 2302 | if (err) |
2312 | goto out; | 2303 | goto out; |
2313 | if (rdev->smc_fw->size != smc_req_size) { | 2304 | if (rdev->smc_fw->size != smc_req_size) { |
@@ -2319,8 +2310,6 @@ int r600_init_microcode(struct radeon_device *rdev) | |||
2319 | } | 2310 | } |
2320 | 2311 | ||
2321 | out: | 2312 | out: |
2322 | platform_device_unregister(pdev); | ||
2323 | |||
2324 | if (err) { | 2313 | if (err) { |
2325 | if (err != -EINVAL) | 2314 | if (err != -EINVAL) |
2326 | printk(KERN_ERR | 2315 | printk(KERN_ERR |
diff --git a/drivers/gpu/drm/radeon/radeon_uvd.c b/drivers/gpu/drm/radeon/radeon_uvd.c index 41efcec28cd8..34444f62803f 100644 --- a/drivers/gpu/drm/radeon/radeon_uvd.c +++ b/drivers/gpu/drm/radeon/radeon_uvd.c | |||
@@ -56,20 +56,12 @@ static void radeon_uvd_idle_work_handler(struct work_struct *work); | |||
56 | 56 | ||
57 | int radeon_uvd_init(struct radeon_device *rdev) | 57 | int radeon_uvd_init(struct radeon_device *rdev) |
58 | { | 58 | { |
59 | struct platform_device *pdev; | ||
60 | unsigned long bo_size; | 59 | unsigned long bo_size; |
61 | const char *fw_name; | 60 | const char *fw_name; |
62 | int i, r; | 61 | int i, r; |
63 | 62 | ||
64 | INIT_DELAYED_WORK(&rdev->uvd.idle_work, radeon_uvd_idle_work_handler); | 63 | INIT_DELAYED_WORK(&rdev->uvd.idle_work, radeon_uvd_idle_work_handler); |
65 | 64 | ||
66 | pdev = platform_device_register_simple("radeon_uvd", 0, NULL, 0); | ||
67 | r = IS_ERR(pdev); | ||
68 | if (r) { | ||
69 | dev_err(rdev->dev, "radeon_uvd: Failed to register firmware\n"); | ||
70 | return -EINVAL; | ||
71 | } | ||
72 | |||
73 | switch (rdev->family) { | 65 | switch (rdev->family) { |
74 | case CHIP_RV710: | 66 | case CHIP_RV710: |
75 | case CHIP_RV730: | 67 | case CHIP_RV730: |
@@ -112,16 +104,13 @@ int radeon_uvd_init(struct radeon_device *rdev) | |||
112 | return -EINVAL; | 104 | return -EINVAL; |
113 | } | 105 | } |
114 | 106 | ||
115 | r = request_firmware(&rdev->uvd_fw, fw_name, &pdev->dev); | 107 | r = request_firmware(&rdev->uvd_fw, fw_name, rdev->dev); |
116 | if (r) { | 108 | if (r) { |
117 | dev_err(rdev->dev, "radeon_uvd: Can't load firmware \"%s\"\n", | 109 | dev_err(rdev->dev, "radeon_uvd: Can't load firmware \"%s\"\n", |
118 | fw_name); | 110 | fw_name); |
119 | platform_device_unregister(pdev); | ||
120 | return r; | 111 | return r; |
121 | } | 112 | } |
122 | 113 | ||
123 | platform_device_unregister(pdev); | ||
124 | |||
125 | bo_size = RADEON_GPU_PAGE_ALIGN(rdev->uvd_fw->size + 8) + | 114 | bo_size = RADEON_GPU_PAGE_ALIGN(rdev->uvd_fw->size + 8) + |
126 | RADEON_UVD_STACK_SIZE + RADEON_UVD_HEAP_SIZE; | 115 | RADEON_UVD_STACK_SIZE + RADEON_UVD_HEAP_SIZE; |
127 | r = radeon_bo_create(rdev, bo_size, PAGE_SIZE, true, | 116 | r = radeon_bo_create(rdev, bo_size, PAGE_SIZE, true, |
diff --git a/drivers/gpu/drm/radeon/si.c b/drivers/gpu/drm/radeon/si.c index 234906709067..f305768c3dfa 100644 --- a/drivers/gpu/drm/radeon/si.c +++ b/drivers/gpu/drm/radeon/si.c | |||
@@ -22,7 +22,6 @@ | |||
22 | * Authors: Alex Deucher | 22 | * Authors: Alex Deucher |
23 | */ | 23 | */ |
24 | #include <linux/firmware.h> | 24 | #include <linux/firmware.h> |
25 | #include <linux/platform_device.h> | ||
26 | #include <linux/slab.h> | 25 | #include <linux/slab.h> |
27 | #include <linux/module.h> | 26 | #include <linux/module.h> |
28 | #include <drm/drmP.h> | 27 | #include <drm/drmP.h> |
@@ -1541,7 +1540,6 @@ static int si_mc_load_microcode(struct radeon_device *rdev) | |||
1541 | 1540 | ||
1542 | static int si_init_microcode(struct radeon_device *rdev) | 1541 | static int si_init_microcode(struct radeon_device *rdev) |
1543 | { | 1542 | { |
1544 | struct platform_device *pdev; | ||
1545 | const char *chip_name; | 1543 | const char *chip_name; |
1546 | const char *rlc_chip_name; | 1544 | const char *rlc_chip_name; |
1547 | size_t pfp_req_size, me_req_size, ce_req_size, rlc_req_size, mc_req_size; | 1545 | size_t pfp_req_size, me_req_size, ce_req_size, rlc_req_size, mc_req_size; |
@@ -1551,13 +1549,6 @@ static int si_init_microcode(struct radeon_device *rdev) | |||
1551 | 1549 | ||
1552 | DRM_DEBUG("\n"); | 1550 | DRM_DEBUG("\n"); |
1553 | 1551 | ||
1554 | pdev = platform_device_register_simple("radeon_cp", 0, NULL, 0); | ||
1555 | err = IS_ERR(pdev); | ||
1556 | if (err) { | ||
1557 | printk(KERN_ERR "radeon_cp: Failed to register firmware\n"); | ||
1558 | return -EINVAL; | ||
1559 | } | ||
1560 | |||
1561 | switch (rdev->family) { | 1552 | switch (rdev->family) { |
1562 | case CHIP_TAHITI: | 1553 | case CHIP_TAHITI: |
1563 | chip_name = "TAHITI"; | 1554 | chip_name = "TAHITI"; |
@@ -1615,7 +1606,7 @@ static int si_init_microcode(struct radeon_device *rdev) | |||
1615 | DRM_INFO("Loading %s Microcode\n", chip_name); | 1606 | DRM_INFO("Loading %s Microcode\n", chip_name); |
1616 | 1607 | ||
1617 | snprintf(fw_name, sizeof(fw_name), "radeon/%s_pfp.bin", chip_name); | 1608 | snprintf(fw_name, sizeof(fw_name), "radeon/%s_pfp.bin", chip_name); |
1618 | err = request_firmware(&rdev->pfp_fw, fw_name, &pdev->dev); | 1609 | err = request_firmware(&rdev->pfp_fw, fw_name, rdev->dev); |
1619 | if (err) | 1610 | if (err) |
1620 | goto out; | 1611 | goto out; |
1621 | if (rdev->pfp_fw->size != pfp_req_size) { | 1612 | if (rdev->pfp_fw->size != pfp_req_size) { |
@@ -1627,7 +1618,7 @@ static int si_init_microcode(struct radeon_device *rdev) | |||
1627 | } | 1618 | } |
1628 | 1619 | ||
1629 | snprintf(fw_name, sizeof(fw_name), "radeon/%s_me.bin", chip_name); | 1620 | snprintf(fw_name, sizeof(fw_name), "radeon/%s_me.bin", chip_name); |
1630 | err = request_firmware(&rdev->me_fw, fw_name, &pdev->dev); | 1621 | err = request_firmware(&rdev->me_fw, fw_name, rdev->dev); |
1631 | if (err) | 1622 | if (err) |
1632 | goto out; | 1623 | goto out; |
1633 | if (rdev->me_fw->size != me_req_size) { | 1624 | if (rdev->me_fw->size != me_req_size) { |
@@ -1638,7 +1629,7 @@ static int si_init_microcode(struct radeon_device *rdev) | |||
1638 | } | 1629 | } |
1639 | 1630 | ||
1640 | snprintf(fw_name, sizeof(fw_name), "radeon/%s_ce.bin", chip_name); | 1631 | snprintf(fw_name, sizeof(fw_name), "radeon/%s_ce.bin", chip_name); |
1641 | err = request_firmware(&rdev->ce_fw, fw_name, &pdev->dev); | 1632 | err = request_firmware(&rdev->ce_fw, fw_name, rdev->dev); |
1642 | if (err) | 1633 | if (err) |
1643 | goto out; | 1634 | goto out; |
1644 | if (rdev->ce_fw->size != ce_req_size) { | 1635 | if (rdev->ce_fw->size != ce_req_size) { |
@@ -1649,7 +1640,7 @@ static int si_init_microcode(struct radeon_device *rdev) | |||
1649 | } | 1640 | } |
1650 | 1641 | ||
1651 | snprintf(fw_name, sizeof(fw_name), "radeon/%s_rlc.bin", rlc_chip_name); | 1642 | snprintf(fw_name, sizeof(fw_name), "radeon/%s_rlc.bin", rlc_chip_name); |
1652 | err = request_firmware(&rdev->rlc_fw, fw_name, &pdev->dev); | 1643 | err = request_firmware(&rdev->rlc_fw, fw_name, rdev->dev); |
1653 | if (err) | 1644 | if (err) |
1654 | goto out; | 1645 | goto out; |
1655 | if (rdev->rlc_fw->size != rlc_req_size) { | 1646 | if (rdev->rlc_fw->size != rlc_req_size) { |
@@ -1660,7 +1651,7 @@ static int si_init_microcode(struct radeon_device *rdev) | |||
1660 | } | 1651 | } |
1661 | 1652 | ||
1662 | snprintf(fw_name, sizeof(fw_name), "radeon/%s_mc.bin", chip_name); | 1653 | snprintf(fw_name, sizeof(fw_name), "radeon/%s_mc.bin", chip_name); |
1663 | err = request_firmware(&rdev->mc_fw, fw_name, &pdev->dev); | 1654 | err = request_firmware(&rdev->mc_fw, fw_name, rdev->dev); |
1664 | if (err) | 1655 | if (err) |
1665 | goto out; | 1656 | goto out; |
1666 | if (rdev->mc_fw->size != mc_req_size) { | 1657 | if (rdev->mc_fw->size != mc_req_size) { |
@@ -1671,7 +1662,7 @@ static int si_init_microcode(struct radeon_device *rdev) | |||
1671 | } | 1662 | } |
1672 | 1663 | ||
1673 | snprintf(fw_name, sizeof(fw_name), "radeon/%s_smc.bin", chip_name); | 1664 | snprintf(fw_name, sizeof(fw_name), "radeon/%s_smc.bin", chip_name); |
1674 | err = request_firmware(&rdev->smc_fw, fw_name, &pdev->dev); | 1665 | err = request_firmware(&rdev->smc_fw, fw_name, rdev->dev); |
1675 | if (err) | 1666 | if (err) |
1676 | goto out; | 1667 | goto out; |
1677 | if (rdev->smc_fw->size != smc_req_size) { | 1668 | if (rdev->smc_fw->size != smc_req_size) { |
@@ -1682,8 +1673,6 @@ static int si_init_microcode(struct radeon_device *rdev) | |||
1682 | } | 1673 | } |
1683 | 1674 | ||
1684 | out: | 1675 | out: |
1685 | platform_device_unregister(pdev); | ||
1686 | |||
1687 | if (err) { | 1676 | if (err) { |
1688 | if (err != -EINVAL) | 1677 | if (err != -EINVAL) |
1689 | printk(KERN_ERR | 1678 | printk(KERN_ERR |