Hello,
I propose this patch :
Index: LinuxBIOSv2_spi_debug/src/southbridge/nvidia/mcp55/mcp55_lpc.c =================================================================== --- LinuxBIOSv2_spi_debug/src/southbridge/nvidia/mcp55/mcp55_lpc.c (revision 3050) +++ LinuxBIOSv2_spi_debug/src/southbridge/nvidia/mcp55/mcp55_lpc.c (working copy) @@ -161,11 +161,15 @@
static void lpc_init(device_t dev) { + struct southbridge_nvidia_mcp55_config *conf; + uint32_t dword; uint8_t byte; uint8_t byte_old; int on; int nmi_option;
+ conf = dev->chip_info; + lpc_common_init(dev);
#if 0 @@ -238,6 +242,18 @@ /* Initialize the High Precision Event Timers */ // enable_hpet(dev);
+ /* Enables the decoding of the IO addresses to the flash SPI interface + (if present into the SIO) */ + if (conf->spi_sio_enable) { + dword = pci_read_config32(dev, 0xa0); + dword |= (1<<30); + pci_write_config32(dev, 0xa0, dword); + + /* FIXME : really dirty! It seems that the IO addr range for the SPI IF. + HAS to be set into the 0xb0 or 0xb4 reg which conflicts strongly with + mcp55_lpc_enable_childrens_resources() */ + pci_write_config32(dev, conf->spi_sio_pcireg, conf->spi_sio_iorange); + } }
static void mcp55_lpc_read_resources(device_t dev) Index: LinuxBIOSv2_spi_debug/src/southbridge/nvidia/mcp55/chip.h =================================================================== --- LinuxBIOSv2_spi_debug/src/southbridge/nvidia/mcp55/chip.h (revision 3050) +++ LinuxBIOSv2_spi_debug/src/southbridge/nvidia/mcp55/chip.h (working copy) @@ -28,8 +28,11 @@ unsigned int ide1_enable : 1; unsigned int sata0_enable : 1; unsigned int sata1_enable : 1; + unsigned int spi_sio_enable : 1; unsigned int mac_eeprom_smbus; unsigned int mac_eeprom_addr; + unsigned int spi_sio_pcireg; + unsigned int spi_sio_iorange; }; struct chip_operations; extern struct chip_operations southbridge_nvidia_mcp55_ops; Index: LinuxBIOSv2_spi_debug/src/mainboard/gigabyte/m57sli/Config.lb =================================================================== --- LinuxBIOSv2_spi_debug/src/mainboard/gigabyte/m57sli/Config.lb (revision 3050) +++ LinuxBIOSv2_spi_debug/src/mainboard/gigabyte/m57sli/Config.lb (working copy) @@ -403,6 +403,9 @@ register "sata1_enable" = "1" register "mac_eeprom_smbus" = "3" # 1: smbus under 2e.8, 2: SM0 3: SM1 register "mac_eeprom_addr" = "0x51" + register "spi_sio_enable" = "1" + register "spi_sio_pcireg" = "0xb0" + register "spi_sio_iorange" = "0x085f0800" end end # device pci 18.0 device pci 18.0 on end # Link 1
Btw is this related to the issue #87 in Issuetracker? (should a new ticket be created especially for this issue?)
Thanks a lot for the help in resolving this issue to all the coreboot team! Florentin