<feed xmlns='http://www.w3.org/2005/Atom'>
<title>u-boot.git/drivers/spi, branch v2025.10</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.</subtitle>
<id>http://cgit.235523.xyz/u-boot.git/atom/drivers/spi?h=v2025.10</id>
<link rel='self' href='http://cgit.235523.xyz/u-boot.git/atom/drivers/spi?h=v2025.10'/>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/u-boot.git/'/>
<updated>2025-09-03T10:32:38Z</updated>
<entry>
<title>spi: exynos: Remove extra term from test</title>
<updated>2025-09-03T10:32:38Z</updated>
<author>
<name>Andrew Goodbody</name>
<email>andrew.goodbody@linaro.org</email>
</author>
<published>2025-09-01T15:13:14Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/u-boot.git/commit/?id=93c3404de9b2320bfd07cd3ce4ab0660f0d39523'/>
<id>urn:sha1:93c3404de9b2320bfd07cd3ce4ab0660f0d39523</id>
<content type='text'>
In spi_rx_tx there comes a test for execution of a code block that
allows execution if rxp is not NULL or stopping is true. However all the
code in this block relies on rxp being valid so allowing entry just if
stopping is true does not make sense. So remove this from the test
expression leaving just a NULL check for rxp.

This issue was found by Smatch.

Signed-off-by: Andrew Goodbody &lt;andrew.goodbody@linaro.org&gt;
Signed-off-by: Minkyu Kang &lt;mk7.kang@samsung.com&gt;
</content>
</entry>
<entry>
<title>spi: atmel_qspi: fix race condition in transfer completion check</title>
<updated>2025-08-13T09:59:02Z</updated>
<author>
<name>Ramin Moussavi</name>
<email>lordrasmus@gmail.com</email>
</author>
<published>2025-07-22T18:27:09Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/u-boot.git/commit/?id=709b5be0a48d4e5bb95ef0b107c56045a8fe67c6'/>
<id>urn:sha1:709b5be0a48d4e5bb95ef0b107c56045a8fe67c6</id>
<content type='text'>
In atmel_qspi_transfer(), the status register is polled with:

  imr = QSPI_SR_INSTRE | QSPI_SR_CSR;
  return readl_poll_timeout(aq-&gt;regs + QSPI_SR, sr,
                            (sr &amp; imr) == imr,
                            ATMEL_QSPI_TIMEOUT);

However, this is racy: QSPI_SR_INSTRE can be set before QSPI_SR_CSR,
and will then be cleared by the read. If that happens, the condition
"(sr &amp; imr) == imr" can never be true, and the function times out.

This race condition is avoided in at91bootstrap by accumulating the
status bits across reads until both bits have been observed:

  /* Poll INSTruction End and Chip Select Rise flags. */
  imr = (QSPI_SR_INSTRE | QSPI_SR_CSR);
  sr = 0;
  do {
    udelay(1);
    sr |= qspi_readl(qspi, QSPI_SR) &amp; imr;
  } while ((--timeout) &amp;&amp; (sr != imr));

Update U-Boot's atmel_qspi_transfer() to use the same pattern,
ensuring that both flags are observed even if they are not set
simultaneously.

Signed-off-by: Ramin Moussavi &lt;lordrasmus@gmail.com&gt;
[eugen.hristev@linaro.org: remove 'sr' and fix commit msg]
Signed-off-by: Eugen Hristev &lt;eugen.hristev@linaro.org&gt;
</content>
</entry>
<entry>
<title>spi: mvebu: Correct dependencies on MVEBU_A3700_SPI</title>
<updated>2025-07-29T06:44:18Z</updated>
<author>
<name>Tom Rini</name>
<email>trini@konsulko.com</email>
</author>
<published>2025-07-02T01:04:05Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/u-boot.git/commit/?id=c8114a01ad66d74586f66c81d40e2c92a6249446'/>
<id>urn:sha1:c8114a01ad66d74586f66c81d40e2c92a6249446</id>
<content type='text'>
A dependency exposed by "make allyesconfig" is that the logic around
this symbol was not quite correct. It needs to depend on ARCH_MVEBU and
ARM64 and then select CLK_MVEBU.

