ralink: speed selection was broken in spi-mt7621
authorJohn Crispin <john@openwrt.org>
Fri, 2 Oct 2015 10:52:24 +0000 (10:52 +0000)
committerJohn Crispin <john@openwrt.org>
Fri, 2 Oct 2015 10:52:24 +0000 (10:52 +0000)
Signed-off-by: John Crispin <blogic@openwrt.org>
Backport of r47073

SVN-Revision: 47097

target/linux/ramips/patches-3.18/0061-SPI-ralink-add-mt7621-SoC-spi-driver.patch

index 2ba1ee87762784d63e7079a9a556a4b25563b8c7..589c67e707a8fb777835eb322f81483fd93a9da1 100644 (file)
@@ -25,7 +25,7 @@
  obj-$(CONFIG_SPI_OC_TINY)             += spi-oc-tiny.o
 --- /dev/null
 +++ b/drivers/spi/spi-mt7621.c
-@@ -0,0 +1,479 @@
+@@ -0,0 +1,480 @@
 +/*
 + * spi-mt7621.c -- MediaTek MT7621 SPI controller driver
 + *
 +{
 +      u32 master = mt7621_spi_read(rs, MT7621_SPI_MASTER);
 +
-+      master &= ~(0xfff << 16);
-+      master |= 1 << 16;
 +      master |= 7 << 29;
 +      master |= 1 << 2;
 +      if (duplex)
 +              master |= 1 << 10;
++      else
++              master &= ~(1 << 10);
 +
 +      mt7621_spi_write(rs, MT7621_SPI_MASTER, master);
 +}
 +
 +              for (i = 0; i < t->len; i++, len++)
 +                      data[len / 4] |= buf[i] << (8 * (len & 3));
++              if (speed > t->speed_hz)
++                      speed = t->speed_hz;
 +      }
 +
 +      if (WARN_ON(rx_len > 16)) {
 +      for (i = 0; i < rx_len; i += 4)
 +              data[i / 4] = mt7621_spi_read(rs, MT7621_SPI_DATA4 + i);
 +
-+      //m->actual_length = len + rx_len;
 +      m->actual_length = rx_len;
 +
 +      len = 0;