* to have a CS go down over the full transfer
*/
-#if defined(CONFIG_ARCH_MESON64_ODROID_COMMON)
-static unsigned int force64b;
-module_param(force64b, uint, 0000);
-MODULE_PARM_DESC(force64b, "force 64bits fb data");
-#endif
-
/* Register Map */
#define SPICC_RXDATA 0x00
static void meson_spicc_setup_pio_burst(struct meson_spicc_device *spicc)
{
- unsigned int burst_len;
-
-#if defined(CONFIG_ARCH_MESON64_ODROID_COMMON)
- if (force64b)
- burst_len = min_t(unsigned int,
- spicc->xfer_remain / spicc->bytes_per_word,
- spicc->data->fifo_size << 1);
- else
- burst_len = min_t(unsigned int,
- spicc->xfer_remain / spicc->bytes_per_word,
- spicc->data->fifo_size);
-#else
- burst_len = min_t(unsigned int,
+ unsigned int burst_len = min_t(unsigned int,
spicc->xfer_remain / spicc->bytes_per_word,
spicc->data->fifo_size);
-#endif
+
/* Setup Xfer variables */
spicc->tx_remain = burst_len;
spicc->rx_remain = burst_len;
spicc->xfer_remain = xfer->len;
#if defined(CONFIG_ARCH_MESON64_ODROID_COMMON)
- if (force64b && (xfer->len >= 64)) {
- if ((xfer->bits_per_word == 8) && ((xfer->len % 8) == 0))
- xfer->bits_per_word = 64;
+ if ((xfer->len >= 64) && (xfer->bits_per_word == 8) && ((xfer->len % 8) == 0)) {
+ int cnt = xfer->len / 8;
+ int i;
+
+ u64 *tx_buf = (u64 *) &spicc->tx_buf[0];
+ for (i = 0; i < cnt; i++)
+ tx_buf[i] = __swab64p((__u64 *) &spicc->tx_buf[i * 8]);
+
+ xfer->bits_per_word = 64;
}
#endif
/* Pre-calculate word size */
spicc->pinctrl = NULL;
dev_err(&pdev->dev, "spi pinmux : can't get spicc_pins\n");
}
- if (force64b)
- dev_info(&pdev->dev, "*** force64b flags is true ***\n");
#endif
device_reset_optional(&pdev->dev);