From 4ce958fcd4d3476aea984a9318f33357475955f6 Mon Sep 17 00:00:00 2001 From: Alexander von Gluck IV Date: Sat, 29 Jun 2013 13:18:18 -0500 Subject: [PATCH] RadeonHD: Cleanup, new cards * Fix some incorrect chip codenames * Introduce a dual gpu flag * Add some new chipsets and document the next generation of chips --- .../private/graphics/radeon_hd/radeon_hd.h | 19 ++++---- .../drivers/graphics/radeon_hd/driver.cpp | 46 ++++++++++++++----- .../drivers/graphics/radeon_hd/sensors.cpp | 2 +- 3 files changed, 47 insertions(+), 20 deletions(-) diff --git a/headers/private/graphics/radeon_hd/radeon_hd.h b/headers/private/graphics/radeon_hd/radeon_hd.h index 6ae08f929d..7025ddf8cf 100644 --- a/headers/private/graphics/radeon_hd/radeon_hd.h +++ b/headers/private/graphics/radeon_hd/radeon_hd.h @@ -32,10 +32,11 @@ // Card chipset flags #define CHIP_STD (1 << 0) // Standard chipset -#define CHIP_IGP (1 << 1) // IGP chipset -#define CHIP_MOBILE (1 << 2) // Mobile chipset -#define CHIP_DISCREET (1 << 3) // Discreet chipset -#define CHIP_APU (1 << 4) // APU chipset +#define CHIP_X2 (1 << 1) // Dual cpu +#define CHIP_IGP (1 << 2) // IGP chipset +#define CHIP_MOBILE (1 << 3) // Mobile chipset +#define CHIP_DISCREET (1 << 4) // Discreet chipset +#define CHIP_APU (1 << 5) // APU chipset #define DEVICE_NAME "radeon_hd" #define RADEON_ACCELERANT_NAME "radeon_hd.accelerant" @@ -86,16 +87,18 @@ enum radeon_chipset { RADEON_PALM, //Fusion APU (NI), Radeon HD 6000 RADEON_SUMO, RADEON_SUMO2, - RADEON_CAICOS, //Nothern Islands, Radeon HD 6000 + RADEON_CAICOS, //Nothern Islands, Radeon HD 6000 / Low end 7000 RADEON_TURKS, RADEON_BARTS, RADEON_CAYMAN, RADEON_ANTILLES, - RADEON_LOMBOK, //Southern Islands, Radeon HD 7000 - RADEON_CAPEVERDE, + RADEON_CAPEVERDE, //Southern Islands, Radeon HD 7000 aka ARUBA + RADEON_BONAIRE, RADEON_PITCAIRN, RADEON_TAHITI, - RADEON_NEWZEALAND + RADEON_OLAND, //Sea Islands, Radeon HD 8000 + RADEON_HAINAN, // NO DCE? + RADEON_CURACAO, }; diff --git a/src/add-ons/kernel/drivers/graphics/radeon_hd/driver.cpp b/src/add-ons/kernel/drivers/graphics/radeon_hd/driver.cpp index beb03523be..6816c78efd 100644 --- a/src/add-ons/kernel/drivers/graphics/radeon_hd/driver.cpp +++ b/src/add-ons/kernel/drivers/graphics/radeon_hd/driver.cpp @@ -124,7 +124,7 @@ const struct supported_device { {0x9513, 2, 0, RADEON_RV670, CHIP_STD, "Radeon HD 3850 X2"}, {0x9515, 2, 0, RADEON_RV670, CHIP_STD, "Radeon HD 3850"}, {0x9501, 2, 0, RADEON_RV670, CHIP_STD, "Radeon HD 3870"}, - {0x950F, 2, 0, RADEON_RV670, CHIP_STD, "Radeon HD 3870 X2"}, + {0x950F, 2, 0, RADEON_RV670, CHIP_STD | CHIP_X2, "Radeon HD 3870 X2"}, {0x9710, 3, 0, RADEON_RV620, CHIP_IGP, "Radeon HD 4200"}, {0x9715, 3, 0, RADEON_RV620, CHIP_IGP, "Radeon HD 4250"}, {0x9712, 3, 0, RADEON_RV620, CHIP_IGP, "Radeon HD 4270"}, @@ -153,15 +153,15 @@ const struct supported_device { {0x944e, 3, 1, RADEON_RV770, CHIP_STD, "Radeon HD 4810"}, {0x944c, 3, 1, RADEON_RV770, CHIP_STD, "Radeon HD 4830"}, {0x9442, 3, 1, RADEON_RV770, CHIP_STD, "Radeon HD 4850"}, - {0x9443, 3, 1, RADEON_RV770, CHIP_STD, "Radeon HD 4850 X2"}, + {0x9443, 3, 1, RADEON_RV770, CHIP_STD | CHIP_X2, "Radeon HD 4850 X2"}, {0x94a1, 3, 1, RADEON_RV770, CHIP_IGP, "Radeon HD 4860"}, {0x9440, 3, 1, RADEON_RV770, CHIP_STD, "Radeon HD 4870"}, - {0x9441, 3, 1, RADEON_RV770, CHIP_STD, "Radeon HD 4870 X2"}, + {0x9441, 3, 1, RADEON_RV770, CHIP_STD | CHIP_X2, "Radeon HD 4870 X2"}, {0x9460, 3, 1, RADEON_RV770, CHIP_STD, "Radeon HD 4890"}, // From here on AMD no longer used numeric identifiers - // Marketing Names: Radeon HD 54xx ~ HD 63xx + // Marketing Names: Radeon HD 5450 - HD 6320 // Introduced: 2009 // Codename: Evergreen // Process: 40 nm @@ -186,7 +186,8 @@ const struct supported_device { {0x6899, 4, 0, RADEON_CYPRESS, CHIP_STD, "Radeon HD 5850"}, {0x6898, 4, 0, RADEON_CYPRESS, CHIP_STD, "Radeon HD 5870"}, // Hemlock - {0x689c, 4, 0, RADEON_HEMLOCK, CHIP_STD, "Radeon HD 5900"}, + {0x689c, 4, 0, RADEON_HEMLOCK, CHIP_STD | CHIP_X2, "Radeon HD 5900 X2"}, + {0x689d, 4, 0, RADEON_HEMLOCK, CHIP_STD | CHIP_X2, "Radeon HD 5900 X2"}, // Fusion APUS // Palm {0x9804, 4, 1, RADEON_PALM, CHIP_APU, "Radeon HD 6250"}, @@ -209,7 +210,7 @@ const struct supported_device { {0x9644, 4, 1, RADEON_SUMO2, CHIP_APU, "Radeon HD 6410D"}, {0x9645, 4, 1, RADEON_SUMO2, CHIP_APU, "Radeon HD SUMO2 M"}, - // Radeon HD 64xx - HD 69xx + // Radeon HD 6450 - HD 7670 // Introduced: 2010 // Codename: Nothern Islands // Process: 40 nm @@ -244,6 +245,7 @@ const struct supported_device { {0x6750, 5, 0, RADEON_TURKS, CHIP_STD, "Radeon HD 6500"}, {0x6758, 5, 0, RADEON_TURKS, CHIP_STD, "Radeon HD 6670"}, {0x6759, 5, 0, RADEON_TURKS, CHIP_STD, "Radeon HD 6570/7570"}, + {0x6850, 6, 0, RADEON_TURKS, CHIP_MOBILE, "Radeon HD 7570"}, // Barts {0x673e, 5, 0, RADEON_BARTS, CHIP_STD, "Radeon HD 6790"}, {0x6739, 5, 0, RADEON_BARTS, CHIP_STD, "Radeon HD 6850"}, @@ -266,12 +268,10 @@ const struct supported_device { // Antilles (Top, Dual GPU) {0x671d, 5, 0, RADEON_ANTILLES, CHIP_STD, "Radeon HD 6990"}, - // Marketing Names: Radeon HD 74xx - HD 79xx + // Marketing Names: Radeon HD 7750 - HD 79xx // Introduced: Late 2011 // Codename: Southern Islands // Process: 28 nm - // Lombok? - {0x6850, 6, 0, RADEON_LOMBOK, CHIP_MOBILE, "Radeon HD 7570"}, // Cape Verde (TODO: Need to find friendly names) {0x6820, 6, 0, RADEON_CAPEVERDE, CHIP_STD, "Radeon HD Verde"}, {0x6821, 6, 0, RADEON_CAPEVERDE, CHIP_STD, "Radeon HD Verde"}, @@ -292,6 +292,13 @@ const struct supported_device { {0x683b, 6, 0, RADEON_CAPEVERDE, CHIP_STD, "Radeon HD Verde"}, {0x683f, 6, 0, RADEON_CAPEVERDE, CHIP_STD, "Radeon HD 7750"}, {0x683d, 6, 0, RADEON_CAPEVERDE, CHIP_STD, "Radeon HD 7770"}, + // Bonaire (TODO: Need to find friendly names) + {0x6649, 6, 0, RADEON_BONAIRE, CHIP_STD, "Radeon HD Bonaire"}, + {0x6650, 6, 0, RADEON_BONAIRE, CHIP_STD, "Radeon HD Bonaire"}, + {0x6651, 6, 0, RADEON_BONAIRE, CHIP_STD, "Radeon HD Bonaire"}, + {0x6658, 6, 0, RADEON_BONAIRE, CHIP_STD, "Radeon HD Bonaire"}, + {0x665c, 6, 0, RADEON_BONAIRE, CHIP_STD, "Radeon HD 7790"}, + {0x665d, 6, 0, RADEON_BONAIRE, CHIP_STD, "Radeon HD Bonaire"}, // Pitcairn (TODO: Need to find friendly names) {0x6800, 6, 0, RADEON_PITCAIRN, CHIP_MOBILE, "Radeon HD 7970"}, {0x6801, 6, 0, RADEON_PITCAIRN, CHIP_STD, "Radeon HD Pitcairn"}, @@ -312,8 +319,25 @@ const struct supported_device { {0x679f, 6, 0, RADEON_TAHITI, CHIP_STD, "Radeon HD Tahiti"}, {0x679a, 6, 0, RADEON_TAHITI, CHIP_STD, "Radeon HD 7950"}, {0x6798, 6, 0, RADEON_TAHITI, CHIP_STD, "Radeon HD 7970"}, - // New Zealand (Top, Dual GPU) - {0x6799, 6, 0, RADEON_TAHITI, CHIP_STD, "Radeon HD 7990"} + {0x6799, 6, 0, RADEON_TAHITI, CHIP_STD, "Radeon HD 7990"}, + + // Marketing Names: Radeon HD 83xx - HD 89xx + // Introduced: Late 2013 + // Codename: Sea Islands + // Process: 28 nm + // Oland DCE 6,4 + // Hainan NO DCE? + // Curacao ???? + + // Marketing Names: Radeon HD 9xxx - HD 9xxx + // Introduced: 2014? + // Codename: Volcanic Islands + // Process: 20 nm + + // Marketing Names: Radeon HD 9xxx - HD 9xxx + // Introduced: 2015? + // Codename: Pirate Islands + // Process: ?? nm }; diff --git a/src/add-ons/kernel/drivers/graphics/radeon_hd/sensors.cpp b/src/add-ons/kernel/drivers/graphics/radeon_hd/sensors.cpp index 7c6fb11aa8..607b1cc76a 100644 --- a/src/add-ons/kernel/drivers/graphics/radeon_hd/sensors.cpp +++ b/src/add-ons/kernel/drivers/graphics/radeon_hd/sensors.cpp @@ -26,7 +26,7 @@ radeon_thermal_query(radeon_info &info) uint32 rawTemp = 0; int32 finalTemp = 0; - if (info.chipsetID >= RADEON_LOMBOK) { + if (info.chipsetID >= RADEON_CAPEVERDE) { rawTemp = (read32(info.registers + SI_CG_MULT_THERMAL_STATUS) & SI_CTF_TEMP_MASK) >> SI_CTF_TEMP_SHIFT;