hwquirks: Detect cache on VIA VP3/MVP3
Add quirk to detect motherboard cache on VIA VP3/MVP3.
This commit is contained in:
parent
34eb8186fd
commit
fc3a0bd461
|
@ -48,6 +48,16 @@ static void asus_tusl2_configure_mux(void)
|
||||||
outb(0xAA, 0x2E);
|
outb(0xAA, 0x2E);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int *get_motherboard_cache(void)
|
||||||
|
{
|
||||||
|
if (l2_cache == 0) {
|
||||||
|
return &l2_cache;
|
||||||
|
} else if (l3_cache == 0) {
|
||||||
|
return &l3_cache;
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
static void get_m1541_l2_cache_size(void)
|
static void get_m1541_l2_cache_size(void)
|
||||||
{
|
{
|
||||||
if (l2_cache != 0) {
|
if (l2_cache != 0) {
|
||||||
|
@ -67,6 +77,24 @@ static void get_m1541_l2_cache_size(void)
|
||||||
if (reg == 0b10) { l2_cache = 1024; }
|
if (reg == 0b10) { l2_cache = 1024; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void get_vt82c597_mb_cache_size(void)
|
||||||
|
{
|
||||||
|
int *const mb_cache = get_motherboard_cache();
|
||||||
|
if (!mb_cache) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if cache is enabled with CC1 Register[7:6]
|
||||||
|
if ((pci_config_read8(0, 0, 0, 0x50) & 0xc0) != 0x80) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get cache size with CC2 Register[1:0]
|
||||||
|
const uint8_t reg = pci_config_read8(0, 0, 0, 0x51) & 0x03;
|
||||||
|
|
||||||
|
*mb_cache = 256 << reg;
|
||||||
|
}
|
||||||
|
|
||||||
static void disable_temp_reporting(void)
|
static void disable_temp_reporting(void)
|
||||||
{
|
{
|
||||||
enable_temperature = false;
|
enable_temperature = false;
|
||||||
|
@ -122,6 +150,16 @@ void quirks_init(void)
|
||||||
quirk.process = get_m1541_l2_cache_size;
|
quirk.process = get_m1541_l2_cache_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// -----------------------------------------------
|
||||||
|
// -- VIA VP3 (VT82C597), MVP3 (VT82C598) Quirk --
|
||||||
|
// -----------------------------------------------
|
||||||
|
// Motherboard cache detection
|
||||||
|
else if (quirk.root_vid == PCI_VID_VIA && (quirk.root_did == 0x0597 || quirk.root_did == 0x0598)) { // VIA VT82C597/8
|
||||||
|
quirk.id = QUIRK_VIA_VP3;
|
||||||
|
quirk.type |= QUIRK_TYPE_MEM_SIZE;
|
||||||
|
quirk.process = get_vt82c597_mb_cache_size;
|
||||||
|
}
|
||||||
|
|
||||||
// ------------------------
|
// ------------------------
|
||||||
// -- ASUS TUSL2-C Quirk --
|
// -- ASUS TUSL2-C Quirk --
|
||||||
// ------------------------
|
// ------------------------
|
||||||
|
|
|
@ -28,7 +28,8 @@ typedef enum {
|
||||||
QUIRK_X10SDV_NOSMP,
|
QUIRK_X10SDV_NOSMP,
|
||||||
QUIRK_K8_BSTEP_NOTEMP,
|
QUIRK_K8_BSTEP_NOTEMP,
|
||||||
QUIRK_K8_REVFG_TEMP,
|
QUIRK_K8_REVFG_TEMP,
|
||||||
QUIRK_AMD_ERRATA_319
|
QUIRK_AMD_ERRATA_319,
|
||||||
|
QUIRK_VIA_VP3
|
||||||
} quirk_id_t;
|
} quirk_id_t;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
|
Loading…
Reference in New Issue