-
Notifications
You must be signed in to change notification settings - Fork 139
First draft cs42l45 machine driver integration #5590
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: topic/sof-dev
Are you sure you want to change the base?
Changes from all commits
849c2ff
06208e3
e178b65
fd740ca
4dd339c
67ad75a
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,80 @@ | ||
| // SPDX-License-Identifier: GPL-2.0-only | ||
| // Based on sof_sdw_rt5682.c | ||
| // This file incorporates work covered by the following copyright notice: | ||
| // Copyright (c) 2023 Intel Corporation | ||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Not sure if the Copyright is needed. And 2025 maybe? @ujfalusi @lgirdwood
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think this matches what was done on cs42l42,cs42l42 so I think its probably fine. |
||
| // Copyright (c) 2024 Advanced Micro Devices, Inc. | ||
|
|
||
| /* | ||
| * soc_sdw_cs42l45 - Helpers to handle CS42L45 from generic machine driver | ||
| */ | ||
| #include <linux/device.h> | ||
| #include <linux/errno.h> | ||
| #include <sound/jack.h> | ||
| #include <sound/soc.h> | ||
| #include <sound/soc-card.h> | ||
| #include <sound/soc-component.h> | ||
| #include <sound/soc-dai.h> | ||
| #include <sound/soc_sdw_utils.h> | ||
|
|
||
| static struct snd_soc_jack_pin soc_jack_pins[] = { | ||
| { | ||
| .pin = "cs42l45 OT 43", | ||
| .mask = SND_JACK_HEADPHONE, | ||
| }, | ||
| { | ||
| .pin = "cs42l45 OT 45", | ||
| .mask = SND_JACK_HEADPHONE, | ||
| }, | ||
| { | ||
| .pin = "cs42l45 IT 31", | ||
| .mask = SND_JACK_MICROPHONE, | ||
| }, | ||
| { | ||
| .pin = "cs42l45 IT 33", | ||
| .mask = SND_JACK_MICROPHONE, | ||
| }, | ||
| }; | ||
|
|
||
| int asoc_sdw_cs42l45_hs_rtd_init(struct snd_soc_pcm_runtime *rtd, struct snd_soc_dai *dai) | ||
| { | ||
| struct snd_soc_card *card = rtd->card; | ||
| struct snd_soc_component *component = snd_soc_rtd_to_codec(rtd, 0)->component; | ||
| struct asoc_sdw_mc_private *ctx = snd_soc_card_get_drvdata(card); | ||
| struct snd_soc_jack *jack = &ctx->sdw_headset; | ||
| int ret; | ||
|
|
||
| card->components = devm_kasprintf(card->dev, GFP_KERNEL, "%s hs:cs42l45", | ||
| card->components); | ||
| if (!card->components) | ||
| return -ENOMEM; | ||
|
|
||
| ret = snd_soc_card_jack_new_pins(card, "Jack", SND_JACK_MECHANICAL | | ||
| SND_JACK_HEADSET | SND_JACK_LINEOUT, jack, | ||
| soc_jack_pins, ARRAY_SIZE(soc_jack_pins)); | ||
| if (ret) { | ||
| dev_err(card->dev, "Failed to create jack: %d\n", ret); | ||
| return ret; | ||
| } | ||
|
|
||
| ret = snd_soc_component_set_jack(component, jack, NULL); | ||
| if (ret) { | ||
| dev_err(card->dev, "Failed to register jack: %d\n", ret); | ||
| return ret; | ||
| } | ||
|
|
||
| return 0; | ||
| } | ||
| EXPORT_SYMBOL_NS(asoc_sdw_cs42l45_hs_rtd_init, "SND_SOC_SDW_UTILS"); | ||
|
|
||
| int asoc_sdw_cs42l45_dmic_rtd_init(struct snd_soc_pcm_runtime *rtd, struct snd_soc_dai *dai) | ||
| { | ||
| struct snd_soc_card *card = rtd->card; | ||
|
|
||
| card->components = devm_kasprintf(card->dev, GFP_KERNEL, "%s mic:cs42l45-dmic", | ||
| card->components); | ||
| if (!card->components) | ||
| return -ENOMEM; | ||
|
|
||
| return 0; | ||
| } | ||
| EXPORT_SYMBOL_NS(asoc_sdw_cs42l45_dmic_rtd_init, "SND_SOC_SDW_UTILS"); | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No commit message?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah sorry that should definitely have one will add that.