提交 70967ab9 编写于 作者: B Ben Hutchings 提交者: Dave Airlie

radeon: Use request_firmware()

Loosely based on a patch by
Jaswinder Singh Rajput <jaswinderlinux@gmail.com>.

KMS support by Dave Airlie <airlied@redhat.com>.

For Radeon 100- to 500-series, firmware blobs look like:
    struct {
        __be32 datah;
        __be32 datal;
    } cp_ucode[256];

For Radeon 600-series, there are two separate firmware blobs:
    __be32 me_ucode[PM4_UCODE_SIZE * 3];
    __be32 pfp_ucode[PFP_UCODE_SIZE];

For Radeon 700-series, likewise:
    __be32 me_ucode[R700_PM4_UCODE_SIZE];
    __be32 pfp_ucode[R700_PFP_UCODE_SIZE];
Signed-off-by: NBen Hutchings <ben@decadent.org.uk>
Signed-off-by: NDave Airlie <airlied@redhat.com>
上级 1ae70072
......@@ -50,6 +50,7 @@ config DRM_RADEON
select FB_CFB_IMAGEBLIT
select FB
select FRAMEBUFFER_CONSOLE if !EMBEDDED
select FW_LOADER
help
Choose this option if you have an ATI Radeon graphics card. There
are both PCI and AGP versions. You don't need to choose this to
......
......@@ -29,9 +29,27 @@
#include "drmP.h"
#include "drm.h"
#include "radeon_drm.h"
#include "radeon_microcode.h"
#include "radeon_reg.h"
#include "radeon.h"
#include <linux/firmware.h>
#include <linux/platform_device.h>
/* Firmware Names */
#define FIRMWARE_R100 "radeon/R100_cp.bin"
#define FIRMWARE_R200 "radeon/R200_cp.bin"
#define FIRMWARE_R300 "radeon/R300_cp.bin"
#define FIRMWARE_R420 "radeon/R420_cp.bin"
#define FIRMWARE_RS690 "radeon/RS690_cp.bin"
#define FIRMWARE_RS600 "radeon/RS600_cp.bin"
#define FIRMWARE_R520 "radeon/R520_cp.bin"
MODULE_FIRMWARE(FIRMWARE_R100);
MODULE_FIRMWARE(FIRMWARE_R200);
MODULE_FIRMWARE(FIRMWARE_R300);
MODULE_FIRMWARE(FIRMWARE_R420);
MODULE_FIRMWARE(FIRMWARE_RS690);
MODULE_FIRMWARE(FIRMWARE_RS600);
MODULE_FIRMWARE(FIRMWARE_R520);
/* This files gather functions specifics to:
* r100,rv100,rs100,rv200,rs200,r200,rv250,rs300,rv280
......@@ -478,33 +496,33 @@ void r100_ring_start(struct radeon_device *rdev)
radeon_ring_unlock_commit(rdev);
}
static void r100_cp_load_microcode(struct radeon_device *rdev)
/* Load the microcode for the CP */
static int r100_cp_init_microcode(struct radeon_device *rdev)
{
int i;
struct platform_device *pdev;
const char *fw_name = NULL;
int err;
if (r100_gui_wait_for_idle(rdev)) {
printk(KERN_WARNING "Failed to wait GUI idle while "
"programming pipes. Bad things might happen.\n");
}
DRM_DEBUG("\n");
WREG32(RADEON_CP_ME_RAM_ADDR, 0);
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;
}
if ((rdev->family == CHIP_R100) || (rdev->family == CHIP_RV100) ||
(rdev->family == CHIP_RV200) || (rdev->family == CHIP_RS100) ||
(rdev->family == CHIP_RS200)) {
DRM_INFO("Loading R100 Microcode\n");
for (i = 0; i < 256; i++) {
WREG32(RADEON_CP_ME_RAM_DATAH, R100_cp_microcode[i][1]);
WREG32(RADEON_CP_ME_RAM_DATAL, R100_cp_microcode[i][0]);
}
fw_name = FIRMWARE_R100;
} else if ((rdev->family == CHIP_R200) ||
(rdev->family == CHIP_RV250) ||
(rdev->family == CHIP_RV280) ||
(rdev->family == CHIP_RS300)) {
DRM_INFO("Loading R200 Microcode\n");
for (i = 0; i < 256; i++) {
WREG32(RADEON_CP_ME_RAM_DATAH, R200_cp_microcode[i][1]);
WREG32(RADEON_CP_ME_RAM_DATAL, R200_cp_microcode[i][0]);
}
fw_name = FIRMWARE_R200;
} else if ((rdev->family == CHIP_R300) ||
(rdev->family == CHIP_R350) ||
(rdev->family == CHIP_RV350) ||
......@@ -512,31 +530,19 @@ static void r100_cp_load_microcode(struct radeon_device *rdev)
(rdev->family == CHIP_RS400) ||
(rdev->family == CHIP_RS480)) {
DRM_INFO("Loading R300 Microcode\n");
for (i = 0; i < 256; i++) {
WREG32(RADEON_CP_ME_RAM_DATAH, R300_cp_microcode[i][1]);
WREG32(RADEON_CP_ME_RAM_DATAL, R300_cp_microcode[i][0]);
}
fw_name = FIRMWARE_R300;
} else if ((rdev->family == CHIP_R420) ||
(rdev->family == CHIP_R423) ||
(rdev->family == CHIP_RV410)) {
DRM_INFO("Loading R400 Microcode\n");
for (i = 0; i < 256; i++) {
WREG32(RADEON_CP_ME_RAM_DATAH, R420_cp_microcode[i][1]);
WREG32(RADEON_CP_ME_RAM_DATAL, R420_cp_microcode[i][0]);
}
fw_name = FIRMWARE_R420;
} else if ((rdev->family == CHIP_RS690) ||
(rdev->family == CHIP_RS740)) {
DRM_INFO("Loading RS690/RS740 Microcode\n");
for (i = 0; i < 256; i++) {
WREG32(RADEON_CP_ME_RAM_DATAH, RS690_cp_microcode[i][1]);
WREG32(RADEON_CP_ME_RAM_DATAL, RS690_cp_microcode[i][0]);
}
fw_name = FIRMWARE_RS690;
} else if (rdev->family == CHIP_RS600) {
DRM_INFO("Loading RS600 Microcode\n");
for (i = 0; i < 256; i++) {
WREG32(RADEON_CP_ME_RAM_DATAH, RS600_cp_microcode[i][1]);
WREG32(RADEON_CP_ME_RAM_DATAL, RS600_cp_microcode[i][0]);
}
fw_name = FIRMWARE_RS600;
} else if ((rdev->family == CHIP_RV515) ||
(rdev->family == CHIP_R520) ||
(rdev->family == CHIP_RV530) ||
......@@ -544,9 +550,43 @@ static void r100_cp_load_microcode(struct radeon_device *rdev)
(rdev->family == CHIP_RV560) ||
(rdev->family == CHIP_RV570)) {
DRM_INFO("Loading R500 Microcode\n");
for (i = 0; i < 256; i++) {
WREG32(RADEON_CP_ME_RAM_DATAH, R520_cp_microcode[i][1]);
WREG32(RADEON_CP_ME_RAM_DATAL, R520_cp_microcode[i][0]);
fw_name = FIRMWARE_R520;
}
err = request_firmware(&rdev->fw, fw_name, &pdev->dev);
platform_device_unregister(pdev);
if (err) {
printk(KERN_ERR "radeon_cp: Failed to load firmware \"%s\"\n",
fw_name);
} else if (rdev->fw->size % 8) {
printk(KERN_ERR
"radeon_cp: Bogus length %zu in firmware \"%s\"\n",
rdev->fw->size, fw_name);
err = -EINVAL;
release_firmware(rdev->fw);
rdev->fw = NULL;
}
return err;
}
static void r100_cp_load_microcode(struct radeon_device *rdev)
{
const __be32 *fw_data;
int i, size;
if (r100_gui_wait_for_idle(rdev)) {
printk(KERN_WARNING "Failed to wait GUI idle while "
"programming pipes. Bad things might happen.\n");
}
if (rdev->fw) {
size = rdev->fw->size / 4;
fw_data = (const __be32 *)&rdev->fw->data[0];
WREG32(RADEON_CP_ME_RAM_ADDR, 0);
for (i = 0; i < size; i += 2) {
WREG32(RADEON_CP_ME_RAM_DATAH,
be32_to_cpup(&fw_data[i]));
WREG32(RADEON_CP_ME_RAM_DATAL,
be32_to_cpup(&fw_data[i + 1]));
}
}
}
......@@ -585,6 +625,15 @@ int r100_cp_init(struct radeon_device *rdev, unsigned ring_size)
} else {
DRM_INFO("radeon: cp idle (0x%08X)\n", tmp);
}
if (!rdev->fw) {
r = r100_cp_init_microcode(rdev);
if (r) {
DRM_ERROR("Failed to load firmware!\n");
return r;
}
}
/* Align ring size */
rb_bufsz = drm_order(ring_size / 8);
ring_size = (1 << (rb_bufsz + 1)) * 4;
......
......@@ -31,7 +31,32 @@
#include "radeon_drm.h"
#include "radeon_drv.h"
#include "r600_microcode.h"
#define PFP_UCODE_SIZE 576
#define PM4_UCODE_SIZE 1792
#define R700_PFP_UCODE_SIZE 848
#define R700_PM4_UCODE_SIZE 1360
/* Firmware Names */
MODULE_FIRMWARE("radeon/R600_pfp.bin");
MODULE_FIRMWARE("radeon/R600_me.bin");
MODULE_FIRMWARE("radeon/RV610_pfp.bin");
MODULE_FIRMWARE("radeon/RV610_me.bin");
MODULE_FIRMWARE("radeon/RV630_pfp.bin");
MODULE_FIRMWARE("radeon/RV630_me.bin");
MODULE_FIRMWARE("radeon/RV620_pfp.bin");
MODULE_FIRMWARE("radeon/RV620_me.bin");
MODULE_FIRMWARE("radeon/RV635_pfp.bin");
MODULE_FIRMWARE("radeon/RV635_me.bin");
MODULE_FIRMWARE("radeon/RV670_pfp.bin");
MODULE_FIRMWARE("radeon/RV670_me.bin");
MODULE_FIRMWARE("radeon/RS780_pfp.bin");
MODULE_FIRMWARE("radeon/RS780_me.bin");
MODULE_FIRMWARE("radeon/RV770_pfp.bin");
MODULE_FIRMWARE("radeon/RV770_me.bin");
MODULE_FIRMWARE("radeon/RV730_pfp.bin");
MODULE_FIRMWARE("radeon/RV730_me.bin");
MODULE_FIRMWARE("radeon/RV710_pfp.bin");
MODULE_FIRMWARE("radeon/RV710_me.bin");
# define ATI_PCIGART_PAGE_SIZE 4096 /**< PCI GART page size */
# define ATI_PCIGART_PAGE_MASK (~(ATI_PCIGART_PAGE_SIZE-1))
......@@ -275,11 +300,93 @@ static void r600_vm_init(struct drm_device *dev)
r600_vm_flush_gart_range(dev);
}
/* load r600 microcode */
static int r600_cp_init_microcode(drm_radeon_private_t *dev_priv)
{
struct platform_device *pdev;
const char *chip_name;
size_t pfp_req_size, me_req_size;
char fw_name[30];
int err;
pdev = platform_device_register_simple("r600_cp", 0, NULL, 0);
err = IS_ERR(pdev);
if (err) {
printk(KERN_ERR "r600_cp: Failed to register firmware\n");
return -EINVAL;
}
switch (dev_priv->flags & RADEON_FAMILY_MASK) {
case CHIP_R600: chip_name = "R600"; break;
case CHIP_RV610: chip_name = "RV610"; break;
case CHIP_RV630: chip_name = "RV630"; break;
case CHIP_RV620: chip_name = "RV620"; break;
case CHIP_RV635: chip_name = "RV635"; break;
case CHIP_RV670: chip_name = "RV670"; break;
case CHIP_RS780:
case CHIP_RS880: chip_name = "RS780"; break;
case CHIP_RV770: chip_name = "RV770"; break;
case CHIP_RV730:
case CHIP_RV740: chip_name = "RV730"; break;
case CHIP_RV710: chip_name = "RV710"; break;
default: BUG();
}
if ((dev_priv->flags & RADEON_FAMILY_MASK) >= CHIP_RV770) {
pfp_req_size = R700_PFP_UCODE_SIZE * 4;
me_req_size = R700_PM4_UCODE_SIZE * 4;
} else {
pfp_req_size = PFP_UCODE_SIZE * 4;
me_req_size = PM4_UCODE_SIZE * 12;
}
DRM_INFO("Loading %s CP Microcode\n", chip_name);
snprintf(fw_name, sizeof(fw_name), "radeon/%s_pfp.bin", chip_name);
err = request_firmware(&dev_priv->pfp_fw, fw_name, &pdev->dev);
if (err)
goto out;
if (dev_priv->pfp_fw->size != pfp_req_size) {
printk(KERN_ERR
"r600_cp: Bogus length %zu in firmware \"%s\"\n",
dev_priv->pfp_fw->size, fw_name);
err = -EINVAL;
goto out;
}
snprintf(fw_name, sizeof(fw_name), "radeon/%s_me.bin", chip_name);
err = request_firmware(&dev_priv->me_fw, fw_name, &pdev->dev);
if (err)
goto out;
if (dev_priv->me_fw->size != me_req_size) {
printk(KERN_ERR
"r600_cp: Bogus length %zu in firmware \"%s\"\n",
dev_priv->me_fw->size, fw_name);
err = -EINVAL;
}
out:
platform_device_unregister(pdev);
if (err) {
if (err != -EINVAL)
printk(KERN_ERR
"r600_cp: Failed to load firmware \"%s\"\n",
fw_name);
release_firmware(dev_priv->pfp_fw);
dev_priv->pfp_fw = NULL;
release_firmware(dev_priv->me_fw);
dev_priv->me_fw = NULL;
}
return err;
}
static void r600_cp_load_microcode(drm_radeon_private_t *dev_priv)
{
const __be32 *fw_data;
int i;
if (!dev_priv->me_fw || !dev_priv->pfp_fw)
return;
r600_do_cp_stop(dev_priv);
RADEON_WRITE(R600_CP_RB_CNTL,
......@@ -292,115 +399,18 @@ static void r600_cp_load_microcode(drm_radeon_private_t *dev_priv)
DRM_UDELAY(15000);
RADEON_WRITE(R600_GRBM_SOFT_RESET, 0);
fw_data = (const __be32 *)dev_priv->me_fw->data;
RADEON_WRITE(R600_CP_ME_RAM_WADDR, 0);
for (i = 0; i < PM4_UCODE_SIZE * 3; i++)
RADEON_WRITE(R600_CP_ME_RAM_DATA,
be32_to_cpup(fw_data++));
if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_R600)) {
DRM_INFO("Loading R600 CP Microcode\n");
for (i = 0; i < PM4_UCODE_SIZE; i++) {
RADEON_WRITE(R600_CP_ME_RAM_DATA,
R600_cp_microcode[i][0]);
RADEON_WRITE(R600_CP_ME_RAM_DATA,
R600_cp_microcode[i][1]);
RADEON_WRITE(R600_CP_ME_RAM_DATA,
R600_cp_microcode[i][2]);
}
RADEON_WRITE(R600_CP_PFP_UCODE_ADDR, 0);
DRM_INFO("Loading R600 PFP Microcode\n");
for (i = 0; i < PFP_UCODE_SIZE; i++)
RADEON_WRITE(R600_CP_PFP_UCODE_DATA, R600_pfp_microcode[i]);
} else if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV610)) {
DRM_INFO("Loading RV610 CP Microcode\n");
for (i = 0; i < PM4_UCODE_SIZE; i++) {
RADEON_WRITE(R600_CP_ME_RAM_DATA,
RV610_cp_microcode[i][0]);
RADEON_WRITE(R600_CP_ME_RAM_DATA,
RV610_cp_microcode[i][1]);
RADEON_WRITE(R600_CP_ME_RAM_DATA,
RV610_cp_microcode[i][2]);
}
RADEON_WRITE(R600_CP_PFP_UCODE_ADDR, 0);
DRM_INFO("Loading RV610 PFP Microcode\n");
for (i = 0; i < PFP_UCODE_SIZE; i++)
RADEON_WRITE(R600_CP_PFP_UCODE_DATA, RV610_pfp_microcode[i]);
} else if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV630)) {
DRM_INFO("Loading RV630 CP Microcode\n");
for (i = 0; i < PM4_UCODE_SIZE; i++) {
RADEON_WRITE(R600_CP_ME_RAM_DATA,
RV630_cp_microcode[i][0]);
RADEON_WRITE(R600_CP_ME_RAM_DATA,
RV630_cp_microcode[i][1]);
RADEON_WRITE(R600_CP_ME_RAM_DATA,
RV630_cp_microcode[i][2]);
}
RADEON_WRITE(R600_CP_PFP_UCODE_ADDR, 0);
DRM_INFO("Loading RV630 PFP Microcode\n");
for (i = 0; i < PFP_UCODE_SIZE; i++)
RADEON_WRITE(R600_CP_PFP_UCODE_DATA, RV630_pfp_microcode[i]);
} else if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV620)) {
DRM_INFO("Loading RV620 CP Microcode\n");
for (i = 0; i < PM4_UCODE_SIZE; i++) {
RADEON_WRITE(R600_CP_ME_RAM_DATA,
RV620_cp_microcode[i][0]);
RADEON_WRITE(R600_CP_ME_RAM_DATA,
RV620_cp_microcode[i][1]);
RADEON_WRITE(R600_CP_ME_RAM_DATA,
RV620_cp_microcode[i][2]);
}
RADEON_WRITE(R600_CP_PFP_UCODE_ADDR, 0);
DRM_INFO("Loading RV620 PFP Microcode\n");
for (i = 0; i < PFP_UCODE_SIZE; i++)
RADEON_WRITE(R600_CP_PFP_UCODE_DATA, RV620_pfp_microcode[i]);
} else if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV635)) {
DRM_INFO("Loading RV635 CP Microcode\n");
for (i = 0; i < PM4_UCODE_SIZE; i++) {
RADEON_WRITE(R600_CP_ME_RAM_DATA,
RV635_cp_microcode[i][0]);
RADEON_WRITE(R600_CP_ME_RAM_DATA,
RV635_cp_microcode[i][1]);
RADEON_WRITE(R600_CP_ME_RAM_DATA,
RV635_cp_microcode[i][2]);
}
RADEON_WRITE(R600_CP_PFP_UCODE_ADDR, 0);
DRM_INFO("Loading RV635 PFP Microcode\n");
for (i = 0; i < PFP_UCODE_SIZE; i++)
RADEON_WRITE(R600_CP_PFP_UCODE_DATA, RV635_pfp_microcode[i]);
} else if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV670)) {
DRM_INFO("Loading RV670 CP Microcode\n");
for (i = 0; i < PM4_UCODE_SIZE; i++) {
RADEON_WRITE(R600_CP_ME_RAM_DATA,
RV670_cp_microcode[i][0]);
RADEON_WRITE(R600_CP_ME_RAM_DATA,
RV670_cp_microcode[i][1]);
RADEON_WRITE(R600_CP_ME_RAM_DATA,
RV670_cp_microcode[i][2]);
}
RADEON_WRITE(R600_CP_PFP_UCODE_ADDR, 0);
DRM_INFO("Loading RV670 PFP Microcode\n");
for (i = 0; i < PFP_UCODE_SIZE; i++)
RADEON_WRITE(R600_CP_PFP_UCODE_DATA, RV670_pfp_microcode[i]);
} else if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS780) ||
((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS880)) {
DRM_INFO("Loading RS780/RS880 CP Microcode\n");
for (i = 0; i < PM4_UCODE_SIZE; i++) {
RADEON_WRITE(R600_CP_ME_RAM_DATA,
RS780_cp_microcode[i][0]);
RADEON_WRITE(R600_CP_ME_RAM_DATA,
RS780_cp_microcode[i][1]);
RADEON_WRITE(R600_CP_ME_RAM_DATA,
RS780_cp_microcode[i][2]);
}
fw_data = (const __be32 *)dev_priv->pfp_fw->data;
RADEON_WRITE(R600_CP_PFP_UCODE_ADDR, 0);
for (i = 0; i < PFP_UCODE_SIZE; i++)
RADEON_WRITE(R600_CP_PFP_UCODE_DATA,
be32_to_cpup(fw_data++));
RADEON_WRITE(R600_CP_PFP_UCODE_ADDR, 0);
DRM_INFO("Loading RS780/RS880 PFP Microcode\n");
for (i = 0; i < PFP_UCODE_SIZE; i++)
RADEON_WRITE(R600_CP_PFP_UCODE_DATA, RS780_pfp_microcode[i]);
}
RADEON_WRITE(R600_CP_PFP_UCODE_ADDR, 0);
RADEON_WRITE(R600_CP_ME_RAM_WADDR, 0);
RADEON_WRITE(R600_CP_ME_RAM_RADDR, 0);
......@@ -459,11 +469,14 @@ static void r700_vm_init(struct drm_device *dev)
r600_vm_flush_gart_range(dev);
}
/* load r600 microcode */
static void r700_cp_load_microcode(drm_radeon_private_t *dev_priv)
{
const __be32 *fw_data;
int i;
if (!dev_priv->me_fw || !dev_priv->pfp_fw)
return;
r600_do_cp_stop(dev_priv);
RADEON_WRITE(R600_CP_RB_CNTL,
......@@ -476,48 +489,18 @@ static void r700_cp_load_microcode(drm_radeon_private_t *dev_priv)
DRM_UDELAY(15000);
RADEON_WRITE(R600_GRBM_SOFT_RESET, 0);
fw_data = (const __be32 *)dev_priv->pfp_fw->data;
RADEON_WRITE(R600_CP_PFP_UCODE_ADDR, 0);
for (i = 0; i < R700_PFP_UCODE_SIZE; i++)
RADEON_WRITE(R600_CP_PFP_UCODE_DATA, be32_to_cpup(fw_data++));
RADEON_WRITE(R600_CP_PFP_UCODE_ADDR, 0);
if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV770)) {
RADEON_WRITE(R600_CP_PFP_UCODE_ADDR, 0);
DRM_INFO("Loading RV770/RV790 PFP Microcode\n");
for (i = 0; i < R700_PFP_UCODE_SIZE; i++)
RADEON_WRITE(R600_CP_PFP_UCODE_DATA, RV770_pfp_microcode[i]);
RADEON_WRITE(R600_CP_PFP_UCODE_ADDR, 0);
RADEON_WRITE(R600_CP_ME_RAM_WADDR, 0);
DRM_INFO("Loading RV770/RV790 CP Microcode\n");
for (i = 0; i < R700_PM4_UCODE_SIZE; i++)
RADEON_WRITE(R600_CP_ME_RAM_DATA, RV770_cp_microcode[i]);
RADEON_WRITE(R600_CP_ME_RAM_WADDR, 0);
} else if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV730) ||
((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV740)) {
RADEON_WRITE(R600_CP_PFP_UCODE_ADDR, 0);
DRM_INFO("Loading RV730/RV740 PFP Microcode\n");
for (i = 0; i < R700_PFP_UCODE_SIZE; i++)
RADEON_WRITE(R600_CP_PFP_UCODE_DATA, RV730_pfp_microcode[i]);
RADEON_WRITE(R600_CP_PFP_UCODE_ADDR, 0);
RADEON_WRITE(R600_CP_ME_RAM_WADDR, 0);
DRM_INFO("Loading RV730/RV740 CP Microcode\n");
for (i = 0; i < R700_PM4_UCODE_SIZE; i++)
RADEON_WRITE(R600_CP_ME_RAM_DATA, RV730_cp_microcode[i]);
RADEON_WRITE(R600_CP_ME_RAM_WADDR, 0);
} else if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV710)) {
RADEON_WRITE(R600_CP_PFP_UCODE_ADDR, 0);
DRM_INFO("Loading RV710 PFP Microcode\n");
for (i = 0; i < R700_PFP_UCODE_SIZE; i++)
RADEON_WRITE(R600_CP_PFP_UCODE_DATA, RV710_pfp_microcode[i]);
RADEON_WRITE(R600_CP_PFP_UCODE_ADDR, 0);
RADEON_WRITE(R600_CP_ME_RAM_WADDR, 0);
DRM_INFO("Loading RV710 CP Microcode\n");
for (i = 0; i < R700_PM4_UCODE_SIZE; i++)
RADEON_WRITE(R600_CP_ME_RAM_DATA, RV710_cp_microcode[i]);
RADEON_WRITE(R600_CP_ME_RAM_WADDR, 0);
fw_data = (const __be32 *)dev_priv->me_fw->data;
RADEON_WRITE(R600_CP_ME_RAM_WADDR, 0);
for (i = 0; i < R700_PM4_UCODE_SIZE; i++)
RADEON_WRITE(R600_CP_ME_RAM_DATA, be32_to_cpup(fw_data++));
RADEON_WRITE(R600_CP_ME_RAM_WADDR, 0);
}
RADEON_WRITE(R600_CP_PFP_UCODE_ADDR, 0);
RADEON_WRITE(R600_CP_ME_RAM_WADDR, 0);
RADEON_WRITE(R600_CP_ME_RAM_RADDR, 0);
......@@ -2147,6 +2130,14 @@ int r600_do_init_cp(struct drm_device *dev, drm_radeon_init_t *init,
r600_vm_init(dev);
}
if (!dev_priv->me_fw || !dev_priv->pfp_fw) {
int err = r600_cp_init_microcode(dev_priv);
if (err) {
DRM_ERROR("Failed to load firmware!\n");
r600_do_cleanup_cp(dev);
return err;
}
}
if (((dev_priv->flags & RADEON_FAMILY_MASK) >= CHIP_RV770))
r700_cp_load_microcode(dev_priv);
else
......
此差异已折叠。
......@@ -695,6 +695,7 @@ struct radeon_device {
bool suspend;
bool need_dma32;
struct radeon_surface_reg surface_regs[RADEON_GEM_MAX_SURFACES];
const struct firmware *fw; /* firmware */
};
int radeon_device_init(struct radeon_device *rdev,
......
......@@ -36,10 +36,25 @@
#include "radeon_drv.h"
#include "r300_reg.h"
#include "radeon_microcode.h"
#define RADEON_FIFO_DEBUG 0
/* Firmware Names */
#define FIRMWARE_R100 "radeon/R100_cp.bin"
#define FIRMWARE_R200 "radeon/R200_cp.bin"
#define FIRMWARE_R300 "radeon/R300_cp.bin"
#define FIRMWARE_R420 "radeon/R420_cp.bin"
#define FIRMWARE_RS690 "radeon/RS690_cp.bin"
#define FIRMWARE_RS600 "radeon/RS600_cp.bin"
#define FIRMWARE_R520 "radeon/R520_cp.bin"
MODULE_FIRMWARE(FIRMWARE_R100);
MODULE_FIRMWARE(FIRMWARE_R200);
MODULE_FIRMWARE(FIRMWARE_R300);
MODULE_FIRMWARE(FIRMWARE_R420);
MODULE_FIRMWARE(FIRMWARE_RS690);
MODULE_FIRMWARE(FIRMWARE_RS600);
MODULE_FIRMWARE(FIRMWARE_R520);
static int radeon_do_cleanup_cp(struct drm_device * dev);
static void radeon_do_cp_start(drm_radeon_private_t * dev_priv);
......@@ -451,37 +466,34 @@ static void radeon_init_pipes(drm_radeon_private_t *dev_priv)
*/
/* Load the microcode for the CP */
static void radeon_cp_load_microcode(drm_radeon_private_t * dev_priv)
static int radeon_cp_init_microcode(drm_radeon_private_t *dev_priv)
{
int i;
struct platform_device *pdev;
const char *fw_name = NULL;
int err;
DRM_DEBUG("\n");
radeon_do_wait_for_idle(dev_priv);
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;
}
RADEON_WRITE(RADEON_CP_ME_RAM_ADDR, 0);
if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_R100) ||
((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV100) ||
((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV200) ||
((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS100) ||
((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS200)) {
DRM_INFO("Loading R100 Microcode\n");
for (i = 0; i < 256; i++) {
RADEON_WRITE(RADEON_CP_ME_RAM_DATAH,
R100_cp_microcode[i][1]);
RADEON_WRITE(RADEON_CP_ME_RAM_DATAL,
R100_cp_microcode[i][0]);
}
fw_name = FIRMWARE_R100;
} else if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_R200) ||
((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV250) ||
((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV280) ||
((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS300)) {
DRM_INFO("Loading R200 Microcode\n");
for (i = 0; i < 256; i++) {
RADEON_WRITE(RADEON_CP_ME_RAM_DATAH,
R200_cp_microcode[i][1]);
RADEON_WRITE(RADEON_CP_ME_RAM_DATAL,
R200_cp_microcode[i][0]);
}
fw_name = FIRMWARE_R200;
} else if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_R300) ||
((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_R350) ||
((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV350) ||
......@@ -489,39 +501,19 @@ static void radeon_cp_load_microcode(drm_radeon_private_t * dev_priv)
((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS400) ||
((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS480)) {
DRM_INFO("Loading R300 Microcode\n");
for (i = 0; i < 256; i++) {
RADEON_WRITE(RADEON_CP_ME_RAM_DATAH,
R300_cp_microcode[i][1]);
RADEON_WRITE(RADEON_CP_ME_RAM_DATAL,
R300_cp_microcode[i][0]);
}
fw_name = FIRMWARE_R300;
} else if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_R420) ||
((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_R423) ||
((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV410)) {
DRM_INFO("Loading R400 Microcode\n");
for (i = 0; i < 256; i++) {
RADEON_WRITE(RADEON_CP_ME_RAM_DATAH,
R420_cp_microcode[i][1]);
RADEON_WRITE(RADEON_CP_ME_RAM_DATAL,
R420_cp_microcode[i][0]);
}
fw_name = FIRMWARE_R420;
} else if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS690) ||
((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS740)) {
DRM_INFO("Loading RS690/RS740 Microcode\n");
for (i = 0; i < 256; i++) {
RADEON_WRITE(RADEON_CP_ME_RAM_DATAH,
RS690_cp_microcode[i][1]);
RADEON_WRITE(RADEON_CP_ME_RAM_DATAL,
RS690_cp_microcode[i][0]);
}
fw_name = FIRMWARE_RS690;
} else if ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS600) {
DRM_INFO("Loading RS600 Microcode\n");
for (i = 0; i < 256; i++) {
RADEON_WRITE(RADEON_CP_ME_RAM_DATAH,
RS600_cp_microcode[i][1]);
RADEON_WRITE(RADEON_CP_ME_RAM_DATAL,
RS600_cp_microcode[i][0]);
}
fw_name = FIRMWARE_RS600;
} else if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV515) ||
((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_R520) ||
((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV530) ||
......@@ -529,11 +521,41 @@ static void radeon_cp_load_microcode(drm_radeon_private_t * dev_priv)
((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV560) ||
((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV570)) {
DRM_INFO("Loading R500 Microcode\n");
for (i = 0; i < 256; i++) {
fw_name = FIRMWARE_R520;
}
err = request_firmware(&dev_priv->me_fw, fw_name, &pdev->dev);
platform_device_unregister(pdev);
if (err) {
printk(KERN_ERR "radeon_cp: Failed to load firmware \"%s\"\n",
fw_name);
} else if (dev_priv->me_fw->size % 8) {
printk(KERN_ERR
"radeon_cp: Bogus length %zu in firmware \"%s\"\n",
dev_priv->me_fw->size, fw_name);
err = -EINVAL;
release_firmware(dev_priv->me_fw);
dev_priv->me_fw = NULL;
}
return err;
}
static void radeon_cp_load_microcode(drm_radeon_private_t *dev_priv)
{
const __be32 *fw_data;
int i, size;
radeon_do_wait_for_idle(dev_priv);
if (dev_priv->me_fw) {
size = dev_priv->me_fw->size / 4;
fw_data = (const __be32 *)&dev_priv->me_fw->data[0];
RADEON_WRITE(RADEON_CP_ME_RAM_ADDR, 0);
for (i = 0; i < size; i += 2) {
RADEON_WRITE(RADEON_CP_ME_RAM_DATAH,
R520_cp_microcode[i][1]);
be32_to_cpup(&fw_data[i]));
RADEON_WRITE(RADEON_CP_ME_RAM_DATAL,
R520_cp_microcode[i][0]);
be32_to_cpup(&fw_data[i + 1]));
}
}
}
......@@ -1486,6 +1508,14 @@ static int radeon_do_init_cp(struct drm_device *dev, drm_radeon_init_t *init,
radeon_set_pcigart(dev_priv, 1);
}
if (!dev_priv->me_fw) {
int err = radeon_cp_init_microcode(dev_priv);
if (err) {
DRM_ERROR("Failed to load firmware!\n");
radeon_do_cleanup_cp(dev);
return err;
}
}
radeon_cp_load_microcode(dev_priv);
radeon_cp_init_ring_buffer(dev, dev_priv, file_priv);
......@@ -1755,6 +1785,14 @@ void radeon_do_release(struct drm_device * dev)
r600_do_cleanup_cp(dev);
else
radeon_do_cleanup_cp(dev);
if (dev_priv->me_fw) {
release_firmware(dev_priv->me_fw);
dev_priv->me_fw = NULL;
}
if (dev_priv->pfp_fw) {
release_firmware(dev_priv->pfp_fw);
dev_priv->pfp_fw = NULL;
}
}
}
......
......@@ -31,6 +31,9 @@
#ifndef __RADEON_DRV_H__
#define __RADEON_DRV_H__
#include <linux/firmware.h>
#include <linux/platform_device.h>
/* General customization:
*/
......@@ -351,6 +354,8 @@ typedef struct drm_radeon_private {
int r700_sc_hiz_tile_fifo_size;
int r700_sc_earlyz_tile_fifo_fize;
/* firmware */
const struct firmware *me_fw, *pfp_fw;
} drm_radeon_private_t;
typedef struct drm_radeon_buf_priv {
......
......@@ -28,7 +28,6 @@
#include "drmP.h"
#include "radeon_drm.h"
#include "radeon_reg.h"
#include "radeon_microcode.h"
#include "radeon.h"
#include "atom.h"
......
此差异已折叠。
......@@ -44,6 +44,20 @@ fw-shipped-$(CONFIG_CHELSIO_T3) += cxgb3/t3b_psram-1.1.0.bin \
cxgb3/t3fw-7.4.0.bin
fw-shipped-$(CONFIG_DRM_MGA) += matrox/g200_warp.fw matrox/g400_warp.fw
fw-shipped-$(CONFIG_DRM_R128) += r128/r128_cce.bin
fw-shipped-$(CONFIG_DRM_RADEON) += radeon/R100_cp.bin radeon/R200_cp.bin \
radeon/R300_cp.bin radeon/R420_cp.bin \
radeon/RS690_cp.bin radeon/RS600_cp.bin \
radeon/R520_cp.bin \
radeon/R600_pfp.bin radeon/R600_me.bin \
radeon/RV610_pfp.bin radeon/RV610_me.bin \
radeon/RV630_pfp.bin radeon/RV630_me.bin \
radeon/RV620_pfp.bin radeon/RV620_me.bin \
radeon/RV635_pfp.bin radeon/RV635_me.bin \
radeon/RV670_pfp.bin radeon/RV670_me.bin \
radeon/RS780_pfp.bin radeon/RS780_me.bin \
radeon/RV770_pfp.bin radeon/RV770_me.bin \
radeon/RV730_pfp.bin radeon/RV730_me.bin \
radeon/RV710_pfp.bin radeon/RV710_me.bin
fw-shipped-$(CONFIG_DVB_AV7110) += av7110/bootcode.bin
fw-shipped-$(CONFIG_DVB_TTUSB_BUDGET) += ttusb-budget/dspbootcode.bin
fw-shipped-$(CONFIG_E100) += e100/d101m_ucode.bin e100/d101s_ucode.bin \
......
......@@ -761,3 +761,61 @@ Copyright 2000 Advanced Micro Devices, Inc.
Found in decimal form in kernel source.
--------------------------------------------------------------------------
Driver: radeon - ATI Radeon
File: radeon/R100_cp.bin
File: radeon/R200_cp.bin
File: radeon/R300_cp.bin
File: radeon/R420_cp.bin
File: radeon/RS600_cp.bin
File: radeon/RS690_cp.bin
File: radeon/R520_cp.bin
File: radeon/R600_pfp.bin
File: radeon/R600_me.bin
File: radeon/RV610_pfp.bin
File: radeon/RV610_me.bin
File: radeon/RV630_pfp.bin
File: radeon/RV630_me.bin
File: radeon/RV620_pfp.bin
File: radeon/RV620_me.bin
File: radeon/RV635_pfp.bin
File: radeon/RV635_me.bin
File: radeon/RV670_pfp.bin
File: radeon/RV670_me.bin
File: radeon/RS780_pfp.bin
File: radeon/RS780_me.bin
File: radeon/RV770_pfp.bin
File: radeon/RV770_me.bin
File: radeon/RV730_pfp.bin
File: radeon/RV730_me.bin
File: radeon/RV710_pfp.bin
File: radeon/RV710_me.bin
Licence:
* Copyright 2007-2009 Advanced Micro Devices, Inc.
* All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice (including the next
* paragraph) shall be included in all copies or substantial portions of the
* Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* IN NO EVENT SHALL THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS BE
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Found in hex form in kernel source.
--------------------------------------------------------------------------
:1000000000000000210070000000000020007000CF
:1000100000000004000000B400000004000000B86C
:10002000000000006F5B4D4C000000004C4C427F14
:10003000000000005B568A92000000004CA09C6DFE
:1000400000000000AD4C4C4C000000004CE1AF3D06
:1000500000000000D8AFAFAF00000000D64C4CDC71
:10006000000000004CD10D1000000016000F000031
:1000700000000000362F242D0000000400000012B4
:1000800000000016000F000000000000362F282D91
:1000900000000002000380E70000000204002C972B
:1000A00000000016000F000100000000333A373056
:1000B00000000002000077EF0000000200061000C0
:1000C0000000001A000000210000001E0000400097
:1000D00000000002000610000000001A00000021CD
:1000E0000000001E0000400000000002000610009A
:1000F0000000001A000000210000001E0000400067
:100100000000000400000017000000020003802B24
:1001100000000002040067E0000000040000001777
:1001200000000002000077E000000002000650001E
:1001300000000002000037E100000006040067E153
:1001400000000002000077E000000002000077E1FC
:1001500000000006000077E100000000FFFFFFFF45
:100160000000000010000000000000020003802BCF
:1001700000000006040067E0000000020000767541
:100180000000000200007676000000020000767792
:100190000000000600007678000000020003802CBA
:1001A00000000002040026760000000200007677BE
:1001B0000000000600007678000000180000002F04
:1001C000000000180000002F0000000600000000E2
:1001D000000000180000003000000018000000308F
:1001E0000000000600000000000000020160500056
:1001F000000000020006500000000002000980001C
:1002000000000002000610000000000464C0603E10
:1002100000000002000380E600000002040025C583
:1002200000000016000800000000000000000000B0
:10023000000000020400251D00000002000075807F
:100240000000000200067581000000020400258005
:100250000000000200067581000000040000004953
:10026000000000000000500000000002000380E6D3
:1002700000000002040025C5000000020006100076
:10028000000000020000750E000000020001900056
:10029000000000140001105500000012000000557D
:1002A000000000020400250F000000040000504F71
:1002B00000000002000380E600000002040025C5E3
:1002C0000000000200007565000000020000756675
:1002D000000000040000005800000002000380E657
:1002E00000000002040025C50000000201E655B42C
:1002F000000000024401B0E40000000201C110E46B
:10030000000000182666706600000002040C2565D7
:1003100000000018000000660000000204002564D0
:100320000000000200007566000000040000005D8F
:1003300000000008004010690000000200101000DA
:1003400000000002000D80FF000000080080006C2B
:1003500000000002000F900000000002000E00FFED
:100360000000000600000000000000180000008FE0
:10037000000000040000005B00000002000380E6B3
:1003800000000002040025C5000000020000757690
:100390000000000200065000000000020000900073
:1003A0000000000200041000000000020C00350EE6
:1003B0000000000200049000000000020005100090
:1003C0000000000201E785F80000000200200000A4
:1003D0000000000C0060007E000000020000756359
:1003E00000000021006075F0000000042000707320
:1003F000000000040000507300000002000380E6CB
:1004000000000002040025C500000002000075760F
:100410000000000200007577000000020000750E69
:10042000000000020000750F0000000200A0500054
:100430000000000C0060008300000021006075F0E7
:1004400000000002000075F80000000400000083B6
:1004500000000002000A750E00000002000380E6A2
:1004600000000002040025C5000000020020750FF6
:1004700000000004006000860000000200007570AB
:100480000000000200007571000000060000757297
:1004900000000002000380E600000002040025C501
:1004A00000000002000050000000000200A0500008
:1004B0000000000200007568000000020006100045
:1004C0000000000C00000095000000020005800004
:1004D000000000020C60756200000004000000973C
:1004E00000000002000380E600000002040025C5B1
:1004F000000000040060009600000000400070E56D
:1005000000000002000380E600000002040025C590
:1005100000000002000380E50000001C000000A8AD
:1005200000000018000650AA00000002040025BBCD
:1005300000000018000610AB00000000040075BCAD
:1005400000000002000075BB00000000000075BC48
:100550000000000600090000000000020009000081
:1005600000000006000D800200000002000078324A
:10057000000000020000500000000002000380E7BD
:100580000000000204002C97000000020000782008
:100590000000000200007821000000000000780048
:1005A000000000020120000000000002200770008F
:1005B0000000000201200000000000022000700086
:1005C0000000000200061000000000020120751B60
:1005D000000000028040750A000000028040750B98
:1005E000000000020011000000000002000380E58E
:1005F0000000001C000000C600000018000610AB40
:1006000000000002844075BD00000018000610AA1A
:1006100000000002840075BB00000018000610AB4B
:1006200000000002844075BC00000004000000C906
:1006300000000002804075BD00000002800075BB14
:1006400000000002804075BC000000020010800025
:1006500000000002014000000000000C006000CD1E
:100660000000002020C0700000000012000000CF39
:100670000000000600800000000000060080751DDC
:100680000000000000000000000000020000775C95
:100690000000000200A050000000000200661000F0
:1006A000000000200460275D000000000000400002
:1006B0000000000201E0083000000000210070008E
:1006C000000000006464614D00000000696874204F
:1006D00000000000000000730000000000000000A7
:1006E000000000020000500000000002000380D063
:1006F00000000002040025E000000000000075E199
:10070000000000000000000100000002000380E083
:1007100000000002040023940000000000005000CC
:1007200000000000000000000000000000000000C9
:1007300000000000000000080000000000000004AD
:1007400000000000000000000000000000000000A9
:100750000000000000000000000000000000000099
:100760000000000000000000000000000000000089
:100770000000000000000000000000000000000079
:100780000000000000000000000000000000000069
:100790000000000000000000000000000000000059
:1007A0000000000000000000000000000000000049
:1007B0000000000000000000000000000000000039
:1007C0000000000000000000000000000000000029
:1007D0000000000000000000000000000000000019
:1007E0000000000000000000000000000000000009
:1007F00000000000000000000000000000000000F9
:00000001FF
/* production radeon ucode r1xx-r6xx */
:1000000000000000210070000000000020007000CF
:1000100000000004000000BF00000004000000C356
:10002000000000007A685E5D000000005D5D55889C
:100030000000000068659197000000005DA19F78B6
:10004000000000005D5D5D5D000000005DEE5D5044
:1000500000000000F2ACACAC00000000E75DF9E984
:1000600000000000B1DD0E1100000000E2AFAFAFF4
:1000700000000016000F000000000000452F232D97
:10008000000000040000001300000016000F000034
:1000900000000000452F272D00000016000F000172
:1000A000000000003E4D4A3700000002000077EFDC
:1000B00000000002000610000000001A00000020EE
:1000C0000000001E000040000000000200061000BA
:1000D0000000001A000000200000001E0000400088
:1000E00000000002000610000000001A00000020BE
:1000F0000000001E00004000000000040000001688
:10010000000000020003802A00000002040067E0F3
:10011000000000040000001600000002000077E06C
:10012000000000020006500000000002000037E15D
:1001300000000006040067E100000002000077E014
:1001400000000002000077E100000006000077E1F7
:1001500000000000FFFFFFFF000000001000000093
:100160000000000007F007F0000000020003802AF2
:1001700000000006040067E0000000020003802C7D
:100180000000000204002741000000020400274193
:100190000000000204002743000000020000767502
:1001A0000000000200007676000000020000767772
:1001B0000000000600007678000000020003802C9A
:1001C0000000000204002741000000020400274153
:1001D00000000002040027430000000200007676C1
:1001E000000000020000767700000006000076782C
:1001F000000000020003802B0000000204002676AD
:100200000000000200007677000000020003802C4E
:100210000000000204002741000000020400274300
:100220000000000600007678000000020003802C29
:1002300000000002040027410000000204002741E2
:10024000000000020400274300000006000076784A
:10025000000000180000002F000000180000002F10
:100260000000000600000000000000180000003739
:100270000000001800000037000000060000000029
:100280000000000201605000000000020006500063
:1002900000000002000980000000000200061000BB
:1002A0000000000464C06051000000160008000057
:1002B0000000000000000000000000020400251DF6
:1002C0000000000200007580000000020006758139
:1002D0000000000204002580000000020006758175
:1002E000000000040000005A000000000000500060
:1002F0000000000200061000000000020000750E61
:1003000000000002000190000000001400011064D1
:100310000000001200000064000000020400250F2D
:10032000000000040000505E00000002000075653F
:100330000000000200007566000000040000006577
:100340000000000201E655B4000000024401B0F0D4
:100350000000000201C110F0000000182666707154
:1003600000000002040C2565000000180000007168
:100370000000000204002564000000020000756611
:100380000000000400000068000000080040107435
:10039000000000020010100000000002000D80FFAD
:1003A000000000080080007700000002000F9000AD
:1003B00000000002000E00FF000000060000000028
:1003C0000000001800000094000000040000006815
:1003D00000000002000075760000000200065000D8
:1003E0000000000200009000000000020004100065
:1003F000000000020C00350E000000020004900016
:1004000000000002000510000000000201E785F86E
:1004100000000002002000000000000C00600087C7
:10042000000000020000756300000021006075F00C
:10043000000000042000707C000000040000507CDC
:1004400000000002000075760000000200007577D1
:10045000000000020000750E000000020000750F91
:100460000000000200A050000000000C0060008AA4
:1004700000000021006075F000000002000075F827
:10048000000000040000008A00000002000A750E4F
:10049000000000020020750F000000040060008DC5
:1004A000000000020000757000000002000075717D
:1004B00000000006000075720000000200005000FD
:1004C0000000000200A0500000000002000075685B
:1004D00000000002000610000000000C0000009860
:1004E0000000000200058000000000020C60756240
:1004F000000000040000009A000000040060009961
:1005000000000000400070F100000002000380F1D4
:100510000000001C000000A700000018000650A901
:1005200000000002040025BB00000018000610AA0D
:1005300000000000040075BC00000002000075BB54
:1005400000000000000075BC00000006000900006B
:10055000000000020009000000000006000D8002FB
:10056000000000020000500000000002000078219E
:100570000000000000007800000000020000782168
:10058000000000000000780000000002016650003A
:1005900000000002000A000000000002000671CC0A
:1005A000000000020286F1CD00000010000000B73C
:1005B00000000000210070000000001C000000BED0
:1005C000000000020006500000000002000A0000C7
:1005D000000000020006100000000002000B0000F6
:1005E000000000023806700000000004000A00BA93
:1005F0000000000020007000000000020120000048
:10060000000000022007700000000002012000002E
:100610000000000020007000000000020006100032
:10062000000000020120751B000000028040750AD6
:10063000000000028040750B000000020011000065
:1006400000000002000380F10000001C000000D147
:1006500000000018000610AA00000002844075BDCA
:1006600000000018000610A900000002840075BBFD
:1006700000000018000610AA00000002844075BCAB
:1006800000000004000000D400000002804075BD9E
:1006900000000002800075BB00000002804075BCB5
:1006A0000000000200108000000000020140000075
:1006B0000000000C006000D80000002020C0700086
:1006C00000000012000000DA0000000600800000B8
:1006D000000000060080751D00000002000025BB20
:1006E00000000004000040D4000000020000775C1D
:1006F0000000000200A05000000000020066100090
:10070000000000200460275D0000000000004000A1
:1007100000000002000079990000000200A05000D3
:100720000000000200661000000000200460299B09
:1007300000000000000040000000000201E008305E
:1007400000000000210070000000000200005000C6
:10075000000000020003805600000002040025E0B3
:1007600000000000000075E1000000000000000132
:1007700000000002000380ED0000000004007394FC
:100780000000000000000000000000000000000069
:1007900000000002000078C400000002000078C5DC
:1007A00000000002000078C600000002000079246A
:1007B00000000002000079250000000200007926F8
:1007C00000000004000000F2000000020000792494
:1007D00000000002000079250000000200007926D8
:1007E00000000004000000F900000000000000000C
:1007F00000000000000000000000000000000000F9
:00000001FF
/* production radeon ucode r1xx-r6xx */
:10000000000000004200E000000000004000E000AE
:1000100000000008000000AE00000008000000B270
:100020000000000067554B4A000000004A4A447532
:100030000000000055527D83000000004A8C8B6553
:10004000000000004AEF4AF6000000004AE14A4A78
:1000500000000000E497979700000000DB4AEBDD0A
:10006000000000009CCC4A4A00000000D1989898FB
:10007000000000004A0F9AD600000004000CA00007
:1000800000000038000D0012000000040000E8B479
:1000900000000038000D0014000000040000E8B665
:1000A00000000038000D0016000000040000E854B5
:1000B00000000038000D0018000000040000E855A2
:1000C00000000038000D001A000000040000E8568F
:1000D00000000038000D001C000000040000E8577C
:1000E00000000038000D001E000000040000E8249D
:1000F00000000038000D0020000000040000E8258A
:1001000000000038000D0022000000040000E8306C
:1001100000000038000D0024000000040000F0C0C2
:1001200000000038000D0026000000040000F0C1AF
:1001300000000038000D0028000000040000F0411D
:1001400000000038000D002A000000040000F184C7
:1001500000000038000D002C000000040000F185B4
:1001600000000038000D002E000000040000F186A1
:1001700000000038000D0030000000040000F1878E
:1001800000000038000D0032000000040000F18083
:1001900000000038000D0034000000040000F3935C
:1001A00000000038000D0036000000040000F38A53
:1001B00000000038000D0038000000040000F38E3D
:1001C000000000040000E821000000040140A0003D
:1001D00000000018000000430000000400CCE8000C
:1001E00000000004001B000100000004080048009B
:1001F00000000004001B000100000004080048008B
:1002000000000004001B000100000004080048007A
:10021000000000080000003A000000000000A000FC
:10022000000000042000451D000000040000E580DF
:1002300000000004000CE581000000040800458077
:1002400000000004000CE5810000000800000047E9
:10025000000000000000A00000000004000C2000CE
:10026000000000040000E50E000000040003200070
:10027000000000280002205100000024000000516E
:10028000000000040800450F000000080000A04B1B
:10029000000000040000E565000000040000E566C1
:1002A00000000008000000520000000403CCA5B4C8
:1002B00000000004054320000000000400022000AC
:1002C000000000304CCCE05E0000000408274565CB
:1002D000000000300000005E0000000408004564DB
:1002E000000000040000E566000000080000005562
:1002F00000000010008020610000000400202000A9
:1003000000000004001B00FF00000010010000645A
:1003100000000004001F200000000004001C00FF7B
:100320000000000C00000000000000300000008011
:100330000000000800000055000000040000E57601
:1003400000000004000CA0000000000400012000D8
:100350000000000400082000000000041800650EE2
:10036000000000040009200000000004000A200032
:1003700000000004000F0000000000040040000026
:100380000000001800000074000000040000E56395
:10039000000000C200C0E5F900000008000000698C
:1003A000000000080000A069000000040000E576DD
:1003B000000000040000E577000000040000E50EE6
:1003C000000000040000E50F000000040140A00050
:1003D0000000001800000077000000C200C0E5F92E
:1003E0000000000800000077000000040014E50E83
:1003F000000000040040E50F0000000800C0007A83
:10040000000000040000E570000000040000E57139
:100410000000000C0000E572000000040000A000D5
:10042000000000040140A000000000040000E56896
:1004300000000004000C20000000001800000084F0
:1004400000000004000B00000000000418C0E5627A
:1004500000000008000000860000000800C00085C1
:1004600000000004000700E30000003800000092D4
:1004700000000030000CA09400000004080045BB00
:1004800000000030000C2095000000000800E5BCD2
:10049000000000040000E5BB000000000000E5BC17
:1004A0000000000C00120000000000040012000018
:1004B0000000000C001B0002000000040000A0006F
:1004C000000000040000E821000000000000E80037
:1004D000000000040000E821000000000000E82EF9
:1004E0000000000402CCA000000000040014000082
:1004F00000000004000CE1CC00000004050DE1CD7B
:10050000000000040040000000000018000000A4EB
:100510000000000400C0A00000000008000000A1CE
:1005200000000020000000A6000000004200E000E3
:1005300000000038000000AD00000004000CA00026
:10054000000000040014000000000004000C200063
:10055000000000040016000000000004700CE00021
:1005600000000008001400A9000000004000E000A6
:10057000000000040240000000000004400EE00003
:100580000000000402400000000000004000E00005
:1005900000000004000C2000000000040240E51BE5
:1005A000000000050080E50A000000050080E50B62
:1005B000000000040022000000000004000700E327
:1005C00000000038000000C000000030000C209542
:1005D000000000050880E5BD00000030000C2094FC
:1005E000000000050800E5BB00000030000C20956D
:1005F000000000050880E5BC00000008000000C302
:10060000000000050080E5BD000000050000E5BB1E
:10061000000000050080E5BC00000004002100008F
:1006200000000004028000000000001800C000C7A5
:10063000000000404180E00000000024000000C9EC
:100640000000000C010000000000000C0100E51D8E
:1006500000000004000045BB00000008000080C34B
:10066000000000040000F3CE000000040140A000E0
:100670000000000400CC20000000004008C053CF60
:100680000000000000008000000000040000F3D221
:10069000000000040140A0000000000400CC200085
:1006A0000000004008C053D300000000000080009C
:1006B000000000040000F39D000000040140A000C1
:1006C0000000000400CC20000000004008C0539E41
:1006D00000000000000080000000000403C008309B
:1006E000000000004200E000000000040000A00044
:1006F00000000004200045E0000000000000E5E1EB
:10070000000000000000000100000004000700E0FD
:10071000000000000800E39400000000000000005A
:10072000000000040000E8C4000000040000E8C568
:10073000000000040000E8C6000000040000E928F2
:10074000000000040000E929000000040000E92A7C
:1007500000000008000000E4000000040000E92898
:10076000000000040000E929000000040000E92A5C
:1007700000000008000000EB0000000402C02000A0
:10078000000000040006000000000034000000F338
:1007900000000008000000F00000000400008000DD
:1007A00000000000C000E0000000000000000000A9
:1007B00000000004000C200000000004001D0018D0
:1007C00000000004001A000100000034000000FBDB
:1007D000000000080000004A000000080500A04AD0
:1007E0000000000000000000000000000000000009
:1007F00000000000000000000000000000000000F9
:00000001FF
/* production radeon ucode r1xx-r6xx */
:10000000000000004200E000000000004000E000AE
:100010000000000800000099000000080000009D9A
:10002000000000004A554B4A000000004A4A44675D
:100030000000000055526F75000000004A7E7D658B
:1000400000000000D9D3DFF6000000004AC54A4A8C
:1000500000000000C882828200000000BF4ACFC1B9
:100060000000000087B04A4A00000000B583838387
:10007000000000004A0F85BA00000004000CA00038
:1000800000000038000D0012000000040000E8B479
:1000900000000038000D0014000000040000E8B665
:1000A00000000038000D0016000000040000E854B5
:1000B00000000038000D0018000000040000E855A2
:1000C00000000038000D001A000000040000E8568F
:1000D00000000038000D001C000000040000E8577C
:1000E00000000038000D001E000000040000E8249D
:1000F00000000038000D0020000000040000E8258A
:1001000000000038000D0022000000040000E8306C
:1001100000000038000D0024000000040000F0C0C2
:1001200000000038000D0026000000040000F0C1AF
:1001300000000038000D0028000000040000F0411D
:1001400000000038000D002A000000040000F184C7
:1001500000000038000D002C000000040000F185B4
:1001600000000038000D002E000000040000F186A1
:1001700000000038000D0030000000040000F1878E
:1001800000000038000D0032000000040000F18083
:1001900000000038000D0034000000040000F3935C
:1001A00000000038000D0036000000040000F38A53
:1001B00000000038000D0038000000040000F38E3D
:1001C000000000040000E821000000040140A0003D
:1001D00000000018000000430000000400CCE8000C
:1001E00000000004001B000100000004080048009B
:1001F00000000004001B000100000004080048008B
:1002000000000004001B000100000004080048007A
:10021000000000080000003A000000000000A000FC
:10022000000000042000451D000000040000E580DF
:1002300000000004000CE581000000040800458077
:1002400000000004000CE5810000000800000047E9
:10025000000000000000A00000000004000C2000CE
:10026000000000040000E50E000000040003200070
:10027000000000280002205100000024000000516E
:10028000000000040800450F000000080000A04B1B
:10029000000000040000E565000000040000E566C1
:1002A00000000008000000520000000403CCA5B4C8
:1002B00000000004054320000000000400022000AC
:1002C000000000304CCCE05E0000000408274565CB
:1002D000000000300000005E0000000408004564DB
:1002E000000000040000E566000000080000005562
:1002F00000000010008020610000000400202000A9
:1003000000000004001B00FF00000010010000645A
:1003100000000004001F200000000004001C00FF7B
:100320000000000C0000000000000030000000721F
:100330000000000800000055000000040000E57601
:10034000000000040000E577000000040000E50E56
:10035000000000040000E50F000000040140A000C0
:100360000000001800000069000000C200C0E5F9AC
:100370000000000800000069000000040014E50E01
:10038000000000040040E50F0000000800C0006C01
:10039000000000040000E570000000040000E571AA
:1003A0000000000C0000E572000000040000A00046
:1003B000000000040140A000000000040000E56807
:1003C00000000004000C200000000018000000766F
:1003D00000000004000B00000000000418C0E562EB
:1003E00000000008000000780000000800C000774E
:1003F00000000004000700C7000000380000008073
:10040000000000040000E5BB000000000000E5BCA7
:10041000000000040000A000000000040000E8212B
:10042000000000000000E800000000040000E821D7
:10043000000000000000E82E0000000402CCA00034
:10044000000000040014000000000004000CE1CCD7
:1004500000000004050DE1CD000000040040000094
:10046000000000180000008F0000000400C0A00081
:10047000000000080000008C000000200000009137
:10048000000000004200E00000000038000000987A
:1004900000000004000CA000000000040014000094
:1004A00000000004000C2000000000040016000002
:1004B00000000004700CE00000000008001400942C
:1004C000000000004000E0000000000402400000C6
:1004D00000000004400EE0000000000402400000A4
:1004E000000000004000E00000000004000C2000BC
:1004F000000000040240E51B000000050080E50A42
:10050000000000050080E50B000000040022000050
:1005100000000004000700C700000038000000A42D
:10052000000000050080E5BD000000050000E5BBFF
:10053000000000050080E5BC000000040021000070
:1005400000000004028000000000001800C000ABA2
:10055000000000404180E00000000024000000ADE9
:100560000000000C010000000000000C0100E51D6F
:1005700000000004000045BB00000008000080A748
:10058000000000040000F3CE000000040140A000C1
:100590000000000400CC20000000004008C053CF41
:1005A0000000000000008000000000040000F3D202
:1005B000000000040140A0000000000400CC200066
:1005C0000000004008C053D300000000000080007D
:1005D000000000040000F39D000000040140A000A2
:1005E0000000000400CC20000000004008C0539E22
:1005F00000000000000080000000000403C008307C
:10060000000000004200E000000000040000A00024
:1006100000000004200045E0000000000000E5E1CB
:10062000000000000000000100000004000700C4FA
:10063000000000000800E39400000000000000003B
:10064000000000040000E8C4000000040000E8C549
:10065000000000040000E8C6000000040000E928D3
:10066000000000040000E929000000040000E92A5D
:1006700000000008000000C8000000040000E92895
:10068000000000040000E929000000040000E92A3D
:1006900000000008000000CF0000000402C020009D
:1006A000000000040006000000000034000000D735
:1006B00000000008000000D40000000400008000DA
:1006C00000000000C000E000000000040000E1CCD9
:1006D000000000040500E1CD00000004000CA000B3
:1006E00000000034000000DE00000008000000DA16
:1006F000000000000000A000000000040019E1CC90
:1007000000000004001B0001000000040500A00020
:1007100000000004080041CD00000004000CA0000F
:1007200000000034000000FB000000080000004A48
:1007300000000000000000000000000000000000B9
:1007400000000000000000000000000000000000A9
:100750000000000000000000000000000000000099
:100760000000000000000000000000000000000089
:100770000000000000000000000000000000000079
:100780000000000000000000000000000000000069
:100790000000000000000000000000000000000059
:1007A0000000000000000000000000000000000049
:1007B00000000004000C200000000004001D0018D0
:1007C00000000004001A000100000034000000FBDB
:1007D000000000080000004A000000080500A04AD0
:1007E0000000000000000000000000000000000009
:1007F00000000000000000000000000000000000F9
:00000001FF
/* production radeon ucode r1xx-r6xx */
:10000000000000004200E000000000004000E000AE
:100010000000000800000099000000080000009D9A
:10002000000000004A554B4A000000004A4A44675D
:100030000000000055526F75000000004A7E7D658B
:1000400000000000E0DAE6F6000000004AC54A4A77
:1000500000000000C882828200000000BF4ACFC1B9
:100060000000000087B04AD500000000B5838383FC
:10007000000000004A0F85BA00000004000CA00038
:1000800000000038000D0012000000040000E8B479
:1000900000000038000D0014000000040000E8B665
:1000A00000000038000D0016000000040000E854B5
:1000B00000000038000D0018000000040000E855A2
:1000C00000000038000D001A000000040000E8568F
:1000D00000000038000D001C000000040000E8577C
:1000E00000000038000D001E000000040000E8249D
:1000F00000000038000D0020000000040000E8258A
:1001000000000038000D0022000000040000E8306C
:1001100000000038000D0024000000040000F0C0C2
:1001200000000038000D0026000000040000F0C1AF
:1001300000000038000D0028000000040000E0006E
:1001400000000038000D002A000000040000E0005C
:1001500000000038000D002C000000040000E0004A
:1001600000000038000D002E000000040000E00038
:1001700000000038000D0030000000040000E00026
:1001800000000038000D0032000000040000F18083
:1001900000000038000D0034000000040000F3935C
:1001A00000000038000D0036000000040000F38A53
:1001B00000000038000D0038000000040000F38E3D
:1001C000000000040000E821000000040140A0003D
:1001D00000000018000000430000000400CCE8000C
:1001E00000000004001B000100000004080048009B
:1001F00000000004001B000100000004080048008B
:1002000000000004001B000100000004080048007A
:10021000000000080000003A000000000000A000FC
:10022000000000042000451D000000040000E580DF
:1002300000000004000CE581000000040800458077
:1002400000000004000CE5810000000800000047E9
:10025000000000000000A00000000004000C2000CE
:10026000000000040000E50E000000040003200070
:10027000000000280002205100000024000000516E
:10028000000000040800450F000000080000A04B1B
:10029000000000040000E565000000040000E566C1
:1002A00000000008000000520000000403CCA5B4C8
:1002B00000000004054320000000000400022000AC
:1002C000000000304CCCE05E0000000408274565CB
:1002D000000000300000005E0000000408004564DB
:1002E000000000040000E566000000080000005562
:1002F00000000010008020610000000400202000A9
:1003000000000004001B00FF00000010010000645A
:1003100000000004001F200000000004001C00FF7B
:100320000000000C0000000000000030000000721F
:100330000000000800000055000000040000E57601
:10034000000000040000E577000000040000E50E56
:10035000000000040000E50F000000040140A000C0
:100360000000001800000069000000C200C0E5F9AC
:100370000000000800000069000000040014E50E01
:10038000000000040040E50F0000000800C0006C01
:10039000000000040000E570000000040000E571AA
:1003A0000000000C0000E572000000040000A00046
:1003B000000000040140A000000000040000E56807
:1003C00000000004000C200000000018000000766F
:1003D00000000004000B00000000000418C0E562EB
:1003E00000000008000000780000000800C000774E
:1003F00000000004000700C7000000380000008073
:10040000000000040000E5BB000000000000E5BCA7
:10041000000000040000A000000000040000E8212B
:10042000000000000000E800000000040000E821D7
:10043000000000000000E82E0000000402CCA00034
:10044000000000040014000000000004000CE1CCD7
:1004500000000004050DE1CD000000040040000094
:10046000000000180000008F0000000400C0A00081
:10047000000000080000008C000000200000009137
:10048000000000004200E00000000038000000987A
:1004900000000004000CA000000000040014000094
:1004A00000000004000C2000000000040016000002
:1004B00000000004700CE00000000008001400942C
:1004C000000000004000E0000000000402400000C6
:1004D00000000004400EE0000000000402400000A4
:1004E000000000004000E00000000004000C2000BC
:1004F000000000040240E51B000000050080E50A42
:10050000000000050080E50B000000040022000050
:1005100000000004000700C700000038000000A42D
:10052000000000050080E5BD000000050000E5BBFF
:10053000000000050080E5BC000000040021000070
:1005400000000004028000000000001800C000ABA2
:10055000000000404180E00000000024000000ADE9
:100560000000000C010000000000000C0100E51D6F
:1005700000000004000045BB00000008000080A748
:10058000000000040000F3CE000000040140A000C1
:100590000000000400CC20000000004008C053CF41
:1005A0000000000000008000000000040000F3D202
:1005B000000000040140A0000000000400CC200066
:1005C0000000004008C053D300000000000080007D
:1005D000000000040000F39D000000040140A000A2
:1005E0000000000400CC20000000004008C0539E22
:1005F00000000000000080000000000403C008307C
:10060000000000004200E000000000040000A00024
:1006100000000004200045E0000000000000E5E1CB
:10062000000000000000000100000004000700C4FA
:10063000000000000800E39400000000000000003B
:10064000000000040000E8C4000000040000E8C549
:10065000000000040000E8C6000000040000E928D3
:10066000000000040000E929000000040000E92A5D
:1006700000000008000000C8000000040000E92895
:10068000000000040000E929000000040000E92A3D
:1006900000000008000000CF00000000DEADBEEF4B
:1006A000000000000000011600000004000700D355
:1006B00000000004080050E700000004000700D418
:1006C000000000040800401C000000000000E01DC5
:1006D0000000000402C0200000000004000600002A
:1006E00000000034000000DE00000008000000DB15
:1006F000000000040000800000000000C000E000D6
:10070000000000040000E1CC000000040500E1CD81
:1007100000000004000CA00000000034000000E510
:1007200000000008000000E1000000000000A00040
:10073000000000040019E1CC00000004001B0001CF
:10074000000000040500A00000000004080041CDE6
:1007500000000004000CA00000000034000000FBBA
:10076000000000080000004A000000000000000037
:100770000000000000000000000000000000000079
:100780000000000000000000000000000000000069
:100790000000000000000000000000000000000059
:1007A0000000000000000000000000000000000049
:1007B00000000004000C200000000004001D0018D0
:1007C00000000004001A000100000034000000FBDB
:1007D000000000080000004A000000080500A04AD0
:1007E0000000000000000000000000000000000009
:1007F00000000000000000000000000000000000F9
:00000001FF
/* production radeon ucode r1xx-r6xx */
此差异已折叠。
:1000000000D4007100D4007200CA040000A00000F7
:10001000007E828B0080000300CA040000D4401ED2
:1000200000EE001E00CA040000A00000007E828BCB
:1000300000C4183800CA240000CA2800009581A80E
:1000400000C41C3A00C3C00000CA080000CA0C006B
:10005000007C744B00C200050099C00000C41C3A2B
:10006000007C744C00C0FFF000042C0400309002AF
:10007000007D250000351402007D350B002554035A
:10008000007CD58000259C030095C00400D5001B92
:10009000007EDDC1007D9D8000D6801B00D5801BC9
:1000A00000D4401E00D5401E00D6401E00D6801E43
:1000B00000D4801E00D4C01E009783D400D5C01E7B
:1000C00000CA08000080001B00CA0C0000E4011EEA
:1000D00000D4001E0080000D00C4183800E4013E6A
:1000E00000D4001E0080000D00C4183800D4401E4B
:1000F00000EE001E00CA040000A00000007E828BFB
:1001000000E4011E00D4001E00D4401E00EE001EBC
:1001100000CA040000A00000007E828B00E4013EC3
:1001200000D4001E00D4401E00EE001E00CA0400D1
:1001300000A00000007E828B00CA180000D4401E80
:1001400000D5801E0080005400D4007300D4401EEF
:1001500000CA080000CA0C0000CA100000D48019B0
:1001600000D4C01800D5001700D4801E00D4C01ED3
:1001700000D5001E00E2001E00CA040000A000001E
:10018000007E828B00CA080000D4806000D4401E2C
:100190000080000200D4801E00CA080000D48061E4
:1001A00000D4401E0080000200D4801E00CA080057
:1001B00000CA0C0000D4401E00D4801600D4C01623
:1001C00000D4801E008001B900D4C01E00C6083EC5
:1001D00000CA0C0000CA10000094800400CA140079
:1001E00000E420F300D4201300D5606500D4E01CA7
:1001F00000D5201C00D5601C0080000200062001F4
:1002000000C6083E00CA0C0000CA1000009483F724
:1002100000CA140000E420F30080007A00D4201308
:1002200000C6083E00CA0C0000CA1000009883EF08
:1002300000CA140000D400640080008E000000009A
:1002400000C4143200C6183E00C4082F00954005B3
:1002500000C40C3000D4401E0080000200EE001EDE
:10026000009583F500C4103100D4403300D52065DB
:1002700000D4A01C00D4E01C00D5201C00D40073C6
:1002800000E4015E00D4001E008001B900062001D8
:10029000000A200100D6007400C4083600C61040D1
:1002A0000098800700CC38350095010F00D4001F5E
:1002B00000D460620080000200D4206200CC1433BD
:1002C000008401BC00D4007000D5401E00800002F4
:1002D00000EE001E00CA0C0000CA100000D4C01AB4
:1002E000008401BC00D5001A00CC04430035101F67
:1002F000002C9401007D098B00984005007D15CBF2
:1003000000D4001A008001B900D4006D003444010B
:1003100000CC0C440098403A00CC2C460095800458
:1003200000CC0445008001B900D4001A00D4C01AE2
:1003300000282801008400F300CC10030098801BE3
:100340000004380C008400F300CC100300988017E0
:1003500000043808008400F300CC100300988013D8
:1003600000043804008400F300CC100300988014CB
:1003700000CC1047009A800900CC1448009840DA5D
:1003800000D4006D00CC184400D5001A00D5401AE6
:10039000008000CC00D5801A0096C0D300D4006D38
:1003A000008001B900D4006E009AC00300D4006D33
:1003B00000D4006E0080000200EC007F009AC0CAEA
:1003C00000D4006D008001B900D4006E00CC14038D
:1003D00000CC180300CC1C03007D9103007DD58365
:1003E000007D190C0035CC1F0035701F007CF0CB50
:1003F000007CD08B00880000007E8E8B0095C004AE
:1004000000D4006E008001B900D4001A00D4C01AD4
:1004100000CC080300CC0C0300CC100300CC140368
:1004200000CC180300CC1C0300CC240300CC280310
:100430000035C41F0036B01F007C704B0034F01F25
:10044000007C704B0035701F007C704B007D8881F4
:10045000007DCCC1007E5101007E9541007C9082E0
:10046000007CD4C2007C848B009AC003007C8C8BFF
:10047000002C88010098809C00D4006D0098409A60
:1004800000D4006E00CC084700CC0C4800CC1044CF
:1004900000D4801A00D4C01A0080010400D5001ACC
:1004A00000CC083200D40032009482D800CA0C007C
:1004B00000D4401E0080000200D4001E00E4011E93
:1004C00000D4001E00CA080000CA0C0000CA1000B8
:1004D00000D4401E00CA140000D4801E00D4C01EE8
:1004E00000D5001E00D5401E00D54034008000021B
:1004F00000EE001E0028040400E2001A00E2001AC8
:1005000000D4401A00CA380000CC080300CC0C0309
:1005100000CC0C0300CC0C03009882BC000000004F
:10052000008401BC00D7806F0080000200EE001F35
:1005300000CA040000C2FF0000CC083400C13FFF25
:10054000007C74CB007CC90B007D010F009902AFC9
:10055000007C738B008401BC00D7806F0080000298
:1005600000EE001F00CA080000281900007D898BDA
:10057000009580140028140400CA0C0000CA100062
:1005800000CA1C0000CA240000E2001F00D4C01AE8
:1005900000D5001A00D5401A00CC180300CC2C035B
:1005A00000CC2C0300CC2C03007DA58B007D9C4748
:1005B00000984296000000000080016400D4C01A38
:1005C00000D4401E00D4801E0080000200EE001EF9
:1005D00000E4011E00D4001E00D4401E00EE001EE8
:1005E00000CA040000A00000007E828B00E4013EEF
:1005F00000D4001E00D4401E00EE001E00CA0400FD
:1006000000A00000007E828B00CA080000248C0637
:10061000000CCC060098C00600CC104900990004DC
:1006200000D4007100E4011E00D4001E00D4401E5E
:1006300000D4801E0080000200EE001E00CA0800E8
:1006400000CA0C000034D018002510010095001FCE
:1006500000C17FFF00CA100000CA140000CA1800C1
:1006600000D4801D00D4C01D007DB18B00C14202AA
:1006700000C2C00100D5801D0034DC0E007D5D4C41
:10068000007F734C00D7401E00D5001E00D5401ED1
:1006900000C1420000C2C00000099C010031DC1012
:1006A000007F5F4C007F734C007D838000D5806F9E
:1006B00000D5806600D7401E00EC005E00C8240212
:1006C000008001B900D6007400D4401E00D4801E02
:1006D00000D4C01E0080000200EE001E0080000258
:1006E00000EE001F00D4001F0080000200D4001F95
:1006F00000D4001F0088000000D4001F000000008C
:1007000000000000000000000000000000000000E9
:1007100000000000000000000000000000000000D9
:1007200000000000000000000000000000000000C9
:1007300000000000000000000000000000000000B9
:1007400000000000000000000000000000000000A9
:100750000000000000000000000000000000000099
:100760000000000000000000000000000000000089
:100770000000000000000000000000000000000079
:100780000000000000000000000000000000000069
:100790000000000000000000000000000000000059
:1007A0000000000000000000000000000000000049
:1007B0000000000000000000000000000000000039
:1007C0000000000000000000000000000000000029
:1007D0000000000000000000000000000000000019
:1007E0000000000000000000000000000000000009
:1007F00000000000000000000000000000000000F9
:10080000000101740002017B0003009000040080DD
:100810000005000500060040000700330008012F16
:1008200000090047000A0037001001B7001700A4B4
:100830000022013D0023014C002000B500240128C6
:100840000027004E0028006B002A0061002B005397
:10085000002F00660032008800340182003C0159FC
:10086000003F00730041018F0044013100550176C3
:100870000056017D0060000C006100350062003907
:1008800000630039006400390065003900660039F2
:10089000006700390068003B00690042006A0049B7
:1008A000006B0049006C0049006D0049006E004972
:1008B000006F0049007301B7000000070000000747
:1008C000000000070000000700000007000000070C
:1008D00000000007000000070000000700000007FC
:1008E00000000007000000070000000700000007EC
:1008F00000000007000000070000000700000007DC
:00000001FF
:10000000000000004200E000000000004000E000AE
:1000100000000008000000A000000008000000A48C
:10002000000000004A554B4A000000004A4A44675D
:100030000000000055526F75000000004A7E7D658B
:10004000000000004AE74AF6000000004AD34A4A8E
:1000500000000000D689898900000000CD4ADDCF6C
:10006000000000008EBE4AE200000000C38A8A8AB7
:10007000000000004A0F8CC800000004000CA00023
:1000800000000038000D0012000000040000E8B479
:1000900000000038000D0014000000040000E8B665
:1000A00000000038000D0016000000040000E854B5
:1000B00000000038000D0018000000040000E855A2
:1000C00000000038000D001A000000040000E8568F
:1000D00000000038000D001C000000040000E8577C
:1000E00000000038000D001E000000040000E8249D
:1000F00000000038000D0020000000040000E8258A
:1001000000000038000D0022000000040000E8306C
:1001100000000038000D0024000000040000F0C0C2
:1001200000000038000D0026000000040000F0C1AF
:1001300000000038000D0028000000040000F0411D
:1001400000000038000D002A000000040000F184C7
:1001500000000038000D002C000000040000F185B4
:1001600000000038000D002E000000040000F186A1
:1001700000000038000D0030000000040000F1878E
:1001800000000038000D0032000000040000F18083
:1001900000000038000D0034000000040000F3935C
:1001A00000000038000D0036000000040000F38A53
:1001B00000000038000D0038000000040000F38E3D
:1001C000000000040000E821000000040140A0003D
:1001D00000000018000000430000000400CCE8000C
:1001E00000000004001B000100000004080048009B
:1001F00000000004001B000100000004080048008B
:1002000000000004001B000100000004080048007A
:10021000000000080000003A000000000000A000FC
:10022000000000042000451D000000040000E580DF
:1002300000000004000CE581000000040800458077
:1002400000000004000CE5810000000800000047E9
:10025000000000000000A00000000004000C2000CE
:10026000000000040000E50E000000040003200070
:10027000000000280002205100000024000000516E
:10028000000000040800450F000000080000A04B1B
:10029000000000040000E565000000040000E566C1
:1002A00000000008000000520000000403CCA5B4C8
:1002B00000000004054320000000000400022000AC
:1002C000000000304CCCE05E0000000408274565CB
:1002D000000000300000005E0000000408004564DB
:1002E000000000040000E566000000080000005562
:1002F00000000010008020610000000400202000A9
:1003000000000004001B00FF00000010010000645A
:1003100000000004001F200000000004001C00FF7B
:100320000000000C0000000000000030000000721F
:100330000000000800000055000000040000E57601
:10034000000000040000E577000000040000E50E56
:10035000000000040000E50F000000040140A000C0
:100360000000001800000069000000C200C0E5F9AC
:100370000000000800000069000000040014E50E01
:10038000000000040040E50F0000000800C0006C01
:10039000000000040000E570000000040000E571AA
:1003A0000000000C0000E572000000040000A00046
:1003B000000000040140A000000000040000E56807
:1003C00000000004000C200000000018000000766F
:1003D00000000004000B00000000000418C0E562EB
:1003E00000000008000000780000000800C000774E
:1003F00000000004000700D5000000380000008461
:1004000000000030000CA08600000004080045BB7E
:1004100000000030000C2087000000000800E5BC50
:10042000000000040000E5BB000000000000E5BC87
:100430000000000C00120000000000040012000088
:100440000000000C001B0002000000040000A000DF
:10045000000000040000E821000000000000E800A7
:10046000000000040000E821000000000000E82E69
:100470000000000402CCA0000000000400140000F2
:1004800000000004000CE1CC00000004050DE1CDEB
:10049000000000040040000000000018000000966A
:1004A0000000000400C0A00000000008000000934D
:1004B0000000002000000098000000004200E00062
:1004C000000000380000009F00000004000CA000A5
:1004D000000000040014000000000004000C2000D4
:1004E000000000040016000000000004700CE00092
:1004F000000000080014009B000000004000E00025
:10050000000000040240000000000004400EE00073
:100510000000000402400000000000004000E00075
:1005200000000004000C2000000000040240E51B55
:10053000000000050080E50A000000050080E50BD2
:10054000000000040022000000000004000700D5A5
:1005500000000038000000B200000030000C2087CE
:10056000000000050880E5BD00000030000C20867A
:10057000000000050800E5BB00000030000C2087EB
:10058000000000050880E5BC00000008000000B580
:10059000000000050080E5BD000000050000E5BB8F
:1005A000000000050080E5BC000000040021000000
:1005B00000000004028000000000001800C000B924
:1005C000000000404180E00000000024000000BB6B
:1005D0000000000C010000000000000C0100E51DFF
:1005E00000000004000045BB00000008000080B5CA
:1005F000000000040000F3CE000000040140A00051
:100600000000000400CC20000000004008C053CFD0
:100610000000000000008000000000040000F3D291
:10062000000000040140A0000000000400CC2000F5
:100630000000004008C053D300000000000080000C
:10064000000000040000F39D000000040140A00031
:100650000000000400CC20000000004008C0539EB1
:1006600000000000000080000000000403C008300B
:10067000000000004200E000000000040000A000B4
:1006800000000004200045E0000000000000E5E15B
:10069000000000000000000100000004000700D27C
:1006A000000000000800E3940000000000000000CB
:1006B000000000040000E8C4000000040000E8C5D9
:1006C000000000040000E8C6000000040000E92863
:1006D000000000040000E929000000040000E92AED
:1006E00000000008000000D6000000040000E92817
:1006F000000000040000E929000000040000E92ACD
:1007000000000008000000DD0000000000E001160D
:1007100000000004000700E1000000040800401C85
:1007200000000004200050E7000000040000E01D6D
:1007300000000008000000E40000000402C02000E7
:10074000000000040006000000000034000000EB80
:1007500000000008000000E8000000040000800025
:1007600000000000C000E0000000000000000000E9
:100770000000000000000000000000000000000079
:100780000000000000000000000000000000000069
:100790000000000000000000000000000000000059
:1007A0000000000000000000000000000000000049
:1007B00000000004000C200000000004001D0018D0
:1007C00000000004001A000100000034000000FBDB
:1007D000000000080000004A000000080500A04AD0
:1007E0000000000000000000000000000000000009
:1007F00000000000000000000000000000000000F9
:00000001FF
/* production radeon ucode r1xx-r6xx */
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册