printk_foo -> printk(BIOS_FOO, ...)
[coreboot.git] / src / southbridge / amd / rs690 / rs690_pcie.c
index e0fc59d5cf92364eab811cf1bcc1963f38da19aa..ad2e871db4119bdb7754b79065d1d7976fbcf0fe 100644 (file)
@@ -87,18 +87,21 @@ static void PciePowerOffGppPorts(device_t nb_dev, device_t dev, u32 port)
                 Config & (PCIE_DISABLE_HIDE_UNUSED_PORTS +
                           PCIE_GFX_COMPLIANCE))) {
        }
-       /* step 3 Power Down Control for Southbridge */
-       reg = nbpcie_p_read_index(dev, 0xa2);
 
-       switch ((reg >> 4) & 0x7) {     /* get bit 4-6, LC_LINK_WIDTH_RD */
-       case 1:
-               nbpcie_ind_write_index(nb_dev, 0x65, 0x0e0e);
-               break;
-       case 2:
-               nbpcie_ind_write_index(nb_dev, 0x65, 0x0c0c);
-               break;
-       default:
-               break;
+        if (!cfg->gfx_tmds){
+               /* step 3 Power Down Control for Southbridge */
+               reg = nbpcie_p_read_index(dev, 0xa2);
+
+               switch ((reg >> 4) & 0x7) {     /* get bit 4-6, LC_LINK_WIDTH_RD */
+               case 1:
+                       nbpcie_ind_write_index(nb_dev, 0x65, 0x0e0e);
+                       break;
+               case 2:
+                       nbpcie_ind_write_index(nb_dev, 0x65, 0x0c0c);
+                       break;
+               default:
+                       break;
+               }
        }
 }
 
@@ -107,7 +110,7 @@ static void pcie_init(struct device *dev)
        /* Enable pci error detecting */
        u32 dword;
 
-       printk_debug("pcie_init in rs690_pcie.c\n");
+       printk(BIOS_DEBUG, "pcie_init in rs690_pcie.c\n");
 
        /* System error enable */
        dword = pci_read_config32(dev, 0x04);
@@ -165,7 +168,7 @@ static void switching_gpp_configurations(device_t nb_dev, device_t sb_dev)
 *****************************************************************/
 void enable_pcie_bar3(device_t nb_dev)
 {
-       printk_debug("enable_pcie_bar3()\n");
+       printk(BIOS_DEBUG, "enable_pcie_bar3()\n");
        set_nbcfg_enable_bits(nb_dev, 0x7C, 1 << 30, 1 << 30);  /* Enables writes to the BAR3 register. */
        set_nbcfg_enable_bits(nb_dev, 0x84, 7 << 16, 0 << 16);
 
@@ -181,7 +184,7 @@ void enable_pcie_bar3(device_t nb_dev)
 *****************************************************************/
 void disable_pcie_bar3(device_t nb_dev)
 {
-       printk_debug("disable_pcie_bar3()\n");
+       printk(BIOS_DEBUG, "disable_pcie_bar3()\n");
        set_nbcfg_enable_bits(nb_dev, 0x7C, 1 << 30, 0 << 30);  /* Disable writes to the BAR3. */
        pci_write_config32(nb_dev, 0x1C, 0);    /* clear BAR3 address */
        ProgK8TempMmioBase(0, EXT_CONF_BASE_ADDRESS, TEMP_MMIO_BASE_ADDRESS);
@@ -203,7 +206,7 @@ void rs690_gpp_sb_init(device_t nb_dev, device_t dev, u32 port)
        device_t sb_dev;
        struct southbridge_amd_rs690_config *cfg =
            (struct southbridge_amd_rs690_config *)nb_dev->chip_info;
-       printk_debug("gpp_sb_init nb_dev=0x%p, dev=0x%p, port=0x%x\n", nb_dev, dev, port);
+       printk(BIOS_DEBUG, "gpp_sb_init nb_dev=0x%p, dev=0x%p, port=0x%x\n", nb_dev, dev, port);
 
        /* init GPP core */
        set_pcie_enable_bits(nb_dev, 0x20 | PCIE_CORE_INDEX_GPPSB, 1 << 8,
@@ -212,8 +215,8 @@ void rs690_gpp_sb_init(device_t nb_dev, device_t dev, u32 port)
        set_pcie_enable_bits(nb_dev, 0x02 | PCIE_CORE_INDEX_GPPSB, 1 << 0, 1 << 0);     /* no description in datasheet. */
 
        /* init GPPSB port */
-       /* Sets RCB timeout to be 100ms by setting bits[18:16] to 3 b101 and shortens the enumeration timer by setting bit[19] to 0*/
-       set_pcie_enable_bits(dev, 0x70, 7 << 16, 0xd << 16);
+       /* Sets RCB timeout to be 100ms by setting bits[18:16] to 3 b101 and shortens the enumeration timer by setting bit[19] to 1*/
+       set_pcie_enable_bits(dev, 0x70, 0xF << 16, 0xd << 16);
        /* PCIE initialization 5.10.2: rpr 2.4 */
        set_pcie_enable_bits(dev, 0x02, ~0xffffffff, 1 << 14);
        /* Do not gate the electrical idle from the PHY and enables the escape from L1L23 */
@@ -240,7 +243,7 @@ void rs690_gpp_sb_init(device_t nb_dev, device_t dev, u32 port)
        }
 
        /* step 5: dynamic slave CPL buffer allocation */
-       set_pcie_enable_bits(dev, 0x20, 1 << 11, 1 << 11);
+       set_pcie_enable_bits(nb_dev, 0x20 | PCIE_CORE_INDEX_GPPSB, 1 << 11, 1 << 11);
 
        /* step 5a: Training for GPP devices */
        /* init GPP */
@@ -259,7 +262,7 @@ void rs690_gpp_sb_init(device_t nb_dev, device_t dev, u32 port)
                        PcieReleasePortTraining(nb_dev, dev, port);
                        if (!(AtiPcieCfg.Config & PCIE_GPP_COMPLIANCE)) {
                                u8 res = PcieTrainPort(nb_dev, dev, port);
-                               printk_debug("PcieTrainPort port=0x%x result=%d\n", port, res);
+                               printk(BIOS_DEBUG, "PcieTrainPort port=0x%x result=%d\n", port, res);
                                if (res) {
                                        AtiPcieCfg.PortDetect |= 1 << port;
                                }
@@ -276,6 +279,9 @@ void rs690_gpp_sb_init(device_t nb_dev, device_t dev, u32 port)
        /* step 6a: VCI */
        sb_dev = dev_find_slot(0, PCI_DEVFN(8, 0));
        if (port == 8) {
+               /* The code below between #if and #endif causes a hang on HDA init.
+                * So we skip it. */
+#if 0
                /* Clear bits 7:1 */
                pci_ext_write_config32(nb_dev, sb_dev, 0x114, 0x3f << 1, 0 << 1);
                /* Maps Traffic Class 1-7 to VC1 */
@@ -284,7 +290,7 @@ void rs690_gpp_sb_init(device_t nb_dev, device_t dev, u32 port)
                pci_ext_write_config32(nb_dev, sb_dev, 0x120, 7 << 24, 1 << 24);
                /* Enables VC1 */
                pci_ext_write_config32(nb_dev, sb_dev, 0x120, 1 << 31, 1 << 31);
-#if 0
+
                do {
                        reg16 = pci_ext_read_config32(nb_dev, sb_dev, 0x124);
                        reg16 &= 0x2;