[coreboot] bug in cs5536 ide enable. Is this also in 8111 ...

ron minnich rminnich at gmail.com
Tue May 6 06:42:58 CEST 2008


#define IDE_CFG   0x40
        #define CHANEN  (1L <<  1)
        #define PWB     (1L << 14)
        #define CABLE   (1L << 16)
#define IDE_DTC   0x48
#define IDE_CAST  0x4C
#define IDE_ETC   0x50

static void ide_init(struct device *dev)
{
        uint32_t ide_cfg;

        printk_spew("cs5536_ide: %s\n", __FUNCTION__);
        /* GPIO and IRQ setup are handled in the main chipset code. */

        // Enable the channel and Post Write Buffer
        // NOTE: Only 32-bit writes to the data buffer are allowed
when PWB is set
        ide_cfg = pci_read_config32(dev, IDE_CFG);
        ide_cfg |= CHANEN | PWB;
        pci_write_config8(dev, IDE_CFG, ide_cfg);
}

Note the pci_read_config32 followed by the pci_write_config8.

HMM, why did this ever work? Anyway, I changed the write_config8 to
write_config32 and it is still no good on the alix1c on v3. If someone
wants to try this fix on v2, go for it:

Index: southbridge/amd/cs5536/cs5536.c
===================================================================
--- southbridge/amd/cs5536/cs5536.c     (revision 676)
+++ southbridge/amd/cs5536/cs5536.c     (working copy)
@@ -597,7 +597,7 @@
        // NOTE: Only 32-bit writes to the data buffer are allowed
when PWB is set
        ide_cfg = pci_read_config32(dev, IDE_CFG);
        ide_cfg |= CHANEN | PWB;
-       pci_write_config8(dev, IDE_CFG, ide_cfg);
+       pci_write_config32(dev, IDE_CFG, ide_cfg);
 }

you need to translate for the v2 filename.


off to rest, if somebody gets somewhere with this, let me know.

ron




More information about the coreboot mailing list