[U-Boot] [PATCH 0/4] spi: exynos: Improve performance

This patchset has a set of patches which improves the performance of spi on exynos. Have combined all individual patches into a single patchset. Patches are based on u-boot-spi.git master branch.
Rajeshwari S Shinde (3): exynos: Export timer_get_us() to get microsecond timer spi: exynos: Support a delay after deactivate spi: exynos: Minimise access to SPI FIFO level spi: exynos: Support word transfers
arch/arm/include/asm/arch-exynos/spi.h | 11 +++- drivers/spi/exynos_spi.c | 107 +++++++++++++++++++++++++++------ include/common.h | 6 ++ 3 files changed, 104 insertions(+), 20 deletions(-)

From: Rajeshwari Shinde rajeshwari.s@samsung.com
This function, if implemented by the board, provides a microsecond timer. The granularity may be larger than 1us if hardware does not support this.
Signed-off-by: Simon Glass sjg@chromium.org Signed-off-by: Rajeshwari S Shinde rajeshwari.s@samsung.com --- include/common.h | 6 ++++++ 1 file changed, 6 insertions(+)
diff --git a/include/common.h b/include/common.h index 8addf43..42964bc 100644 --- a/include/common.h +++ b/include/common.h @@ -596,6 +596,12 @@ void ddr_enable_ecc(unsigned int dram_size); #endif #endif
+/* + * Return the current value of a monotonically increasing microsecond timer. + * Granularity may be larger than 1us if hardware does not support this. + */ +ulong timer_get_us(void); + /* $(CPU)/cpu.c */ static inline int cpumask_next(int cpu, unsigned int mask) {

For devices that need some time to react after a spi transaction finishes, add the ability to set a delay.
Implement this as a delay on the first/next transaction to avoid any delay in the fairly common case where a SPI transaction is followed by other processing.
Signed-off-by: Simon Glass sjg@chromium.org Signed-off-by: Rajeshwari S Shinde rajeshwari.s@samsung.com --- drivers/spi/exynos_spi.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+)
diff --git a/drivers/spi/exynos_spi.c b/drivers/spi/exynos_spi.c index efc8b1e..d7fdaac 100644 --- a/drivers/spi/exynos_spi.c +++ b/drivers/spi/exynos_spi.c @@ -26,6 +26,7 @@ struct spi_bus { struct exynos_spi *regs; int inited; /* 1 if this bus is ready for use */ int node; + uint deactivate_delay_us; /* Delay to wait after deactivate */ };
/* A list of spi buses that we know about */ @@ -40,6 +41,8 @@ struct exynos_spi_slave { enum periph_id periph_id; /* Peripheral ID for this device */ unsigned int fifo_size; int skip_preamble; + struct spi_bus *bus; /* Pointer to our SPI bus info */ + ulong last_transaction_us; /* Time of last transaction end */ };
static struct spi_bus *spi_get_bus(unsigned dev_index) @@ -85,6 +88,7 @@ struct spi_slave *spi_setup_slave(unsigned int busnum, unsigned int cs, }
bus = &spi_bus[busnum]; + spi_slave->bus = bus; spi_slave->regs = bus->regs; spi_slave->mode = mode; spi_slave->periph_id = bus->periph_id; @@ -95,6 +99,7 @@ struct spi_slave *spi_setup_slave(unsigned int busnum, unsigned int cs, spi_slave->fifo_size = 256;
spi_slave->skip_preamble = 0; + spi_slave->last_transaction_us = timer_get_us();
spi_slave->freq = bus->frequency; if (max_hz) @@ -359,9 +364,22 @@ void spi_cs_activate(struct spi_slave *slave) { struct exynos_spi_slave *spi_slave = to_exynos_spi(slave);
+ /* If it's too soon to do another transaction, wait */ + if (spi_slave->bus->deactivate_delay_us && + spi_slave->last_transaction_us) { + ulong delay_us; /* The delay completed so far */ + delay_us = timer_get_us() - spi_slave->last_transaction_us; + if (delay_us < spi_slave->bus->deactivate_delay_us) + udelay(spi_slave->bus->deactivate_delay_us - delay_us); + } + clrbits_le32(&spi_slave->regs->cs_reg, SPI_SLAVE_SIG_INACT); debug("Activate CS, bus %d\n", spi_slave->slave.bus); spi_slave->skip_preamble = spi_slave->mode & SPI_PREAMBLE; + + /* Remember time of this transaction so we can honour the bus delay */ + if (spi_slave->bus->deactivate_delay_us) + spi_slave->last_transaction_us = timer_get_us(); }
/** @@ -411,6 +429,8 @@ static int spi_get_config(const void *blob, int node, struct spi_bus *bus) /* Use 500KHz as a suitable default */ bus->frequency = fdtdec_get_int(blob, node, "spi-max-frequency", 500000); + bus->deactivate_delay_us = fdtdec_get_int(blob, node, + "spi-deactivate-delay", 0);
return 0; }

