Torpedo mainboard changes to fix warnings.
authorMartin Roth <Martin@se-eng.com>
Tue, 14 Feb 2012 17:50:11 +0000 (10:50 -0700)
committerMarc Jones <marcj303@gmail.com>
Mon, 20 Feb 2012 04:36:40 +0000 (05:36 +0100)
Fixes the warnings generated in the torpedo mainboard build.  Most of these
changes are similar to fixes already implemented in the persimmon mainboard.

Change-Id: Ib931be51c0e6448c00c8cfeb13073e1f392582a5
Signed-off-by: Martin L Roth <martin@se-eng.com>
Signed-off-by: Marc Jones <marcj303@gmail.com>
Reviewed-on: http://review.coreboot.org/634
Tested-by: build bot (Jenkins)
Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
src/mainboard/amd/torpedo/Oem.h
src/mainboard/amd/torpedo/acpi_tables.c
src/mainboard/amd/torpedo/fadt.c
src/mainboard/amd/torpedo/gpio.c
src/mainboard/amd/torpedo/irq_tables.c
src/mainboard/amd/torpedo/mainboard.c
src/mainboard/amd/torpedo/mptable.c
src/mainboard/amd/torpedo/platform_cfg.h
src/mainboard/amd/torpedo/romstage.c

index a7109dc38231c44664beca1b30f0967ed298c969..037ce94ef8818f885feaf378487f9e0ef7bd8cf0 100644 (file)
@@ -16,8 +16,9 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
  */
-
-#define BIOS_SIZE                      0x04   //04 - 1MB
+#ifndef BIOS_SIZE
+       #define BIOS_SIZE                      0x04   //04 - 1MB
+#endif
 #define LEGACY_FREE                    0x00
 #if CONFIG_ONBOARD_USB30 == 0
   #define XHCI_SUPPORT                 0x01
index 4710b57c2a9b6d2f30fd79ff6ada14faa0e027ed..3ba789d69182f2eef7c1c7936d2636c77ebd6462 100644 (file)
@@ -25,9 +25,9 @@
 #include <device/pci.h>
 #include <device/pci_ids.h>
 #include <cpu/x86/msr.h>
-#include <cpu/amd/mtrr.h>
-
 #include "agesawrapper.h"
+#include <cpu/amd/mtrr.h>
+#include <cpu/amd/amdfam12.h>
 
 #define DUMP_ACPI_TABLES 0
 extern u32 apicid_sb900;
@@ -110,7 +110,9 @@ unsigned long write_acpi_tables(unsigned long start)
   unsigned long current;
   acpi_rsdp_t *rsdp;
   acpi_rsdt_t *rsdt;
+#if 0 // Don't need HPET table.
   acpi_hpet_t *hpet;
+#endif
   acpi_madt_t *madt;
   acpi_srat_t *srat;
   acpi_slit_t *slit;
