Re: [PATCH v2 00/11] HID: playstation: Add support for audio jack handling on DualSense
From: Jiri Kosina
Date: Thu Jul 03 2025 - 03:48:27 EST
On Wed, 25 Jun 2025, Cristian Ciocaltea wrote:
> The Sony DualSense wireless controller (PS5) provides an internal mono
> speaker, in addition to the 3.5mm jack socket for headphone output and
> headset microphone input. However, the default audio output path is set
> to headphones, regardless of whether they are actually inserted or not.
>
> This patch series aims to improve the audio support when operating in
> USB mode, by implementing the following changes:
>
> * Detect when the plugged state of the audio jack changes and toggle
> audio output between headphones and internal speaker, as required.
> The latter is achieved by essentially routing the right channel of the
> audio source to the mono speaker.
>
> * Adjust the speaker volume since its default level is too low and,
> therefore, cannot generate any audible sound.
>
> * Register a dedicated input device for the audio jack and use it to
> report all headphone and headset mic insert events.
>
> It's worth noting the latter is necessary since the controller complies
> with v1.0 of the USB Audio Class spec (UAC1) and, therefore, cannot
> advertise any jack detection capability.
>
> However, this feature can be implemented in the generic USB audio driver
> via quirks, i.e. by configuring an input handler to receive hotplug
> events from the HID driver. That's exactly what has been accomplished
> via the "ALSA: usb-audio: Support jack detection on Sony DualSense"
> patchset [1], which has been already merged and should be available in
> v6.17.
>
> Unrelated to the above, also provide a few driver cleanup patches, e.g.
> make use of bitfields macros, simplify locking, fix coding style.
>
> [1] https://lore.kernel.org/all/20250526-dualsense-alsa-jack-v1-0-1a821463b632@xxxxxxxxxxxxx/
>
> Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea@xxxxxxxxxxxxx>
> ---
> Changes in v2:
> - Updated cover letter including a reference to the usb-audio patch series
> - Updated 'HID: playstation: Make use of bitfield macros' patch to drop
> DS_STATUS_CHARGING_SHIFT and use FIELD_GET() for battery status ops
> - Replaced 'HID: playstation: Rename DualSense input report status
> field' with 'HID: playstation: Redefine DualSense input report status
> field' changing data type to a 3-byte array instead of renaming the
> struct member (Roderick)
> - Updated 'HID: playstation: Support DualSense audio jack hotplug
> detection' according to Roderick's feedback:
> * Used DS_STATUS1_ prefixes for the plugged status register and rename
> its bits to match the datasheet
> * Defined MIC_VOLUME_ENABLE bit of DS_OUTPUT_VALID_FLAG0 register
> * Renamed the newly introduced audio controls members in struct
> dualsense_output_report_common: headphone_volume, speaker_volume,
> mic_volume, audio_control, audio_control2
> - Restricted audio jack hotplug detection and event reporting to USB
> operation mode only, since Bluetooth audio is currently not supported
> and it might have a negative impact on the battery life (Roderick)
> - Rebased series onto next-20250624
> - Link to v1: https://lore.kernel.org/r/20250526-dualsense-hid-jack-v1-0-a65fee4a60cc@xxxxxxxxxxxxx
Just for the record -- I like the v2, and am inclined to merge it, but
would prefer doing that with Roderick's Ack, so I am waiting for a bit
here.
Thanks,
--
Jiri Kosina
SUSE Labs