Re: [PATCH 2/2] spi: qcom-geni: Add property to force GSI mode
From: Mukesh Savaliya
Date: Thu Jul 02 2026 - 14:05:03 EST
Hi Konrad,
On 7/2/2026 6:14 PM, Konrad Dybcio wrote:
On 7/2/26 2:39 PM, Konrad Dybcio wrote:It may work, but it may fail too. We rather want to decide FIFO/DMA vs GSI based on fifo_disabled variable.
On 6/30/26 12:06 PM, Pengyu Luo wrote:
On Tue, Jun 30, 2026 at 5:52 PM Mukesh Savaliya
<mukesh.savaliya@xxxxxxxxxxxxxxxx> wrote:
On 6/29/2026 1:33 PM, Pengyu Luo wrote:
On Mon, Jun 29, 2026 at 1:36 PM Mukesh SavaliyaIf firmware doesn't program in GSI, you can't have this working in GSI
<mukesh.savaliya@xxxxxxxxxxxxxxxx> wrote:
Hi Pengyu,
On 6/15/2026 2:48 AM, Dmitry Baryshkov wrote:
On Sun, Jun 14, 2026 at 04:34:24PM +0800, Pengyu Luo wrote:Why to force ? You can directly configure in GSI mode. Note there are
Some devices (such as gaokun3) do not disable FIFO mode, causing the
driver to fallback to FIFO mode by default. However, these platforms
also support GSI mode, which is highly preferred for certain
peripherals like SPI touchscreens to improve performance.
Introduce the "qcom,force-gsi-mode" device property to hint and force
the controller into GSI mode during initialization.
some configuration done prior to Linux bootup too.
Sorry, I don't get it. how? I know there may be a qupfw, but it is
impossible for a normal user like me to generate one with GSI
preferred.
mode, its going to fail (and work with fallback). if it's programmed in
GSI, anyway this will run in GSI mode. So why to add extra things
without any usage ?
What I can confirm is that fifo is not disabled on my device, and gsi
is definitely enabled (under windows, check the register
SE_GENI_DMA_MODE_EN), forcing the device to enable GSI mode on linux
works well.
No, below actually completely makes things wrong.
What's the value of se->base + SE_DMA_IF_EN (+0x2004) on this SE?
I'm sorry, I read the first sentence only..
I think the enabling of DMA and the disabling of FIFO are technically
disjoint operations, but shouldn't be. The programming guide mentions that
FIFO_DISABLE=1 is set to prevent malicious software from snooping the data
from the RX FIFO while the SE is operated through the GSI.
Mukesh, would it make sense to make to rework the checks this way:
Overall it's between GSI vs non GSI [i.e. FIFO/DMA]
fifo_disabled = 1 = GSI [Neither go for FIFO nor for DMA]
fifo_disabled = 0 = non GSI [Then Driver checks data transfer size, if <64 prefer FIFO else go for CPU DMA mode]
dma_enabled = 1 [fifo_disabled = 0] = FIFO OR DMA [Driver checks data size, if <64 prefer FIFO else go for CPU DMA mode]
let me know if there is still a confusion, we can discuss.
if (dma_enabled)
prefer GSI, try SE DMA otherwise
else if (fifo_disabled)
return error, misconfigured SE
else
fifo mode
?
Konrad