ramips: fix 16 bit IO on newer cores
Signed-off-by: John Crispin <blogic@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/branches/chaos_calmer@49203 3c298f89-4303-0410-b956-a3cf2f4a3e73master
parent
dfcf8a8dbe
commit
53c70521a6
|
@ -25,7 +25,7 @@
|
||||||
obj-$(CONFIG_SPI_OC_TINY) += spi-oc-tiny.o
|
obj-$(CONFIG_SPI_OC_TINY) += spi-oc-tiny.o
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/drivers/spi/spi-mt7621.c
|
+++ b/drivers/spi/spi-mt7621.c
|
||||||
@@ -0,0 +1,390 @@
|
@@ -0,0 +1,391 @@
|
||||||
+/*
|
+/*
|
||||||
+ * spi-mt7621.c -- MediaTek MT7621 SPI controller driver
|
+ * spi-mt7621.c -- MediaTek MT7621 SPI controller driver
|
||||||
+ *
|
+ *
|
||||||
|
@ -217,19 +217,20 @@
|
||||||
+
|
+
|
||||||
+ list_for_each_entry(t, &m->transfers, transfer_list) {
|
+ list_for_each_entry(t, &m->transfers, transfer_list) {
|
||||||
+ const u8 *buf = t->tx_buf;
|
+ const u8 *buf = t->tx_buf;
|
||||||
|
+ int rlen = t->len;
|
||||||
+
|
+
|
||||||
+ if (t->rx_buf)
|
+ if (t->rx_buf)
|
||||||
+ rx_len += t->len;
|
+ rx_len += rlen;
|
||||||
+
|
+
|
||||||
+ if (!buf)
|
+ if (!buf)
|
||||||
+ continue;
|
+ continue;
|
||||||
+
|
+
|
||||||
+ if (WARN_ON(len + t->len > 36)) {
|
+ if (WARN_ON(len + rlen > 36)) {
|
||||||
+ status = -EIO;
|
+ status = -EIO;
|
||||||
+ goto msg_done;
|
+ goto msg_done;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ for (i = 0; i < t->len; i++, len++)
|
+ for (i = 0; i < rlen; i++, len++)
|
||||||
+ data[len / 4] |= buf[i] << (8 * (len & 3));
|
+ data[len / 4] |= buf[i] << (8 * (len & 3));
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
|
@ -363,7 +364,7 @@
|
||||||
+
|
+
|
||||||
+ master->setup = mt7621_spi_setup;
|
+ master->setup = mt7621_spi_setup;
|
||||||
+ master->transfer_one_message = mt7621_spi_transfer_one_message;
|
+ master->transfer_one_message = mt7621_spi_transfer_one_message;
|
||||||
+ master->bits_per_word_mask = SPI_BPW_MASK(8);
|
+ master->bits_per_word_mask = SPI_BPW_RANGE_MASK(8, 16);
|
||||||
+ master->dev.of_node = pdev->dev.of_node;
|
+ master->dev.of_node = pdev->dev.of_node;
|
||||||
+ master->num_chipselect = 2;
|
+ master->num_chipselect = 2;
|
||||||
+
|
+
|
||||||
|
|
Loading…
Reference in New Issue