spi: Fix io.port.dq(3) output enable
authorAlbert Ou <albert@sifive.com>
Tue, 2 May 2017 19:07:37 +0000 (12:07 -0700)
committerAlbert Ou <albert@sifive.com>
Tue, 2 May 2017 19:07:37 +0000 (12:07 -0700)
Issue: The output enable signal for DQ[3] is not driven properly.

Symptoms: Output data from master to slave is not properly transmitted
in quad mode.  Data received from the slave is unaffected.

Workaround: When interfacing with SPI flash devices, do not use the
"Quad Input/Output Fast Read" command (opcode 0xEB) while in the
Extended SPI protocol.  Do not use the Native Quad SPI protocol.

src/main/scala/devices/spi/SPIPhysical.scala

index 802233da97db14f3509888de204da26a7446bd95..a9ce0760ce30a793c29522d47d99d4a3db4811b6 100644 (file)
@@ -82,7 +82,7 @@ class SPIPhysical(c: SPIParamsBase) extends Module {
   }
 
   val tx = (ctrl.fmt.iodir === SPIDirection.Tx)
-  val txen_in = (proto.head +: proto.tail.map(_ && tx)).scanRight(Bool(false))(_ || _)
+  val txen_in = (proto.head +: proto.tail.map(_ && tx)).scanRight(Bool(false))(_ || _).init
   val txen = txen_in :+ txen_in.last
 
   io.port.sck := sck