Re: [PATCH v16 5/7] spi: pxa2xx: disable DMA for Apple MacBook8,1
Andy Shevchenko <[email protected]> Mon, 20 Jul 2026 22:27:14 +0300
| Newsgroups | org.kernel.vger.linux-spi,org.infradead.lists.linux-arm-kernel,org.kernel.vger.linux-kernel |
|---|---|
| Organization | Intel Finland Oy - BIC 0357606-4 - c/o Alberga Business Park, 6 krs, Bertel Jungin Aukio 5, 02600 Espoo |
| Message-ID | <[email protected]> |
On Tue, Jul 21, 2026 at 12:21:14AM +0800, Shih-Yuan Lee wrote: > On MacBook8,1 (early 2015 12" MacBook), the LPSS SPI controller at > 00:15.4 suffers from hardware DMA handshake failures and interrupt > routing bugs, causing keyboard/touchpad transactions to fail when > DMA is enabled. Why? The thing like this I noticed on some other HW which required different DMA settings. Have you tried to investigate the issue more? > Move the forced PIO mode DMI quirk to spi-pxa2xx-pci.c (the LPSS host > controller PCI glue driver) to avoid layering violations in client > drivers (such as applespi). > > Add an explicit DMI match table for MacBook8,1 and a module parameter > spi_pxa2xx_force_pio to allow forcing PIO mode on demand. This looks like a hack. Please, if you have a hardware, try to dump the errors, collect the data corruption or timeouts and provide more information. DMA for SPI on LPSS hardware never was a problem (unlike UART in some cases). I'm almost 100% sure the problem is in DMA configuration / setting bits. ... > #include <linux/dmaengine.h> > #include <linux/platform_data/dma-dw.h> > +#include <linux/dmi.h> Keep list ordered. > #include "spi-pxa2xx.h" ... > +static bool spi_pxa2xx_force_pio; > +module_param_named(force_pio, spi_pxa2xx_force_pio, bool, 0444); > +MODULE_PARM_DESC(force_pio, "Force PIO mode (disables DMA) for SPI transfers. ([0] = disabled, 1 = enabled)"); No. There is no room for module parameters like this. -- With Best Regards, Andy Shevchenko