private void PopulateTimingFromRegValue(nForce2XTLibrary.TimingItem item) { TimingDef def = GetDefByName(item.Name); uint regValue = ReadPciReg(def.PciDev.GetPciAddressFull()); item.Value = GetTimingFromRegValue(regValue, def.Offset, def.Bits); }
private int ReadCASValue() { // Read value for DIMM_B0 TimingDef def = GetDefByName("CAS"); uint reg = ReadPciReg(def.PciDev.GetPciAddressFull()); // CAS is bits [5:4], bit 6 is Half Latency toggle // CAS 2.0 = 010 2 // CAS 2.5 = 110 5 // CAS 3.0 = 011 3 // 001, 101 and 111 are reserved uint value = utils.GetBits(reg, def.Offset, def.Bits); if (value == 2) { return(1); // CAS 2.0 } if (value == 6) { return(2); // CAS 2.5 } if (value == 3) { return(3); // CAS 3.0 } return(0); }
private void ApplyChipsetTabSettings() { if (CPUDisconnect.Changed) { TimingDef def = GetDefByName(CPUDisconnect.Name); uint regValue = ReadPciReg(def.PciDev.GetPciAddressFull()); uint selectedValue = Convert.ToUInt32(CPUDisconnect.Value); regValue = utils.SetBits(regValue, def.Offset, def.Bits, selectedValue); regValue = utils.SetBits(regValue, 31, 1, ~selectedValue); ols.WriteIoPortDwordEx(PCI_DATA_PORT, regValue); } WriteTimings(new nForce2XTLibrary.TimingItem[] { AGPFastWrite }); WriteTimings(new nForce2XTLibrary.TimingItem[] { AGPSBA }); WriteTimings(new nForce2XTLibrary.TimingItem[] { AGPControllerLatency }); WriteTimings(new nForce2XTLibrary.TimingItem[] { AGPBusLatency }); WriteTimings(new nForce2XTLibrary.TimingItem[] { PCILatency }); }
private void WriteTimings(nForce2XTLibrary.TimingItem[] l) { nForce2XTLibrary.TimingItem[] changed = Array.FindAll(l, x => x.Changed); if (changed.Length == 0) { return; } TimingDef def = GetDefByName(changed[0].Name); uint regValue = ReadPciReg(def.PciDev.GetPciAddressFull()); foreach (nForce2XTLibrary.TimingItem item in changed) { def = GetDefByName(item.Name); regValue = utils.SetBits(regValue, def.Offset, def.Bits, Convert.ToUInt32(item.Value)); } ols.WriteIoPortDwordEx(PCI_DATA_PORT, regValue); }
private void ApplyDRAMTabSettings() { WriteTimings(new nForce2XTLibrary.TimingItem[] { TRC, TRFC, TRAS, TRCDR, TRCDW, TRP }); WriteTimings(new nForce2XTLibrary.TimingItem[] { TDOE, TRRD, TWTP, TWTR, TREXT, TRTP, TRTW }); WriteTimings(new nForce2XTLibrary.TimingItem[] { TREF }); WriteTimings(new nForce2XTLibrary.TimingItem[] { AutoPrecharge }); WriteTimings(new nForce2XTLibrary.TimingItem[] { SuperBypass }); WriteTimings(new nForce2XTLibrary.TimingItem[] { DataScavengedRate }); WriteDoubledTimings(new nForce2XTLibrary.TimingItem[] { DIMM0DrvStrA, DIMM1DrvStrA, DIMM0SlewRate, DIMM1SlewRate }); WriteDoubledTimings(new nForce2XTLibrary.TimingItem[] { DIMM0DrvStrB, DIMM1DrvStrB }); WriteDoubledTimings(new nForce2XTLibrary.TimingItem[] { DIMM2DrvStrA, DIMM2SlewRate }); WriteDoubledTimings(new nForce2XTLibrary.TimingItem[] { DIMM2DrvStrB }); if (BurstMode.Changed) { // A0, A8, B0 TimingDef def = GetDefByName(BurstMode.Name); byte reg = def.PciDev.Offset; uint pciDev = def.PciDev.GetPciAddress(); uint regValue = ols.ReadPciConfigDword(pciDev, reg); uint selectedValue = Convert.ToUInt32(BurstMode.Value); regValue = utils.SetBits(regValue, def.Offset, def.Bits, selectedValue); //regValue = utils.SetBits(burstMode, 31, 1, 1); ols.WritePciConfigDwordEx(pciDev, 0xA0, regValue); ols.WritePciConfigDwordEx(pciDev, 0xA8, regValue); ols.WritePciConfigDwordEx(pciDev, 0xB0, regValue); } if (DriveStrengthMode.Changed) { TimingDef def = GetDefByName(DriveStrengthMode.Name); byte reg = def.PciDev.Offset; uint pciDev = def.PciDev.GetPciAddress(); uint regValue = ols.ReadPciConfigDword(pciDev, reg); uint selectedValue = Convert.ToUInt32(DriveStrengthMode.Value); regValue = utils.SetBits(regValue, def.Offset, def.Bits, selectedValue); ols.WritePciConfigDwordEx(pciDev, 0xA4, regValue); ols.WritePciConfigDwordEx(pciDev, 0xAC, regValue); ols.WritePciConfigDwordEx(pciDev, 0xB4, regValue); } if (advancedTextBox1.Changed || advancedTextBox2.Changed || advancedTextBox3.Changed) { uint pciReg = utils.MakePciAddress(0, 0, 3, 0x64); uint romsip1 = ReadPciReg(pciReg); romsip1 = utils.SetBits(romsip1, 8, 8, advancedTextBox1.Value); romsip1 = utils.SetBits(romsip1, 16, 8, advancedTextBox2.Value); romsip1 = utils.SetBits(romsip1, 24, 8, advancedTextBox3.Value); WritePciReg(pciReg, romsip1); } if (advancedTextBox4.Changed || advancedTextBox5.Changed || advancedTextBox6.Changed || advancedTextBox7.Changed) { uint pciReg = utils.MakePciAddress(0, 0, 3, 0x68); uint romsip2 = ReadPciReg(pciReg); romsip2 = utils.SetBits(romsip2, 0, 8, advancedTextBox4.Value); romsip2 = utils.SetBits(romsip2, 8, 8, advancedTextBox5.Value); romsip2 = utils.SetBits(romsip2, 16, 8, advancedTextBox6.Value); romsip2 = utils.SetBits(romsip2, 24, 8, advancedTextBox7.Value); WritePciReg(pciReg, romsip2); } if (advancedTextBox8.Changed || advancedTextBox9.Changed || advancedTextBox10.Changed) { uint pciReg = utils.MakePciAddress(0, 0, 3, 0x6C); uint romsip3 = ReadPciReg(pciReg); romsip3 = utils.SetBits(romsip3, 0, 8, advancedTextBox8.Value); romsip3 = utils.SetBits(romsip3, 8, 8, advancedTextBox9.Value); romsip3 = utils.SetBits(romsip3, 24, 8, advancedTextBox10.Value); WritePciReg(pciReg, romsip3); } }
private bool IsDIMMInstalled(TimingDef def) { uint regValue = ReadPciReg(def.PciDev.GetPciAddressFull()); return(utils.GetBits(regValue, def.Offset, def.Bits) == 1); }