Following patch fixes the boot_switch_sata_ide logic. It can swap
authorRudolf Marek <r.marek@assembler.cz>
Sun, 10 Oct 2010 19:55:32 +0000 (19:55 +0000)
committerRudolf Marek <r.marek@assembler.cz>
Sun, 10 Oct 2010 19:55:32 +0000 (19:55 +0000)
primary / secondary IDE channel with SATA (in IDE mode).

The bug was that setup was done in wrong device.

Signed-off-by: Rudolf Marek <r.marek@assembler.cz>
Acked-by: Uwe Hermann <uwe@hermann-uwe.de>
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@5932 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1

src/southbridge/amd/sb700/sb700_ide.c

index 88d634bebbd7153072880608e84e7fb28a10e6ee..4652ca2539ec6ff9cbe9cf24e1d5f15ce0e4825f 100644 (file)
@@ -51,10 +51,13 @@ static void ide_init(struct device *dev)
 
        /* set ide as primary, if you want to boot from IDE, you'd better set it
         * in $vendor/$mainboard/devicetree.cb */
+        
+       
        if (conf->boot_switch_sata_ide == 1) {
-               byte = pci_read_config8(dev, 0xAD);
+               struct device *sm_dev = dev_find_slot(0, PCI_DEVFN(0x14, 0));
+               byte = pci_read_config8(sm_dev, 0xAD);
                byte |= 1 << 4;
-               pci_write_config8(dev, 0xAD, byte);
+               pci_write_config8(sm_dev, 0xAD, byte);
        }
 
 #if CONFIG_PCI_ROM_RUN == 1