[PATCH] drm/radeon: use radeon device for request firmware
Am 11.07.2013 21:53, schrieb j.glisse at gmail.com: > From: Jerome Glisse > > 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. > > Signed-off-by: Jerome Glisse Thanks, also had that on my todo list since I wrote the UVD code. Patchset is: Reviewed-by: Christian K?nig > --- > drivers/gpu/drm/radeon/cik.c| 25 +++-- > drivers/gpu/drm/radeon/ni.c | 21 + > drivers/gpu/drm/radeon/r100.c | 11 +-- > drivers/gpu/drm/radeon/r600.c | 19 --- > drivers/gpu/drm/radeon/radeon_uvd.c | 13 + > 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 db507a4..b893165 100644 > --- a/drivers/gpu/drm/radeon/cik.c > +++ b/drivers/gpu/drm/radeon/cik.c > @@ -22,7 +22,6 @@ >* Authors: Alex Deucher >*/ > #include > -#include > #include > #include > #include "drmP.h" > @@ -742,7 +741,6 @@ static int ci_mc_load_microcode(struct radeon_device > *rdev) >*/ > static int cik_init_microcode(struct radeon_device *rdev) > { > - struct platform_device *pdev; > const char *chip_name; > size_t pfp_req_size, me_req_size, ce_req_size, > mec_req_size, rlc_req_size, mc_req_size, > @@ -752,13 +750,6 @@ static int cik_init_microcode(struct radeon_device *rdev) > > DRM_DEBUG("\n"); > > - pdev = platform_device_register_simple("radeon_cp", 0, NULL, 0); > - err = IS_ERR(pdev); > - if (err) { > - printk(KERN_ERR "radeon_cp: Failed to register firmware\n"); > - return -EINVAL; > - } > - > switch (rdev->family) { > case CHIP_BONAIRE: > chip_name = "BONAIRE"; > @@ -794,7 +785,7 @@ static int cik_init_microcode(struct radeon_device *rdev) > DRM_INFO("Loading %s Microcode\n", chip_name); > > snprintf(fw_name, sizeof(fw_name), "radeon/%s_pfp.bin", chip_name); > - err = request_firmware(>pfp_fw, fw_name, >dev); > + err = request_firmware(>pfp_fw, fw_name, rdev->dev); > if (err) > goto out; > if (rdev->pfp_fw->size != pfp_req_size) { > @@ -806,7 +797,7 @@ static int cik_init_microcode(struct radeon_device *rdev) > } > > snprintf(fw_name, sizeof(fw_name), "radeon/%s_me.bin", chip_name); > - err = request_firmware(>me_fw, fw_name, >dev); > + err = request_firmware(>me_fw, fw_name, rdev->dev); > if (err) > goto out; > if (rdev->me_fw->size != me_req_size) { > @@ -817,7 +808,7 @@ static int cik_init_microcode(struct radeon_device *rdev) > } > > snprintf(fw_name, sizeof(fw_name), "radeon/%s_ce.bin", chip_name); > - err = request_firmware(>ce_fw, fw_name, >dev); > + err = request_firmware(>ce_fw, fw_name, rdev->dev); > if (err) > goto out; > if (rdev->ce_fw->size != ce_req_size) { > @@ -828,7 +819,7 @@ static int cik_init_microcode(struct radeon_device *rdev) > } > > snprintf(fw_name, sizeof(fw_name), "radeon/%s_mec.bin", chip_name); > - err = request_firmware(>mec_fw, fw_name, >dev); > + err = request_firmware(>mec_fw, fw_name, rdev->dev); > if (err) > goto out; > if (rdev->mec_fw->size != mec_req_size) { > @@ -839,7 +830,7 @@ static int cik_init_microcode(struct radeon_device *rdev) > } > > snprintf(fw_name, sizeof(fw_name), "radeon/%s_rlc.bin", chip_name); > - err = request_firmware(>rlc_fw, fw_name, >dev); > + err = request_firmware(>rlc_fw, fw_name, rdev->dev); > if (err) > goto out; > if (rdev->rlc_fw->size != rlc_req_size) { > @@ -850,7 +841,7 @@ static int cik_init_microcode(struct radeon_device *rdev) > } > > snprintf(fw_name, sizeof(fw_name), "radeon/%s_sdma.bin", chip_name); > - err = request_firmware(>sdma_fw, fw_name, >dev); > + err = request_firmware(>sdma_fw, fw_name, rdev->dev); > if (err) > goto out; > if (rdev->sdma_fw->size != sdma_req_size) { > @@ -863,7 +854,7 @@ static int cik_init_microcode(struct radeon_device *rdev) > /* No MC ucode on APUs */ > if (!(rdev->flags & RADEON_IS_IGP)) { > snprintf(fw_name, sizeof(fw_name), "radeon/%s_mc.bin", > chip_name); > - err = request_firmware(>mc_fw, fw_name, >dev); > + err = request_firmware(>mc_fw, fw_name, rdev->dev); > if (err) > goto out; > if (rdev->mc_fw->size != mc_req_size) { > @@ -875,8 +866,6 @@ static int cik_init_microcode(struct radeon_device *rdev) > } > > out: > - platform_device_unregister(pdev); > - > if (err) { > if (err != -EINVAL) >
Re: [PATCH] drm/radeon: use radeon device for request firmware
Am 11.07.2013 21:53, schrieb j.gli...@gmail.com: From: Jerome Glisse jgli...@redhat.com 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. Signed-off-by: Jerome Glisse jgli...@redhat.com Thanks, also had that on my todo list since I wrote the UVD code. Patchset is: Reviewed-by: Christian König christian.koe...@amd.com --- drivers/gpu/drm/radeon/cik.c| 25 +++-- drivers/gpu/drm/radeon/ni.c | 21 + drivers/gpu/drm/radeon/r100.c | 11 +-- drivers/gpu/drm/radeon/r600.c | 19 --- drivers/gpu/drm/radeon/radeon_uvd.c | 13 + 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 db507a4..b893165 100644 --- a/drivers/gpu/drm/radeon/cik.c +++ b/drivers/gpu/drm/radeon/cik.c @@ -22,7 +22,6 @@ * Authors: Alex Deucher */ #include linux/firmware.h -#include linux/platform_device.h #include linux/slab.h #include linux/module.h #include drmP.h @@ -742,7 +741,6 @@ static int ci_mc_load_microcode(struct radeon_device *rdev) */ static int cik_init_microcode(struct radeon_device *rdev) { - struct platform_device *pdev; const char *chip_name; size_t pfp_req_size, me_req_size, ce_req_size, mec_req_size, rlc_req_size, mc_req_size, @@ -752,13 +750,6 @@ static int cik_init_microcode(struct radeon_device *rdev) DRM_DEBUG(\n); - pdev = platform_device_register_simple(radeon_cp, 0, NULL, 0); - err = IS_ERR(pdev); - if (err) { - printk(KERN_ERR radeon_cp: Failed to register firmware\n); - return -EINVAL; - } - switch (rdev-family) { case CHIP_BONAIRE: chip_name = BONAIRE; @@ -794,7 +785,7 @@ static int cik_init_microcode(struct radeon_device *rdev) DRM_INFO(Loading %s Microcode\n, chip_name); snprintf(fw_name, sizeof(fw_name), radeon/%s_pfp.bin, chip_name); - err = request_firmware(rdev-pfp_fw, fw_name, pdev-dev); + err = request_firmware(rdev-pfp_fw, fw_name, rdev-dev); if (err) goto out; if (rdev-pfp_fw-size != pfp_req_size) { @@ -806,7 +797,7 @@ static int cik_init_microcode(struct radeon_device *rdev) } snprintf(fw_name, sizeof(fw_name), radeon/%s_me.bin, chip_name); - err = request_firmware(rdev-me_fw, fw_name, pdev-dev); + err = request_firmware(rdev-me_fw, fw_name, rdev-dev); if (err) goto out; if (rdev-me_fw-size != me_req_size) { @@ -817,7 +808,7 @@ static int cik_init_microcode(struct radeon_device *rdev) } snprintf(fw_name, sizeof(fw_name), radeon/%s_ce.bin, chip_name); - err = request_firmware(rdev-ce_fw, fw_name, pdev-dev); + err = request_firmware(rdev-ce_fw, fw_name, rdev-dev); if (err) goto out; if (rdev-ce_fw-size != ce_req_size) { @@ -828,7 +819,7 @@ static int cik_init_microcode(struct radeon_device *rdev) } snprintf(fw_name, sizeof(fw_name), radeon/%s_mec.bin, chip_name); - err = request_firmware(rdev-mec_fw, fw_name, pdev-dev); + err = request_firmware(rdev-mec_fw, fw_name, rdev-dev); if (err) goto out; if (rdev-mec_fw-size != mec_req_size) { @@ -839,7 +830,7 @@ static int cik_init_microcode(struct radeon_device *rdev) } snprintf(fw_name, sizeof(fw_name), radeon/%s_rlc.bin, chip_name); - err = request_firmware(rdev-rlc_fw, fw_name, pdev-dev); + err = request_firmware(rdev-rlc_fw, fw_name, rdev-dev); if (err) goto out; if (rdev-rlc_fw-size != rlc_req_size) { @@ -850,7 +841,7 @@ static int cik_init_microcode(struct radeon_device *rdev) } snprintf(fw_name, sizeof(fw_name), radeon/%s_sdma.bin, chip_name); - err = request_firmware(rdev-sdma_fw, fw_name, pdev-dev); + err = request_firmware(rdev-sdma_fw, fw_name, rdev-dev); if (err) goto out; if (rdev-sdma_fw-size != sdma_req_size) { @@ -863,7 +854,7 @@ static int cik_init_microcode(struct radeon_device *rdev) /* No MC ucode on APUs */ if (!(rdev-flags RADEON_IS_IGP)) { snprintf(fw_name, sizeof(fw_name), radeon/%s_mc.bin, chip_name); - err = request_firmware(rdev-mc_fw, fw_name, pdev-dev); + err = request_firmware(rdev-mc_fw, fw_name, rdev-dev); if (err) goto out; if (rdev-mc_fw-size != mc_req_size) { @@ -875,8 +866,6 @@ static int cik_init_microcode(struct radeon_device *rdev) } out: - platform_device_unregister(pdev); - if (err) { if (err
[PATCH] drm/radeon: use radeon device for request firmware
From: Jerome GlisseAvoid 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. Signed-off-by: Jerome Glisse --- drivers/gpu/drm/radeon/cik.c| 25 +++-- drivers/gpu/drm/radeon/ni.c | 21 + drivers/gpu/drm/radeon/r100.c | 11 +-- drivers/gpu/drm/radeon/r600.c | 19 --- drivers/gpu/drm/radeon/radeon_uvd.c | 13 + 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 db507a4..b893165 100644 --- a/drivers/gpu/drm/radeon/cik.c +++ b/drivers/gpu/drm/radeon/cik.c @@ -22,7 +22,6 @@ * Authors: Alex Deucher */ #include -#include #include #include #include "drmP.h" @@ -742,7 +741,6 @@ static int ci_mc_load_microcode(struct radeon_device *rdev) */ static int cik_init_microcode(struct radeon_device *rdev) { - struct platform_device *pdev; const char *chip_name; size_t pfp_req_size, me_req_size, ce_req_size, mec_req_size, rlc_req_size, mc_req_size, @@ -752,13 +750,6 @@ static int cik_init_microcode(struct radeon_device *rdev) DRM_DEBUG("\n"); - pdev = platform_device_register_simple("radeon_cp", 0, NULL, 0); - err = IS_ERR(pdev); - if (err) { - printk(KERN_ERR "radeon_cp: Failed to register firmware\n"); - return -EINVAL; - } - switch (rdev->family) { case CHIP_BONAIRE: chip_name = "BONAIRE"; @@ -794,7 +785,7 @@ static int cik_init_microcode(struct radeon_device *rdev) DRM_INFO("Loading %s Microcode\n", chip_name); snprintf(fw_name, sizeof(fw_name), "radeon/%s_pfp.bin", chip_name); - err = request_firmware(>pfp_fw, fw_name, >dev); + err = request_firmware(>pfp_fw, fw_name, rdev->dev); if (err) goto out; if (rdev->pfp_fw->size != pfp_req_size) { @@ -806,7 +797,7 @@ static int cik_init_microcode(struct radeon_device *rdev) } snprintf(fw_name, sizeof(fw_name), "radeon/%s_me.bin", chip_name); - err = request_firmware(>me_fw, fw_name, >dev); + err = request_firmware(>me_fw, fw_name, rdev->dev); if (err) goto out; if (rdev->me_fw->size != me_req_size) { @@ -817,7 +808,7 @@ static int cik_init_microcode(struct radeon_device *rdev) } snprintf(fw_name, sizeof(fw_name), "radeon/%s_ce.bin", chip_name); - err = request_firmware(>ce_fw, fw_name, >dev); + err = request_firmware(>ce_fw, fw_name, rdev->dev); if (err) goto out; if (rdev->ce_fw->size != ce_req_size) { @@ -828,7 +819,7 @@ static int cik_init_microcode(struct radeon_device *rdev) } snprintf(fw_name, sizeof(fw_name), "radeon/%s_mec.bin", chip_name); - err = request_firmware(>mec_fw, fw_name, >dev); + err = request_firmware(>mec_fw, fw_name, rdev->dev); if (err) goto out; if (rdev->mec_fw->size != mec_req_size) { @@ -839,7 +830,7 @@ static int cik_init_microcode(struct radeon_device *rdev) } snprintf(fw_name, sizeof(fw_name), "radeon/%s_rlc.bin", chip_name); - err = request_firmware(>rlc_fw, fw_name, >dev); + err = request_firmware(>rlc_fw, fw_name, rdev->dev); if (err) goto out; if (rdev->rlc_fw->size != rlc_req_size) { @@ -850,7 +841,7 @@ static int cik_init_microcode(struct radeon_device *rdev) } snprintf(fw_name, sizeof(fw_name), "radeon/%s_sdma.bin", chip_name); - err = request_firmware(>sdma_fw, fw_name, >dev); + err = request_firmware(>sdma_fw, fw_name, rdev->dev); if (err) goto out; if (rdev->sdma_fw->size != sdma_req_size) { @@ -863,7 +854,7 @@ static int cik_init_microcode(struct radeon_device *rdev) /* No MC ucode on APUs */ if (!(rdev->flags & RADEON_IS_IGP)) { snprintf(fw_name, sizeof(fw_name), "radeon/%s_mc.bin", chip_name); - err = request_firmware(>mc_fw, fw_name, >dev); + err = request_firmware(>mc_fw, fw_name, rdev->dev); if (err) goto out; if (rdev->mc_fw->size != mc_req_size) { @@ -875,8 +866,6 @@ static int cik_init_microcode(struct radeon_device *rdev) } out: - platform_device_unregister(pdev); - if (err) { if (err != -EINVAL) printk(KERN_ERR diff --git a/drivers/gpu/drm/radeon/ni.c b/drivers/gpu/drm/radeon/ni.c index f30127c..465b17e 100644 --- a/drivers/gpu/drm/radeon/ni.c +++ b/drivers/gpu/drm/radeon/ni.c @@ -22,7 +22,6 @@ * Authors: Alex Deucher */ #include -#include #include