kernel: update kernel 3.18 to version 3.18.23
[openwrt/staging/chunkeey.git] / target / linux / ramips / patches-3.18 / 0061-SPI-ralink-add-mt7621-SoC-spi-driver.patch
index 2ba1ee87762784d63e7079a9a556a4b25563b8c7..5aa119e1df08ba9e34d5ea78ad605c789d68d70d 100644 (file)
@@ -1,6 +1,6 @@
 --- a/drivers/spi/Kconfig
 +++ b/drivers/spi/Kconfig
-@@ -439,6 +439,12 @@
+@@ -439,6 +439,12 @@ config SPI_RT2880
        help
          This selects a driver for the Ralink RT288x/RT305x SPI Controller.
  
@@ -15,7 +15,7 @@
        depends on ARCH_S3C24XX
 --- a/drivers/spi/Makefile
 +++ b/drivers/spi/Makefile
-@@ -46,6 +46,7 @@
+@@ -46,6 +46,7 @@ obj-$(CONFIG_SPI_LM70_LLP)           += spi-lm70l
  obj-$(CONFIG_SPI_MPC512x_PSC)         += spi-mpc512x-psc.o
  obj-$(CONFIG_SPI_MPC52xx_PSC)         += spi-mpc52xx-psc.o
  obj-$(CONFIG_SPI_MPC52xx)             += spi-mpc52xx.o
@@ -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;