Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Add DisplayPort sound support for Fairphone 5

Merge series from Luca Weiss <luca.weiss@fairphone.com>:

Add the necessary sound card bits and some dts additions to enable sound
over DisplayPort-over-USB-C, e.g. to a connected TV or monitor.

The UCM files can be found here:
https://gitlab.postmarketos.org/postmarketOS/pmaports/-/tree/master/device/testing/device-fairphone-fp5/ucm

This series - in spirit - depends on the series enabling DisplayPort in
the first place, but can land pretty independently, especially the ASoC
bits:
https://lore.kernel.org/linux-arm-msm/20250312-fp5-pmic-glink-dp-v2-0-a55927749d77@fairphone.com/

+15 -12
+15 -12
sound/soc/qcom/sm8250.c
··· 16 16 #include "usb_offload_utils.h" 17 17 #include "sdw.h" 18 18 19 - #define DRIVER_NAME "sm8250" 20 19 #define MI2S_BCLK_RATE 1536000 21 20 22 21 struct sm8250_snd_data { ··· 25 26 struct snd_soc_jack jack; 26 27 struct snd_soc_jack usb_offload_jack; 27 28 bool usb_offload_jack_setup; 29 + struct snd_soc_jack dp_jack; 28 30 bool jack_setup; 29 31 }; 30 32 ··· 33 33 { 34 34 struct sm8250_snd_data *data = snd_soc_card_get_drvdata(rtd->card); 35 35 struct snd_soc_dai *cpu_dai = snd_soc_rtd_to_cpu(rtd, 0); 36 - int ret; 37 36 38 - if (cpu_dai->id == USB_RX) 39 - ret = qcom_snd_usb_offload_jack_setup(rtd, &data->usb_offload_jack, 40 - &data->usb_offload_jack_setup); 41 - else 42 - ret = qcom_snd_wcd_jack_setup(rtd, &data->jack, &data->jack_setup); 43 - return ret; 37 + switch (cpu_dai->id) { 38 + case DISPLAY_PORT_RX: 39 + return qcom_snd_dp_jack_setup(rtd, &data->dp_jack, 0); 40 + case USB_RX: 41 + return qcom_snd_usb_offload_jack_setup(rtd, &data->usb_offload_jack, 42 + &data->usb_offload_jack_setup); 43 + default: 44 + return qcom_snd_wcd_jack_setup(rtd, &data->jack, &data->jack_setup); 45 + } 44 46 } 45 47 46 48 static void sm8250_snd_exit(struct snd_soc_pcm_runtime *rtd) ··· 202 200 if (ret) 203 201 return ret; 204 202 205 - card->driver_name = DRIVER_NAME; 203 + card->driver_name = of_device_get_match_data(dev); 206 204 sm8250_add_be_ops(card); 207 205 return devm_snd_soc_register_card(dev, card); 208 206 } 209 207 210 208 static const struct of_device_id snd_sm8250_dt_match[] = { 211 - {.compatible = "qcom,sm8250-sndcard"}, 212 - {.compatible = "qcom,qrb4210-rb2-sndcard"}, 213 - {.compatible = "qcom,qrb5165-rb5-sndcard"}, 209 + { .compatible = "fairphone,fp5-sndcard", .data = "qcm6490" }, 210 + { .compatible = "qcom,qrb4210-rb2-sndcard", .data = "sm4250" }, 211 + { .compatible = "qcom,qrb5165-rb5-sndcard", .data = "sm8250" }, 212 + { .compatible = "qcom,sm8250-sndcard", .data = "sm8250" }, 214 213 {} 215 214 }; 216 215