diff options
Diffstat (limited to 'src/northbridge/via/vx800/examples')
-rw-r--r-- | src/northbridge/via/vx800/examples/chipset_init.c | 363 |
1 files changed, 153 insertions, 210 deletions
diff --git a/src/northbridge/via/vx800/examples/chipset_init.c b/src/northbridge/via/vx800/examples/chipset_init.c index 08d3c95048..8cee44504b 100644 --- a/src/northbridge/via/vx800/examples/chipset_init.c +++ b/src/northbridge/via/vx800/examples/chipset_init.c @@ -43,12 +43,12 @@ static const struct VIA_PCI_REG_INIT_TABLE mSbStage1InitTbl[] = { {0x00, 0xFF, SB_VLINK_REG(0xE6), 0xFF, 0x39}, // Enable SMM A-Seg, MSI and Io APIC ///// SPI-BAR. //// SPI_BASE_ADDRESS = 0xFED1 0000 - 0x00, 0xFF, SB_LPC_REG(0xBC), 0xFF, 0x00, - 0x00, 0xFF, SB_LPC_REG(0xBD), 0xFF, 0xD1, - 0x00, 0xFF, SB_LPC_REG(0xBE), 0xFF, 0xFE, -// 0x00, 0xFF, ((0x11<<16)|(0x00<<8)|0xBC), 0xFF, 0x00,//this , for the different macro -// 0x00, 0xFF, ((0x11<<16)|(0x00<<8)|0xBD), 0xFF, 0xD1, -// 0x00, 0xFF, ((0x11<<16)|(0x00<<8)|0xBE), 0xFF, 0xFE, + {0x00, 0xFF, SB_LPC_REG(0xBC), 0xFF, 0x00}, + {0x00, 0xFF, SB_LPC_REG(0xBD), 0xFF, 0xD1}, + {0x00, 0xFF, SB_LPC_REG(0xBE), 0xFF, 0xFE}, +// {0x00, 0xFF, ((0x11<<16)|(0x00<<8)|0xBC), 0xFF, 0x00},//this , for the different macro +// {0x00, 0xFF, ((0x11<<16)|(0x00<<8)|0xBD), 0xFF, 0xD1}, +// {0x00, 0xFF, ((0x11<<16)|(0x00<<8)|0xBE), 0xFF, 0xFE}, ///// End of 2008-04-17 {0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // End of Table @@ -60,191 +60,184 @@ static const struct VIA_PCI_REG_INIT_TABLE mNbStage2InitTable[] = { // D0F2~D0F3 is configured by MemoryInit Peim // D0F4: NB PMU - 0x00, 0xFF, NB_PMU_REG(0x84), 0x00, 0xDB, - 0x00, 0xFF, NB_PMU_REG(0x85), 0x00, 0x05, - 0x00, 0xFF, NB_PMU_REG(0x89), 0x00, 0xF8, - 0x00, 0xFF, NB_PMU_REG(0x8B), 0x00, 0xBF, - 0x00, 0xFF, NB_PMU_REG(0x8D), 0x00, 0xFC, - 0x00, 0xFF, NB_PMU_REG(0x8E), 0x00, 0x19, - 0x00, 0xFF, NB_PMU_REG(0x8F), 0x03, 0x00, - 0x00, 0xFF, NB_PMU_REG(0x90), 0x00, 0xFF, - 0x00, 0xFF, NB_PMU_REG(0x91), 0x00, 0xFF, - 0x00, 0xFF, NB_PMU_REG(0x92), 0x00, 0xCC, - 0x00, 0xFF, NB_PMU_REG(0xA0), 0x00, 0x80, - 0x00, 0xFF, NB_PMU_REG(0xA1), 0x00, 0xE0, - 0x00, 0xFF, NB_PMU_REG(0xA2), 0x00, 0xD6, - 0x00, 0xFF, NB_PMU_REG(0xA3), 0x00, 0x80, - 0x00, 0xFF, NB_PMU_REG(0xA8), 0x00, 0x20, + { 0x00, 0xFF, NB_PMU_REG(0x84), 0x00, 0xDB }, + { 0x00, 0xFF, NB_PMU_REG(0x85), 0x00, 0x05 }, + { 0x00, 0xFF, NB_PMU_REG(0x89), 0x00, 0xF8 }, + { 0x00, 0xFF, NB_PMU_REG(0x8B), 0x00, 0xBF }, + { 0x00, 0xFF, NB_PMU_REG(0x8D), 0x00, 0xFC }, + { 0x00, 0xFF, NB_PMU_REG(0x8E), 0x00, 0x19 }, + { 0x00, 0xFF, NB_PMU_REG(0x8F), 0x03, 0x00 }, + { 0x00, 0xFF, NB_PMU_REG(0x90), 0x00, 0xFF }, + { 0x00, 0xFF, NB_PMU_REG(0x91), 0x00, 0xFF }, + { 0x00, 0xFF, NB_PMU_REG(0x92), 0x00, 0xCC }, + { 0x00, 0xFF, NB_PMU_REG(0xA0), 0x00, 0x80 }, + { 0x00, 0xFF, NB_PMU_REG(0xA1), 0x00, 0xE0 }, + { 0x00, 0xFF, NB_PMU_REG(0xA2), 0x00, 0xD6 }, + { 0x00, 0xFF, NB_PMU_REG(0xA3), 0x00, 0x80 }, + { 0x00, 0xFF, NB_PMU_REG(0xA8), 0x00, 0x20 }, // D0F5: NB APIC, PXPTRF and MSGC //Note: the Rx6A, RCRBH Base Address, is not set, which is related to PCIE Root Complex. //Note: the Rx60, Extended CFG Address. Support and Rx61, Extended CFG Address, are set by NB Peim that is in the PEI Phase. //Note: the Rx42, APIC Interrupt((BT_INTR)) Control, is set by NB Peim that is in PEI phase. - 0x00, 0xFF, NB_PXPTRF_REG(0x50), 0x00, 0x00, - 0x00, 0xFF, NB_PXPTRF_REG(0x54), 0x00, 0x80, - 0x00, 0xFF, NB_PXPTRF_REG(0x55), 0x00, 0x04, - 0x00, 0xFF, NB_PXPTRF_REG(0x58), 0x00, 0x00, - 0x00, 0xFF, NB_PXPTRF_REG(0x59), 0x00, 0x02, - 0x00, 0xFF, NB_PXPTRF_REG(0x5E), 0x00, 0x00, - 0x00, 0xFF, NB_PXPTRF_REG(0x5F), 0x00, 0x06, - 0x00, 0xFF, NB_PXPTRF_REG(0x80), 0x00, 0x18, //Set RVC1DM, RTHBHIT, RUWRDYD, RUPRRDY1, RUWPOPHD to 1. - 0x00, 0xFF, NB_PXPTRF_REG(0x82), 0x00, 0x00, //Set RVC1RPSW, RVC1RQ1T to 1. - 0x00, 0xFF, NB_PXPTRF_REG(0x83), 0x00, 0x81, - 0x00, 0xFF, NB_PXPTRF_REG(0x84), 0x00, 0x28, - 0x00, 0xFF, NB_PXPTRF_REG(0x85), 0x00, 0xC0, - 0x00, 0xFF, NB_MSGC_REG(0xA3), 0x00, 0x01, // RWAKEEN -// 0x00, 0xFF, NB_PXPTRF_REG(0x64), 0x40, 0x00, //RTDNP2B32EN - 0x00, 0xFF, NB_PXPTRF_REG(0xF3), 0xFC, 0x20, - 0x00, 0xFF, NB_PXPTRF_REG(0x85), 0x00, 0x00, //RP2P1ABORT + { 0x00, 0xFF, NB_PXPTRF_REG(0x50), 0x00, 0x00 }, + { 0x00, 0xFF, NB_PXPTRF_REG(0x54), 0x00, 0x80 }, + { 0x00, 0xFF, NB_PXPTRF_REG(0x55), 0x00, 0x04 }, + { 0x00, 0xFF, NB_PXPTRF_REG(0x58), 0x00, 0x00 }, + { 0x00, 0xFF, NB_PXPTRF_REG(0x59), 0x00, 0x02 }, + { 0x00, 0xFF, NB_PXPTRF_REG(0x5E), 0x00, 0x00 }, + { 0x00, 0xFF, NB_PXPTRF_REG(0x5F), 0x00, 0x06 }, + { 0x00, 0xFF, NB_PXPTRF_REG(0x80), 0x00, 0x18 }, //Set RVC1DM, RTHBHIT, RUWRDYD, RUPRRDY1, RUWPOPHD to 1. + { 0x00, 0xFF, NB_PXPTRF_REG(0x82), 0x00, 0x00 }, //Set RVC1RPSW, RVC1RQ1T to 1. + { 0x00, 0xFF, NB_PXPTRF_REG(0x83), 0x00, 0x81 }, + { 0x00, 0xFF, NB_PXPTRF_REG(0x84), 0x00, 0x28 }, + { 0x00, 0xFF, NB_PXPTRF_REG(0x85), 0x00, 0xC0 }, + { 0x00, 0xFF, NB_MSGC_REG(0xA3), 0x00, 0x01 }, // RWAKEEN + //{ 0x00, 0xFF, NB_PXPTRF_REG(0x64), 0x40, 0x00 }, //RTDNP2B32EN + { 0x00, 0xFF, NB_PXPTRF_REG(0xF3), 0xFC, 0x20 }, + { 0x00, 0xFF, NB_PXPTRF_REG(0x85), 0x00, 0x00 }, //RP2P1ABORT // fine-tune // If no settings, C7 will hang or reboot in XP, but CN will not. - 0x00, 0xFF, NB_HOST_REG(0x51), 0x84, 0x00, - 0x00, 0xFF, NB_HOST_REG(0x52), 0x0F, 0x03, - 0x00, 0xFF, NB_HOST_REG(0x54), 0x04, 0x00, - 0x00, 0xFF, NB_HOST_REG(0x55), 0x04, 0x00, - 0x00, 0xFF, NB_HOST_REG(0x59), 0x09, 0x01, - 0x00, 0xFF, NB_HOST_REG(0x5C), 0x10, 0x10, - 0x00, 0xFF, NB_HOST_REG(0x5F), 0x0E, 0x08, - 0x00, 0xFF, NB_HOST_REG(0x92), 0xFF, 0x04, // ACPI Base addr - 0x00, 0xFF, NB_HOST_REG(0x97), 0x01, 0x01, // APIC MSI - 0x00, 0xFF, NB_HOST_REG(0x99), 0x02, 0x00, // APIC MSI + { 0x00, 0xFF, NB_HOST_REG(0x51), 0x84, 0x00 }, + { 0x00, 0xFF, NB_HOST_REG(0x52), 0x0F, 0x03 }, + { 0x00, 0xFF, NB_HOST_REG(0x54), 0x04, 0x00 }, + { 0x00, 0xFF, NB_HOST_REG(0x55), 0x04, 0x00 }, + { 0x00, 0xFF, NB_HOST_REG(0x59), 0x09, 0x01 }, + { 0x00, 0xFF, NB_HOST_REG(0x5C), 0x10, 0x10 }, + { 0x00, 0xFF, NB_HOST_REG(0x5F), 0x0E, 0x08 }, + { 0x00, 0xFF, NB_HOST_REG(0x92), 0xFF, 0x04 }, // ACPI Base addr + { 0x00, 0xFF, NB_HOST_REG(0x97), 0x01, 0x01 }, // APIC MSI + { 0x00, 0xFF, NB_HOST_REG(0x99), 0x02, 0x00 }, // APIC MSI //GTL - 0x00, 0xFF, NB_HOST_REG(0x73), 0xFF, 0x66, - 0x00, 0xFF, NB_HOST_REG(0xB2), 0xFF, 0x33, - 0x00, 0xFF, NB_HOST_REG(0xB3), 0xFF, 0x33, - 0x00, 0xFF, NB_HOST_REG(0xBC), 0xFF, 0x33, - 0x00, 0xFF, NB_HOST_REG(0xBD), 0xFF, 0x33, - 0x00, 0xFF, NB_HOST_REG(0xC5), 0x30, 0x20, - 0x00, 0xFF, NB_HOST_REG(0xC8), 0x10, 0x00, + { 0x00, 0xFF, NB_HOST_REG(0x73), 0xFF, 0x66 }, + { 0x00, 0xFF, NB_HOST_REG(0xB2), 0xFF, 0x33 }, + { 0x00, 0xFF, NB_HOST_REG(0xB3), 0xFF, 0x33 }, + { 0x00, 0xFF, NB_HOST_REG(0xBC), 0xFF, 0x33 }, + { 0x00, 0xFF, NB_HOST_REG(0xBD), 0xFF, 0x33 }, + { 0x00, 0xFF, NB_HOST_REG(0xC5), 0x30, 0x20 }, + { 0x00, 0xFF, NB_HOST_REG(0xC8), 0x10, 0x00 }, // End of Table {0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // End of Table - }; static const struct VIA_PCI_REG_INIT_TABLE mBusControllerInitTable[] = { // D17F0: LPC - 0x00, 0xFF, SB_LPC_REG(0x40), 0x44, 0x44, // Enable I/O Recovery Time, 4D0/4D1 Support - 0x00, 0xFF, SB_LPC_REG(0x42), 0xF8, 0xF0, // ENLBUF, GINTREN, FLUSHEN, RBRSTRD - 0x00, 0xFF, SB_LPC_REG(0x43), 0x0F, 0x0B, // RENDTX, ENWBTO, ENRBTO - // 0x00, 0xFF, SB_LPC_REG(0x46), 0x00, 0x10, // It is related to INTH# - //0x00, 0xFF, SB_LPC_REG(0x48), 0x00, 0x0C, //RMRPW, RIRPW // Reserved in 409 by Eric + { 0x00, 0xFF, SB_LPC_REG(0x40), 0x44, 0x44 }, // Enable I/O Recovery Time, 4D0/4D1 Support + { 0x00, 0xFF, SB_LPC_REG(0x42), 0xF8, 0xF0 }, // ENLBUF, GINTREN, FLUSHEN, RBRSTRD + { 0x00, 0xFF, SB_LPC_REG(0x43), 0x0F, 0x0B }, // RENDTX, ENWBTO, ENRBTO + //{ 0x00, 0xFF, SB_LPC_REG(0x46), 0x00, 0x10 }, // It is related to INTH# + //{ 0x00, 0xFF, SB_LPC_REG(0x48), 0x00, 0x0C }, //RMRPW, RIRPW // Reserved in 409 by Eric // Internal RTC, Mouse, Keyboard // set in PEI by Eric - //0x00, 0xFF, SB_LPC_REG(0x51), 0x10, 0x0D, // Enable Internal RTC, Internal PS2 Mouse/Keyboard + //{ 0x00, 0xFF, SB_LPC_REG(0x51), 0x10, 0x0D }, // Enable Internal RTC, Internal PS2 Mouse/Keyboard // RTC - 0x00, 0xFF, SB_LPC_REG(0x58), 0x00, 0x01, //RTC Rx32 Map to Centrury Byte + { 0x00, 0xFF, SB_LPC_REG(0x58), 0x00, 0x01 }, //RTC Rx32 Map to Centrury Byte - // 0x00, 0xFF, SB_LPC_REG(0x40), 0x00, 0x02, // RDMEGAS - //0x00, 0xFF, SB_LPC_REG(0x4E), 0x00, 0x08, // Enable RTC port 74/75, ENEXRTC // set in PEI by Eric + //{ 0x00, 0xFF, SB_LPC_REG(0x40), 0x00, 0x02 }, // RDMEGAS + //{ 0x00, 0xFF, SB_LPC_REG(0x4E), 0x00, 0x08 }, // Enable RTC port 74/75, ENEXRTC // set in PEI by Eric // Serial IRQ // set in PEI by Eric - //0x00, 0xFF, SB_LPC_REG(0x52), 0x0F, 0x09, // Enable Serial IRQ, Start Frame Width is 6 PCI Clock. + //{ 0x00, 0xFF, SB_LPC_REG(0x52), 0x0F, 0x09 }, // Enable Serial IRQ, Start Frame Width is 6 PCI Clock. // Enable 4D0h/4D1h Port - //0x00, 0xFF, SB_LPC_REG(0x40), 0x00, 0x04, // EISAXT // set in PEI by Eric + //{ 0x00, 0xFF, SB_LPC_REG(0x40), 0x00, 0x04 }, // EISAXT // set in PEI by Eric // Config ROM Interface // Enable SPI/Set SPI Memory Base Address // It is initialized in PEI Phase // Subsystem ID/Vendor ID Back Door - 0x00, 0xFF, SB_LPC_REG(0x70), 0xFF, 0x06, - 0x00, 0xFF, SB_LPC_REG(0x71), 0xFF, 0x11, - 0x00, 0xFF, SB_LPC_REG(0x72), 0xFF, 0x09, - 0x00, 0xFF, SB_LPC_REG(0x73), 0xFF, 0x34, + { 0x00, 0xFF, SB_LPC_REG(0x70), 0xFF, 0x06 }, + { 0x00, 0xFF, SB_LPC_REG(0x71), 0xFF, 0x11 }, + { 0x00, 0xFF, SB_LPC_REG(0x72), 0xFF, 0x09 }, + { 0x00, 0xFF, SB_LPC_REG(0x73), 0xFF, 0x34 }, - 0x00, 0xFF, SB_LPC_REG(0x4C), 0xC0, 0x40, - 0x00, 0xFF, SB_LPC_REG(0x5B), 0x00, 0x51, // Orgin value 0x53, modify for 409 by Eric - 0x00, 0xFF, SB_LPC_REG(0x67), 0x03, 0x01, + { 0x00, 0xFF, SB_LPC_REG(0x4C), 0xC0, 0x40 }, + { 0x00, 0xFF, SB_LPC_REG(0x5B), 0x00, 0x51 }, // Orgin value 0x53, modify for 409 by Eric + { 0x00, 0xFF, SB_LPC_REG(0x67), 0x03, 0x01 }, - 0x00, 0xFF, SB_LPC_REG(0x50), 0x7E, 0x00, // Setting PCI device enable - 0x00, 0xFF, SB_LPC_REG(0x51), 0xD0, 0x00, // Setting PCI device enable - 0x00, 0xFF, SB_VLINK_REG(0xD1), 0x04, 0x00, // Setting HDAC enable + { 0x00, 0xFF, SB_LPC_REG(0x50), 0x7E, 0x00 }, // Setting PCI device enable + { 0x00, 0xFF, SB_LPC_REG(0x51), 0xD0, 0x00 }, // Setting PCI device enable + { 0x00, 0xFF, SB_VLINK_REG(0xD1), 0x04, 0x00 }, // Setting HDAC enable {0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // End of Table }; static const struct VIA_PCI_REG_INIT_TABLE mPCI1InitTable[] = { //PCI1 Programming Sequence //(1)Configure D17F7 - 0x00, 0xFF, SB_VLINK_REG(0x04), 0x00, 0x03, - 0x00, 0xFF, SB_VLINK_REG(0x0C), 0x00, 0x08, // Reserved in 409 by Eric - 0x00, 0xFF, SB_VLINK_REG(0x4F), 0x40, 0x41, //RENPPB, RP2CFLSH - 0x00, 0xFF, SB_VLINK_REG(0x77), 0x00, 0x48, //ROP2CFLSH, RFFTMR[1:0]. ROP2CFLSH work with Rx4F[0](RP2CFLSH) assertion - // 0x00, 0xFF, SB_VLINK_REG(0x51), 0x00, 0x80, //RSUB_DEC_P2P, RSUBDECOD(Window xp). If Bit7 is set, PCI lock will occured. - //0x00, 0xFF, SB_VLINK_REG(0x51), 0x00, 0x81, //RSUB_DEC_P2P, RSUBDECOD(Window Vista) + { 0x00, 0xFF, SB_VLINK_REG(0x04), 0x00, 0x03 }, + { 0x00, 0xFF, SB_VLINK_REG(0x0C), 0x00, 0x08 }, // Reserved in 409 by Eric + { 0x00, 0xFF, SB_VLINK_REG(0x4F), 0x40, 0x41 }, //RENPPB, RP2CFLSH + { 0x00, 0xFF, SB_VLINK_REG(0x77), 0x00, 0x48 }, //ROP2CFLSH, RFFTMR[1:0]. ROP2CFLSH work with Rx4F[0](RP2CFLSH) assertion + // { 0x00, 0xFF, SB_VLINK_REG(0x51), 0x00, 0x80 }, //RSUB_DEC_P2P, RSUBDECOD(Window xp). If Bit7 is set, PCI lock will occured. + // { 0x00, 0xFF, SB_VLINK_REG(0x51), 0x00, 0x81 }, //RSUB_DEC_P2P, RSUBDECOD(Window Vista) //(2)Configure D19F0 - 0x00, 0xFF, SB_P2PB_REG(0x04), 0x00, 0x07, + { 0x00, 0xFF, SB_P2PB_REG(0x04), 0x00, 0x07 }, //(3)Performance Recommended Setting //Save Power - 0x00, 0xFF, SB_VLINK_REG(0xE2), 0x1F, 0x01, - 0x00, 0xFF, SB_VLINK_REG(0xE3), 0xF1, 0x5E, - 0x00, 0xFF, SB_VLINK_REG(0x74), 0x40, 0x00, + { 0x00, 0xFF, SB_VLINK_REG(0xE2), 0x1F, 0x01 }, + { 0x00, 0xFF, SB_VLINK_REG(0xE3), 0xF1, 0x5E }, + { 0x00, 0xFF, SB_VLINK_REG(0x74), 0x40, 0x00 }, //Enhence Host To PCI cycle performance and PCI-To-Host Cycle performance - 0x00, 0xFF, SB_VLINK_REG(0x70), 0x00, 0x82, - 0x00, 0xFF, SB_VLINK_REG(0x71), 0x30, 0xC0, - 0x00, 0xFF, SB_VLINK_REG(0x72), 0x00, 0xEE, + { 0x00, 0xFF, SB_VLINK_REG(0x70), 0x00, 0x82 }, + { 0x00, 0xFF, SB_VLINK_REG(0x71), 0x30, 0xC0 }, + { 0x00, 0xFF, SB_VLINK_REG(0x72), 0x00, 0xEE }, //Cycle Control - 0x00, 0xFF, SB_VLINK_REG(0x73), 0x00, 0x01, - 0x00, 0xFF, SB_VLINK_REG(0x74), 0x00, 0x0C, + { 0x00, 0xFF, SB_VLINK_REG(0x73), 0x00, 0x01 }, + { 0x00, 0xFF, SB_VLINK_REG(0x74), 0x00, 0x0C }, //Arbitration control - 0x00, 0xFF, SB_VLINK_REG(0x75), 0x00, 0x0F, - 0x00, 0xFF, SB_VLINK_REG(0x76), 0x00, 0xD0, + { 0x00, 0xFF, SB_VLINK_REG(0x75), 0x00, 0x0F }, + { 0x00, 0xFF, SB_VLINK_REG(0x76), 0x00, 0xD0 }, {0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // End of Table }; static const struct VIA_PCI_REG_INIT_TABLE mCCAInitTable[] = { - - 0x00, 0xFF, SB_VLINK_REG(0xFC), 0x02, 0x08, //RVWREQ, ROABKDOOR + { 0x00, 0xFF, SB_VLINK_REG(0xFC), 0x02, 0x08 }, //RVWREQ, ROABKDOOR //CCA's Register Programming sequence - 0x00, 0xFF, SB_VLINK_REG(0x50), 0x00, 0x08, //Config Azalia's upstream cycle high priority and other low priority - 0x00, 0xFF, SB_VLINK_REG(0x51), 0x40, 0x80, //Disable bypass asynchronous circuit - 0x00, 0xFF, SB_VLINK_REG(0x52), 0x00, 0x11, // Set SM Internal Device and HDAC Occupy Timer - 0x00, 0xFF, SB_VLINK_REG(0x53), 0x00, 0x11, // Set SM Internal Device and HDAC Promote Timer - 0x00, 0xFF, SB_VLINK_REG(0x54), 0xFF, 0x02, //Use SB internal devices's original REQ - 0x00, 0xFF, SB_VLINK_REG(0x73), 0x10, 0x00, //RPINOWSC. Enable APIC Cycle Block P2C Write Cycle - 0x00, 0xFF, SB_VLINK_REG(0x74), 0x00, 0x3C, //RLCKXP2C, RFSBVK. - 0x00, 0xFF, SB_VLINK_REG(0xE1), 0x07, 0x00, //RBLKAPIC, RAZC3 - 0x00, 0xFF, SB_VLINK_REG(0x7C), 0x04, 0x02, //RNMIFSB, RFSBVK - 0x00, 0xFF, SB_VLINK_REG(0xE0), 0xF0, 0x90, //RCCA_NEWCLK, RCCA_CLKON. Use New dynamic clock scheme - 0x00, 0xFF, SB_VLINK_REG(0xE7), 0xFF, 0x00, //Let CCA use dynamic clock. + { 0x00, 0xFF, SB_VLINK_REG(0x50), 0x00, 0x08 }, //Config Azalia's upstream cycle high priority and other low priority + { 0x00, 0xFF, SB_VLINK_REG(0x51), 0x40, 0x80 }, //Disable bypass asynchronous circuit + { 0x00, 0xFF, SB_VLINK_REG(0x52), 0x00, 0x11 }, // Set SM Internal Device and HDAC Occupy Timer + { 0x00, 0xFF, SB_VLINK_REG(0x53), 0x00, 0x11 }, // Set SM Internal Device and HDAC Promote Timer + { 0x00, 0xFF, SB_VLINK_REG(0x54), 0xFF, 0x02 }, //Use SB internal devices's original REQ + { 0x00, 0xFF, SB_VLINK_REG(0x73), 0x10, 0x00 }, //RPINOWSC. Enable APIC Cycle Block P2C Write Cycle + { 0x00, 0xFF, SB_VLINK_REG(0x74), 0x00, 0x3C }, //RLCKXP2C, RFSBVK. + { 0x00, 0xFF, SB_VLINK_REG(0xE1), 0x07, 0x00 }, //RBLKAPIC, RAZC3 + { 0x00, 0xFF, SB_VLINK_REG(0x7C), 0x04, 0x02 }, //RNMIFSB, RFSBVK + { 0x00, 0xFF, SB_VLINK_REG(0xE0), 0xF0, 0x90 }, //RCCA_NEWCLK, RCCA_CLKON. Use New dynamic clock scheme + { 0x00, 0xFF, SB_VLINK_REG(0xE7), 0xFF, 0x00 }, //Let CCA use dynamic clock. //The CCA is also relate to D17F0 - // 0x00, 0xFF, SB_LPC_REG(0x49), 0x1F, 0x00, //Disable CCA Test Mode - 0x00, 0xFF, SB_LPC_REG(0x74), 0xFF, 0x00, // Let DMA cycles from internal devices directly go to NB // Reserved in 409 by Eric + //{ 0x00, 0xFF, SB_LPC_REG(0x49), 0x1F, 0x00 }, //Disable CCA Test Mode + { 0x00, 0xFF, SB_LPC_REG(0x74), 0xFF, 0x00 }, // Let DMA cycles from internal devices directly go to NB // Reserved in 409 by Eric {0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // End of Table }; static const struct VIA_PCI_REG_INIT_TABLE IDEC_INIT[] = { - - // 0x00, 0xFF, SB_IDEC_REG(0x09), 0x00, 0x05, //set to native mode - 0x00, 0xFF, SB_IDEC_REG(0x04), 0x00, 0x07, - //0x00, 0xFF, SB_VLINK_REG(0x7C), 0x00, 0x7F, + //{0x00, 0xFF, SB_IDEC_REG(0x09), 0x00, 0x05}, //set to native mode + {0x00, 0xFF, SB_IDEC_REG(0x04), 0x00, 0x07}, + //{0x00, 0xFF, SB_VLINK_REG(0x7C), 0x00, 0x7F}, {0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // End of Table - }; static const struct VIA_PCI_REG_INIT_TABLE mSbApicInitTable[] = { - 0x00, 0xFF, SB_LPC_REG(0x4D), 0x04, 0x00, - 0x00, 0xFF, SB_LPC_REG(0x5B), 0x0E, 0x00, - 0x00, 0xFF, SB_LPC_REG(0x6C), 0x08, 0x00, - 0x00, 0xFF, SB_LPC_REG(0x58), 0x00, 0x40, - 0x00, 0xFF, SB_VLINK_REG(0x74), 0x00, 0x04, - //0x00, 0xFF, SB_VLINK_REG(0x7C), 0x00, 0x7F, - {0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // End of Table - + { 0x00, 0xFF, SB_LPC_REG(0x4D), 0x04, 0x00 }, + { 0x00, 0xFF, SB_LPC_REG(0x5B), 0x0E, 0x00 }, + { 0x00, 0xFF, SB_LPC_REG(0x6C), 0x08, 0x00 }, + { 0x00, 0xFF, SB_LPC_REG(0x58), 0x00, 0x40 }, + { 0x00, 0xFF, SB_VLINK_REG(0x74), 0x00, 0x04 }, + //{ 0x00, 0xFF, SB_VLINK_REG(0x7C), 0x00, 0x7F }, + { 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // End of Table }; - - void AcpiInit(void) { device_t_raw rawdevice = 0; @@ -268,10 +261,8 @@ void AcpiInit(void) // Close all SMI/Io Traps outb(0x00, VX800_ACPI_IO_BASE + 0x42); - } - void Stage2NbInit(void) { device_t_raw rawdevice = 0; @@ -290,7 +281,6 @@ void Stage2NbInit(void) //vx855 NB no pcie bus //vx855 NB no apic - } void IDECSupportOption(u8 sbchiprev) @@ -313,7 +303,6 @@ void InitIDEC(u8 sbchiprev) IDECSupportOption(sbchiprev); } - void InitUHCI(u8 Number, u8 bEnable) { u8 Mask, Value; @@ -374,25 +363,24 @@ void InitUHCI(u8 Number, u8 bEnable) static const struct VIA_PCI_REG_INIT_TABLE mEHCIInitTable[] = { //EHCI - 0x00, 0xFF, SB_EHCI_REG(0x43), 0x00, 0xC0, - 0x00, 0xFF, SB_EHCI_REG(0x50), 0x00, 0x80, - 0x00, 0xFF, SB_EHCI_REG(0x48), 0x20, 0x9E, - 0x00, 0xFF, SB_EHCI_REG(0x49), 0x10, 0x68, - 0x00, 0xFF, SB_EHCI_REG(0x4B), 0x00, 0x69, - 0x00, 0xFF, SB_EHCI_REG(0x4D), 0x00, 0x94, - 0x00, 0xFF, SB_EHCI_REG(0x52), 0x08, 0x00, - 0x00, 0xFF, SB_EHCI_REG(0x5A), 0x00, 0x8A, - 0x00, 0xFF, SB_EHCI_REG(0x5B), 0x00, 0x89, - 0x00, 0xFF, SB_EHCI_REG(0x5C), 0x00, 0x03, - 0x00, 0xFF, SB_EHCI_REG(0x5D), 0x00, 0x9A, - 0x00, 0xFF, SB_EHCI_REG(0x5E), 0x00, 0x00, - 0x00, 0xFF, SB_EHCI_REG(0x6B), 0x00, 0x00, - 0x00, 0xFF, SB_EHCI_REG(0x6D), 0x00, 0x00, - 0x00, 0xFF, SB_EHCI_REG(0x6F), 0xF0, 0x00, - 0x00, 0xFF, SB_EHCI_REG(0x4E), 0x01, 0x01, - 0x00, 0xFF, SB_EHCI_REG(0x4F), 0x00, 0x11, - {0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // End of Table - + { 0x00, 0xFF, SB_EHCI_REG(0x43), 0x00, 0xC0 }, + { 0x00, 0xFF, SB_EHCI_REG(0x50), 0x00, 0x80 }, + { 0x00, 0xFF, SB_EHCI_REG(0x48), 0x20, 0x9E }, + { 0x00, 0xFF, SB_EHCI_REG(0x49), 0x10, 0x68 }, + { 0x00, 0xFF, SB_EHCI_REG(0x4B), 0x00, 0x69 }, + { 0x00, 0xFF, SB_EHCI_REG(0x4D), 0x00, 0x94 }, + { 0x00, 0xFF, SB_EHCI_REG(0x52), 0x08, 0x00 }, + { 0x00, 0xFF, SB_EHCI_REG(0x5A), 0x00, 0x8A }, + { 0x00, 0xFF, SB_EHCI_REG(0x5B), 0x00, 0x89 }, + { 0x00, 0xFF, SB_EHCI_REG(0x5C), 0x00, 0x03 }, + { 0x00, 0xFF, SB_EHCI_REG(0x5D), 0x00, 0x9A }, + { 0x00, 0xFF, SB_EHCI_REG(0x5E), 0x00, 0x00 }, + { 0x00, 0xFF, SB_EHCI_REG(0x6B), 0x00, 0x00 }, + { 0x00, 0xFF, SB_EHCI_REG(0x6D), 0x00, 0x00 }, + { 0x00, 0xFF, SB_EHCI_REG(0x6F), 0xF0, 0x00 }, + { 0x00, 0xFF, SB_EHCI_REG(0x4E), 0x01, 0x01 }, + { 0x00, 0xFF, SB_EHCI_REG(0x4F), 0x00, 0x11 }, + { 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // End of Table }; void InitEHCI(u8 Number, u8 bEnable) @@ -483,23 +471,23 @@ void HpetInit(void) static const struct VIA_PCI_REG_INIT_TABLE mPMUInitTable[] = { // Power Management - 0x00, 0xFF, SB_LPC_REG(0x80), 0x00, 0x20, - 0x00, 0xFF, SB_LPC_REG(0x8C), 0x02, 0x00, - 0x00, 0xFF, SB_LPC_REG(0x8D), 0x00, 0x18, + { 0x00, 0xFF, SB_LPC_REG(0x80), 0x00, 0x20 }, + { 0x00, 0xFF, SB_LPC_REG(0x8C), 0x02, 0x00 }, + { 0x00, 0xFF, SB_LPC_REG(0x8D), 0x00, 0x18 }, //Miscellaneous Configuration 1 - 0x00, 0xFF, SB_LPC_REG(0x94), 0xF0, 0x28, - 0x00, 0xFF, SB_LPC_REG(0x95), 0x00, 0xC1, - 0x00, 0xFF, SB_LPC_REG(0x96), 0xFF, 0x10, - 0x00, 0xFF, SB_LPC_REG(0x97), 0x00, 0xB2, + { 0x00, 0xFF, SB_LPC_REG(0x94), 0xF0, 0x28 }, + { 0x00, 0xFF, SB_LPC_REG(0x95), 0x00, 0xC1 }, + { 0x00, 0xFF, SB_LPC_REG(0x96), 0xFF, 0x10 }, + { 0x00, 0xFF, SB_LPC_REG(0x97), 0x00, 0xB2 }, //Voltage Change Function Enable - 0x00, 0xFF, SB_LPC_REG(0x9F), 0x00, 0x21, + { 0x00, 0xFF, SB_LPC_REG(0x9F), 0x00, 0x21 }, //Internal PCIe and NM PLL Control - 0x00, 0xFF, SB_LPC_REG(0xE2), 0x00, 0xEA, + { 0x00, 0xFF, SB_LPC_REG(0xE2), 0x00, 0xEA }, - 0x00, 0xFF, SB_LPC_REG(0xE7), 0x00, 0x80, - {0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // End of Table + { 0x00, 0xFF, SB_LPC_REG(0xE7), 0x00, 0x80 }, + { 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // End of Table }; void InitPMU(u8 sbchiprev) @@ -589,7 +577,6 @@ void Stage2SbInit(void) } - void init_VIA_chipset(void) { printk(BIOS_DEBUG, "In: init_VIA_chipset\n"); @@ -633,7 +620,6 @@ void hardwaremain(int boot_complete) printk(BIOS_EMERG, "file '%s', line %d\n\n", __FILE__, __LINE__); #if 0 - pci_rawwrite_config8(PCI_RAWDEV(0, 0, 4), 0xa3, 0x80); pci_rawwrite_config8(PCI_RAWDEV(0, 17, 7), 0x60, 0x20); pci_rawwrite_config8(PCI_RAWDEV(0, 17, 7), 0xE5, @@ -656,7 +642,6 @@ void hardwaremain(int boot_complete) printk(BIOS_INFO, "=================SB 50h=%02x \n", pci_rawread_config8(PCI_RAWDEV(0, 0x11, 0), 0x50)); - /* FIXME: Is there a better way to handle this? */ init_timer(); printk(BIOS_EMERG, "file '%s', line %d\n\n", __FILE__, __LINE__); @@ -690,9 +675,7 @@ void hardwaremain(int boot_complete) y = 0; for (; y < 16; y++) { printk(BIOS_INFO, "%02x ", - pci_rawread_config8(PCI_RAWDEV - (0, 0x10, 4), - x * 16 + y)); + pci_rawread_config8(PCI_RAWDEV (0, 0x10, 4), x * 16 + y)); } printk(BIOS_INFO, "\n"); } @@ -710,9 +693,7 @@ void hardwaremain(int boot_complete) y = 0; for (; y < 16; y++) { printk(BIOS_INFO, "%02x ", - pci_rawread_config8(PCI_RAWDEV - (0, 0x10, 4), - x * 16 + y)); + pci_rawread_config8(PCI_RAWDEV (0, 0x10, 4), x * 16 + y)); } printk(BIOS_INFO, "\n"); } @@ -722,7 +703,6 @@ void hardwaremain(int boot_complete) post_code(0x89); printk(BIOS_EMERG, "file '%s', line %d\n\n", __FILE__, __LINE__); - // pci_rawwrite_config16(PCI_RAWDEV(0, 0xf, 0), 0xBA, 0x0571); #if 0 @@ -732,17 +712,13 @@ void hardwaremain(int boot_complete) y = 0; for (; y < 16; y++) { printk(BIOS_INFO, "%02x ", - pci_rawread_config8(PCI_RAWDEV - (0, 0x10, 4), - x * 16 + y)); + pci_rawread_config8(PCI_RAWDEV (0, 0x10, 4), x * 16 + y)); } printk(BIOS_INFO, "\n"); } #endif - #if 0 - y = pci_rawread_config8(PCI_RAWDEV(0, 0xf, 0), 0x0d); y &= 0x0f; y |= 0x40; @@ -750,8 +726,6 @@ void hardwaremain(int boot_complete) #endif #if 0 - - static const d0f0pcitable[5] = { 0xD0, 0, 0, 0, 0xFD }; static const d0f2pcitable[16 * 7 + 1] = { 0x88, 0xF8, 0xEF, 0x44, 0x7C, 0x24, 0x63, 0x01, 0x00, 0x09, @@ -911,7 +885,6 @@ void hardwaremain(int boot_complete) 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, }; - #define OPTION_1 1 #define NOOPTION_1 1 #ifdef OPTION_1 @@ -943,24 +916,19 @@ void hardwaremain(int boot_complete) }; #endif - - u8 i; /* error form ---- but add the chance to resume -for(i=0;i<5;i++){ + for(i=0;i<5;i++) { pci_rawwrite_config8(PCI_RAWDEV(0, 0, 0), i, d0f0pcitable[i+0xcb]); } - - */ /* RO reg -for(i=0;i<5;i++){ + for(i=0;i<5;i++) { pci_rawwrite_config8(PCI_RAWDEV(0, 0, 0), i+0xcb, d0f0pcitable[i]); } */ - //boot ok, resume still err in linux #if 1 for (i = 0; i < 9; i++) { @@ -1052,11 +1020,7 @@ for(i=0;i<5;i++){ //d15f0 - - - #if 1 - pci_rawwrite_config8(PCI_RAWDEV(0, 0x10, 0), 0x4a, 0xa2); // no affect. pci_rawwrite_config8(PCI_RAWDEV(0, 0x10, 1), 0x4a, 0xa2); pci_rawwrite_config8(PCI_RAWDEV(0, 0x10, 2), 0x4a, 0xa2); @@ -1077,8 +1041,6 @@ for(i=0;i<5;i++){ pci_rawwrite_config8(PCI_RAWDEV(0, 0x10, 4), 0x6f, 0x80); #endif - - #if 1 //before (11.0)is add, s3 resume has already always dead in first resume(more frequenly), and sleep ok // for(i=0;i<192;i++){ @@ -1094,7 +1056,6 @@ for(i=0;i<5;i++){ d11f0pcitable[i]); } - for (i = 18; i < 21; i++) { //sleep ok , sleep err 1, resume pci_rawwrite_config8(PCI_RAWDEV(0, 0x11, 0), i + 0x40, d11f0pcitable[i]); @@ -1225,7 +1186,6 @@ for(i=0;i<5;i++){ pci_rawwrite_config16(PCI_RAWDEV(0, 0x11, 0), 0x72, PCI_DEVICE_ID_VIA_VX855_LPC); - //boot ok, resume still err in linux for (i = 0; i < 192; i++) { pci_rawwrite_config8(PCI_RAWDEV(0, 0x11, 7), i + 0x40, @@ -1240,17 +1200,12 @@ for(i=0;i<5;i++){ pci_rawwrite_config8(PCI_RAWDEV(0, 0x11, 7), 0x88, 0x02); pci_rawwrite_config8(PCI_RAWDEV(0, 0x11, 7), 0xe6, 0x3f); #endif - pci_rawwrite_config8(PCI_RAWDEV(0, 0x14, 0), 0x40, 0x20); pci_rawwrite_config8(PCI_RAWDEV(0, 0x14, 0), 0x41, 0x31); - - #ifdef OPTION_1 pci_rawwrite_config8(PCI_RAWDEV(0, 0x14, 0), 0x40, 0x00); #endif - - #endif u8 i911; @@ -1262,10 +1217,9 @@ for(i=0;i<5;i++){ i911 |= 0x01; pci_rawwrite_config8(PCI_RAWDEV(0, 0x1, 0), 0xb0, i911); - #if 1 struct device *dev; - printk(BIOS_INFO, "=========zjldump all devices...\n"); + printk(BIOS_INFO, "========= dump all devices...\n"); for (dev = all_devices; dev; dev = dev->next) { if (dev->path.type == DEVICE_PATH_PCI) { printk(BIOS_DEBUG, "%s dump\n", dev_path(dev)); @@ -1274,25 +1228,14 @@ for(i=0;i<5;i++){ y = 0; for (; y < 16; y++) { printk(BIOS_INFO, "%02x ", - pci_read_config8(dev, - x * - 16 + - y)); + pci_read_config8(dev, x * 16 + y)); } printk(BIOS_INFO, "\n"); } - } printk(BIOS_INFO, "\n"); } #endif - - - - //pci_rawmodify_config8(PCI_RAWDEV(0, 0x10, 4), 0x04, 0x17, 0x17);// -// pci_rawmodify_config8(PCI_RAWDEV(0, 0x10, 4), 0x0c, 0x08, 0xff);/// - - - + //pci_rawmodify_config8(PCI_RAWDEV(0, 0x10, 4), 0x0c, 0x08, 0xff);/// } |