Simon Glass 78474d4eeb spi: Rewrite driver for new protocol, better performance
The old spi driver has atrophied in various ways. It doesn't support
the new protocol and does not build either.

Rewrite the driver to:

- Use dma for reception (rather than just reception)
    - This makes message reception more robust and allows us to process
      the new multi-byte commands
- Add timeouts for rx and tx so that we don't wait forever
- Increase buffer sizes to deal with new larger messages
- Always send a preamble byte regardless of SPI clock speed
    (previously above 10MHz we sometimes miss this)
- Use the NSS line to delineate transactions. When it drops, a
transaction is starting. When it rises the transaction is immediately
terminates regardless of state. This keeps the AP and EC in sync even
in the event of timeouts, bus errors and other oddities.
- Implement the new protocol which has a checksum, version byte, etc
- Set up tx dma in advance and kick it when ready, thus ensuring that
    a message body is always attached immediately after the preamble
- Use the new host_cmd_handle_args structure, which makes things much
easier for us, since we don't need globals, and can use the
send_response handler to know when a slow command is complete.
- Handle the new type of 'slow' commands properly

BUG=chrome-os-partner:10533
TEST=manual
build and boot to kernel on snow

Change-Id: I11767d1a6f045a86f6c9a0b4b1e943b660e4da33
Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/32076
Reviewed-by: Randall Spangler <rspangler@chromium.org>
2012-09-17 10:10:14 -07:00
2012-09-09 11:00:34 -07:00
2012-02-14 11:46:16 -08:00
2012-05-11 09:11:52 -07:00
2012-09-09 11:00:34 -07:00
2012-08-10 09:28:34 -07:00
2011-12-08 19:18:06 +00:00
2012-08-31 15:41:35 -07:00

- EC Lib

This wraps Blizzard driverlib and implements the EC chip interface defined
by Google. See below diagram for architecture.


  +--------------------+
  |   Host BIOS/OS     |
  +--------------------+

 ---- host interface ----

  +--------------------+
  | Google EC features |
  +--------------------+

 ---- chip interface ----  The interface is defined in
                           src/platform/ec/chip_interface/*.
  +--------------------+   But the real implementation is in EC Lib.
  |       EC Lib       |
  +--------------------+
  | Blizzard low level |
  |   driver, the      |
  |   driverlib.       |
  +--------------------+


Build Options
=============

- CONFIG_WATCHDOG_HELP

	Try to detect a watchdog that is about to fire, and print a trace.
	This is needed on STM32, where the independent watchdog has no early
	warning feature and the windowed watchdog has a very short period.

- CONFIG_PANIC_HELP

	Report extra information about a panic, such as the fault address,
	here shown as bfar. This shows the reason for the fault and may help
	to determine the cause.

	=== EXCEPTION: 03 ====== xPSR: 01000000 ===========
	r0 :0000000b r1 :00000047 r2 :60000000 r3 :200013dd
	r4 :00000000 r5 :080053f4 r6 :200013d0 r7 :00000002
	r8 :00000000 r9 :200013de r10:00000000 r11:00000000
	r12:00000000 sp :200009a0 lr :08002b85 pc :08003a8a
	Precise data bus error, Forced hard fault, Vector catch, bfar = 60000000
	mmfs = 00008200, shcsr = 00000000, hfsr = 40000000, dfsr = 00000008

- CONFIG_ASSERT_HELP

	Report assertion failures in a vebose manner to aid debugging. When
	enabled an ASSERT() which fails will produce message in the form:

		ASSERTION FAILURE '<expr>' in function() at file:line

- CONFIG_CONFIGURE_BOARD_LATE

	Define this to call configure_board_late() after initial system init
	is complete (and after GPIOs are set up).

- CONFIG_AC_POWER_STATUS

	Monitor the state of the AC power input and drive out a GPIO to
	the AP indicating this state. The GPIO will be driven low when
	AC power is not connected, and high when it is connected. This
	uses GPIO_AC_STATUS for this purpose.
Description
No description provided
Readme 1.4 GiB
Languages
C 64.7%
Lasso 20.7%
ASL 3.6%
JavaScript 3.2%
C# 2.9%
Other 4.6%