[coreboot-gerrit] New patch to review for coreboot: 0066538 NOTFORMERGE: lenovo/x201: change to new mp code.

Vladimir Serbinenko (phcoder@gmail.com) gerrit at coreboot.org
Sat Feb 8 19:01:49 CET 2014


Vladimir Serbinenko (phcoder at gmail.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/5166

-gerrit

commit 006653880ffc18ba1d80ea325a5f6a455ab07172
Author: Vladimir Serbinenko <phcoder at gmail.com>
Date:   Sat Feb 8 19:00:14 2014 +0100

    NOTFORMERGE: lenovo/x201: change to new mp code.
    
    Change-Id: Ia596e493f7314b9435ae8b03f7888bf828488eb2
    Signed-off-by: Vladimir Serbinenko <phcoder at gmail.com>
---
 src/mainboard/lenovo/x201/devicetree.cb |  9 ++++
 src/mainboard/lenovo/x201/mptable.c     | 83 +--------------------------------
 2 files changed, 10 insertions(+), 82 deletions(-)

diff --git a/src/mainboard/lenovo/x201/devicetree.cb b/src/mainboard/lenovo/x201/devicetree.cb
index 37a430c..daccbbb 100644
--- a/src/mainboard/lenovo/x201/devicetree.cb
+++ b/src/mainboard/lenovo/x201/devicetree.cb
@@ -146,6 +146,15 @@ chip northbridge/intel/nehalem
 			device pci 1f.3 on # SMBUS
 				subsystemid 0x17aa 0x2167
 			        # eeprom, 8 virtual devices, same chip
+				chip drivers/generic/ioapic
+					register "have_isa_interrupts" = "1"
+					register "irq_on_fsb" = "1"
+					register "enable_virtual_wire" = "1"
+					register "base" = "0xfec00000"
+					register "version" = "0x20"
+					device ioapic 2 on end
+				end
+
 				chip drivers/i2c/at24rf08c
 					device i2c 54 on end
 					device i2c 55 on end
diff --git a/src/mainboard/lenovo/x201/mptable.c b/src/mainboard/lenovo/x201/mptable.c
index 84364a0..f1839f0 100644
--- a/src/mainboard/lenovo/x201/mptable.c
+++ b/src/mainboard/lenovo/x201/mptable.c
@@ -1,82 +1 @@
-/* generated by MPTable, version 2.0.15*/
-/* as modified by RGM for coreboot */
-#include <console/console.h>
-#include <arch/smp/mpspec.h>
-#include <arch/ioapic.h>
-#include <device/pci.h>
-#include <string.h>
-#include <stdint.h>
-
-#define INTA 0x00
-#define INTB 0x01
-#define INTC 0x02
-#define INTD 0x03
-
-static void *smp_write_config_table(void *v)
-{
-	struct mp_config_table *mc;
-	int isa_bus;
-
-	mc = (void *)(((char *)v) + SMP_FLOATING_TABLE_LEN);
-
-	mptable_init(mc, LOCAL_APIC_ADDR);
-
-	smp_write_processors(mc);
-
-	mptable_write_buses(mc, NULL, &isa_bus);
-	/* I/O APICs: APIC ID  Version  State  Address */
-	smp_write_ioapic(mc, 0x2, 0x20, 0xfec00000);
-
-	mptable_add_isa_interrupts(mc, isa_bus, 0x2, 0);
-
-	/* I/O Ints: Type  Polarity  Trigger  Bus ID  IRQ  APIC ID  PIN# */
-	smp_write_intsrc(mc, mp_ExtINT,
-			 MP_IRQ_TRIGGER_EDGE | MP_IRQ_POLARITY_HIGH, 0x3, 0x0,
-			 0x2, 0x0);
-	smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE | MP_IRQ_POLARITY_HIGH,
-			 0x3, 0x1, 0x2, 0x1);
-	smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE | MP_IRQ_POLARITY_HIGH,
-			 0x3, 0x0, 0x2, 0x2);
-	smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE | MP_IRQ_POLARITY_HIGH,
-			 0x3, 0x3, 0x2, 0x3);
-	smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE | MP_IRQ_POLARITY_HIGH,
-			 0x3, 0x4, 0x2, 0x4);
-	smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE | MP_IRQ_POLARITY_HIGH,
-			 0x3, 0x5, 0x2, 0x5);
-	smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE | MP_IRQ_POLARITY_HIGH,
-			 0x3, 0x6, 0x2, 0x6);
-	smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE | MP_IRQ_POLARITY_HIGH,
-			 0x3, 0x7, 0x2, 0x7);
-	smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE | MP_IRQ_POLARITY_HIGH,
-			 0x3, 0x8, 0x2, 0x8);
-	smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE | MP_IRQ_POLARITY_HIGH,
-			 0x3, 0x9, 0x2, 0x9);
-	smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE | MP_IRQ_POLARITY_HIGH,
-			 0x3, 0xa, 0x2, 0xa);
-	smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE | MP_IRQ_POLARITY_HIGH,
-			 0x3, 0xb, 0x2, 0xb);
-	smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE | MP_IRQ_POLARITY_HIGH,
-			 0x3, 0xc, 0x2, 0xc);
-	smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE | MP_IRQ_POLARITY_HIGH,
-			 0x3, 0xd, 0x2, 0xd);
-	smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE | MP_IRQ_POLARITY_HIGH,
-			 0x3, 0xe, 0x2, 0xe);
-	smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE | MP_IRQ_POLARITY_HIGH,
-			 0x3, 0xf, 0x2, 0xf);
-	/* Local Ints: Type  Polarity  Trigger  Bus ID  IRQ  APIC ID  PIN# */
-	smp_write_lintsrc(mc, mp_ExtINT,
-			  MP_IRQ_TRIGGER_EDGE | MP_IRQ_POLARITY_HIGH, 0x3, 0x0,
-			  MP_APIC_ALL, 0x0);
-	smp_write_lintsrc(mc, mp_NMI,
-			  MP_IRQ_TRIGGER_EDGE | MP_IRQ_POLARITY_HIGH, 0x3, 0x0,
-			  MP_APIC_ALL, 0x1);
-
-	return mptable_finalize(mc);
-}
-
-unsigned long write_smp_table(unsigned long addr)
-{
-	void *v;
-	v = smp_write_floating_table(addr, 0);
-	return (unsigned long)smp_write_config_table(v);
-}
+/* dummy file */



More information about the coreboot-gerrit mailing list