diff options
author | Rudolf Marek <r.marek@assembler.cz> | 2010-10-10 19:55:32 +0000 |
---|---|---|
committer | Rudolf Marek <r.marek@assembler.cz> | 2010-10-10 19:55:32 +0000 |
commit | e522164ae15fab2e96309bc439ff431c6910f021 (patch) | |
tree | c88b58f82c350c46ae58fae440699116c0598e84 /src/southbridge/amd/sb700 | |
parent | 14cc9271780b8348f5007b6247290c15367fb45c (diff) |
Following patch fixes the boot_switch_sata_ide logic. It can swap
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
Diffstat (limited to 'src/southbridge/amd/sb700')
-rw-r--r-- | src/southbridge/amd/sb700/sb700_ide.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/southbridge/amd/sb700/sb700_ide.c b/src/southbridge/amd/sb700/sb700_ide.c index 88d634bebb..4652ca2539 100644 --- a/src/southbridge/amd/sb700/sb700_ide.c +++ b/src/southbridge/amd/sb700/sb700_ide.c @@ -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 |