ASoC: tegra: Fix build for Linux v6.1

Upstream Linux kernel commit 3989ade2d1e7 ("ASoC: soc.h: remove
num_cpus/codecs") removes the 'num_cpus' member from the
'snd_soc_pcm_runtime' structure because this is also available under the
dai_link structure. This breaks building the Tegra ASoC drivers for
Linux v6.1 and so update the Tegra ASoC drivers to align the latest
mainline. Note that this also works for earlier kernel versions and so
no need to check for kernel version.

Bug 3835208

Change-Id: Ib846e937d761b65276ace73f7817ef8bd21c21d8
Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/2795754
Reviewed-by: Sameer Pujar <spujar@nvidia.com>
Reviewed-by: Laxman Dewangan <ldewangan@nvidia.com>
GVS: Gerrit_Virtual_Submit <buildbot_gerritrpt@nvidia.com>
This commit is contained in:
Jon Hunter
2022-10-20 15:59:29 +01:00
committed by mobile promotions
parent bbde9d8b23
commit 541420a420
3 changed files with 27 additions and 22 deletions

View File

@@ -1398,11 +1398,11 @@ static int tegra210_adsp_compr_open(struct snd_soc_component *component,
struct snd_soc_pcm_runtime *rtd = cstream->device->private_data; struct snd_soc_pcm_runtime *rtd = cstream->device->private_data;
struct tegra210_adsp *adsp = snd_soc_component_get_drvdata(component); struct tegra210_adsp *adsp = snd_soc_component_get_drvdata(component);
struct tegra210_adsp_compr_rtd *prtd; struct tegra210_adsp_compr_rtd *prtd;
uint32_t fe_reg = rtd->dais[rtd->num_cpus]->id + 1; uint32_t fe_reg = rtd->dais[rtd->dai_link->num_cpus]->id + 1;
int ret = 0; int ret = 0;
int i; int i;
dev_vdbg(adsp->dev, "%s : DAI ID %d", __func__, rtd->dais[rtd->num_cpus]->id); dev_vdbg(adsp->dev, "%s : DAI ID %d", __func__, rtd->dais[rtd->dai_link->num_cpus]->id);
mutex_lock(&adsp->mutex); mutex_lock(&adsp->mutex);
if (!adsp->init_done) { if (!adsp->init_done) {
@@ -1741,7 +1741,7 @@ static int tegra210_adsp_pcm_open(struct snd_soc_component *component,
struct snd_soc_component *cmpnt = snd_soc_rtdcom_lookup(rtd, DRV_NAME); struct snd_soc_component *cmpnt = snd_soc_rtdcom_lookup(rtd, DRV_NAME);
struct tegra210_adsp *adsp = snd_soc_component_get_drvdata(cmpnt); struct tegra210_adsp *adsp = snd_soc_component_get_drvdata(cmpnt);
struct tegra210_adsp_pcm_rtd *prtd; struct tegra210_adsp_pcm_rtd *prtd;
uint32_t fe_reg = rtd->dais[rtd->num_cpus]->id + 1; uint32_t fe_reg = rtd->dais[rtd->dai_link->num_cpus]->id + 1;
uint32_t source; uint32_t source;
int i, ret = 0; int i, ret = 0;

View File

@@ -840,9 +840,9 @@ int tegra_machine_add_codec_jack_control(struct snd_soc_card *card,
.private_value = (unsigned long)&tegra_machine_jack_state, .private_value = (unsigned long)&tegra_machine_jack_state,
}; };
if (rtd->dais[rtd->num_cpus]->component->name_prefix) if (rtd->dais[rtd->dai_link->num_cpus]->component->name_prefix)
snprintf(name, sizeof(name), "%s Jack-state", snprintf(name, sizeof(name), "%s Jack-state",
rtd->dais[rtd->num_cpus]->component->name_prefix); rtd->dais[rtd->dai_link->num_cpus]->component->name_prefix);
else else
snprintf(name, sizeof(name), "Jack-state"); snprintf(name, sizeof(name), "Jack-state");

View File

@@ -32,11 +32,12 @@ static int tegra_audio_dai_init(struct snd_soc_pcm_runtime *rtd)
static int tegra_machine_rt56xx_init(struct snd_soc_pcm_runtime *rtd) static int tegra_machine_rt56xx_init(struct snd_soc_pcm_runtime *rtd)
{ {
struct snd_soc_component *cmpnt = rtd->dais[rtd->num_cpus]->component; struct snd_soc_component *cmpnt;
struct snd_soc_card *card = rtd->card; struct snd_soc_card *card = rtd->card;
struct snd_soc_jack *jack; struct snd_soc_jack *jack;
int err; int err;
cmpnt = rtd->dais[rtd->dai_link->num_cpus]->component;
if (!cmpnt->driver->set_jack) if (!cmpnt->driver->set_jack)
goto dai_init; goto dai_init;
@@ -88,7 +89,8 @@ static int tegra_machine_fepi_init(struct snd_soc_pcm_runtime *rtd)
struct device *dev = rtd->card->dev; struct device *dev = rtd->card->dev;
int err; int err;
err = snd_soc_dai_set_sysclk(rtd->dais[rtd->num_cpus], SGTL5000_SYSCLK, 12288000, err = snd_soc_dai_set_sysclk(rtd->dais[rtd->dai_link->num_cpus],
SGTL5000_SYSCLK, 12288000,
SND_SOC_CLOCK_IN); SND_SOC_CLOCK_IN);
if (err) { if (err) {
dev_err(dev, "failed to set sgtl5000 sysclk!\n"); dev_err(dev, "failed to set sgtl5000 sysclk!\n");
@@ -107,8 +109,8 @@ static int tegra_machine_respeaker_init(struct snd_soc_pcm_runtime *rtd)
* and source as PLL irrespective of args passed through * and source as PLL irrespective of args passed through
* this callback * this callback
*/ */
err = snd_soc_dai_set_sysclk(rtd->dais[rtd->num_cpus], 0, 24000000, err = snd_soc_dai_set_sysclk(rtd->dais[rtd->dai_link->num_cpus],
SND_SOC_CLOCK_IN); 0, 24000000, SND_SOC_CLOCK_IN);
if (err) { if (err) {
dev_err(dev, "failed to set ac108 sysclk!\n"); dev_err(dev, "failed to set ac108 sysclk!\n");
return err; return err;
@@ -159,17 +161,18 @@ static int set_pll_sysclk(struct device *dev, struct snd_soc_pcm_runtime *rtd,
return -EINVAL; return -EINVAL;
} }
err = snd_soc_dai_set_pll(rtd->dais[rtd->num_cpus], 0, err = snd_soc_dai_set_pll(rtd->dais[rtd->dai_link->num_cpus], 0,
pll_src, bclk_rate, srate * 256); pll_src, bclk_rate, srate * 256);
if (err < 0) { if (err < 0) {
dev_err(dev, "failed to set codec pll\n"); dev_err(dev, "failed to set codec pll\n");
return err; return err;
} }
err = snd_soc_dai_set_sysclk(rtd->dais[rtd->num_cpus], clk_id, err = snd_soc_dai_set_sysclk(rtd->dais[rtd->dai_link->num_cpus], clk_id,
srate * 256, SND_SOC_CLOCK_IN); srate * 256, SND_SOC_CLOCK_IN);
if (err < 0) { if (err < 0) {
dev_err(dev, "dais[%d] clock not set\n", rtd->num_cpus); dev_err(dev, "dais[%d] clock not set\n",
rtd->dai_link->num_cpus);
return err; return err;
} }
@@ -186,24 +189,24 @@ int tegra_codecs_runtime_setup(struct snd_soc_card *card,
rtd = get_pcm_runtime(card, "rt565x-playback"); rtd = get_pcm_runtime(card, "rt565x-playback");
if (rtd) { if (rtd) {
err = snd_soc_dai_set_sysclk(rtd->dais[rtd->num_cpus], err = snd_soc_dai_set_sysclk(rtd->dais[rtd->dai_link->num_cpus],
RT5659_SCLK_S_MCLK, RT5659_SCLK_S_MCLK,
aud_mclk, SND_SOC_CLOCK_IN); aud_mclk, SND_SOC_CLOCK_IN);
if (err < 0) { if (err < 0) {
dev_err(card->dev, "dais[%d] clock not set\n", dev_err(card->dev, "dais[%d] clock not set\n",
rtd->num_cpus); rtd->dai_link->num_cpus);
return err; return err;
} }
} }
rtd = get_pcm_runtime(card, "rt5640-playback"); rtd = get_pcm_runtime(card, "rt5640-playback");
if (rtd) { if (rtd) {
err = snd_soc_dai_set_sysclk(rtd->dais[rtd->num_cpus], err = snd_soc_dai_set_sysclk(rtd->dais[rtd->dai_link->num_cpus],
RT5640_SCLK_S_MCLK, RT5640_SCLK_S_MCLK,
aud_mclk, SND_SOC_CLOCK_IN); aud_mclk, SND_SOC_CLOCK_IN);
if (err < 0) { if (err < 0) {
dev_err(card->dev, "dais[%d] clock not set\n", dev_err(card->dev, "dais[%d] clock not set\n",
rtd->num_cpus); rtd->dai_link->num_cpus);
return err; return err;
} }
} }
@@ -230,12 +233,13 @@ int tegra_codecs_runtime_setup(struct snd_soc_card *card,
rtd = get_pcm_runtime(card, "dspk-playback-r"); rtd = get_pcm_runtime(card, "dspk-playback-r");
if (rtd) { if (rtd) {
if (!strcmp(rtd->dais[rtd->num_cpus]->name, "tas2552-amplifier")) { if (!strcmp(rtd->dais[rtd->dai_link->num_cpus]->name, "tas2552-amplifier")) {
err = snd_soc_dai_set_sysclk(rtd->dais[rtd->num_cpus], err = snd_soc_dai_set_sysclk(rtd->dais[rtd->dai_link->num_cpus],
TAS2552_PDM_CLK_IVCLKIN, aud_mclk, TAS2552_PDM_CLK_IVCLKIN, aud_mclk,
SND_SOC_CLOCK_IN); SND_SOC_CLOCK_IN);
if (err < 0) { if (err < 0) {
dev_err(card->dev, "dais[%d] clock not set\n", rtd->num_cpus); dev_err(card->dev, "dais[%d] clock not set\n",
rtd->dai_link->num_cpus);
return err; return err;
} }
} }
@@ -243,12 +247,13 @@ int tegra_codecs_runtime_setup(struct snd_soc_card *card,
rtd = get_pcm_runtime(card, "dspk-playback-l"); rtd = get_pcm_runtime(card, "dspk-playback-l");
if (rtd) { if (rtd) {
if (!strcmp(rtd->dais[rtd->num_cpus]->name, "tas2552-amplifier")) { if (!strcmp(rtd->dais[rtd->dai_link->num_cpus]->name, "tas2552-amplifier")) {
err = snd_soc_dai_set_sysclk(rtd->dais[rtd->num_cpus], err = snd_soc_dai_set_sysclk(rtd->dais[rtd->dai_link->num_cpus],
TAS2552_PDM_CLK_IVCLKIN, aud_mclk, TAS2552_PDM_CLK_IVCLKIN, aud_mclk,
SND_SOC_CLOCK_IN); SND_SOC_CLOCK_IN);
if (err < 0) { if (err < 0) {
dev_err(card->dev, "dais[%d] clock not set\n", rtd->num_cpus); dev_err(card->dev, "dais[%d] clock not set\n",
rtd->dai_link->num_cpus);
return err; return err;
} }
} }