linux/drivers/spi
Richard Fitzgerald cad16d850e
spi: cs42l43: Workaround for wrong speaker ID on Dell XPS 13 DX13260
On Dell XPS 13 DX13260 create an acpi_gpio_mapping with exactly two
GPIO entries to point at the two pins in the GpioIo(). Use this to
read the speaker ID GPIOs.

This fixes problems on Dell XPS 13 DX13260:

- No speaker audio
- The wrong firmware was loaded so the speaker protection did not match
  the speaker characteristics.

The Dell XPS 13 DX13260 has two speaker ID GPIOs, to form a 2-bit ID. The
ACPI GpioIo() has both pins but the Linux-specific spk-id-gpios property
only has a mapping to the first pin. This meant that the speaker ID was
wrong in most cases, and that would lead to the codec driver loading the
wrong amp firmware, or not finding a firmware (as 0 is not a valid ID on
this laptop).

Assisted-by: Codex:gpt-6-sol
Reported-by: Wiza Jalakasi <wjalakasi@gmail.com>
Closes: https://bugzilla.kernel.org/show_bug.cgi?id=221956
Tested-by: Wiza Jalakasi <wjalakasi@gmail.com>
Fixes: f3c6051477 ("spi: cs42l43: Add GPIO speaker id support to the bridge configuration")
Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com>
Reviewed-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Link: https://patch.msgid.link/20261001085830.4014291-1-rf@opensource.cirrus.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2026-10-01 16:38:05 +01:00
..
tests spi: Add KUnit coverage for DMA mapping error paths 2026-08-14 16:48:52 +01:00
.kunitconfig spi: Add KUnit coverage for DMA mapping error paths 2026-08-14 16:48:52 +01:00
atmel-quadspi.c spi: atmel-quadspi: use modern PM macros 2026-08-07 18:57:40 +01:00
internals.h spi: Add KUnit coverage for DMA mapping error paths 2026-08-14 16:48:52 +01:00
Kconfig spi: Add KUnit coverage for DMA mapping error paths 2026-08-14 16:48:52 +01:00
Makefile spi: Add KUnit coverage for DMA mapping error paths 2026-08-14 16:48:52 +01:00
spi-airoha-snfi.c spi: spi-mem: Transform the read operation template 2026-05-04 15:02:07 +02:00
spi-altera-core.c
spi-altera-dfl.c
spi-altera-platform.c spi: altera: Simplify with dev_err_probe() 2026-07-14 12:50:51 +01:00
spi-amd-pci.c spi: spi_amd: Remove the use of dev_err_probe() 2025-08-19 13:05:58 +01:00
spi-amd.c spi: amd: Set correct bus number in ACPI probe path 2026-05-11 09:29:12 +09:00
spi-amd.h
spi-amlogic-spifc-a1.c spi: amlogic-spifc-a1: use modern PM macros 2026-08-07 18:57:41 +01:00
spi-amlogic-spifc-a4.c spi: amlogic: spifc-a4: unregister ECC engine on probe failure and remove() callback 2026-03-30 18:53:06 +01:00
spi-amlogic-spisg.c spi: amlogic-spisg: Make sure clk_init_data is fully initialized 2026-08-20 13:11:44 +01:00
spi-apple.c spi: Drop duplicate of_node assignment 2026-01-19 14:42:52 +00:00
spi-ar934x.c spi: Drop duplicate of_node assignment 2026-01-19 14:42:52 +00:00
spi-armada-3700.c spi: armada-3700: switch to managed controller allocation 2026-05-18 10:19:42 +01:00
spi-aspeed-smc.c Aside from preparation changes in the SPI NAND core, the changes carried 2026-06-12 14:00:51 +01:00
spi-at91-usart.c spi: at91-usart: use modern PM macros 2026-08-07 18:57:42 +01:00
spi-atcspi200.c spi: Few cleanups while looking at num-cs 2026-08-04 18:51:38 +01:00
spi-ath79.c spi: ath79: use devm everywhere in probe 2026-08-05 00:11:46 +01:00
spi-atmel.c spi: atmel: fix DMA channel and bounce buffer leaks 2026-06-01 15:03:02 +01:00
spi-au1550.c
spi-axi-spi-engine.c spi: Use trace_call__##name() at guarded tracepoint call sites 2026-03-26 10:24:39 -04:00
spi-axiado.c spi: axiado: use modern PM macros 2026-08-07 18:57:43 +01:00
spi-axiado.h spi: axiado: fix kernel-doc comments 2026-07-19 23:55:49 +01:00
spi-bcm-qspi.c spi: bcm-qspi: use modern PM macros 2026-08-07 18:57:44 +01:00
spi-bcm-qspi.h
spi-bcm63xx-hsspi.c spi: use modern PM macros 2026-08-07 18:58:32 +01:00
spi-bcm63xx.c spi: bcm63xx: disable clock on resume failure 2026-08-04 19:31:32 +01:00
spi-bcm2835.c spi: bcm2835: make read-only const array pinctrl_compats static 2026-07-14 22:20:22 +01:00
spi-bcm2835aux.c spi: Drop duplicate of_node assignment 2026-01-19 14:42:52 +00:00
spi-bcmbca-hsspi.c spi: use modern PM macros 2026-08-07 18:58:32 +01:00
spi-bitbang-txrx.h
spi-bitbang.c spi: fix controller registration API inconsistency 2026-05-21 12:25:55 +01:00
spi-brcmstb-qspi.c spi: bcm-qspi: use modern PM macros 2026-08-07 18:57:44 +01:00
spi-butterfly.c
spi-cadence-quadspi.c spi: cadence-quadspi: Fix indirect write timeout when DMA read mode is enabled 2026-07-14 12:54:50 +01:00
spi-cadence-xspi.c spi: cadence-xspi: only use readsq/writesq under 64BIT 2026-08-04 14:17:32 +01:00
spi-cadence.c spi: cadence: use modern PM macros 2026-08-07 18:57:47 +01:00
spi-cavium-octeon.c spi: octeon: switch to managed controller allocation 2026-05-04 22:09:21 +09:00
spi-cavium-thunderx.c spi: cavium-thunderx: switch to managed controller allocation 2026-05-04 22:09:22 +09:00
spi-cavium.c
spi-cavium.h
spi-ch341.c spi: ch341: correct company name in MODULE_DESCRIPTION 2026-05-06 23:09:33 +09:00
spi-clps711x.c spi: clps711x: switch to managed controller allocation 2026-05-18 10:19:43 +01:00
spi-coldfire-qspi.c spi: coldfire-qspi: use modern PM macros 2026-08-07 18:57:48 +01:00
spi-cs42l43.c spi: cs42l43: Workaround for wrong speaker ID on Dell XPS 13 DX13260 2026-10-01 16:38:05 +01:00
spi-davinci.c spi: davinci: switch to managed controller allocation 2026-07-29 16:34:07 +01:00
spi-dln2.c spi: dln2: use modern PM macros 2026-08-07 18:57:49 +01:00
spi-dw-core.c spi: dw: Remove shadowed dws in dw_spi_setup() 2026-08-14 13:22:11 +01:00
spi-dw-dma.c spi: dw-dma: Wait for controller idle before completing Tx 2026-07-14 12:15:51 +01:00
spi-dw-mmio.c spi: dw: Add support for StarFive JHB100 SoC SFC 2026-08-04 13:47:01 +01:00
spi-dw-pci.c spi: dw-pci: use modern PM macros 2026-08-07 18:57:49 +01:00
spi-dw.h spi: Updates for v7.3 2026-08-19 09:47:41 -07:00
spi-ep93xx.c spi: ep93xx: fix double-free of zeropage on DMA setup failure 2026-06-08 19:03:40 +01:00
spi-falcon.c spi: falcon: switch to managed controller allocation 2026-05-18 10:19:44 +01:00
spi-fsi.c spi: fsi: switch to managed controller allocation 2026-05-18 10:19:45 +01:00
spi-fsl-cpm.c
spi-fsl-cpm.h
spi-fsl-dspi.c spi: spi-fsl-dspi: use modern PM macros 2026-08-07 18:57:50 +01:00
spi-fsl-espi.c spi: fsl-espi: use modern PM macros 2026-08-07 18:57:51 +01:00
spi-fsl-lib.c spi: Drop duplicate of_node assignment 2026-01-19 14:42:52 +00:00
spi-fsl-lib.h
spi-fsl-lpspi.c spi: fsl-lpspi: use modern PM macros 2026-08-07 18:57:52 +01:00
spi-fsl-qspi.c spi: fsl-qspi: Reprogram the clock rate when the operation frequency changes 2026-09-17 19:46:29 +01:00
spi-fsl-spi.c spi: fsl: switch to managed controller allocation 2026-05-04 22:09:26 +09:00
spi-fsl-spi.h
spi-geni-qcom.c spi: qcom-geni: use modern PM macros 2026-08-07 18:57:53 +01:00
spi-gpio.c Replace <linux/mod_devicetable.h> by more specific <linux/device-id/*.h> (c files) 2026-07-03 07:38:17 +02:00
spi-gxp.c spi: Drop duplicate of_node assignment 2026-01-19 14:42:52 +00:00
spi-hisi-kunpeng.c spi: Fix mismatched DT property access types 2026-06-14 01:18:29 +01:00
spi-hisi-sfc-v3xx.c spi: hisi-sfc-v3xx: Propagate errors from optional IRQ lookup 2026-08-11 16:41:49 +01:00
spi-img-spfi.c spi: img-spfi: don't disable runtime PM on DMA deferred probe 2026-08-12 19:51:21 +01:00
spi-imx.c spi: imx: reconfigure for PIO when DMA cannot be started 2026-06-24 17:52:44 +01:00
spi-ingenic.c spi: Drop duplicate of_node assignment 2026-01-19 14:42:52 +00:00
spi-intel-pci.c spi: Consistently define pci_device_ids using named initializers 2026-05-05 10:08:08 +09:00
spi-intel-platform.c
spi-intel.c spi: spi-mem: Transform the read operation template 2026-05-04 15:02:07 +02:00
spi-intel.h
spi-iproc-qspi.c spi: bcm-qspi: use modern PM macros 2026-08-07 18:57:44 +01:00
spi-jcore.c spi: jcore: switch to managed controller allocation 2026-05-18 10:19:47 +01:00
spi-kspi2.c
spi-lantiq-ssc.c spi: lantiq-ssc: switch to managed controller allocation 2026-05-04 22:09:29 +09:00
spi-ljca.c spi: Drop duplicate device_set_node() call 2026-01-19 14:42:54 +00:00
spi-lm70llp.c
spi-loongson-core.c spi: loongson: pm: add .freeze .poweroff .thaw .restore 2026-08-20 13:14:02 +01:00
spi-loongson-pci.c spi: loongson: use modern PM macros 2026-08-07 18:57:55 +01:00
spi-loongson-plat.c spi: loongson: use modern PM macros 2026-08-07 18:57:55 +01:00
spi-loongson.h
spi-loopback-test.c Replace <linux/mod_devicetable.h> by more specific <linux/device-id/*.h> (c files) 2026-07-03 07:38:17 +02:00
spi-lp8841-rtc.c spi: lp8841-rtc: drop unused ifdef 2026-05-18 10:19:49 +01:00
spi-ma35d1-qspi.c spi: ma35d1-qspi: Use the existing update helper 2026-08-14 13:36:57 +01:00
spi-mem.c spi: spi-mem: Flag DQS capability 2026-08-10 18:00:47 +01:00
spi-meson-spicc.c spi: Use FIELD_MODIFY() for bitfield operations 2026-05-11 21:05:13 +09:00
spi-meson-spifc.c spi: meson-spifc: use devm_pm_runtime_set_active_enabled 2026-08-11 15:04:28 +01:00
spi-microchip-core-qspi.c spi: switch to managed controller allocation (part 2/3) 2026-05-11 09:55:56 +09:00
spi-microchip-core-spi.c spi: microchip-core-spi: fix controller deregistration 2026-04-09 20:08:13 +01:00
spi-mpc52xx-psc.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
spi-mpc52xx.c spi: spi-mpc52xx: use platform_get_irq_optional for IRQ lookup 2026-07-30 12:53:17 +01:00
spi-mpc512x-psc.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
spi-mpfs.c spi: mpfs: fix controller deregistration 2026-04-09 20:08:14 +01:00
spi-mt65xx.c spi: mt65xx: use modern PM macros 2026-08-07 18:57:57 +01:00
spi-mt7621.c spi: Drop duplicate of_node assignment 2026-01-19 14:42:52 +00:00
spi-mtk-nor.c spi: mtk-nor: Propagate errors from IRQ request 2026-08-12 19:47:42 +01:00
spi-mtk-snfi.c spi: mtk-snfi: Fix resource leak in mtk_snand_read_page_cache() 2026-05-16 11:27:08 +09:00
spi-mux.c spi: mux: switch to managed controller allocation 2026-05-18 10:19:51 +01:00
spi-mxic.c spi: mxic: use modern PM macros 2026-08-07 18:57:59 +01:00
spi-mxs.c spi: mxs: switch to managed controller allocation 2026-05-04 22:09:30 +09:00
spi-npcm-fiu.c spi: npcm-fiu: support dual and quad UMA writes 2026-06-29 17:45:35 +01:00
spi-npcm-pspi.c spi: npcm-pspi: switch to managed controller allocation 2026-05-04 22:09:31 +09:00
spi-nxp-fspi.c spi: Add support for StarFive JHB100 SFC 2026-08-04 13:47:02 +01:00
spi-nxp-xspi.c spi: nxp-xspi: Improve AHB read performance with DMA 2026-07-23 15:23:13 +01:00
spi-oc-tiny.c spi: oc-tiny: switch to managed controller allocation 2026-07-27 18:41:24 +01:00
spi-offload-trigger-adi-util-sigma-delta.c Replace <linux/mod_devicetable.h> by more specific <linux/device-id/*.h> (c files) 2026-07-03 07:38:17 +02:00
spi-offload-trigger-pwm.c Replace <linux/mod_devicetable.h> by more specific <linux/device-id/*.h> (c files) 2026-07-03 07:38:17 +02:00
spi-offload.c treewide: refresh kmalloc_obj() conversions 2026-09-04 21:37:00 -07:00
spi-omap-uwire.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
spi-omap2-mcspi.c spi: omap2-mcspi: use modern PM macros 2026-08-07 18:58:00 +01:00
spi-orion.c spi: orion: use modern PM macros 2026-08-07 18:58:01 +01:00
spi-pci1xxxx.c spi: Consistently define pci_device_ids using named initializers 2026-05-05 10:08:08 +09:00
spi-pic32-sqi.c spi: pic32-sqi: switch to managed controller allocation 2026-05-11 09:55:40 +09:00
spi-pic32.c spi: pic32: switch to managed controller allocation 2026-05-11 09:55:39 +09:00
spi-pl022.c spi: pl022: use modern PM macros 2026-08-07 18:58:02 +01:00
spi-ppc4xx.c spi: ppc4xx: use of_property_read_u32 for clock frequency 2026-07-30 19:42:36 +01:00
spi-pxa2xx-dma.c spi: pxa2xx: update outdated reference to pump_transfers() 2026-03-24 19:55:23 +00:00
spi-pxa2xx-pci.c
spi-pxa2xx-platform.c Replace <linux/mod_devicetable.h> by more specific <linux/device-id/*.h> (c files) 2026-07-03 07:38:17 +02:00
spi-pxa2xx.c spi: pxa2xx: use min() instead of min_t() 2026-02-23 19:10:26 +00:00
spi-pxa2xx.h
spi-qcom-qspi.c spi: spi-qcom-qspi: use modern PM macros 2026-08-07 18:58:03 +01:00
spi-qpic-snand.c spi: spi-qpic-snand: avoid writing QPIC_EBI2_ECC_BUF_CFG register 2026-09-14 00:41:31 +01:00
spi-qup.c spi: qup: use modern PM macros 2026-08-07 18:58:04 +01:00
spi-rb4xx.c spi: Drop duplicate of_node assignment 2026-01-19 14:42:52 +00:00
spi-realtek-rtl-snand.c Replace <linux/mod_devicetable.h> by more specific <linux/device-id/*.h> (c files) 2026-07-03 07:38:17 +02:00
spi-realtek-rtl.c spi: realtek-rtl: change to __raw reads and writes 2026-07-16 13:59:27 +01:00
spi-rockchip-sfc.c spi: rockchip-sfc: use modern PM macros 2026-08-07 18:58:06 +01:00
spi-rockchip.c spi: rockchip: use modern PM macros 2026-08-07 18:58:14 +01:00
spi-rpc-if.c spi: spi-rpc-if: Implement 200ms runtime PM autosuspend delay 2026-07-20 14:19:17 +01:00
spi-rspi.c spi: Use named initializers for platform_device_id arrays 2026-06-09 22:44:23 +01:00
spi-rzv2h-rspi.c spi: Fixes for v7.2 2026-07-05 05:24:06 -10:00
spi-rzv2m-csi.c spi: Drop duplicate device_set_node() call 2026-01-19 14:42:54 +00:00
spi-s3c64xx.c spi: s3c64xx: use modern PM macros 2026-08-07 18:58:15 +01:00
spi-sc18is602.c Replace <linux/mod_devicetable.h> by more specific <linux/device-id/*.h> (c files) 2026-07-03 07:38:17 +02:00
spi-sg2044-nor.c spi: Drop duplicate of_node assignment 2026-01-19 14:42:52 +00:00
spi-sh-hspi.c spi: sh-hspi: switch to managed controller allocation 2026-05-11 09:55:43 +09:00
spi-sh-msiof.c spi: sh-msiof: abort transfers when reset times out 2026-06-25 13:49:00 +01:00
spi-sh-sci.c
spi-sh.c
spi-sifive.c spi: sifive: switch to managed controller allocation 2026-05-11 09:55:45 +09:00
spi-slave-mt27xx.c spi: slave-mt27xx: use modern PM macros 2026-08-07 18:58:16 +01:00
spi-slave-system-control.c
spi-slave-time.c
spi-sn-f-ospi.c spi: sn-f-ospi: Use FIELD_MODIFY() 2026-05-11 21:05:08 +09:00
spi-spacemit-k1.c spi: Merge up fixes 2026-07-29 12:59:46 +01:00
spi-sprd-adi.c spi: sprd-adi: Fix probe succeeding without registering the controller 2026-08-11 15:02:03 +01:00
spi-sprd.c spi: sprd: use modern PM macros 2026-08-07 18:58:18 +01:00
spi-st-ssc4.c spi: st-ssc4: switch to managed controller allocation 2026-05-11 09:55:47 +09:00
spi-stm32-ospi.c Aside from preparation changes in the SPI NAND core, the changes carried 2026-06-12 14:00:51 +01:00
spi-stm32-qspi.c Aside from preparation changes in the SPI NAND core, the changes carried 2026-06-12 14:00:51 +01:00
spi-stm32.c spi: stm32: Simplify clock handling with devm_clk_get_enabled() 2026-03-23 19:47:42 +00:00
spi-sun4i.c spi: sun4i: switch to managed controller allocation 2026-05-11 09:55:48 +09:00
spi-sun6i.c spi: sun6i: switch to managed controller allocation 2026-05-11 09:55:49 +09:00
spi-sunplus-sp7021.c spi: sunplus-sp7021: use modern PM macros 2026-08-07 18:58:20 +01:00
spi-synquacer.c spi: syncuacer: use modern PM macros 2026-08-07 18:58:22 +01:00
spi-tegra20-sflash.c spi: tegra20-sflash: use modern PM macros 2026-08-07 18:58:25 +01:00
spi-tegra20-slink.c spi: tegra20-slink: use modern PM macros 2026-08-07 18:58:26 +01:00
spi-tegra114.c spi: tegra114: use modern PM macros 2026-08-07 18:58:23 +01:00
spi-tegra210-quad.c spi: tegra210-quad: use modern PM macros 2026-08-07 18:58:28 +01:00
spi-test.h
spi-ti-qspi.c spi: Merge up fixes 2026-05-19 09:44:41 +01:00
spi-tle62x0.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
spi-topcliff-pch.c spi: topcliff-pch: use modern PM macros 2026-08-07 18:58:29 +01:00
spi-uniphier.c spi: uniphier: Fix completion initialization order before devm_request_irq() 2026-06-16 21:25:14 +01:00
spi-virtio.c spi: virtio: Use the per-transfer bits per word 2026-09-15 17:37:50 +01:00
spi-wpcm-fiu.c Replace <linux/mod_devicetable.h> by more specific <linux/device-id/*.h> (c files) 2026-07-03 07:38:17 +02:00
spi-xcomm.c spi: Use named initializers for arrays of i2c_device_data 2026-05-22 12:12:11 +01:00
spi-xilinx.c spi: xilinx: use FIFO occupancy register to determine buffer size 2026-06-12 14:21:28 +01:00
spi-xlp.c spi: xlp: switch to managed controller allocation 2026-05-18 10:19:52 +01:00
spi-xtensa-xtfpga.c spi: fix controller registration API inconsistency 2026-05-21 12:25:55 +01:00
spi-zynq-qspi.c spi: zync-qspi: switch to managed controller allocation 2026-05-11 09:55:55 +09:00
spi-zynqmp-gqspi.c spi: spi-zynqmp-gqspi: stop the controller on shutdown 2026-09-16 18:28:43 +01:00
spi.c spi: Add KUnit coverage for DMA mapping error paths 2026-08-14 16:48:52 +01:00
spidev.c Replace <linux/mod_devicetable.h> by more specific <linux/device-id/*.h> (c files) 2026-07-03 07:38:17 +02:00