coreboot/src/include
Martin Roth 3316cf2ff8 Claim the SPI bus before writes if the IMC ROM is present
The SB800 and Hudson now support adding the IMC ROM which runs from the same
chip as coreboot.  When the IMC is running, write or erase commands sent to
the spi bus will fail, and the IMC will die.  To fix this, we send a request
to the IMC to stop fetching from the SPI rom while we write to it. This
process (in one form or another) is required for writes to the SPI bus while
the IMC is running.

Because the IMC can take up to 500ms to respond every time we claim the
bus, this patch tries to keep the number of times we need to do that to a
minimum.  We only need to claim the bus on writes, and using a counter for
the semaphore allows us to call in once to claim the bus at the beginning
of a number of transactions and it will stay claimed until we release it
at the end of the transactions.

Claim() - takes up to 500ms hit
    claim() - no delay
        erase()
    release()
    claim() - no delay
        write()
    release()
Release()

Change-Id: I4e003c5122a2ed47abce57ab8b92dee6aa4713ed
Signed-off-by: Martin Roth <martin@se-eng.com>
Reviewed-on: http://review.coreboot.org/1976
Tested-by: build bot (Jenkins)
Reviewed-by: Patrick Georgi <patrick@georgi-clan.de>
2012-12-12 22:34:16 +01:00
..
arch-generic - First stab at getting the ppc ports building and working. 2004-11-18 22:38:08 +00:00
boot Do not allow modifying memory table directly 2012-08-08 11:42:17 +02:00
console Provide MRC with a console printing callback function 2012-11-14 05:19:21 +01:00
cpu Unify assembler function handling 2012-12-06 23:13:17 +01:00
device Add initialization hook for chips 2012-11-27 09:16:03 +01:00
pc80 mc146818rtc: disable RTC before writing to nvram 2012-11-19 22:06:48 +01:00
smp Clean up #ifs 2012-05-08 00:34:34 +02:00
assert.h We call this cache as ram everywhere, so let's call it the same in Kconfig 2010-08-30 17:53:13 +00:00
cbfs.h Implement stack overflow checking for the BSP 2012-07-24 23:29:12 +02:00
cbfs_core.h cbfs_core.h: support for ARMv7 CBFS master header 2012-12-08 06:50:02 +01:00
cbmem.h SMM: Restore GNVS pointer in the resume path 2012-11-14 05:41:12 +01:00
delay.h Clean up #ifs 2012-05-08 00:34:34 +02:00
ehci.h Fix usb debug dongle support 2011-10-31 04:06:10 +01:00
elog.h ELOG: Add EC events to elog header 2012-11-09 19:03:24 +01:00
fallback.h Make set_boot_successful depend on PC80_SYSTEM 2012-11-30 21:33:35 +01:00
ip_checksum.h Add support for the console over Ethernet (through PCI NE2000). 2010-07-16 20:02:09 +00:00
kconfig.h Add config_enabled() from Linux 2012-05-08 00:36:09 +02:00
lib.h Clean up stack checking code 2012-11-13 18:25:17 +01:00
reset.h Clean up #ifs 2012-05-08 00:34:34 +02:00
sdram_mode.h Various license header consistency fixes (trivial). 2010-02-15 23:10:19 +00:00
smbios.h Extend smbios api to allow runtime change of mainboard serial and version 2012-07-25 14:13:04 +02:00
spd.h Some more DIMM0 related cleanups and deduplication. 2010-11-20 20:23:08 +00:00
spd_ddr2.h Add VIA CX700 support, plus VIA vt8454c reference board support. 2009-04-17 08:37:18 +00:00
spi.h Claim the SPI bus before writes if the IMC ROM is present 2012-12-12 22:34:16 +01:00
spi_flash.h SPI flash layer: remove unused function spi_flash_free() 2012-07-24 02:37:39 +02:00
stddef.h stddef.h: move to generic code 2012-12-08 06:54:16 +01:00
stdlib.h Remove unused free() function 2012-07-24 08:38:21 +02:00
string.h Add an implementation for the memchr library function 2012-03-09 20:00:53 +01:00
swab.h Add macros for 64bit byte order swapping 2011-10-21 14:13:19 +02:00
timestamp.h Add method for delaying adding of timestamps 2012-11-13 18:24:53 +01:00
trace.h Fix tracing compilation on SMM enabled targets. 2012-09-13 10:11:44 +02:00
types.h Some changes required to get yabel working on v2 (and they generally make 2009-03-01 10:16:01 +00:00
uart.h WIP: Add support for non-8250 built-in UARTs 2012-12-08 06:51:59 +01:00
uart8250.h Fix UART8250 console prototypes 2012-12-12 00:27:10 +01:00
usb_ch9.h USB Debug Port related license header fixes (trivial). 2010-09-23 18:16:46 +00:00
usbdebug.h USBDEBUG: buffer up to 8 bytes 2012-07-26 15:52:00 +02:00
version.h Rename almost all occurences of LinuxBIOS to coreboot. 2008-01-18 15:08:58 +00:00
watchdog.h Clean up #ifs 2012-05-08 00:34:34 +02:00