Benjamin Herrenschmidt 4e56828a5d fsi/fsi-master-gpio: Implement CRC error recovery
The FSI protocol defines two modes of recovery from CRC errors,
this implements both:

 - If the device returns an ECRC (it detected a CRC error in the
   command), then we simply issue the command again.

 - If the master detects a CRC error in the response, we send
   an E_POLL command which requests a resend of the response
   without actually re-executing the command (which could otherwise
   have unwanted side effects such as dequeuing a FIFO twice).

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Reviewed-by: Christopher Bostic <cbostic@linux.vnet.ibm.com>
Tested-by: Joel Stanley <joel@jms.id.au>
---

Note: This was actually tested by removing some of my fixes, thus
causing us to hit occasional CRC errors during high LPC activity.
2018-06-12 14:05:16 +10:00
..
2018-06-08 17:21:52 -07:00
2018-06-10 13:01:12 -07:00
2018-05-29 09:59:53 -04:00
2018-06-08 11:10:58 -07:00
2018-06-04 10:58:12 -07:00
2018-06-08 13:36:19 -07:00
2018-06-11 18:15:22 -07:00
2018-06-11 18:15:22 -07:00
2018-06-07 10:23:33 -07:00
2018-06-08 17:21:52 -07:00
2018-06-08 11:02:21 -07:00
2018-06-11 18:19:45 -07:00
2018-06-11 07:17:36 -07:00
2018-06-10 13:01:12 -07:00
2018-06-07 10:23:33 -07:00
2018-06-11 12:09:19 -07:00
2018-06-05 16:14:12 -07:00
2018-06-09 10:32:39 -07:00
2018-06-07 13:04:07 -07:00
2018-06-11 07:20:17 -07:00
2018-06-07 10:23:33 -07:00
2018-06-11 17:49:09 -07:00
2018-06-10 13:01:12 -07:00
2018-06-11 07:20:17 -07:00
2018-06-07 12:45:58 -07:00
2018-06-05 16:11:43 -07:00
2018-06-11 17:49:09 -07:00
2018-06-08 13:36:19 -07:00
2018-06-11 18:19:45 -07:00
2018-06-04 10:58:12 -07:00
2018-06-07 12:45:58 -07:00
2018-06-11 07:20:17 -07:00
2018-06-07 12:34:37 -07:00
2018-06-08 13:08:57 -07:00
2018-06-11 18:15:22 -07:00
2018-06-11 07:20:17 -07:00
2018-06-10 13:01:12 -07:00
2018-06-10 13:01:12 -07:00
2018-06-11 18:19:45 -07:00
2018-06-05 09:38:39 -07:00
2018-06-11 07:23:19 -07:00
2018-06-10 13:01:12 -07:00
2018-06-07 10:23:33 -07:00
2018-06-11 07:23:19 -07:00
2018-06-05 16:20:22 -07:00
2018-06-08 09:24:54 -07:00