static u32 zorro_esp_dma_length_limit(struct esp *esp, u32 dma_addr,
                                        u32 dma_len)
 {
-       return dma_len > 0xFFFF ? 0xFFFF : dma_len;
+       return dma_len > (1U << 16) ? (1U << 16) : dma_len;
+}
+
+static u32 fastlane_esp_dma_length_limit(struct esp *esp, u32 dma_addr,
+                                       u32 dma_len)
+{
+       /* The old driver used 0xfffc as limit, so do that here too */
+       return dma_len > 0xfffc ? 0xfffc : dma_len;
 }
 
 static void zorro_esp_reset_dma(struct esp *esp)
        .esp_write8             = zorro_esp_write8,
        .esp_read8              = zorro_esp_read8,
        .irq_pending            = fastlane_esp_irq_pending,
-       .dma_length_limit       = zorro_esp_dma_length_limit,
+       .dma_length_limit       = fastlane_esp_dma_length_limit,
        .reset_dma              = zorro_esp_reset_dma,
        .dma_drain              = zorro_esp_dma_drain,
        .dma_invalidate         = fastlane_esp_dma_invalidate,