@@ -164,7 +166,7 @@ unsigned long write_acpi_tables(unsigned long start)
   printk(BIOS_DEBUG, "ACPI:    * SRAT at %lx\n", current);
   srat = (acpi_srat_t *) agesawrapper_getlateinitptr (PICK_SRAT);
   if (srat != NULL) {
-    memcpy(current, srat, srat->header.length);
+    memcpy((void *)current, srat, srat->header.length);
     srat = (acpi_srat_t *) current;
     //acpi_create_srat(srat);
     current += srat->header.length;
@@ -176,7 +178,7 @@ unsigned long write_acpi_tables(unsigned long start)
   printk(BIOS_DEBUG, "ACPI:   * SLIT at %lx\n", current);
   slit = (acpi_slit_t *) agesawrapper_getlateinitptr (PICK_SLIT);
   if (slit != NULL) {
-    memcpy(current, slit, slit->header.length);
+    memcpy((void *)current, slit, slit->header.length);
     slit = (acpi_slit_t *) current;
     //acpi_create_slit(slit);
     current += slit->header.length;
@@ -188,7 +190,7 @@ unsigned long write_acpi_tables(unsigned long start)
   printk(BIOS_DEBUG, "ACPI:    * SSDT at %lx\n", current);
   ssdt = (acpi_header_t *)agesawrapper_getlateinitptr (PICK_PSTATE);
   if (ssdt != NULL) {
-    memcpy(current, ssdt, ssdt->length);
+    memcpy((void *)current, ssdt, ssdt->length);
     ssdt = (acpi_header_t *) current;
     current += ssdt->length;
   }
index 5701dabc2233275ac77a5d0992cf89ea548287b6..a4cb1b91e5386a0aade8524e0121d7627fa0a4aa 100644 (file)
@@ -28,7 +28,7 @@
 #include <arch/acpi.h>
 #include <arch/io.h>
 #include <device/device.h>
-//#include "../../../southbridge/amd/sb900/sb900.h"
+#include "SbPlatform.h"
 
 /*extern*/ u16 pm_base = 0x800;
 /* pm_base should be set in sb acpi */
@@ -44,6 +44,7 @@
 #define ACPI_CPU_CONTORL       (pm_base + 0x10) /* 6 bytes */
 void acpi_create_fadt(acpi_fadt_t * fadt, acpi_facs_t * facs, void *dsdt)
 {
+       u16 val = 0;
        acpi_header_t *header = &(fadt->header);
 
        pm_base &= 0xFFFF;
@@ -71,29 +72,30 @@ void acpi_create_fadt(acpi_fadt_t * fadt, acpi_facs_t * facs, void *dsdt)
        fadt->s4bios_req = 0x0;
        fadt->pstate_cnt = 0xe2;
 
-       pm_iowrite(0x60, ACPI_PM_EVT_BLK & 0xFF);
-       pm_iowrite(0x61, ACPI_PM_EVT_BLK >> 8);
-       pm_iowrite(0x62, ACPI_PM1_CNT_BLK & 0xFF);
-       pm_iowrite(0x63, ACPI_PM1_CNT_BLK >> 8);
-       pm_iowrite(0x64, ACPI_PM_TMR_BLK & 0xFF);
-       pm_iowrite(0x65, ACPI_PM_TMR_BLK >> 8);
-       pm_iowrite(0x68, ACPI_GPE0_BLK & 0xFF);
-       pm_iowrite(0x69, ACPI_GPE0_BLK >> 8);
+       val = PM1_EVT_BLK_ADDRESS;
+       WritePMIO(SB_PMIOA_REG60, AccWidthUint16, &val);
+       val = PM1_CNT_BLK_ADDRESS;
+       WritePMIO(SB_PMIOA_REG62, AccWidthUint16, &val);
+       val = PM1_TMR_BLK_ADDRESS;
+       WritePMIO(SB_PMIOA_REG64, AccWidthUint16, &val);
+       val = GPE0_BLK_ADDRESS;
+       WritePMIO(SB_PMIOA_REG68, AccWidthUint16, &val);
 
        /* CpuControl is in \_PR.CPU0, 6 bytes */
-       pm_iowrite(0x66, ACPI_CPU_CONTORL & 0xFF);
-       pm_iowrite(0x67, ACPI_CPU_CONTORL >> 8);
+       val = CPU_CNT_BLK_ADDRESS;
+       WritePMIO(SB_PMIOA_REG66, AccWidthUint16, &val);
+       val = 0;
+       WritePMIO(SB_PMIOA_REG6A, AccWidthUint16, &val);
 
-       pm_iowrite(0x6A, 0);    /* AcpiSmiCmdLo */
-       pm_iowrite(0x6B, 0);    /* AcpiSmiCmdHi */
+       val = ACPI_PM2_CNT_BLK;
+       WritePMIO(SB_PMIOA_REG6E, AccWidthUint16, &val);
 
-       pm_iowrite(0x6E, ACPI_PM2_CNT_BLK & 0xFF);
-       pm_iowrite(0x6F, ACPI_PM2_CNT_BLK >> 8);
+       /* AcpiDecodeEnable, When set, SB uses the contents of the
+        * PM registers at index 60-6B to decode ACPI I/O address.
+        * AcpiSmiEn & SmiCmdEn */
+       val = BIT0 | BIT1 | BIT2 | BIT4;
+       WritePMIO(SB_PMIOA_REG74, AccWidthUint16, &val);
 
-       pm_iowrite(0x74, 1<<0 | 1<<1 | 1<<4 | 1<<2); /* AcpiDecodeEnable, When set, SB uses
-                                       * the contents of the PM registers at
-                                       * index 60-6B to decode ACPI I/O address.
-                                       * AcpiSmiEn & SmiCmdEn*/
        /* RTC_En_En, TMR_En_En, GBL_EN_EN */
        outl(0x1, ACPI_PM1_CNT_BLK);              /* set SCI_EN */
        fadt->pm1a_evt_blk = ACPI_PM_EVT_BLK;
index 2633fb5782ee69b239d3079338f35f1eb6017c3e..3e49cb13899ebb3675cfb5038580c9c5f42148ed 100644 (file)
@@ -23,9 +23,9 @@
  */
 
 #include "Filecode.h"
-#include "Hudson-2.h"
-#include "AmdSbLib.h"
+#include "SbPlatform.h"
 #include "gpio.h"
+#include "vendorcode/amd/cimx/sb900/AmdSbLib.h"
 
 #define FILECODE UNASSIGNED_FILE_FILECODE
 
@@ -62,7 +62,6 @@
  *           P R O T O T Y P E S     O F     L O C A L     F U  N C T I O N S
  *----------------------------------------------------------------------------------------
  */
-       void gpioEarlyInit (void);
 
 /*----------------------------------------------------------------------------------------
  *                          E X P O R T E D    F U N C T I O N S
index f61f1e896ba2d6baca5408d416022694577e998c..595e09b25c6b47a1ce85d172d0d143e591a2569d 100644 (file)
@@ -23,7 +23,7 @@
 #include <string.h>
 #include <stdint.h>
 #include <arch/pirq_routing.h>
-//#include <cpu/amd/amdfam10_sysconf.h>
+#include <cpu/amd/amdfam12.h>
 
 
 
index 288798fdb28314d71102784d1c3dc2730f20b23c..21521539362beccfebb5d4c64238383b101e2062 100644 (file)
@@ -31,6 +31,9 @@
 #define ONE_MB  0x100000
 //#define SMBUS_IO_BASE 0x6000
 
+void set_pcie_reset(void);
+void set_pcie_dereset(void);
+
 /**
  * TODO
  * SB CIMx callback
@@ -54,7 +57,7 @@ uint64_t uma_memory_base, uma_memory_size;
 *************************************************/
 static void torpedo_enable(device_t dev)
 {
-  printk(BIOS_INFO, "Mainboard Torpedo Enable. dev=0x%p\n", dev);
+  printk(BIOS_INFO, "Mainboard " CONFIG_MAINBOARD_PART_NUMBER " Enable. dev=0x%p\n", dev);
 #if (CONFIG_GFXUMA == 1)
   msr_t msr, msr2;
   uint32_t sys_mem;
@@ -79,14 +82,13 @@ static void torpedo_enable(device_t dev)
    *     >=1G                  256M
    *     <1G                    64M
    */
-  sys_mem = msr.lo;
-  sys_mem = msr.lo + 16 * ONE_MB;   // Ignore 16MB allocated for C6 when finding UMA size
-  if (sys_mem >= 2048 * ONE_MB) {
-    uma_memory_size = 512 * ONE_MB;
-  } else if (sys_mem >= 1024 * ONE_MB) {
-    uma_memory_size = 256 * ONE_MB;
+  sys_mem = msr.lo + 0x1000000; // Ignore 16MB allocated for C6 when finding UMA size
+  if ((msr.hi & 0x0000000F) || (sys_mem >= 0x80000000)) {
+    uma_memory_size = 0x20000000;      /* >= 2G memory, 512M recommended UMA */
+  } else if (sys_mem >= 0x40000000) {
+    uma_memory_size = 0x10000000;      /* >= 1G memory, 256M recommended UMA */
   } else {
-    uma_memory_size = 64 * ONE_MB;
+    uma_memory_size = 0x4000000;       /* <1G memory, 64M recommended UMA */
   }
   uma_memory_base = msr.lo - uma_memory_size; /* TOP_MEM1 */
   printk(BIOS_INFO, "%s: uma size 0x%08llx, memory start 0x%08llx\n",
@@ -114,6 +116,6 @@ int add_mainboard_resources(struct lb_memory *mem)
   return 0;
 }
 struct chip_operations mainboard_ops = {
-  CHIP_NAME("AMD TORPEDO Mainboard")
+       CHIP_NAME(CONFIG_MAINBOARD_VENDOR " " CONFIG_MAINBOARD_PART_NUMBER " Mainboard")
   .enable_dev = torpedo_enable,
 };
index 2e171a13722e0b8432080089c92e0320a9d1ebd6..97db2b9a9b56fedca9f7ab2f82bf91da2905f9c2 100644 (file)
@@ -26,6 +26,8 @@
 #include <stdint.h>
 #include <arch/cpu.h>
 #include <cpu/x86/lapic.h>
+#include <cpu/amd/amdfam12.h>
+#include "SbPlatform.h"
 
 //-#define IO_APIC_ID    CONFIG_MAX_PHYSICAL_CPUS + 1
 #define IO_APIC_ID    CONFIG_MAX_CPUS
@@ -113,15 +115,11 @@ static void *smp_write_config_table(void *v)
 
   /* I/O APICs:   APIC ID Version State   Address */
 
-  device_t dev;
   u32 dword;
   u8 byte;
 
-  dword = 0;
-  dword = pm_ioread(0x34) & 0xF0;
-  dword |= (pm_ioread(0x35) & 0xFF) << 8;
-  dword |= (pm_ioread(0x36) & 0xFF) << 16;
-  dword |= (pm_ioread(0x37) & 0xFF) << 24;
+       ReadPMIO(SB_PMIOA_REG34, AccWidthUint32, &dword);
+       dword &= 0xFFFFFFF0;
   /* Set IO APIC ID onto IO_APIC_ID */
   write32 (dword, 0x00);
   write32 (dword + 0x10, IO_APIC_ID << 24);
@@ -166,8 +164,12 @@ static void *smp_write_config_table(void *v)
   /* PCI interrupts are level triggered, and are
    * associated with a specific bus/device/function tuple.
    */
+#if CONFIG_GENERATE_ACPI_TABLES == 0
 #define PCI_INT(bus, dev, int_sign, pin) \
         smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, (bus), (((dev)<<2)|(int_sign)), apicid_sb900, (pin))
+#else
+#define PCI_INT(bus, dev, fn, pin)
+#endif
 
   /* Internal VGA */
   PCI_INT(0x0, 0x01, 0x0, intr_data[0x02]);
@@ -214,9 +216,9 @@ static void *smp_write_config_table(void *v)
   PCI_INT(bus_sb900[1], 0x7, 0x2, 0x14);
   PCI_INT(bus_sb900[1], 0x7, 0x3, 0x15);
 
-  PCI_INT(bus_sb900[2], 0x0, 0x0, 0x12);
-  PCI_INT(bus_sb900[2], 0x0, 0x1, 0x13);
-  PCI_INT(bus_sb900[2], 0x0, 0x2, 0x14);
+  PCI_INT(bus_sb900[1], 0x0, 0x0, 0x12);
+  PCI_INT(bus_sb900[1], 0x0, 0x1, 0x13);
+  PCI_INT(bus_sb900[1], 0x0, 0x2, 0x14);
 
   /* PCIe Lan*/
   PCI_INT(0x0, 0x06, 0x0, 0x13);
index 532d83f0a7e4ed36d637a4b54ab93e7047b37b50..d97d0344d76c2b0ec8418b2e92a21809ccf6d72d 100644 (file)
@@ -1237,4 +1237,7 @@ void SbPowerOnInit_Config(AMDSBCFG *sb_cfg);
  */
 u32 sb900_callout_entry(u32 func, u32 data, void* sb_cfg);
 
+// definition for function in gpio.c
+void gpioEarlyInit (void);
+
 #endif
index 2e1d8fcb874a41b6a1887b01f74738538d03f34e..74365e67246d1cddeff5e1e5e2a08f499e33f422 100644 (file)
@@ -37,6 +37,7 @@
 #include "SbEarly.h"
 #include "SbPlatform.h"
 #include <arch/cpu.h>
+#include "platform_cfg.h"
 
 void cache_as_ram_main(unsigned long bist, unsigned long cpu_init_detectedx);