ft2232_spi: reintroduce generic GPIOL control

This reintroduces a reworked version of the GPIOL pin control first
introduced in commit 3207844 (CB:49637), which was reverted in commit
6518cf3 (CB:55692) due to breakage.

This change introduces a new argument `gpiolX` to allow use of the four
GPIOL pins either as generic gpios or as additional CS# signal(s). `X`
specifies the GPIOL pin (0-3) to be set to one of [HLC] with the
following meaning:

 * H - set the pin as output high
 * L - set the pin as output low
 * C - use the pin as additional CS# signal

The third value, `C`, aims to replace the parameter `csgpiol`, that is
now marked as deprecated and can be removed at some point in the future.
`gpiol` and `csgpiol` are mutually exclusive and use of both results in
an error.

Multiple pins may be set by specifying the parameter multiple times.

Documentation was updated/added accordingly.

Test: All pin levels/modes have been verified to behave correctly with a
      logic analyzer.

Change-Id: I3989f0f9596c090de52dca67183b1363dae59d3a
Signed-off-by: Alan Green <avg@google.com>
Signed-off-by: Michael Niewöhner <foss@mniewoehner.de>
Original-Reviewed-on: https://review.coreboot.org/c/flashrom/+/57810
Original-Reviewed-by: Nico Huber <nico.h@gmx.de>
diff --git a/flashrom.8.tmpl b/flashrom.8.tmpl
index 9f4493c..cb56939 100644
--- a/flashrom.8.tmpl
+++ b/flashrom.8.tmpl
@@ -814,12 +814,42 @@
 syntax.
 .sp
 Using the parameter
-.B csgpiol
+.B csgpiol (DEPRECATED - use gpiol instead)
 an additional CS# pin can be chosen, where the value can be a number between 0 and 3, denoting GPIOL0-GPIOL3
 correspondingly. Example:
 .sp
 .B "  flashrom \-p ft2232_spi:csgpiol=3"
 .sp
+The parameter
+.B gpiolX=[HLC]
+allows use of the GPIOL pins either as generic gpios with a fixed value during flashing or as addtional CS#
+signal, where
+.B X
+can be a number between 0 and 3, denoting GPIOL0-GPIOL3 correspondingly. The parameter may be specified
+multiple times, one time per GPIOL pin.
+Valid values are
+.B H
+,
+.B L
+and
+.B C
+:
+.br
+.B "  H "
+- Set GPIOL output high
+.br
+.B "  L "
+- Set GPIOL output low
+.br
+.B "  C "
+- Use GPIOL as additional CS# output
+.sp
+.B Example:
+.sp
+.B "  flashrom \-p ft2232_spi:gpiol0=H"
+.sp
+.B Note
+that not all GPIOL pins are freely usable with all programmers as some have special functionality.
 .SS
 .BR "serprog " programmer
 .IP