backports: Add patch for cw1200_sdio with kernels < 3.2
authorSolomon Peachy <pizza@shaftnet.org>
Thu, 15 Aug 2013 12:55:57 +0000 (08:55 -0400)
committerLuis R. Rodriguez <mcgrof@do-not-panic.com>
Fri, 16 Aug 2013 03:06:44 +0000 (20:06 -0700)
Without this patch, the hardware *will* hang on <3.2 kernels when a
512-byte SDIO transfer occurs.

3.2-rc added an SDIO quirk to work around this, so this code was
stripped from the driver when committed to the mainline.

Signed-off-by: Solomon Peachy <pizza@shaftnet.org>
Signed-off-by: Luis R. Rodriguez <mcgrof@do-not-panic.com>
patches/collateral-evolutions/network/75-cw1200-sdio-quirk/cw1200.patch [new file with mode: 0644]

diff --git a/patches/collateral-evolutions/network/75-cw1200-sdio-quirk/cw1200.patch b/patches/collateral-evolutions/network/75-cw1200-sdio-quirk/cw1200.patch
new file mode 100644 (file)
index 0000000..2533051
--- /dev/null
@@ -0,0 +1,15 @@
+--- a/drivers/net/wireless/cw1200/cw1200_sdio.c
++++ b/drivers/net/wireless/cw1200/cw1200_sdio.c
+@@ -253,6 +253,12 @@ static size_t cw1200_sdio_align_size(struct hwbus_priv *self, size_t size)
+       else
+               size = sdio_align_size(self->func, size);
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 2, 0))
++      /* A quirk to handle this was committed in 3.2-rc */
++      if (size == SDIO_BLOCK_SIZE)
++              size += SDIO_BLOCK_SIZE;  /* HW bug; force use of block mode */
++#endif
++
+       return size;
+ }