Support Google EC programmer.

Parallel programming with Rong Chang. Credits go to him too.

gec.c acts as an opaque programmer. It implements probe/read/write/erase
functions. It also hooks write protect structure.

The gec_lpc_commands.h basically is copied from include/lpc_commands.h under
EC project.

This CL also slightly modifies the fmap.c because the EC flash size is not
power of 2, which breaks the original assumption for stride.

Not that SUPPORT_CHECKSUM is designed for the unstable LPC bus. The bus
is hand-hacked and has serious cross-talk between lines. Therefore,
we are implementing a checksum function and re-read flash content again
if checksum is not matched. This should be removed after EC chip is
soldered on board.

To make LPC works on Cougar point, this CL also fixes the chipset_enable.c.

BUG=none
TEST=Tested following commands on S*y:
-r: 2 secs
-w -i: 50 secs
--wp-range: set range successfully.
--wp-status: get range successfully.
--wp-enable --wp-disable: need EC modification. not verify yet.

Change-Id: I4624427616d3e710e7925eb26562f212c8b91ca3
Reviewed-on: https://gerrit.chromium.org/gerrit/12679
Reviewed-by: David Hendricks <dhendrix@chromium.org>
Reviewed-by: Yung-Chieh Lo <yjlou%chromium.org@gtempaccount.com>
Tested-by: Yung-Chieh Lo <yjlou%chromium.org@gtempaccount.com>
diff --git a/programmer.h b/programmer.h
index 6c9f795..c1ab0e2 100644
--- a/programmer.h
+++ b/programmer.h
@@ -664,6 +664,9 @@
 /* wpce775x.c */
 int wpce775x_probe_spi_flash(const char *name);
 
+/* gec.c */
+int gec_probe_programmer(const char *name);
+
 void sp_flush_incoming(void);
 fdtype sp_openserport(char *dev, unsigned int baud);
 void __attribute__((noreturn)) sp_die(char *msg);