RE: [PATCH] spi/zynqmp: remove entry that causes a cs glitch

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Thommy,

> -----Original Message-----
> From: linux-spi-owner@xxxxxxxxxxxxxxx <linux-spi-owner@xxxxxxxxxxxxxxx> On Behalf Of
> Thommy Jakobsson
> Sent: Monday, February 24, 2020 9:57 PM
> To: broonie@xxxxxxxxxx; Michal Simek <michals@xxxxxxxxxx>; linux-spi@xxxxxxxxxxxxxxx
> Cc: Thommy Jakobsson <thommyj@xxxxxxxxx>
> Subject: [PATCH] spi/zynqmp: remove entry that causes a cs glitch
> 
> In the public interface for chipselect, there is always an entry commented as "Dummy generic
> FIFO entry" pushed down to the fifo right after the activate/deactivate command. The dummy
> entry is 0x0, irregardless if the intention was to activate or deactive the cs. This causes the cs
> line to glitch rather than beeing activated in the case when there was an activate command.
> 
> This has been observed on oscilloscope, and have caused problems for at least one specific
> flash device type connected to the qspi port. After the change the glitch is gone and cs goes
> active when intended.
> 
> The reason why this worked before (except for the glitch) was because when sending the actual
> data, the CS bits are once again set. Since most flashes uses mode 0, there is always a half clk
> period anyway for cs to clk active setup time. If someone would rely on timing from a
> chip_select call to a transfer_one, it would fail though.
> 
> It is unknown why the dummy entry was there in the first place, git log seems to be of no help
> in this case. The reference manual gives no indication of the necessity of this. In fact the lower
> 8 bits are a setup (or hold in case of deactivate) time expressed in cycles. So this should not be
> needed to fulfill any setup/hold timings.
> 
> Signed-off-by: Thommy Jakobsson <thommyj@xxxxxxxxx>
> ---
>  drivers/spi/spi-zynqmp-gqspi.c | 3 ---
>  1 file changed, 3 deletions(-)
> 
> diff --git a/drivers/spi/spi-zynqmp-gqspi.c b/drivers/spi/spi-zynqmp-gqspi.c index
> 60c4de4e4485..7412a3042a8d 100644
> --- a/drivers/spi/spi-zynqmp-gqspi.c
> +++ b/drivers/spi/spi-zynqmp-gqspi.c
> @@ -401,9 +401,6 @@ static void zynqmp_qspi_chipselect(struct spi_device *qspi, bool
> is_high)
> 
>  	zynqmp_gqspi_write(xqspi, GQSPI_GEN_FIFO_OFST, genfifoentry);
> 
> -	/* Dummy generic FIFO entry */
> -	zynqmp_gqspi_write(xqspi, GQSPI_GEN_FIFO_OFST, 0x0);
> -
>  	/* Manually start the generic FIFO command */
>  	zynqmp_gqspi_write(xqspi, GQSPI_CONFIG_OFST,
>  			zynqmp_gqspi_read(xqspi, GQSPI_CONFIG_OFST) |
> --
> 2.17.1
Reviewed-by: Naga Sureshkumar Relli <naga.sureshkumar.relli@xxxxxxxxxx>





[Index of Archives]     [Linux Kernel]     [Linux ARM (vger)]     [Linux ARM MSM]     [Linux Omap]     [Linux Arm]     [Linux Tegra]     [Fedora ARM]     [Linux for Samsung SOC]     [eCos]     [Linux Fastboot]     [Gcc Help]     [Git]     [DCCP]     [IETF Announce]     [Security]     [Linux MIPS]     [Yosemite Campsites]

  Powered by Linux