[prim] documentation update for flash

Signed-off-by: Timothy Chen <timothytim@google.com>
diff --git a/hw/ip/prim/doc/prim_flash.md b/hw/ip/prim/doc/prim_flash.md
index eab83ef..cee5bda 100644
--- a/hw/ip/prim/doc/prim_flash.md
+++ b/hw/ip/prim/doc/prim_flash.md
@@ -48,21 +48,24 @@
 
 ### Flash Request/Response Signals
 
-Name         | In/Out | Description
--------------|--------|---------------------------------
-rd           | input  | read request
-prog         | input  | program request
-prog_last    | input  | last program beat
-prog_type    | input  | type of program requested: currently there are only two types, program normal and program repair
-pg_erase     | input  | page erase request
-bk_erase     | output | bank erase request
-addr         | input  | requested transaction address
-part         | input  | requested transaction partition
-info_sel     | input  | if requested transaction is information partition, the type of information partition accessed
-he           | output | high endurance enable for requested address
-prog_data    | input  | program data
-ack          | output | transction acknowledgement
-rd_data      | output | transaction done
+Name               | In/Out | Description
+-------------------|--------|---------------------------------
+rd                 | input  | read request
+prog               | input  | program request
+prog_last          | input  | last program beat
+prog_type          | input  | type of program requested: currently there are only two types, program normal and program repair
+pg_erase           | input  | page erase request
+bk_erase           | output | bank erase request
+erase_suspend      | input  | erase suspend request
+addr               | input  | requested transaction address
+part               | input  | requested transaction partition
+info_sel           | input  | if requested transaction is information partition, the type of information partition accessed
+he                 | output | high endurance enable for requested address
+prog_data          | input  | program data
+ack                | output | transction acknowledge
+rd_data            | output | transaction read data
+done               | output | transaction done
+erase_suspend_done | output | erase suspend done
 
 
 # Theory of Operations
@@ -79,7 +82,42 @@
 Whereas a program or erase may have a gap extending up to uS or even mS.
 
 It is the flash wrapper's decision on how many outstanding transaction to accept.
-The following diagram is one such example:
+The following are examples for read, program and erase transactions.
+
+### Read
+{{< wavejson >}}
+{signal: [
+  {name: 'clk_i',     wave: 'p................'},
+  {name: 'rd_i',      wave: '011..0.1..0......'},
+  {name: 'addr_i',    wave: 'x22..x.2..x......'},
+  {name: 'ack_o',     wave: '1.0.10...10......'},
+  {name: 'done_o',    wave: '0...10...10....10'},
+  {name: 'rd_data_o', wave: 'x...2x...2x....2x'},
+]}
+{{< /wavejson >}}
+
+### Program
+{{< wavejson >}}
+{signal: [
+  {name: 'clk_i',       wave: 'p................'},
+  {name: 'prog_i',      wave: '011...0.1....0...'},
+  {name: 'prog_type_i', wave: 'x22...x.2....x...'},
+  {name: 'prog_data_i', wave: 'x22...x.2....x...'},
+  {name: 'prog_last_i', wave: '0.......1....0...'},
+  {name: 'ack_o',       wave: '010..10.....10...'},
+  {name: 'done_o',      wave: '0..............10'},
+]}
+{{< /wavejson >}}
+
+### Erase
+{{< wavejson >}}
+{signal: [
+  {name: 'clk_i',     wave: 'p................'},
+  {name: '*_erase_i', wave: '01.0.........1.0.'},
+  {name: 'ack_o',     wave: '0.10..........10.'},
+  {name: 'done_o',    wave: '0.....10.........'},
+]}
+{{< /wavejson >}}
 
 ## Initlialization
 
@@ -100,3 +138,20 @@
 ## Program Type
 The `prog_type` input informs the flash wrapper what type of program operation it should perform.
 A program type not supported by the wrapper, indicated through `prog_type_avail` shall never be issued to the flash wrapper.
+
+## Erase Suspend
+Since erase operations can take a significant amount of time, sometimes it is necessary for software or other components to suspend the operation.
+The suspend operation follows a similar request (`erase_suspend_req` and done (`erase_suspend_done`) interface.
+When the erase suspend completes, the flash wrapper circuitry also asserts `done` for the ongoing erase transaction to ensure all hardware gracefully completes.
+
+The following is an example diagram
+{{< wavejson >}}
+{signal: [
+  {name: 'clk_i',                wave: 'p................'},
+  {name: 'pg_erase_i',           wave: '01............0..'},
+  {name: 'ack_o',                wave: '1.0..............'},
+  {name: 'erase_suspend_i',      wave: '0.....1.......0..'},
+  {name: 'done_o',               wave: '0............10..'},
+  {name: 'erase_suspend_done_o', wave: '0............10..'},
+]}
+{{< /wavejson >}}