g: allow i2cm transactions of arbitrary length
g: allow i2cm transactions of arbitrary length

Programming ITE EC over CCD is a very tedious process, with a huge
overhead imposed by encapsulating I2C traffic in USB packets.

On top of that actual writing into the flash must happen in a single
transaction passing a full flash page (256 bytes) worth of data. To
accommodate this the I2C master driver needs to be modified to send
I2C transactions longer than the I2C controller's FIFO capacity of 64
bytes.

This patch makes necessary changes and simplifies the driver, even if
making it a little less efficient: the modified driver does not use
the FW block of the controller, which allowed to program up to for
bytes to transmit before actually getting to transmit from or receive
to the FIFO. All transfers now involve FIFO and there is always a full
stop/start between a write and the following read, as opposed to a
single restart issued before in case the write was 4 bytes or less.

BRANCH=cr50, cr50-mp
BUG=b:75976718
TEST=with the rest of the patches applied verified that it is possible
     to disable and re-enable clock jitter at run time.

Change-Id: I589ac33faa33764458d9aee03e74af81be637908
Signed-off-by: Vadim Bendebury <5515d6d2d0829cbe0dd0dcf2094aaded06d58514@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/1263900

coreboot/chrome-ec,coreboot/chrome-ec,coreboot/chrome-ec,coreboot/chrome-ec,coreboot/chrome-ec,coreboot/chrome-ec