Paul Menzel (paulepan...@users.sourceforge.net) just uploaded a new patch set 
to gerrit, which you can find at http://review.coreboot.org/2065

-gerrit

commit f5d7954799070621aabf9c18ec249fae5fcab68d
Author: Denis 'GNUtoo' Carikli <gnu...@no-log.org>
Date:   Thu Dec 20 18:42:00 2012 +0100

    rs780: Implement `rs780_internal_gfx_disable` and add .disable pcie_ops
    
    That code will be used to disable the internal GFX card and enable the
    external PCIe card.
    
    The bits from function `rs780_internal_gfx_enable()` are taken and
    reversed.
    
        /* Disable external GFX and enable internal GFX. */
        l_dword = pci_read_config32(nb_dev, 0x8c);
        l_dword &= ~(1<<0);
        l_dword |= 1<<1;
        pci_write_config32(nb_dev, 0x8c, l_dword);
    
    It has been tested on the M4A785T-M with the following card
    inside the PCIe 16x slot:
    
      02:00.0 VGA compatible controller: nVidia Corporation GT218 [GeForce 210] 
(rev a2)
    
    Change-Id: I7bd412b987fde98c97464175e2c7a384a8f0fb84
    Signed-off-by: Denis 'GNUtoo' Carikli <gnu...@no-log.org>
    Signed-off-by: Paul Menzel <paulepan...@users.sourceforge.net>
---
 src/southbridge/amd/rs780/gfx.c | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/src/southbridge/amd/rs780/gfx.c b/src/southbridge/amd/rs780/gfx.c
index f70cd9b..f4a5120 100644
--- a/src/southbridge/amd/rs780/gfx.c
+++ b/src/southbridge/amd/rs780/gfx.c
@@ -760,6 +760,24 @@ static void internal_gfx_pci_dev_init(struct device *dev)
        clkind_write(dev, 0x5C, 0x0);
 }
 
+/*
+ * Set registers in RS780 and CPU to disable the internal GFX.
+ * Please refer to `rs780_internal_gfx_enable()`.
+ * 
+*/
+static void rs780_internal_gfx_disable(device_t dev)
+{
+       u32 l_dword;
+       device_t nb_dev = dev_find_slot(0, 0);
+
+       /* Disable internal GFX and enable external GFX. */
+       l_dword = pci_read_config32(nb_dev, 0x8c);
+       l_dword |= 1<<0;
+       l_dword &= ~(1<<1);
+       pci_write_config32(nb_dev, 0x8c, l_dword);
+
+       dev->enabled = 0;
+}
 
 /*
 * Set registers in RS780 and CPU to enable the internal GFX.
@@ -999,6 +1017,7 @@ static struct device_operations pcie_ops = {
        .init = internal_gfx_pci_dev_init,      /* The option ROM initializes 
the device. rs780_gfx_init, */
        .scan_bus = 0,
        .enable = rs780_internal_gfx_enable,
+       .disable = rs780_internal_gfx_disable,
        .ops_pci = &lops_pci,
 };
 

-- 
coreboot mailing list: coreboot@coreboot.org
http://www.coreboot.org/mailman/listinfo/coreboot

Reply via email to