584d7c53bd
This commit introduces new subtarget for Marvell EBU Armada Cortex A53 processor based devices. The first device is Globalscale ESPRESSObin. Some hardware specs: SoC: Marvell Armada 3700LP (88F3720) dual core ARM Cortex A53 processor up to 1.2GHz RAM: 512MB, 1GB or 2GB DDR3 Storage: SATA interface µSD card slot with footprint for an optional 4GB EMMC 4MB SPI NOR flash for bootloader Ethernet: Topaz Networking Switch (88E6341) with 3x GbE ports Connectors: USB 3.0 USB 2.0 µUSB port connected to PL2303SA (USB to serial bridge controller) for UART access Expansion: 2x 46-pin GPIO headers for accessories and shields with I2C, GPIOs, PWM, UART, SPI, MMC, etc MiniPCIe slot Misc: Reset button, JTAG interface Currently booting only from µSD card is supported. The boards depending on date of dispatch can come with various U-Boot versions. For the newest version 2017.03-armada-17.10 no manual intervention should be needed to boot OpenWrt image. For the older ones it's necessary to modify default U-Boot environment: 1. Interrupt boot process to run U-Boot command line, 2. Run following commands: (for version 2017.03-armada-17.06 and 2017.03-armada-17.08) setenv bootcmd "load mmc 0:1 0x4d00000 boot.scr; source 0x4d00000" saveenv (for version 2015.01-armada-17.02 and 2015.01-armada-17.04) setenv bootargs "console=ttyMV0,115200 root=/dev/mmcblk0p2 rw rootwait" setenv bootcmd "ext4load mmc 0:1 ${fdt_addr} armada-3720-espressobin.dtb; ext4load mmc 0:1 ${kernel_addr} Image; booti ${kernel_addr} - ${fdt_addr}" saveenv 3. Poweroff, insert SD card with OpenWrt image, boot and enjoy. Signed-off-by: Tomasz Maciej Nowak <tomek_n@o2.pl>
70 lines
2.1 KiB
Diff
70 lines
2.1 KiB
Diff
From dd7aa8d4b53b3484ba31ba56f3ff1be7deb38530 Mon Sep 17 00:00:00 2001
|
|
From: Maxime Chevallier <maxime.chevallier@smile.fr>
|
|
Date: Tue, 10 Oct 2017 10:43:18 +0200
|
|
Subject: spi: a3700: Change SPI mode before asserting chip-select
|
|
|
|
The spi device mode should be configured in the controller before the
|
|
chip-select is asserted, so that a clock polarity configuration change
|
|
is not interpreted as a clock tick by the device.
|
|
|
|
This patch moves the mode setting to the 'prepare_message' function
|
|
instead of the 'transfer_one' function.
|
|
|
|
By doing so, this patch also removes redundant code in
|
|
a3700_spi_clock_set.
|
|
|
|
This was tested on EspressoBin board, with spidev.
|
|
|
|
Signed-off-by: Maxime Chevallier <maxime.chevallier@smile.fr>
|
|
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
---
|
|
drivers/spi/spi-armada-3700.c | 17 ++++-------------
|
|
1 file changed, 4 insertions(+), 13 deletions(-)
|
|
|
|
--- a/drivers/spi/spi-armada-3700.c
|
|
+++ b/drivers/spi/spi-armada-3700.c
|
|
@@ -214,7 +214,7 @@ static void a3700_spi_mode_set(struct a3
|
|
}
|
|
|
|
static void a3700_spi_clock_set(struct a3700_spi *a3700_spi,
|
|
- unsigned int speed_hz, u16 mode)
|
|
+ unsigned int speed_hz)
|
|
{
|
|
u32 val;
|
|
u32 prescale;
|
|
@@ -239,17 +239,6 @@ static void a3700_spi_clock_set(struct a
|
|
val |= A3700_SPI_CLK_CAPT_EDGE;
|
|
spireg_write(a3700_spi, A3700_SPI_IF_TIME_REG, val);
|
|
}
|
|
-
|
|
- val = spireg_read(a3700_spi, A3700_SPI_IF_CFG_REG);
|
|
- val &= ~(A3700_SPI_CLK_POL | A3700_SPI_CLK_PHA);
|
|
-
|
|
- if (mode & SPI_CPOL)
|
|
- val |= A3700_SPI_CLK_POL;
|
|
-
|
|
- if (mode & SPI_CPHA)
|
|
- val |= A3700_SPI_CLK_PHA;
|
|
-
|
|
- spireg_write(a3700_spi, A3700_SPI_IF_CFG_REG, val);
|
|
}
|
|
|
|
static void a3700_spi_bytelen_set(struct a3700_spi *a3700_spi, unsigned int len)
|
|
@@ -431,7 +420,7 @@ static void a3700_spi_transfer_setup(str
|
|
|
|
a3700_spi = spi_master_get_devdata(spi->master);
|
|
|
|
- a3700_spi_clock_set(a3700_spi, xfer->speed_hz, spi->mode);
|
|
+ a3700_spi_clock_set(a3700_spi, xfer->speed_hz);
|
|
|
|
byte_len = xfer->bits_per_word >> 3;
|
|
|
|
@@ -592,6 +581,8 @@ static int a3700_spi_prepare_message(str
|
|
|
|
a3700_spi_bytelen_set(a3700_spi, 4);
|
|
|
|
+ a3700_spi_mode_set(a3700_spi, spi->mode);
|
|
+
|
|
return 0;
|
|
}
|
|
|