* add initial set of Northern Island cards
* add igp property to pciid map * add disabled bios pull for r700 and ni cards * refactor model numbering as >R700 AMD switched to named card families git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42596 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -25,11 +25,16 @@
|
||||
#include <PCI.h>
|
||||
|
||||
|
||||
#define VENDOR_ID_ATI 0x1002
|
||||
#define VENDOR_ID_ATI 0x1002
|
||||
|
||||
#define RADEON_R600 0x0600
|
||||
#define RADEON_R700 0x0700
|
||||
#define RADEON_R800 0x0800
|
||||
#define RADEON_R520 0x0520 // Fudo
|
||||
#define RADEON_R580 0x0580 // Rodin
|
||||
#define RADEON_R600 0x0600 // Pele
|
||||
#define RADEON_R700 0x0700 // Wekiva
|
||||
#define RADEON_R1000 0x1000 // Evergreen
|
||||
#define RADEON_R2000 0x2000 // Northern Islands
|
||||
#define RADEON_R3000 0x3000 // Southern Islands
|
||||
#define RADEON_R4000 0x4000 // Not yet known / used
|
||||
|
||||
#define RADEON_VBIOS_SIZE 0x10000
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@ init_registers(register_info* regs, uint8 crtid)
|
||||
|
||||
radeon_shared_info &info = *gInfo->shared_info;
|
||||
|
||||
if (info.device_chipset >= RADEON_R800) {
|
||||
if (info.device_chipset >= RADEON_R1000) {
|
||||
uint32 offset = 0;
|
||||
|
||||
// AMD Eyefinity on Evergreen GPUs
|
||||
@@ -89,7 +89,7 @@ init_registers(register_info* regs, uint8 crtid)
|
||||
regs->viewportSize = offset + EVERGREEN_VIEWPORT_SIZE;
|
||||
|
||||
} else if (info.device_chipset >= RADEON_R600
|
||||
&& info.device_chipset < RADEON_R800) {
|
||||
&& info.device_chipset < RADEON_R1000) {
|
||||
|
||||
// r600 - r700 are D1 or D2 based on primary / secondary crt
|
||||
regs->vgaControl
|
||||
|
||||
@@ -39,87 +39,123 @@
|
||||
const struct supported_device {
|
||||
uint32 device_id;
|
||||
uint16 chipset;
|
||||
bool igp;
|
||||
const char* name;
|
||||
} kSupportedDevices[] = {
|
||||
// R600 series (HD24xx - HD42xx)
|
||||
// Codename: Pele
|
||||
{0x94c7, RADEON_R600 | 0x10, "Radeon HD 2350"}, /*RV610*/
|
||||
{0x94c1, RADEON_R600 | 0x10, "Radeon HD 2400"}, /*RV610, IGP*/
|
||||
{0x94c3, RADEON_R600 | 0x10, "Radeon HD 2400"}, /*RV610*/
|
||||
{0x94cc, RADEON_R600 | 0x10, "Radeon HD 2400"}, /*RV610*/
|
||||
{0x9586, RADEON_R600 | 0x30, "Radeon HD 2600"}, /*RV630*/
|
||||
{0x9588, RADEON_R600 | 0x30, "Radeon HD 2600"}, /*RV630*/
|
||||
{0x958a, RADEON_R600 | 0x30, "Radeon HD 2600 X2"},/*RV630*/
|
||||
{0x94c7, RADEON_R600 | 0x10, false, "Radeon HD 2350"},
|
||||
{0x94c1, RADEON_R600 | 0x10, true, "Radeon HD 2400"},
|
||||
{0x94c3, RADEON_R600 | 0x10, false, "Radeon HD 2400"},
|
||||
{0x94cc, RADEON_R600 | 0x10, false, "Radeon HD 2400"},
|
||||
{0x9586, RADEON_R600 | 0x30, false, "Radeon HD 2600"},
|
||||
{0x9588, RADEON_R600 | 0x30, false, "Radeon HD 2600"},
|
||||
{0x958a, RADEON_R600 | 0x30, false, "Radeon HD 2600 X2"},
|
||||
// Radeon 2700 - RV630
|
||||
{0x9400, RADEON_R600 | 0x0, "Radeon HD 2900"}, /*RV600*/
|
||||
{0x9405, RADEON_R600 | 0x0, "Radeon HD 2900"}, /*RV600*/
|
||||
{0x9611, RADEON_R600 | 0x20, "Radeon HD 3100"}, /*RV620, IGP*/
|
||||
{0x9613, RADEON_R600 | 0x20, "Radeon HD 3100"}, /*RV620, IGP*/
|
||||
{0x9610, RADEON_R600 | 0x10, "Radeon HD 3200"}, /*RV610, IGP*/
|
||||
{0x9612, RADEON_R600 | 0x10, "Radeon HD 3200"}, /*RV610, IGP*/
|
||||
{0x9615, RADEON_R600 | 0x10, "Radeon HD 3200"}, /*RV610, IGP*/
|
||||
{0x9614, RADEON_R600 | 0x10, "Radeon HD 3300"}, /*RV610, IGP*/
|
||||
{0x9400, RADEON_R600 | 0x00, false, "Radeon HD 2900"},
|
||||
{0x9405, RADEON_R600 | 0x00, false, "Radeon HD 2900"},
|
||||
{0x9611, RADEON_R600 | 0x20, true, "Radeon HD 3100"},
|
||||
{0x9613, RADEON_R600 | 0x20, true, "Radeon HD 3100"},
|
||||
{0x9610, RADEON_R600 | 0x10, true, "Radeon HD 3200"},
|
||||
{0x9612, RADEON_R600 | 0x10, true, "Radeon HD 3200"},
|
||||
{0x9615, RADEON_R600 | 0x10, true, "Radeon HD 3200"},
|
||||
{0x9614, RADEON_R600 | 0x10, true, "Radeon HD 3300"},
|
||||
// Radeon 3430 - RV620
|
||||
{0x95c5, RADEON_R600 | 0x20, "Radeon HD 3450"}, /*RV620*/
|
||||
{0x95c6, RADEON_R600 | 0x20, "Radeon HD 3450"}, /*RV620*/
|
||||
{0x95c7, RADEON_R600 | 0x20, "Radeon HD 3450"}, /*RV620*/
|
||||
{0x95c9, RADEON_R600 | 0x20, "Radeon HD 3450"}, /*RV620*/
|
||||
{0x95c4, RADEON_R600 | 0x20, "Radeon HD 3470"}, /*RV620*/
|
||||
{0x95c0, RADEON_R600 | 0x20, "Radeon HD 3550"}, /*RV620*/
|
||||
{0x9581, RADEON_R600 | 0x30, "Radeon HD 3600"}, /*RV630*/
|
||||
{0x9583, RADEON_R600 | 0x30, "Radeon HD 3600"}, /*RV630*/
|
||||
{0x9598, RADEON_R600 | 0x30, "Radeon HD 3600"}, /*RV630*/
|
||||
{0x9591, RADEON_R600 | 0x35, "Radeon HD 3600"}, /*RV635*/
|
||||
{0x9589, RADEON_R600 | 0x30, "Radeon HD 3610"}, /*RV630*/
|
||||
{0x95c5, RADEON_R600 | 0x20, false, "Radeon HD 3450"},
|
||||
{0x95c6, RADEON_R600 | 0x20, false, "Radeon HD 3450"},
|
||||
{0x95c7, RADEON_R600 | 0x20, false, "Radeon HD 3450"},
|
||||
{0x95c9, RADEON_R600 | 0x20, false, "Radeon HD 3450"},
|
||||
{0x95c4, RADEON_R600 | 0x20, false, "Radeon HD 3470"},
|
||||
{0x95c0, RADEON_R600 | 0x20, false, "Radeon HD 3550"},
|
||||
{0x9581, RADEON_R600 | 0x30, false, "Radeon HD 3600"},
|
||||
{0x9583, RADEON_R600 | 0x30, false, "Radeon HD 3600"},
|
||||
{0x9598, RADEON_R600 | 0x30, false, "Radeon HD 3600"},
|
||||
{0x9591, RADEON_R600 | 0x35, false, "Radeon HD 3600"},
|
||||
{0x9589, RADEON_R600 | 0x30, false, "Radeon HD 3610"},
|
||||
// Radeon 3650 - RV635
|
||||
// Radeon 3670 - RV635
|
||||
{0x9507, RADEON_R600 | 0x70, "Radeon HD 3830"}, /*RV670*/
|
||||
{0x9505, RADEON_R600 | 0x70, "Radeon HD 3850"}, /*RV670, IGP*/
|
||||
{0x9513, RADEON_R600 | 0x80, "Radeon HD 3850 X2"},/*RV670*/
|
||||
{0x9501, RADEON_R600 | 0x70, "Radeon HD 3870"}, /*RV670*/
|
||||
{0x950F, RADEON_R600 | 0x80, "Radeon HD 3870 X2"},/*R680*/
|
||||
{0x9710, RADEON_R600 | 0x20, "Radeon HD 4200"}, /*RV620, IGP*/
|
||||
{0x9715, RADEON_R600 | 0x20, "Radeon HD 4250"}, /*RV620, IGP*/
|
||||
{0x9712, RADEON_R600 | 0x20, "Radeon HD 4270"}, /*RV620, IGP*/
|
||||
{0x9714, RADEON_R600 | 0x20, "Radeon HD 4290"}, /*RV620, IGP*/
|
||||
{0x9507, RADEON_R600 | 0x70, false, "Radeon HD 3830"},
|
||||
{0x9505, RADEON_R600 | 0x70, false, "Radeon HD 3850"},
|
||||
{0x9513, RADEON_R600 | 0x80, false, "Radeon HD 3850 X2"},
|
||||
{0x9501, RADEON_R600 | 0x70, false, "Radeon HD 3870"},
|
||||
{0x950F, RADEON_R600 | 0x80, false, "Radeon HD 3870 X2"},
|
||||
{0x9710, RADEON_R600 | 0x20, true, "Radeon HD 4200"},
|
||||
{0x9715, RADEON_R600 | 0x20, true, "Radeon HD 4250"},
|
||||
{0x9712, RADEON_R600 | 0x20, true, "Radeon HD 4270"},
|
||||
{0x9714, RADEON_R600 | 0x20, true, "Radeon HD 4290"},
|
||||
|
||||
// R700 series (HD4330 - HD4890, HD51xx, HD5xxV)
|
||||
// Codename: Wekiva
|
||||
// Radeon 4330 - RV710
|
||||
{0x954f, RADEON_R700 | 0x10, "Radeon HD 4300"}, /*RV710*/
|
||||
{0x9552, RADEON_R700 | 0x10, "Radeon HD 4300"}, /*RV710*/
|
||||
{0x9555, RADEON_R700 | 0x10, "Radeon HD 4350"}, /*RV710*/
|
||||
{0x9540, RADEON_R700 | 0x10, "Radeon HD 4550"}, /*RV710*/
|
||||
{0x9498, RADEON_R700 | 0x30, "Radeon HD 4650"}, /*RV740*/
|
||||
{0x94b4, RADEON_R700 | 0x40, "Radeon HD 4700"}, /*RV740*/
|
||||
{0x9490, RADEON_R700 | 0x30, "Radeon HD 4710"}, /*RV740*/
|
||||
{0x94b3, RADEON_R700 | 0x40, "Radeon HD 4770"}, /*RV740*/
|
||||
{0x94b5, RADEON_R700 | 0x40, "Radeon HD 4770"}, /*RV740*/
|
||||
{0x944a, RADEON_R700 | 0x70, "Radeon HD 4800"}, /*RV740*/
|
||||
{0x944e, RADEON_R700 | 0x70, "Radeon HD 4810"}, /*RV740*/
|
||||
{0x944c, RADEON_R700 | 0x70, "Radeon HD 4830"}, /*RV740*/
|
||||
{0x9442, RADEON_R700 | 0x70, "Radeon HD 4850"}, /*RV770*/
|
||||
{0x9443, RADEON_R700 | 0x70, "Radeon HD 4850 X2"},/*RV770*/
|
||||
{0x94a1, RADEON_R700 | 0x90, "Radeon HD 4860"}, /*RV780, IGP*/
|
||||
{0x9440, RADEON_R700 | 0x70, "Radeon HD 4870"}, /*RV770*/
|
||||
{0x9441, RADEON_R700 | 0x70, "Radeon HD 4870 X2"},/*RV770*/
|
||||
{0x954f, RADEON_R700 | 0x10, true, "Radeon HD 4300"},
|
||||
{0x9552, RADEON_R700 | 0x10, true, "Radeon HD 4300"},
|
||||
{0x9555, RADEON_R700 | 0x10, false, "Radeon HD 4350"},
|
||||
{0x9540, RADEON_R700 | 0x10, false, "Radeon HD 4550"},
|
||||
{0x9498, RADEON_R700 | 0x30, false, "Radeon HD 4650"},
|
||||
{0x94b4, RADEON_R700 | 0x40, false, "Radeon HD 4700"},
|
||||
{0x9490, RADEON_R700 | 0x30, false, "Radeon HD 4710"},
|
||||
{0x94b3, RADEON_R700 | 0x40, false, "Radeon HD 4770"},
|
||||
{0x94b5, RADEON_R700 | 0x40, false, "Radeon HD 4770"},
|
||||
{0x944a, RADEON_R700 | 0x70, false, "Radeon HD 4800"},
|
||||
{0x944e, RADEON_R700 | 0x70, false, "Radeon HD 4810"},
|
||||
{0x944c, RADEON_R700 | 0x70, false, "Radeon HD 4830"},
|
||||
{0x9442, RADEON_R700 | 0x70, false, "Radeon HD 4850"},
|
||||
{0x9443, RADEON_R700 | 0x70, false, "Radeon HD 4850 X2"},
|
||||
{0x94a1, RADEON_R700 | 0x90, true, "Radeon HD 4860"},
|
||||
{0x9440, RADEON_R700 | 0x70, false, "Radeon HD 4870"},
|
||||
{0x9441, RADEON_R700 | 0x70, false, "Radeon HD 4870 X2"},
|
||||
|
||||
// R800 series (HD54xx - HD59xx)
|
||||
// From here on AMD no longer used numeric identifiers
|
||||
|
||||
// R1000 series (HD54xx - HD59xx)
|
||||
// Codename: Evergreen
|
||||
{0x68e1, RADEON_R800 | 0x0, "Radeon HD 5430"}, /*RV8XX*/
|
||||
{0x68f9, RADEON_R800 | 0x0, "Radeon HD 5450"}, /*RV8XX*/
|
||||
{0x68e0, RADEON_R800 | 0x0, "Radeon HD 5470"}, /*RV8XX*/
|
||||
{0x68da, RADEON_R800 | 0x0, "Radeon HD 5500"}, /*RV8XX*/
|
||||
{0x68d9, RADEON_R800 | 0x0, "Radeon HD 5570"}, /*RV8XX*/
|
||||
{0x68b9, RADEON_R800 | 0x0, "Radeon HD 5600"}, /*RV8XX*/
|
||||
{0x68c1, RADEON_R800 | 0x0, "Radeon HD 5650"}, /*RV8XX*/
|
||||
{0x68d8, RADEON_R800 | 0x0, "Radeon HD 5670"}, /*RV8XX*/
|
||||
{0x68be, RADEON_R800 | 0x0, "Radeon HD 5700"}, /*RV8XX*/
|
||||
{0x68b8, RADEON_R800 | 0x0, "Radeon HD 5770"}, /*RV8XX*/
|
||||
{0x689e, RADEON_R800 | 0x0, "Radeon HD 5800"}, /*RV8XX*/
|
||||
{0x6899, RADEON_R800 | 0x0, "Radeon HD 5850"}, /*RV8XX*/
|
||||
{0x6898, RADEON_R800 | 0x0, "Radeon HD 5870"}, /*RV8XX*/
|
||||
{0x689c, RADEON_R800 | 0x0, "Radeon HD 5900"} /*RV8XX*/
|
||||
// Cedar
|
||||
{0x68e1, RADEON_R1000 | 0x00, false, "Radeon HD 5430"},
|
||||
{0x68f9, RADEON_R1000 | 0x00, false, "Radeon HD 5450"},
|
||||
{0x68e0, RADEON_R1000 | 0x00, true, "Radeon HD 5470"},
|
||||
// Redwood
|
||||
{0x68da, RADEON_R1000 | 0x10, false, "Radeon HD 5500"},
|
||||
{0x68d9, RADEON_R1000 | 0x10, false, "Radeon HD 5570"},
|
||||
{0x68b9, RADEON_R1000 | 0x10, false, "Radeon HD 5600"},
|
||||
{0x68c1, RADEON_R1000 | 0x10, false, "Radeon HD 5650"},
|
||||
{0x68d8, RADEON_R1000 | 0x10, false, "Radeon HD 5670"},
|
||||
// Juniper
|
||||
{0x68be, RADEON_R1000 | 0x20, false, "Radeon HD 5700"},
|
||||
{0x68b8, RADEON_R1000 | 0x20, false, "Radeon HD 5770"},
|
||||
// Cypress
|
||||
{0x689e, RADEON_R1000 | 0x30, false, "Radeon HD 5800"},
|
||||
{0x6899, RADEON_R1000 | 0x30, false, "Radeon HD 5850"},
|
||||
{0x6898, RADEON_R1000 | 0x30, false, "Radeon HD 5870"},
|
||||
// Hemlock
|
||||
{0x689c, RADEON_R1000 | 0x40, false, "Radeon HD 5900"},
|
||||
|
||||
// R2000 series (HD64xx - HD69xx)
|
||||
// Codename: Nothern Islands
|
||||
// Caicos
|
||||
{0x6770, RADEON_R2000 | 0x00, true, "Radeon HD 6400"},
|
||||
{0x6779, RADEON_R2000 | 0x00, false, "Radeon HD 6450"},
|
||||
// Turks
|
||||
{0x6759, RADEON_R2000 | 0x10, false, "Radeon HD 6570"},
|
||||
{0x6741, RADEON_R2000 | 0x10, true, "Radeon HD 6650M"},
|
||||
// Barts
|
||||
{0x673e, RADEON_R2000 | 0x20, false, "Radeon HD 6790"},
|
||||
{0x6739, RADEON_R2000 | 0x20, false, "Radeon HD 6850"},
|
||||
{0x6738, RADEON_R2000 | 0x20, false, "Radeon HD 6870"},
|
||||
// Cayman
|
||||
{0x6718, RADEON_R2000 | 0x30, false, "Radeon HD 6970"},
|
||||
// Antilles
|
||||
{0x671d, RADEON_R2000 | 0x40, false, "Radeon HD 6990"}
|
||||
|
||||
// R3000 series (HD74xx - HD79xx)
|
||||
// Codename: Southern Islands
|
||||
// Lombok
|
||||
// R3000 | 0x00
|
||||
// Thames
|
||||
// R3000 | 0x10
|
||||
// Tahiti
|
||||
// R3000 | 0x20
|
||||
// New Zealand
|
||||
// R3000 | 0x30
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -155,6 +155,89 @@ radeon_hd_getbios(radeon_info &info)
|
||||
}
|
||||
|
||||
|
||||
status_t
|
||||
radeon_hd_getbios_ni(radeon_info &info)
|
||||
{
|
||||
TRACE("card(%ld): %s: called\n", info.id, __func__);
|
||||
uint32 bus_cntl = read32(info.registers + R600_BUS_CNTL);
|
||||
uint32 d1vga_control = read32(info.registers + AVIVO_D1VGA_CONTROL);
|
||||
uint32 d2vga_control = read32(info.registers + AVIVO_D2VGA_CONTROL);
|
||||
uint32 vga_render_control
|
||||
= read32(info.registers + AVIVO_VGA_RENDER_CONTROL);
|
||||
uint32 rom_cntl = read32(info.registers + R600_ROM_CNTL);
|
||||
|
||||
// enable the rom
|
||||
write32(info.registers + R600_BUS_CNTL, (bus_cntl & ~R600_BIOS_ROM_DIS));
|
||||
// disable VGA mode
|
||||
write32(info.registers + AVIVO_D1VGA_CONTROL, (d1vga_control
|
||||
& ~(AVIVO_DVGA_CONTROL_MODE_ENABLE
|
||||
| AVIVO_DVGA_CONTROL_TIMING_SELECT)));
|
||||
write32(info.registers + D2VGA_CONTROL, (d2vga_control
|
||||
& ~(AVIVO_DVGA_CONTROL_MODE_ENABLE
|
||||
| AVIVO_DVGA_CONTROL_TIMING_SELECT)));
|
||||
write32(info.registers + AVIVO_VGA_RENDER_CONTROL,
|
||||
(vga_render_control & ~AVIVO_VGA_VSTATUS_CNTL_MASK));
|
||||
|
||||
write32(info.registers + R600_ROM_CNTL, (rom_cntl | R600_SCK_OVERWRITE));
|
||||
|
||||
// try to grab the bios
|
||||
status_t result = radeon_hd_getbios(info);
|
||||
|
||||
// restore regs
|
||||
write32(info.registers + R600_BUS_CNTL, bus_cntl);
|
||||
write32(info.registers + AVIVO_D1VGA_CONTROL, d1vga_control);
|
||||
write32(info.registers + AVIVO_D2VGA_CONTROL, d2vga_control);
|
||||
write32(info.registers + AVIVO_VGA_RENDER_CONTROL, vga_render_control);
|
||||
write32(info.registers + R600_ROM_CNTL, rom_cntl);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
status_t
|
||||
radeon_hd_getbios_r700(radeon_info &info)
|
||||
{
|
||||
TRACE("card(%ld): %s: called\n", info.id, __func__);
|
||||
uint32 viph_control = read32(info.registers + RADEON_VIPH_CONTROL);
|
||||
uint32 bus_cntl = read32(info.registers + R600_BUS_CNTL);
|
||||
uint32 d1vga_control = read32(info.registers + AVIVO_D1VGA_CONTROL);
|
||||
uint32 d2vga_control = read32(info.registers + AVIVO_D2VGA_CONTROL);
|
||||
uint32 vga_render_control
|
||||
= read32(info.registers + AVIVO_VGA_RENDER_CONTROL);
|
||||
uint32 rom_cntl = read32(info.registers + R600_ROM_CNTL);
|
||||
|
||||
// disable VIP
|
||||
write32(info.registers + RADEON_VIPH_CONTROL,
|
||||
(viph_control & ~RADEON_VIPH_EN));
|
||||
// enable the rom
|
||||
write32(info.registers + R600_BUS_CNTL, (bus_cntl & ~R600_BIOS_ROM_DIS));
|
||||
// disable VGA mode
|
||||
write32(info.registers + AVIVO_D1VGA_CONTROL, (d1vga_control
|
||||
& ~(AVIVO_DVGA_CONTROL_MODE_ENABLE
|
||||
| AVIVO_DVGA_CONTROL_TIMING_SELECT)));
|
||||
write32(info.registers + D2VGA_CONTROL, (d2vga_control
|
||||
& ~(AVIVO_DVGA_CONTROL_MODE_ENABLE
|
||||
| AVIVO_DVGA_CONTROL_TIMING_SELECT)));
|
||||
write32(info.registers + AVIVO_VGA_RENDER_CONTROL,
|
||||
(vga_render_control & ~AVIVO_VGA_VSTATUS_CNTL_MASK));
|
||||
|
||||
write32(info.registers + R600_ROM_CNTL, (rom_cntl | R600_SCK_OVERWRITE));
|
||||
|
||||
// try to grab the bios
|
||||
status_t result = radeon_hd_getbios(info);
|
||||
|
||||
// restore regs
|
||||
write32(info.registers + RADEON_VIPH_CONTROL, viph_control);
|
||||
write32(info.registers + R600_BUS_CNTL, bus_cntl);
|
||||
write32(info.registers + AVIVO_D1VGA_CONTROL, d1vga_control);
|
||||
write32(info.registers + AVIVO_D2VGA_CONTROL, d2vga_control);
|
||||
write32(info.registers + AVIVO_VGA_RENDER_CONTROL, vga_render_control);
|
||||
write32(info.registers + R600_ROM_CNTL, rom_cntl);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
status_t
|
||||
radeon_hd_getbios_r600(radeon_info &info)
|
||||
{
|
||||
@@ -304,7 +387,13 @@ radeon_hd_init(radeon_info &info)
|
||||
status_t biosStatus = radeon_hd_getbios(info);
|
||||
if (biosStatus != B_OK) {
|
||||
// If the active read fails, we do a disabled read
|
||||
if (info.device_chipset > RADEON_R600)
|
||||
|
||||
// TODO : IGP read
|
||||
if (info.device_chipset >= (RADEON_R1000 | 0x20))
|
||||
biosStatus = radeon_hd_getbios_ni(info);
|
||||
else if (info.device_chipset >= (RADEON_R700 | 0x70))
|
||||
biosStatus = radeon_hd_getbios_r700(info);
|
||||
else if (info.device_chipset >= RADEON_R600)
|
||||
biosStatus = radeon_hd_getbios_r600(info);
|
||||
}
|
||||
|
||||
@@ -330,7 +419,7 @@ radeon_hd_init(radeon_info &info)
|
||||
}
|
||||
|
||||
// *** Populate graphics_memory/aperture_size with KB
|
||||
if (info.shared_info->device_chipset >= RADEON_R800) {
|
||||
if (info.shared_info->device_chipset >= RADEON_R1000) {
|
||||
// R800+ has memory stored in MB
|
||||
info.shared_info->graphics_memory_size
|
||||
= read32(info.registers + R6XX_CONFIG_MEMSIZE) * 1024;
|
||||
|
||||
Reference in New Issue
Block a user