===================================================================
@@ -114,10 +114,11 @@
/* Enable Virtual Wire Mode. */
low = ENABLED | TRIGGER_EDGE | POLARITY_HIGH | PHYSICAL_DEST | ExtINT;
high = bsp_lapicid << (56 - 32);
+
+ // ssd - this non-generic ioapic code causes a hang for mahogany project
+ //io_apic_write(ioapic_base, 0x10, low);
+ //io_apic_write(ioapic_base, 0x11, high);
- io_apic_write(ioapic_base, 0x10, low);
- io_apic_write(ioapic_base, 0x11, high);
-
if (io_apic_read(ioapic_base, 0x10) == 0xffffffff) {
printk(BIOS_WARNING, "IOAPIC not responding.\n");
return;
===================================================================
@@ -33,13 +33,13 @@
/* FIXME the patching is not done yet! */
/* Memory related values */
Name(LOMH, 0x0) /* Start of unused memory in C0000-E0000 range */
- Name(PBAD, 0x0) /* Address of BIOS area (If TOM2 != 0, Addr >> 16) */
- Name(PBLN, 0x0) /* Length of BIOS area */
Name(PCBA, 0xE0000000) /* Base address of PCIe config space */
Name(HPBA, 0xFED00000) /* Base address of HPET table */
- Name(SSFG, 0x0D) /* S1 support: bit 0, S2 Support: bit 1, etc. S0 & S5 assumed */
+ Name(SSFG, 0x01) /* S1 support: bit 0, S2 Support: bit 1, etc. S0, S4 & S5 assumed */
+ /* SB700 supports S1, S3, and S5. We lack S3 software */
+ /* support and S5 is assumed. Add S1 */
/* USB overcurrent mapping pins. */
Name(UOM0, 0)
@@ -1126,7 +1126,7 @@
/* Note: Only need HID on Primary Bus */
Device(PCI0) {
External (TOM1)
- External (TOM2)
+ External(IOLM)
Name(_HID, EISAID("PNP0A03"))
Name(_ADR, 0x00180000) /* Dev# = BSP Dev#, Func# = 0 */
Method(_BBN, 0) { /* Bus number = 0 */
@@ -1324,7 +1324,7 @@
/* Real Time Clock Device */
Device(RTC0) {
- Name(_HID, EISAID("PNP0B01")) /* AT Real Time Clock */
+ Name(_HID, EISAID("PNP0B00")) /* AT Real Time Clock (not PIIX4 compatible) */
Name(_CRS, ResourceTemplate() {
IRQNoFlags(){8}
IO(Decode16,0x0070, 0x0070, 0, 2)
@@ -1348,6 +1348,42 @@
})
} /* End Device(_SB.PCI0.LpcIsaBr.SPKR) */
+ Device (KBD)
+ {
+ Name (_HID, EisaId ("PNP0303"))
+ Name (_CID, EisaId ("PNP030B"))
+ Method (_STA, 0, NotSerialized)
+ {
+ Return (0x0f)
+ }
+ Method (_CRS, 0, NotSerialized)
+ {
+ Name (TMP, ResourceTemplate () {
+ IO (Decode16, 0x0060, 0x0060, 0x01, 0x01)
+ IO (Decode16, 0x0064, 0x0064, 0x01, 0x01)
+ IRQNoFlags () {1}
+ })
+ Return (TMP)
+ }
+ }
+
+ /* PS/2 mouse */
+ Device (MOU)
+ {
+ Name (_HID, EisaId ("PNP0F13"))
+ Method (_STA, 0, NotSerialized)
+ {
+ Return (0x0f)
+ }
+ Method (_CRS, 0, NotSerialized)
+ {
+ Name (TMP, ResourceTemplate () {
+ IRQNoFlags () {12}
+ })
+ Return (TMP)
+ }
+ }
+
Device(PIC) {
Name(_HID,EISAID("PNP0000")) /* AT Interrupt Controller */
Name(_CRS, ResourceTemplate() {
@@ -1502,90 +1538,32 @@
0xF300 /* length */
)
- Memory32Fixed(READWRITE, 0, 0xA0000, BSMM)
Memory32Fixed(READONLY, 0x000A0000, 0x00020000, VGAM) /* VGA memory space */
Memory32Fixed(READONLY, 0x000C0000, 0x00020000, EMM1) /* Assume C0000-E0000 empty */
Memory32Fixed(READONLY, 0x000E0000, 0x00020000, RDBS) /* BIOS ROM area */
/* DRAM Memory from 1MB to TopMem */
- Memory32Fixed(READWRITE, 0x00100000, 0, DMLO) /* 1MB to TopMem */
+ DWORDMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, 0, 0, 0, 0x00, 0,,, EMM2)
+ WORDIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange, 0x00, 0x0D00, 0xffff, 0x00, 0xf300)
- /* BIOS space just below 4GB */
- DWORDMemory(
- ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
- 0x00, /* Granularity */
- 0x00000000, /* Min */
- 0x00000000, /* Max */
- 0x00000000, /* Translation */
- 0x00000001, /* Max-Min, RLEN */
- ,,
- PCBM
- )
-
- /* DRAM memory from 4GB to TopMem2 */
- QWORDMemory(ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
- 0x00000000, /* Granularity */
- 0x00000000, /* Min */
- 0x00000000, /* Max */
- 0x00000000, /* Translation */
- 0x00000001, /* Max-Min, RLEN */
- ,,
- DMHI
- )
-
- /* BIOS space just below 16EB */
- QWORDMemory(ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
- 0x00000000, /* Granularity */
- 0x00000000, /* Min */
- 0x00000000, /* Max */
- 0x00000000, /* Translation */
- 0x00000001, /* Max-Min, RLEN */
- ,,
- PEBM
- )
-
}) /* End Name(_SB.PCI0.CRES) */
Method(_CRS, 0) {
- /* DBGO("\\_SB\\PCI0\\_CRS\n") */
-
CreateDWordField(CRES, ^EMM1._BAS, EM1B)
CreateDWordField(CRES, ^EMM1._LEN, EM1L)
- CreateDWordField(CRES, ^DMLO._BAS, DMLB)
- CreateDWordField(CRES, ^DMLO._LEN, DMLL)
- CreateDWordField(CRES, ^PCBM._MIN, PBMB)
- CreateDWordField(CRES, ^PCBM._LEN, PBML)
+
+ CreateDWordField(CRES, ^EMM2._MIN, EM2B)
+ CreateDWordField(CRES, ^EMM2._MAX, EM2E)
+ CreateDWordField(CRES, ^EMM2._LEN, EM2L)
+ Store(TOM1, EM2B)
+ Subtract(IOLM, 1, EM2E)
+ Subtract(IOLM, TOM1, EM2L)
- CreateQWordField(CRES, ^DMHI._MIN, DMHB)
- CreateQWordField(CRES, ^DMHI._LEN, DMHL)
- CreateQWordField(CRES, ^PEBM._MIN, EBMB)
- CreateQWordField(CRES, ^PEBM._LEN, EBML)
-
If(LGreater(LOMH, 0xC0000)){
Store(0xC0000, EM1B) /* Hole above C0000 and below E0000 */
Subtract(LOMH, 0xC0000, EM1L) /* subtract start, assumes allocation from C0000 going up */
}
- /* Set size of memory from 1MB to TopMem */
- Subtract(TOM1, 0x100000, DMLL)
-
- /*
- * If(LNotEqual(TOM2, 0x00000000)){
- * Store(0x100000000,DMHB) DRAM from 4GB to TopMem2
- * Subtract(TOM2, 0x100000000, DMHL)
- * }
- */
-
- /* If there is no memory above 4GB, put the BIOS just below 4GB */
- If(LEqual(TOM2, 0x00000000)){
- Store(PBAD,PBMB) /* Reserve the "BIOS" space */
- Store(PBLN,PBML)
- }
- Else { /* Otherwise, put the BIOS just below 16EB */
- ShiftLeft(PBAD,16,EBMB) /* Reserve the "BIOS" space */
- Store(PBLN,EBML)
- }
-
Return(CRES) /* note to change the Name buffer */
} /* end of Method(_SB.PCI0._CRS) */
@@ -1641,7 +1619,8 @@
/* SMBUS Support */
Mutex (SBX0, 0x00)
- OperationRegion (SMB0, SystemIO, 0xB00, 0x0C)
+ // keep base address synced with mainboard.c, SMBUS_IO_BASE
+ OperationRegion (SMB0, SystemIO, 0x6000, 0x0C)
Field (SMB0, ByteAcc, NoLock, Preserve) {
HSTS, 8, /* SMBUS status */
SSTS, 8, /* SMBUS slave status */
===================================================================
@@ -161,6 +161,7 @@
lb_add_memory_range(mem, LB_MEM_RESERVED, uma_memory_base,
uma_memory_size);
#endif
+ lb_add_memory_range(mem, LB_MEM_RESERVED, 0xFF700000, 0x900000);
return 0;
}
===================================================================
@@ -67,7 +67,7 @@
PCI_DEVFN(sbdn_sb700 + 0x14, 0));
if (dev) {
dword = pci_read_config32(dev, 0x74) & 0xfffffff0;
- smp_write_ioapic(mc, apicid_sb700, 0x11, dword);
+ smp_write_ioapic(mc, apicid_sb700, 0x21, dword);
/* Initialize interrupt mapping */
/* aza */
===================================================================
@@ -258,6 +258,7 @@
int lens;
msr_t msr;
char pscope[] = "\\_SB.PCI0";
+ u32 iolm;
lens = acpigen_write_scope(pscope);
lens += k8acpi_write_pci_data(4, "BUSN", 0xe0);
@@ -269,8 +270,11 @@
lens += acpigen_write_name_dword("SBDN", sysconf.sbdn);
msr = rdmsr(TOP_MEM);
lens += acpigen_write_name_dword("TOM1", msr.lo);
- msr = rdmsr(TOP_MEM2);
- lens += acpigen_write_name_qword("TOM2", (((uint64_t) msr.hi) << 32) | msr.lo);
+ iolm = 0xfc000000;
+ #if (CONFIG_MMCONF_SUPPORT)
+ iolm = CONFIG_MMCONF_BASE_ADDRESS;
+ #endif
+ lens += acpigen_write_name_dword("IOLM", iolm);
lens += k8acpi_write_HT();
//minus opcode
-----Original Message----- From: coreboot-bounces@coreboot.org [mailto:coreboot-bounces@coreboot.org] On Behalf Of Rudolf Marek Sent: Wednesday, November 03, 2010 04:34 PM To: coreboot@coreboot.org Subject: Re: [coreboot] [PATCH] Fix AMD HD 3200 uma graphics problems in Win7 (revised) ]Hi Scott, ] ]I tried to boot with that on famF CPU and it went well. ]ruiktest:~# ]ruiktest:~# lspci -vvv -s 01:05.0 ] ]01:05.0 VGA compatible controller: ATI Technologies Inc RS880 [Radeon HD 4200] ](prog-if 00 [VGA controller]) ] Subsystem: ATI Technologies Inc Device 0000 ] Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- ]SERR- FastB2B- DisINTx- ] Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- ]<MAbort- >SERR- <PERR- INTx- ] Latency: 0, Cache Line Size: 64 bytes ] Interrupt: pin A routed to IRQ 18 ] Region 0: Memory at e8000000 (32-bit, prefetchable) [size=128M] ] Region 1: I/O ports at 1000 [size=256] ] Region 2: Memory at f8100000 (32-bit, non-prefetchable) [size=64K] ] Region 5: Memory at f8000000 (32-bit, non-prefetchable) [size=1M] ] Expansion ROM at <unassigned> [disabled] ] Capabilities: [50] Power Management version 3 ] Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-) ] Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME- ] Capabilities: [a0] MSI: Enable- Count=1/1 Maskable- 64bit+ ] Address: 0000000000000000 Data: 0000 ] Kernel driver in use: radeon ] ]The BAR seems to be enabled. Btw I tried to boot Win7 but still got only logo ]animation forever. Not sure what it could be. Hello Rudolf, I was able to get the mahogany coreboot to boot Win7 on an ECS A780GM-M3 board with a family 0Fh processor installed. Here are the steps, starting with trunk: 1) Apply the revised RS780 patch (patch-rs780-2.txt). 2) Apply the Win7 changes (win7-wip-1.txt). 3) Apply the additional attached changes for family 0Fh (win7-mahogany.txt). 4) Revert file ht_wrapper.c. That quick and dirty HT3 change is not good for family 0Fh. Thanks, Scott ]I agree that this patch is big improvement. We can fix the MMCONF later. ] ]Thanks, ]Rudolf