[U-Boot] [PATCH v5 4/5] mips: ath79: add spi driver

Antony Pavlov antonynpavlov at gmail.com
Wed Dec 30 09:32:52 CET 2015


On Wed, 30 Dec 2015 01:51:47 +0100
Marek Vasut <marex at denx.de> wrote:

> On Wednesday, December 30, 2015 at 12:46:23 AM, Thomas Chou wrote:
> > Hi Marek,
> > 
> > On 2015年12月29日 21:25, Marek Vasut wrote:
> > > On Tuesday, December 29, 2015 at 02:00:27 PM, Thomas Chou wrote:
> > >> Hi Wills,
> > >> 
> > >> On 2015年12月29日 19:17, Wills Wang wrote:
> > >>> diff --git a/arch/mips/mach-ath79/Kconfig
> > >>> b/arch/mips/mach-ath79/Kconfig index 1d92a5b..b5668e9 100644
> > >>> --- a/arch/mips/mach-ath79/Kconfig
> > >>> +++ b/arch/mips/mach-ath79/Kconfig
> > >>> @@ -15,6 +15,7 @@ config SOC_AR933X
> > >>> 
> > >>>    	select SYS_MIPS_CACHE_INIT_RAM_LOAD
> > >>>    	select MIPS_TUNE_24KC
> > >>>    	select AR933X_UART
> > >>> 
> > >>> +	select ATH79_SPI
> > >> 
> > >> Both AR933X_UART and ATH79_SPI should not be selected with mach Kconfig.
> > >> They should go with board defconfig.
> > >> 
> > >>> diff --git a/drivers/spi/ath79_spi.c b/drivers/spi/ath79_spi.c
> > >>> 
> > >>> +static inline void ath79_spi_delay(int max_hz)
> > >>> +{
> > >>> +	uint64_t tick = get_tbclk();
> > >>> +
> > >>> +	do_div(tick, max_hz);
> > >>> +	tick = get_ticks() + tick + 1;	/* get current timestamp */
> > >>> +	while (get_ticks() < tick)	/* loop till event */
> > >>> +		 /*NOP*/;
> > >>> +}
> > >> 
> > >> Use udelay() instead.
> > > 
> > > You mean get_timer() based delay loop, yes ?
> > 
> > Sorry, my mistake. Just realized that we don't have nano delay yet. The
> > code above is fine.
> 
> Just skimming through the code, it seems like bitbanging the SPI using the
> generic soft-spi driver might be easier ;-/

AR9331 SPI controller has special shift register for reading received data,
so you have no need in reading every single receiving MISO bit with separate
gpio access, this can give a small speedup. Next, in openwrt tree there is
a dirty-hacky ath79-spi linux kernel patch for very impressive SPI flash
read speedup (2 MiB/s instead of 20 KiB/s, I have no precise bandwidth
results at the moment).
So for better performance it is reasonable to have separate ath79-spi driver.

-- 
Best regards,
  Antony Pavlov


More information about the U-Boot mailing list