Linux SPI subsystem development
 help / color / mirror / Atom feed
From: Lukas Wunner <lukas@wunner.de>
To: "Shih-Yuan Lee (FourDollars)" <fourdollars@debian.org>
Cc: Andy Shevchenko <andriy.shevchenko@intel.com>,
	Mark Brown <broonie@debian.org>,
	Mika Westerberg <mika.westerberg@linux.intel.com>,
	Daniel Mack <daniel@zonque.org>,
	Haojian Zhuang <haojian.zhuang@gmail.com>,
	Robert Jarzmik <robert.jarzmik@free.fr>,
	linux-arm-kernel@lists.infradead.org, linux-spi@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH v16 5/7] spi: pxa2xx: disable DMA for Apple MacBook8,1
Date: Sun, 26 Jul 2026 18:14:35 +0200	[thread overview]
Message-ID: <amYya_hiHM6lrxTX@wunner.de> (raw)
In-Reply-To: <CAAT15mMaZWdkp9YRKvRDRw-WCA-4nWGGo8gge=D7oBKUr1yysw@mail.gmail.com>

On Sun, Jul 26, 2026 at 11:41:39PM +0800, Shih-Yuan Lee (FourDollars) wrote:
> Direct MMIO inspection of the LPSS DMA controller (PCI device 00:15.0)
> on physical MacBook8,1 hardware reveals that Apple's EFI firmware
> leaves the functional reset register (LPSS_PRIV_RESETS at BAR0 +
> 0x204) permanently set to 0x00000000 (held in reset).
> 
> Since the LPSS DMA controller is held in reset (0x0) by EFI firmware
> and the SPI peripheral relies on the dedicated OOB GpioInt() line for
> PIO transfers, forcing PIO mode via the DMI quirk in spi-pxa2xx-pci.c
> accurately reflects how EFI configures the hardware, allowing the
> driver to operate reliably out-of-the-box without system hangs.

The OOB GpioInt() and the DMA controller are two different things:
The former allows the peripheral to signal that a key has been pressed etc,
whereas the latter allows feeding the FIFOs of the SPI host controller
without CPU involvement (or with *less* CPU involvement, the CPU is still
needed to configure the DMA engine for a transfer).

I'm not sure why Apple chose to keep the DMA controller in reset,
but have you explored enabling it on boot?  If this can only be performed
before EFI hands over control to the OS, then it could be done in the
EFI stub, see setup_quirks() in drivers/firmware/efi/libstub/x86-stub.c.
Or maybe it can be done at runtime after the kernel has assumed control,
I'm not sure.

Thanks,

Lukas

  reply	other threads:[~2026-07-26 16:14 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-20 16:21 [PATCH v16 0/7] spi: pxa2xx: Fix PM and interrupt issues on Intel LPSS SPI Shih-Yuan Lee
2026-07-20 16:21 ` [PATCH v16 1/7] spi: pxa2xx: introduce clock enable and disable helper functions Shih-Yuan Lee
2026-07-20 19:22   ` Andy Shevchenko
2026-07-26  8:15     ` Shih-Yuan Lee (FourDollars)
2026-07-20 16:21 ` [PATCH v16 2/7] spi: pxa2xx: introduce suspended flag for interrupt synchronization Shih-Yuan Lee
2026-07-20 17:18   ` Mark Brown
2026-07-26 10:35     ` Shih-Yuan Lee (FourDollars)
2026-07-20 16:21 ` [PATCH v16 3/7] spi: pxa2xx: overhaul teardown and suspend sequence using pxa2xx_spi_off Shih-Yuan Lee
2026-07-20 19:53   ` Andy Shevchenko
2026-07-26 11:12     ` Shih-Yuan Lee (FourDollars)
2026-07-20 16:21 ` [PATCH v16 4/7] spi: pxa2xx: lock out runtime autosuspend for Intel LPSS SPI in PIO mode Shih-Yuan Lee
2026-07-20 19:55   ` Andy Shevchenko
2026-07-26 11:18     ` Shih-Yuan Lee (FourDollars)
2026-07-20 16:21 ` [PATCH v16 5/7] spi: pxa2xx: disable DMA for Apple MacBook8,1 Shih-Yuan Lee
2026-07-20 19:27   ` Andy Shevchenko
2026-07-21 14:49     ` Shih-Yuan Lee (FourDollars)
2026-07-21 20:31       ` Andy Shevchenko
2026-07-21  9:00   ` Lukas Wunner
2026-07-21  9:26     ` Shih-Yuan Lee (FourDollars)
2026-07-21 14:34       ` Shih-Yuan Lee (FourDollars)
2026-07-21 15:05         ` Mark Brown
2026-07-21 15:26           ` Shih-Yuan Lee (FourDollars)
2026-07-21 16:09             ` Shih-Yuan Lee (FourDollars)
2026-07-21 20:41               ` Andy Shevchenko
2026-07-26 15:41                 ` Shih-Yuan Lee (FourDollars)
2026-07-26 16:14                   ` Lukas Wunner [this message]
2026-07-22  9:58               ` Lukas Wunner
2026-07-21 20:28             ` Andy Shevchenko
2026-07-20 16:21 ` [PATCH v16 6/7] spi: pxa2xx: restore LPSS private register state on S3 resume Shih-Yuan Lee
2026-07-20 19:59   ` Andy Shevchenko
2026-07-26 11:48     ` Shih-Yuan Lee (FourDollars)
2026-07-20 16:21 ` [PATCH v16 7/7] spi: pxa2xx: rename local status variable to ret Shih-Yuan Lee
2026-07-20 19:56   ` Andy Shevchenko
2026-07-26 11:23     ` Shih-Yuan Lee (FourDollars)

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=amYya_hiHM6lrxTX@wunner.de \
    --to=lukas@wunner.de \
    --cc=andriy.shevchenko@intel.com \
    --cc=broonie@debian.org \
    --cc=daniel@zonque.org \
    --cc=fourdollars@debian.org \
    --cc=haojian.zhuang@gmail.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-spi@vger.kernel.org \
    --cc=mika.westerberg@linux.intel.com \
    --cc=robert.jarzmik@free.fr \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox