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

Marek Vasut marex at denx.de
Wed Dec 30 09:55:50 CET 2015


On Wednesday, December 30, 2015 at 09:32:52 AM, Antony Pavlov wrote:
> 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.

OK

Best regards,
Marek Vasut


More information about the U-Boot mailing list