Signed-off-by: Tom Rini &lt;trini@konsulko.com&gt;
Reviewed-by: Stefan Roese &lt;sr@denx.de&gt;
</content>
</entry>
<entry>
<title>Revert "spi: cadence_qspi: Fix odd byte write issue in STIG mode"</title>
<updated>2025-07-24T07:04:04Z</updated>
<author>
<name>Prasanth Babu Mantena</name>
<email>p-mantena@ti.com</email>
</author>
<published>2025-07-16T07:04:07Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/u-boot.git/commit/?id=e6345dfc2a5c86e66cac3372152e3295cfaf1ee2'/>
<id>urn:sha1:e6345dfc2a5c86e66cac3372152e3295cfaf1ee2</id>
<content type='text'>
The buffer that is being used to write into the flash needs
to be handled properly with padding of 0xFF. The place that
this is done can be at a more generic place like spi-nor core.

This reverts commit cd9123507003e07b13e61d72e14e493bb338e827.

Signed-off-by: Prasanth Babu Mantena &lt;p-mantena@ti.com&gt;
Reviewed-by: Neha Malcom Francis &lt;n-francis@ti.com&gt;
Reviewed-by: Venkatesh Yadav Abbarapu &lt;venkatesh.abbarapu@amd.com&gt;
Link: https://lore.kernel.org/r/20250716070407.2082524-1-p-mantena@ti.com
Signed-off-by: Michal Simek &lt;michal.simek@amd.com&gt;
</content>
</entry>
<entry>
<title>spi: coreqspi: add xfer function for PolarFire SoC</title>
<updated>2025-07-17T06:37:36Z</updated>
<author>
<name>Eoin Dickson</name>
<email>eoin.dickson@microchip.com</email>
</author>
<published>2025-07-08T13:01:21Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/u-boot.git/commit/?id=cde3d1ff309f491a49844d6e0eda25b24cc107f9'/>
<id>urn:sha1:cde3d1ff309f491a49844d6e0eda25b24cc107f9</id>
<content type='text'>
Add xfer function to PolarFire SoC coreqspi driver. The read and write
operations are limited to one byte at a time instead of four as CMD18
(multiple block read) reads garbage when four byte ops are enabled.

Signed-off-by: Eoin Dickson &lt;eoin.dickson@microchip.com&gt;
Acked-by: Leo Yu-Chi Liang &lt;ycliang@andestech.com&gt;
</content>
</entry>
<entry>
<title>cadence_qspi: fix odd byte read issue in STIG mode</title>
<updated>2025-07-08T13:01:25Z</updated>
<author>
<name>Venkatesh Yadav Abbarapu</name>
<email>venkatesh.abbarapu@amd.com</email>
</author>
<published>2025-07-02T05:39:53Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/u-boot.git/commit/?id=6b772a0bcc1a3b03b6cfce30864a22149b613036'/>
<id>urn:sha1:6b772a0bcc1a3b03b6cfce30864a22149b613036</id>
<content type='text'>
In DDR mode, even bytes are read using DMA, while the remaining odd
bytes are read using STIG mode. However, the data is not correctly
transferred into the flash read data lower register because the
supplementary byte of the STIG opcode is not being written to the
opcode extension register, resulting in incorrect data being read.

To resolve this issue, when using STIG transactions, the corresponding
supplementary byte of any STIG opcode must be defined in the Opcode
Extension Register (Lower). Issue has been observed on the Macronix
MX66UM2G45G flashes.

Signed-off-by: Prasad Kummari &lt;prasad.kummari@amd.com&gt;
Signed-off-by: Venkatesh Yadav Abbarapu &lt;venkatesh.abbarapu@amd.com&gt;
Link: https://lore.kernel.org/r/20250702053953.640046-1-venkatesh.abbarapu@amd.com
Signed-off-by: Michal Simek &lt;michal.simek@amd.com&gt;
</content>
</entry>
<entry>
<title>spi: cadence_qspi: Set tshsl_ns to at least one sclk_ns</title>
<updated>2025-07-08T13:01:25Z</updated>
<author>
<name>Venkatesh Yadav Abbarapu</name>
<email>venkatesh.abbarapu@amd.com</email>
</author>
<published>2025-07-02T06:57:17Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/u-boot.git/commit/?id=bfa3f147e1b5df74db8cdffbef5a276d2c2daec3'/>
<id>urn:sha1:bfa3f147e1b5df74db8cdffbef5a276d2c2daec3</id>
<content type='text'>
tshsl_ns is the clock delay for chip select deassert. This is the delay in
master reference clocks for the length that the master mode chip select
outputs are de-asserted between transactions.

The minimum delay is always SCLK period to ensure the chip select is never
re-asserted within one SCLK period.

That is why tshsl_ns delay should be at least one sclk_ns value. If it is
less than sclk_ns, set it equal to sclk_ns.

