Public bug reported:

[Impact]
On Dell Slate Max systems with SoundWire Device Class Audio (SDCA) hardware, 
there is a race condition when setting up jack detection.
Plug headset first, sound can output and headset Mic is workable.
But after cold boot/reboot, audio device is keep but no sound output from 
headset, headset Mic also no function. Hot plug headset can recovery.

[Fix]
Reorganize SDCA IRQ registration and lifecycle management to run at the correct 
time and avoid races.

The fixes do this by adding a new component-level callback that runs
after all ALSA controls are created. This ensures the jack detection
IRQs are registered only when the controls are ready.

Upstream commits (first appeared in v7.2-rc6):
- 3e81e2fb2163 ASoC: Add a component fixup_controls callback
- b8f71f16134f ASoC: SDCA: Switch to fixup_controls callback for IRQ 
registration
- bf1b7821f853 ASoC: SDCA: Move kcontrol search out of IRQ
- 050406cbd676 ASoC: SDCA: Populate IRQ data earlier
- 0880082c27b6 ASoC: SDCA: Remove devm from primary IRQ cleanup
- f18e97fa7f12 ASoC: SDCA: Add sdca_irq_cleanup_late()
- 4ecef577d1ce ASoC: SDCA: Rename sdca_irq_allocate() to include devm


[Test Plan]
Boot the system, plug headphones in and out, and check if audio switches 
correctly.

1. Boot the system with headphones unplugged.
2. Plug headphones in and check the jack state:
   $ evtest
   (or check alsamixer/sound settings)
3. Unplug headphones and verify sound switches back.
4. Reload the SoundWire driver modules or trigger suspend/resume to force card 
teardown and reprobe:
   $ sudo rtcwake -m mem -s 15

   Or reload the SoundWire modules:
   $ sudo modprobe -r snd_sof_intel_sdw
   $ sudo modprobe snd_sof_intel_sdw

Without these patches:
- On boot, headphones might show up as connected when they are not, or sound 
might not switch correctly when plugged in.
- After suspend/resume or reloading modules, jack detection stops working, or 
the system crashes/shows warnings due to stale pointers.

With these patches:
- Headphones and speaker paths are always set correctly on boot.
- Jack detection and audio routing work correctly after suspend/resume and 
driver reloads.


[Where problems could occur]
Could break SDCA jack detection and SoundWire audio class drivers.
If the new fixup_controls callback has a bug, jack IRQs will not be registered. 
Jack detection could stop working completely.
If the cached kcontrol search gets a wrong pointer, the kernel will crash with 
a NULL pointer dereference when the IRQ handler runs.


[Other Info]
All seven patches are upstream in v7.2-rc6.

** Affects: hwe-next
     Importance: Undecided
         Status: New

** Affects: linux (Ubuntu)
     Importance: Undecided
         Status: New

** Affects: linux-oem-6.17 (Ubuntu)
     Importance: Undecided
         Status: New

** Affects: linux (Ubuntu Noble)
     Importance: Undecided
         Status: Invalid

** Affects: linux-oem-6.17 (Ubuntu Noble)
     Importance: Undecided
         Status: In Progress

** Affects: linux (Ubuntu Resolute)
     Importance: Undecided
         Status: In Progress

** Affects: linux-oem-6.17 (Ubuntu Resolute)
     Importance: Undecided
         Status: Invalid


** Tags: cpl jira-cpl-325 oem-priority

** Also affects: linux-oem-6.17 (Ubuntu)
   Importance: Undecided
       Status: New

** Also affects: linux (Ubuntu Noble)
   Importance: Undecided
       Status: New

** Also affects: linux-oem-6.17 (Ubuntu Noble)
   Importance: Undecided
       Status: New

** Also affects: linux (Ubuntu Resolute)
   Importance: Undecided
       Status: New

** Also affects: linux-oem-6.17 (Ubuntu Resolute)
   Importance: Undecided
       Status: New

** Changed in: linux (Ubuntu Noble)
       Status: New => Invalid

** Changed in: linux (Ubuntu Resolute)
       Status: New => In Progress

** Changed in: linux-oem-6.17 (Ubuntu Noble)
       Status: New => In Progress

** Changed in: linux-oem-6.17 (Ubuntu Resolute)
       Status: New => Invalid

** Tags added: cpl jira-cpl-325 oem-priority

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2163215

Title:
  Fix SDCA jack detection race and reprobe issues on Dell Slate Max
  platform with CirrusLogic audio solution

To manage notifications about this bug go to:
https://bugs.launchpad.net/hwe-next/+bug/2163215/+subscriptions


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to