[PATCH] drm/radeon: use radeon device for request firmware

2013-07-12 Thread Christian König
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

2013-07-12 Thread Christian König

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

2013-07-11 Thread j.gli...@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 
---
 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