Accessing SPI registers is slow, but access to the FIFO level register in particular seems to be extraordinarily expensive (I measure up to 600ns). Perhaps it is required to synchronise with the SPI byte output logic which might run at 1/8th of the 40MHz SPI speed (just a guess).
Reduce access to this register by filling up and emptying FIFOs more completely, rather than just one word each time around the inner loop.
Since the rxfifo value will now likely be much greater that what we read before we fill the txfifo, we only fill the txfifo halfway. This is because if the txfifo is empty, but the rxfifo has data in it, then writing too much data to the txfifo may overflow the rxfifo as data arrives.
This speeds up SPI flash reading from about 1MB/s to about 2MB/s on snow.
Signed-off-by: Simon Glass sjg@chromium.org Signed-off-by: Rajeshwari S Shinde rajeshwari.s@samsung.com --- drivers/spi/exynos_spi.c | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-)
diff --git a/drivers/spi/exynos_spi.c b/drivers/spi/exynos_spi.c index d7fdaac..7407d6c 100644 --- a/drivers/spi/exynos_spi.c +++ b/drivers/spi/exynos_spi.c @@ -247,24 +247,27 @@ static int spi_rx_tx(struct exynos_spi_slave *spi_slave, int todo,
/* Keep the fifos full/empty. */ spi_get_fifo_levels(regs, &rx_lvl, &tx_lvl); - if (tx_lvl < spi_slave->fifo_size && out_bytes) { + while (tx_lvl < spi_slave->fifo_size/2 && out_bytes) { temp = txp ? *txp++ : 0xff; writel(temp, ®s->tx_data); out_bytes--; + tx_lvl++; } if (rx_lvl > 0) { - temp = readl(®s->rx_data); - if (spi_slave->skip_preamble) { - if (temp == SPI_PREAMBLE_END_BYTE) { - spi_slave->skip_preamble = 0; - stopping = 0; + while (rx_lvl > 0) { + temp = readl(®s->rx_data); + if (spi_slave->skip_preamble) { + if (temp == SPI_PREAMBLE_END_BYTE) { + spi_slave->skip_preamble = 0; + stopping = 0; + } + } else { + if (rxp || stopping) + *rxp++ = temp; + in_bytes--; } - } else { - if (rxp || stopping) - *rxp++ = temp; - in_bytes--; - } - toread--; + toread--; + rx_lvl--; } else if (!toread) { /* * We have run out of input data, but haven't read

Since SPI register access is so expensive, it is worth transferring data a word at a time if we can. This complicates the driver unfortunately.
Use the byte-swapping feature to avoid having to convert to/from big endian in software.
This change increases speed from about 2MB/s to about 4.5MB/s.
Signed-off-by: Simon Glass sjg@chromium.org Signed-off-by: Rajeshwari S Shinde rajeshwari.s@samsung.com --- arch/arm/include/asm/arch-exynos/spi.h | 11 ++++- drivers/spi/exynos_spi.c | 76 +++++++++++++++++++++++++++------- 2 files changed, 71 insertions(+), 16 deletions(-)
diff --git a/arch/arm/include/asm/arch-exynos/spi.h b/arch/arm/include/asm/arch-exynos/spi.h index fb23aa6..147c1a7 100644 --- a/arch/arm/include/asm/arch-exynos/spi.h +++ b/arch/arm/include/asm/arch-exynos/spi.h @@ -22,7 +22,7 @@ struct exynos_spi { unsigned int rx_data; /* 0x1c */ unsigned int pkt_cnt; /* 0x20 */ unsigned char reserved2[4]; - unsigned char reserved3[4]; + unsigned int swap_cfg; /* 0x28 */ unsigned int fb_clk; /* 0x2c */ unsigned char padding[0xffd0]; }; @@ -62,5 +62,14 @@ struct exynos_spi { /* Packet Count */ #define SPI_PACKET_CNT_EN (1 << 16)
+/* Swap config */ +#define SPI_TX_SWAP_EN (1 << 0) +#define SPI_TX_BYTE_SWAP (1 << 2) +#define SPI_TX_HWORD_SWAP (1 << 3) +#define SPI_TX_BYTE_SWAP (1 << 2) +#define SPI_RX_SWAP_EN (1 << 4) +#define SPI_RX_BYTE_SWAP (1 << 6) +#define SPI_RX_HWORD_SWAP (1 << 7) + #endif /* __ASSEMBLY__ */ #endif diff --git a/drivers/spi/exynos_spi.c b/drivers/spi/exynos_spi.c index 7407d6c..699c57e 100644 --- a/drivers/spi/exynos_spi.c +++ b/drivers/spi/exynos_spi.c @@ -204,12 +204,29 @@ static void spi_get_fifo_levels(struct exynos_spi *regs, * * @param regs SPI peripheral registers * @param count Number of bytes to transfer + * @param step Number of bytes to transfer in each packet (1 or 4) */ -static void spi_request_bytes(struct exynos_spi *regs, int count) +static void spi_request_bytes(struct exynos_spi *regs, int count, int step) { + /* For word address we need to swap bytes */ + if (step == 4) { + setbits_le32(®s->mode_cfg, + SPI_MODE_CH_WIDTH_WORD | SPI_MODE_BUS_WIDTH_WORD); + count /= 4; + setbits_le32(®s->swap_cfg, SPI_TX_SWAP_EN | SPI_RX_SWAP_EN | + SPI_TX_BYTE_SWAP | SPI_RX_BYTE_SWAP | + SPI_TX_HWORD_SWAP | SPI_RX_HWORD_SWAP); + } else { + /* Select byte access and clear the swap configuration */ + clrbits_le32(®s->mode_cfg, + SPI_MODE_CH_WIDTH_WORD | SPI_MODE_BUS_WIDTH_WORD); + writel(0, ®s->swap_cfg); + } + assert(count && count < (1 << 16)); setbits_le32(®s->ch_cfg, SPI_CH_RST); clrbits_le32(®s->ch_cfg, SPI_CH_RST); + writel(count | SPI_PACKET_CNT_EN, ®s->pkt_cnt); }
@@ -224,6 +241,7 @@ static int spi_rx_tx(struct exynos_spi_slave *spi_slave, int todo, int toread; unsigned start = get_timer(0); int stopping; + int step;
out_bytes = in_bytes = todo;
@@ -231,10 +249,19 @@ static int spi_rx_tx(struct exynos_spi_slave *spi_slave, int todo, !(spi_slave->mode & SPI_SLAVE);
/* + * Try to transfer words if we can. This helps read performance at + * SPI clock speeds above about 20MHz. + */ + step = 1; + if (!((todo | (uintptr_t)rxp | (uintptr_t)txp) & 3) && + !spi_slave->skip_preamble) + step = 4; + + /* * If there's something to send, do a software reset and set a * transaction size. */ - spi_request_bytes(regs, todo); + spi_request_bytes(regs, todo, step);
/* * Bytes are transmitted/received in pairs. Wait to receive all the @@ -247,14 +274,26 @@ static int spi_rx_tx(struct exynos_spi_slave *spi_slave, int todo,
/* Keep the fifos full/empty. */ spi_get_fifo_levels(regs, &rx_lvl, &tx_lvl); + + /* + * Don't completely fill the txfifo, since we don't want our + * rxfifo to overflow, and it may already contain data. + */ while (tx_lvl < spi_slave->fifo_size/2 && out_bytes) { - temp = txp ? *txp++ : 0xff; + if (!txp) + temp = -1; + else if (step == 4) + temp = *(uint32_t *)txp; + else + temp = *txp; writel(temp, ®s->tx_data); - out_bytes--; - tx_lvl++; + out_bytes -= step; + if (txp) + txp += step; + tx_lvl += step; } - if (rx_lvl > 0) { - while (rx_lvl > 0) { + if (rx_lvl >= step) { + while (rx_lvl >= step) { temp = readl(®s->rx_data); if (spi_slave->skip_preamble) { if (temp == SPI_PREAMBLE_END_BYTE) { @@ -262,12 +301,15 @@ static int spi_rx_tx(struct exynos_spi_slave *spi_slave, int todo, stopping = 0; } } else { - if (rxp || stopping) - *rxp++ = temp; - in_bytes--; + if (rxp || stopping) { + *rxp = temp; + rxp += step; + } + in_bytes -= step; } - toread--; - rx_lvl--; + toread -= step; + rx_lvl -= step; + } } else if (!toread) { /* * We have run out of input data, but haven't read @@ -279,7 +321,7 @@ static int spi_rx_tx(struct exynos_spi_slave *spi_slave, int todo, out_bytes = in_bytes; toread = in_bytes; txp = NULL; - spi_request_bytes(regs, toread); + spi_request_bytes(regs, toread, step); } if (spi_slave->skip_preamble && get_timer(start) > 100) { printf("SPI timeout: in_bytes=%d, out_bytes=%d, ", @@ -323,10 +365,14 @@ int spi_xfer(struct spi_slave *slave, unsigned int bitlen, const void *dout, if ((flags & SPI_XFER_BEGIN)) spi_cs_activate(slave);
- /* Exynos SPI limits each transfer to 65535 bytes */ + /* + * Exynos SPI limits each transfer to 65535 transfers. To keep + * things simple, allow a maximum of 65532 bytes. We could allow + * more in word mode, but the performance difference is small. + */ bytelen = bitlen / 8; for (upto = 0; !ret && upto < bytelen; upto += todo) { - todo = min(bytelen - upto, (1 << 16) - 1); + todo = min(bytelen - upto, (1 << 16) - 4); ret = spi_rx_tx(spi_slave, todo, &din, &dout, flags); if (ret) break;

On Tue, Oct 8, 2013 at 4:20 PM, Rajeshwari S Shinde rajeshwari.s@samsung.com wrote:
This patchset has a set of patches which improves the performance of spi on exynos. Have combined all individual patches into a single patchset. Patches are based on u-boot-spi.git master branch.
Thanks for your patch-set. Can you confirm, all these were tested against on u-boot-spi.git/master?

Hi Jagan,
Yes I have tested them on u-boot-spi.git/master for spi booting.
Regards, Rajeshwari Shinde.
On Tue, Oct 8, 2013 at 6:08 PM, Jagan Teki jagannadh.teki@gmail.com wrote:
On Tue, Oct 8, 2013 at 4:20 PM, Rajeshwari S Shinde rajeshwari.s@samsung.com wrote:
This patchset has a set of patches which improves the performance of spi on exynos. Have combined all individual patches into a single patchset. Patches are based on u-boot-spi.git master branch.
Thanks for your patch-set. Can you confirm, all these were tested against on u-boot-spi.git/master?
-- Thanks, Jagan.
Jagannadha Sutradharudu Teki, E: jagannadh.teki@gmail.com, P: +91-9676773388 Engineer - System Software Hacker U-boot - SPI Custodian and Zynq APSOC Ln: http://www.linkedin.com/in/jaganteki _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot

On Tue, Oct 8, 2013 at 6:11 PM, Rajeshwari Birje rajeshwari.birje@gmail.com wrote:
Hi Jagan,
Yes I have tested them on u-boot-spi.git/master for spi booting.
Sorry for sequence of questions which spi flash parts you tested.?
Regards, Rajeshwari Shinde.
On Tue, Oct 8, 2013 at 6:08 PM, Jagan Teki jagannadh.teki@gmail.com wrote:
On Tue, Oct 8, 2013 at 4:20 PM, Rajeshwari S Shinde rajeshwari.s@samsung.com wrote:
This patchset has a set of patches which improves the performance of spi on exynos. Have combined all individual patches into a single patchset. Patches are based on u-boot-spi.git master branch.
Thanks for your patch-set. Can you confirm, all these were tested against on u-boot-spi.git/master?
-- Thanks, Jagan.
Jagannadha Sutradharudu Teki, E: jagannadh.teki@gmail.com, P: +91-9676773388 Engineer - System Software Hacker U-boot - SPI Custodian and Zynq APSOC Ln: http://www.linkedin.com/in/jaganteki _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
-- Regards, Rajeshwari Shinde

Hi Jagan,
We have W25Q80BW on smdk5250 board.
Regards, Rajeshwari.
On Tue, Oct 8, 2013 at 6:14 PM, Jagan Teki jagannadh.teki@gmail.com wrote:
On Tue, Oct 8, 2013 at 6:11 PM, Rajeshwari Birje rajeshwari.birje@gmail.com wrote:
Hi Jagan,
Yes I have tested them on u-boot-spi.git/master for spi booting.
Sorry for sequence of questions which spi flash parts you tested.?
Regards, Rajeshwari Shinde.
On Tue, Oct 8, 2013 at 6:08 PM, Jagan Teki jagannadh.teki@gmail.com wrote:
On Tue, Oct 8, 2013 at 4:20 PM, Rajeshwari S Shinde rajeshwari.s@samsung.com wrote:
This patchset has a set of patches which improves the performance of spi on exynos. Have combined all individual patches into a single patchset. Patches are based on u-boot-spi.git master branch.
Thanks for your patch-set. Can you confirm, all these were tested against on u-boot-spi.git/master?
-- Thanks, Jagan.
Jagannadha Sutradharudu Teki, E: jagannadh.teki@gmail.com, P: +91-9676773388 Engineer - System Software Hacker U-boot - SPI Custodian and Zynq APSOC Ln: http://www.linkedin.com/in/jaganteki _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
-- Regards, Rajeshwari Shinde
-- Thanks, Jagan.
Jagannadha Sutradharudu Teki, E: jagannadh.teki@gmail.com, P: +91-9676773388 Engineer - System Software Hacker U-boot - SPI Custodian and Zynq APSOC Ln: http://www.linkedin.com/in/jaganteki

On Tue, Oct 8, 2013 at 6:34 PM, Rajeshwari Birje rajeshwari.birje@gmail.com wrote:
Hi Jagan,
We have W25Q80BW on smdk5250 board.
Great, thanks for quick response.
You missed one more patch http://patchwork.ozlabs.org/patch/247461/ may be you have a plan for sending this later, true?
Regards, Rajeshwari.
On Tue, Oct 8, 2013 at 6:14 PM, Jagan Teki jagannadh.teki@gmail.com wrote:
On Tue, Oct 8, 2013 at 6:11 PM, Rajeshwari Birje rajeshwari.birje@gmail.com wrote:
Hi Jagan,
Yes I have tested them on u-boot-spi.git/master for spi booting.
Sorry for sequence of questions which spi flash parts you tested.?
Regards, Rajeshwari Shinde.
On Tue, Oct 8, 2013 at 6:08 PM, Jagan Teki jagannadh.teki@gmail.com wrote:
On Tue, Oct 8, 2013 at 4:20 PM, Rajeshwari S Shinde rajeshwari.s@samsung.com wrote:
This patchset has a set of patches which improves the performance of spi on exynos. Have combined all individual patches into a single patchset. Patches are based on u-boot-spi.git master branch.
Thanks for your patch-set. Can you confirm, all these were tested against on u-boot-spi.git/master?
-- Thanks, Jagan.
Jagannadha Sutradharudu Teki, E: jagannadh.teki@gmail.com, P: +91-9676773388 Engineer - System Software Hacker U-boot - SPI Custodian and Zynq APSOC Ln: http://www.linkedin.com/in/jaganteki _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
-- Regards, Rajeshwari Shinde
-- Thanks, Jagan.
Jagannadha Sutradharudu Teki, E: jagannadh.teki@gmail.com, P: +91-9676773388 Engineer - System Software Hacker U-boot - SPI Custodian and Zynq APSOC Ln: http://www.linkedin.com/in/jaganteki
-- Regards, Rajeshwari Shinde

Hi Jagan,
Posted http://patchwork.ozlabs.org/patch/247461/ V3. Posted it separately as it is arch/arm related.
Regards, Rajeshwari
On Tue, Oct 8, 2013 at 6:36 PM, Jagan Teki jagannadh.teki@gmail.com wrote:
On Tue, Oct 8, 2013 at 6:34 PM, Rajeshwari Birje rajeshwari.birje@gmail.com wrote:
Hi Jagan,
We have W25Q80BW on smdk5250 board.
Great, thanks for quick response.
You missed one more patch http://patchwork.ozlabs.org/patch/247461/ may be you have a plan for sending this later, true?
Regards, Rajeshwari.
On Tue, Oct 8, 2013 at 6:14 PM, Jagan Teki jagannadh.teki@gmail.com wrote:
On Tue, Oct 8, 2013 at 6:11 PM, Rajeshwari Birje rajeshwari.birje@gmail.com wrote:
Hi Jagan,
Yes I have tested them on u-boot-spi.git/master for spi booting.
Sorry for sequence of questions which spi flash parts you tested.?
Regards, Rajeshwari Shinde.
On Tue, Oct 8, 2013 at 6:08 PM, Jagan Teki jagannadh.teki@gmail.com wrote:
On Tue, Oct 8, 2013 at 4:20 PM, Rajeshwari S Shinde rajeshwari.s@samsung.com wrote:
This patchset has a set of patches which improves the performance of spi on exynos. Have combined all individual patches into a single patchset. Patches are based on u-boot-spi.git master branch.
Thanks for your patch-set. Can you confirm, all these were tested against on u-boot-spi.git/master?
-- Thanks, Jagan.
Jagannadha Sutradharudu Teki, E: jagannadh.teki@gmail.com, P: +91-9676773388 Engineer - System Software Hacker U-boot - SPI Custodian and Zynq APSOC Ln: http://www.linkedin.com/in/jaganteki _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
-- Regards, Rajeshwari Shinde
-- Thanks, Jagan.
Jagannadha Sutradharudu Teki, E: jagannadh.teki@gmail.com, P: +91-9676773388 Engineer - System Software Hacker U-boot - SPI Custodian and Zynq APSOC Ln: http://www.linkedin.com/in/jaganteki
-- Regards, Rajeshwari Shinde
-- Thanks, Jagan.
Jagannadha Sutradharudu Teki, E: jagannadh.teki@gmail.com, P: +91-9676773388 Engineer - System Software Hacker U-boot - SPI Custodian and Zynq APSOC Ln: http://www.linkedin.com/in/jaganteki

On Tue, Oct 8, 2013 at 6:42 PM, Rajeshwari Birje rajeshwari.birje@gmail.com wrote:
Hi Jagan,
Posted http://patchwork.ozlabs.org/patch/247461/ V3. Posted it separately as it is arch/arm related.
OK, not a problem I thought it's pure spi.
I will apply spi patches, thanks for your time.
Regards, Rajeshwari
On Tue, Oct 8, 2013 at 6:36 PM, Jagan Teki jagannadh.teki@gmail.com wrote:
On Tue, Oct 8, 2013 at 6:34 PM, Rajeshwari Birje rajeshwari.birje@gmail.com wrote:
Hi Jagan,
We have W25Q80BW on smdk5250 board.
Great, thanks for quick response.
You missed one more patch http://patchwork.ozlabs.org/patch/247461/ may be you have a plan for sending this later, true?
Regards, Rajeshwari.
On Tue, Oct 8, 2013 at 6:14 PM, Jagan Teki jagannadh.teki@gmail.com wrote:
On Tue, Oct 8, 2013 at 6:11 PM, Rajeshwari Birje rajeshwari.birje@gmail.com wrote:
Hi Jagan,
Yes I have tested them on u-boot-spi.git/master for spi booting.
Sorry for sequence of questions which spi flash parts you tested.?
Regards, Rajeshwari Shinde.
On Tue, Oct 8, 2013 at 6:08 PM, Jagan Teki jagannadh.teki@gmail.com wrote:
On Tue, Oct 8, 2013 at 4:20 PM, Rajeshwari S Shinde rajeshwari.s@samsung.com wrote: > This patchset has a set of patches which improves the > performance of spi on exynos. > Have combined all individual patches into a single patchset. > Patches are based on u-boot-spi.git master branch.
Thanks for your patch-set. Can you confirm, all these were tested against on u-boot-spi.git/master?
-- Thanks, Jagan.
Jagannadha Sutradharudu Teki, E: jagannadh.teki@gmail.com, P: +91-9676773388 Engineer - System Software Hacker U-boot - SPI Custodian and Zynq APSOC Ln: http://www.linkedin.com/in/jaganteki _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
-- Regards, Rajeshwari Shinde
-- Thanks, Jagan.
Jagannadha Sutradharudu Teki, E: jagannadh.teki@gmail.com, P: +91-9676773388 Engineer - System Software Hacker U-boot - SPI Custodian and Zynq APSOC Ln: http://www.linkedin.com/in/jaganteki
-- Regards, Rajeshwari Shinde
-- Thanks, Jagan.
Jagannadha Sutradharudu Teki, E: jagannadh.teki@gmail.com, P: +91-9676773388 Engineer - System Software Hacker U-boot - SPI Custodian and Zynq APSOC Ln: http://www.linkedin.com/in/jaganteki
-- Regards, Rajeshwari Shinde

On Tue, Oct 8, 2013 at 4:20 PM, Rajeshwari S Shinde rajeshwari.s@samsung.com wrote:
This patchset has a set of patches which improves the performance of spi on exynos. Have combined all individual patches into a single patchset. Patches are based on u-boot-spi.git master branch.
Rajeshwari S Shinde (3): exynos: Export timer_get_us() to get microsecond timer spi: exynos: Support a delay after deactivate spi: exynos: Minimise access to SPI FIFO level spi: exynos: Support word transfers
arch/arm/include/asm/arch-exynos/spi.h | 11 +++- drivers/spi/exynos_spi.c | 107 +++++++++++++++++++++++++++------ include/common.h | 6 ++ 3 files changed, 104 insertions(+), 20 deletions(-)
Applied to u-boot-spi/master
participants (3)
-
Jagan Teki
-
Rajeshwari Birje
-
Rajeshwari S Shinde