linux-input.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 00/11] HID: playstation: Add support for audio jack handling on DualSense
@ 2025-06-24 21:56 Cristian Ciocaltea
  2025-06-24 21:56 ` [PATCH v2 01/11] HID: playstation: Make use of bitfield macros Cristian Ciocaltea
                   ` (11 more replies)
  0 siblings, 12 replies; 23+ messages in thread
From: Cristian Ciocaltea @ 2025-06-24 21:56 UTC (permalink / raw)
  To: Roderick Colenbrander, Jiri Kosina, Benjamin Tissoires,
	Henrik Rydberg
  Cc: kernel, linux-input, linux-kernel

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@collabora.com/

Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
---
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@collabora.com

---
Cristian Ciocaltea (11):
      HID: playstation: Make use of bitfield macros
      HID: playstation: Add spaces around arithmetic operators
      HID: playstation: Simplify locking with guard() and scoped_guard()
      HID: playstation: Replace uint{32,16,8}_t with u{32,16,8}
      HID: playstation: Correct spelling in comment sections
      HID: playstation: Fix all alignment and line length issues
      HID: playstation: Document spinlock_t usage
      HID: playstation: Prefer kzalloc(sizeof(*buf)...)
      HID: playstation: Redefine DualSense input report status field
      HID: playstation: Support DualSense audio jack hotplug detection
      HID: playstation: Support DualSense audio jack event reporting

 drivers/hid/hid-playstation.c | 891 ++++++++++++++++++++++++------------------
 1 file changed, 506 insertions(+), 385 deletions(-)
---
base-commit: 2ae2aaafb21454f4781c30734959cf223ab486ef
change-id: 20250522-dualsense-hid-jack-d3cb65b75da1


^ permalink raw reply	[flat|nested] 23+ messages in thread

end of thread, other threads:[~2025-08-27  6:36 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-06-24 21:56 [PATCH v2 00/11] HID: playstation: Add support for audio jack handling on DualSense Cristian Ciocaltea
2025-06-24 21:56 ` [PATCH v2 01/11] HID: playstation: Make use of bitfield macros Cristian Ciocaltea
2025-06-24 21:56 ` [PATCH v2 02/11] HID: playstation: Add spaces around arithmetic operators Cristian Ciocaltea
2025-06-24 21:56 ` [PATCH v2 03/11] HID: playstation: Simplify locking with guard() and scoped_guard() Cristian Ciocaltea
2025-06-24 21:56 ` [PATCH v2 04/11] HID: playstation: Replace uint{32,16,8}_t with u{32,16,8} Cristian Ciocaltea
2025-06-24 21:56 ` [PATCH v2 05/11] HID: playstation: Correct spelling in comment sections Cristian Ciocaltea
2025-06-24 21:56 ` [PATCH v2 06/11] HID: playstation: Fix all alignment and line length issues Cristian Ciocaltea
2025-06-24 21:56 ` [PATCH v2 07/11] HID: playstation: Document spinlock_t usage Cristian Ciocaltea
2025-06-24 21:56 ` [PATCH v2 08/11] HID: playstation: Prefer kzalloc(sizeof(*buf)...) Cristian Ciocaltea
2025-06-24 21:56 ` [PATCH v2 09/11] HID: playstation: Redefine DualSense input report status field Cristian Ciocaltea
2025-06-24 21:56 ` [PATCH v2 10/11] HID: playstation: Support DualSense audio jack hotplug detection Cristian Ciocaltea
2025-06-24 21:56 ` [PATCH v2 11/11] HID: playstation: Support DualSense audio jack event reporting Cristian Ciocaltea
2025-07-03  7:48 ` [PATCH v2 00/11] HID: playstation: Add support for audio jack handling on DualSense Jiri Kosina
2025-07-10  5:24   ` Cristian Ciocaltea
2025-07-10 21:31     ` Roderick Colenbrander
2025-07-22  5:47       ` Roderick Colenbrander
2025-07-22  6:18         ` Roderick Colenbrander
2025-07-22  8:03           ` Cristian Ciocaltea
2025-07-23  4:04             ` Roderick Colenbrander
2025-07-23  4:20               ` Roderick Colenbrander
2025-07-23  7:17               ` Cristian Ciocaltea
2025-08-27  6:36                 ` Cristian Ciocaltea
2025-07-22  7:24         ` Cristian Ciocaltea

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).