Signed-off-by: Ashok Reddy Soma &lt;ashok.reddy.soma@amd.com&gt;
Signed-off-by: Venkatesh Yadav Abbarapu &lt;venkatesh.abbarapu@amd.com&gt;
Link: https://lore.kernel.org/r/20250702065717.3871435-1-venkatesh.abbarapu@amd.com
Signed-off-by: Michal Simek &lt;michal.simek@amd.com&gt;
</content>
</entry>
<entry>
<title>spi: cadence_qspi: Fix odd byte write issue in STIG mode</title>
<updated>2025-07-08T12:58:44Z</updated>
<author>
<name>Venkatesh Yadav Abbarapu</name>
<email>venkatesh.abbarapu@amd.com</email>
</author>
<published>2025-07-04T04:04:44Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/u-boot.git/commit/?id=cd9123507003e07b13e61d72e14e493bb338e827'/>
<id>urn:sha1:cd9123507003e07b13e61d72e14e493bb338e827</id>
<content type='text'>
Starting from 'commit &lt;8077d296adff&gt; ("spi: cadence-quadspi: Use STIG
mode for all ops with small payload") the utilization of STIG mode
has been implemented for read and write operations involving less
than 8 bytes of data.

However, following this commit, encountering timeout issues occurs when
writing odd bytes of data in DDR mode, as indicated below:
"jedec_spi_nor flash@0: flash operation timed out
SF: 3 bytes @ 0x0 Written: ERROR -110"

To resolve this issue, the number of bytes to write has been updated
specifically for DDR mode.

Signed-off-by: Tejas Bhumkar &lt;tejas.arvind.bhumkar@amd.com&gt;
Signed-off-by: Venkatesh Yadav Abbarapu &lt;venkatesh.abbarapu@amd.com&gt;
Link: https://lore.kernel.org/r/20250704040444.671604-1-venkatesh.abbarapu@amd.com
Signed-off-by: Michal Simek &lt;michal.simek@amd.com&gt;
</content>
</entry>
<entry>
<title>nxp: Prepare macros for KVM changes</title>
<updated>2025-06-27T17:48:20Z</updated>
<author>
<name>Ilias Apalodimas</name>
<email>ilias.apalodimas@linaro.org</email>
</author>
<published>2025-06-18T06:58:12Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/u-boot.git/commit/?id=b56c0632ad62415a40216d6f4de850e870163a6f'/>
<id>urn:sha1:b56c0632ad62415a40216d6f4de850e870163a6f</id>
<content type='text'>
A following patch is replacing our IO accessors with
do { ... } while(0) ones in order to make them usable with KVM.

That leads to an error eventually looking like this:
arch/arm/include/asm/io.h:62:9: error: expected expression before 'do'
   62 |         do {                                            \
      |         ^~
arch/arm/include/asm/io.h:211:41: note: in expansion of macro '__raw_writel'
  211 | #define out_arch(type,endian,a,v)       __raw_write##type(cpu_to_##endian(v),a)
      |                                         ^~~~~~~~~~~
arch/arm/include/asm/io.h:223:25: note: in expansion of macro 'out_arch'
  223 | #define out_be32(a,v)   out_arch(l,be32,a,v)
      |                         ^~~~~~~~
drivers/spi/fsl_dspi.c:127:17: note: in expansion of macro 'out_be32'
  127 |                 out_be32(addr, val) : out_le32(addr, val);
      |                 ^~~~~~~~

So adjust the current macros and code to be compatible with the upcoming
change.

Signed-off-by: Ilias Apalodimas &lt;ilias.apalodimas@linaro.org&gt;
Reviewed-by: Tom Rini &lt;trini@konsulko.com&gt;
</content>
</entry>
<entry>
<title>spi: fspi: dev_dbg() call assumes fdt_addr_t always a long long</title>
<updated>2025-05-12T21:42:53Z</updated>
<author>
<name>Jonathan Currier</name>
<email>dullfire@yahoo.com</email>
</author>
<published>2025-05-07T08:36:23Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/u-boot.git/commit/?id=e2ebfe3c9a1b66ab7c9c86449ceb4a11986afb46'/>
<id>urn:sha1:e2ebfe3c9a1b66ab7c9c86449ceb4a11986afb46</id>
<content type='text'>
On 32-bit systems, e.g. i.mxrt-1170 fdt_addr_t may only be 32-bit.
Cast to a "long long" for garbage avoidance.

Signed-off-by: Jonathan Currier &lt;dullfire@yahoo.com&gt;
</content>
</entry>
</feed>
