ralink: speed selection was broken in spi-mt7621
authorblogic <blogic@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Thu, 1 Oct 2015 15:35:44 +0000 (15:35 +0000)
committerblogic <blogic@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Thu, 1 Oct 2015 15:35:44 +0000 (15:35 +0000)
Signed-off-by: John Crispin <blogic@openwrt.org>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@47073 3c298f89-4303-0410-b956-a3cf2f4a3e73

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

index 2ba1ee8..589c67e 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;