This was my initial fix-attempt for 48MHz not working, but this failed, for the same reason: Sampling 10ns after the falling edge is not enough.
```diff
diff --git a/software/glasgow/gateware/qspi.py b/software/glasgow/gateware/qspi.py
index b54c5b1a..739e2392 100644
--- a/software/glasgow/gateware/qspi.py
+++ b/software/glasgow/gateware/qspi.py
@@ -212,6 +212,14 @@ class QSPIController(wiring.Component):
             deframer.frames.valid.eq(io_streamer.i_stream.valid),
             io_streamer.i_stream.ready.eq(deframer.frames.ready),
         ]
+        if self._ddr:
+            with m.If(self.divisor == 0):
+                m.d.comb += [
+                    deframer.frames.p.port.io0.i.eq(io_streamer.i_stream.p.port.io0.i[1]),
+                    deframer.frames.p.port.io1.i.eq(io_streamer.i_stream.p.port.io1.i[1]),
+                    deframer.frames.p.port.io2.i.eq(io_streamer.i_stream.p.port.io2.i[1]),
+                    deframer.frames.p.port.io3.i.eq(io_streamer.i_stream.p.port.io3.i[1]),
+                ]
 
         connect(m, deframer=deframer.octets, controller=flipped(self.i_octets))
```