staging: greybus: audio: Resolve compilation errors for GB codec module

Due to dependencies on ASoC framework changes, GB dummy codec module
compilation is currently disabled. This patch updates codec driver as
per the latest ASoC APIs.

Signed-off-by: Vaibhav Agarwal <vaibhav.sr@gmail.com>
Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com>
Link: https://lore.kernel.org/r/dd66a960fca186da055600fe1e622b7a814cb543.1594290158.git.vaibhav.sr@gmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Vaibhav Agarwal 2020-07-09 15:57:19 +05:30 committed by Greg Kroah-Hartman
parent ac40b4d1e4
commit ce7bd8325d
2 changed files with 44 additions and 46 deletions

View File

@ -825,7 +825,7 @@ free_jacks:
int gbaudio_register_module(struct gbaudio_module_info *module)
{
int ret;
struct snd_soc_codec *codec;
struct snd_soc_component *comp;
struct snd_card *card;
struct gbaudio_jack *jack = NULL;
@ -834,8 +834,8 @@ int gbaudio_register_module(struct gbaudio_module_info *module)
return -EAGAIN;
}
codec = gbcodec->codec;
card = codec->card->snd_card;
comp = gbcodec->component;
card = comp->card->snd_card;
down_write(&card->controls_rwsem);
@ -847,33 +847,33 @@ int gbaudio_register_module(struct gbaudio_module_info *module)
return -EINVAL;
}
ret = gbaudio_init_jack(module, component->card);
ret = gbaudio_init_jack(module, comp->card);
if (ret) {
up_write(&card->controls_rwsem);
return ret;
}
if (module->dapm_widgets)
snd_soc_dapm_new_controls(&codec->dapm, module->dapm_widgets,
snd_soc_dapm_new_controls(&comp->dapm, module->dapm_widgets,
module->num_dapm_widgets);
if (module->controls)
snd_soc_add_codec_controls(codec, module->controls,
module->num_controls);
snd_soc_add_component_controls(comp, module->controls,
module->num_controls);
if (module->dapm_routes)
snd_soc_dapm_add_routes(&codec->dapm, module->dapm_routes,
snd_soc_dapm_add_routes(&comp->dapm, module->dapm_routes,
module->num_dapm_routes);
/* card already instantiated, create widgets here only */
if (codec->card->instantiated) {
snd_soc_dapm_link_component_dai_widgets(codec->card,
&codec->dapm);
if (comp->card->instantiated) {
snd_soc_dapm_link_component_dai_widgets(comp->card,
&comp->dapm);
#ifdef CONFIG_SND_JACK
/*
* register jack devices for this module
* from codec->jack_list
*/
list_for_each_entry(jack, &module->jack_list, list) {
snd_device_register(codec->card->snd_card,
snd_device_register(comp->card->snd_card,
jack->jack.jack);
}
#endif
@ -883,9 +883,9 @@ int gbaudio_register_module(struct gbaudio_module_info *module)
list_add(&module->list, &gbcodec->module_list);
mutex_unlock(&gbcodec->lock);
if (codec->card->instantiated)
ret = snd_soc_dapm_new_widgets(&codec->dapm);
dev_dbg(codec->dev, "Registered %s module\n", module->name);
if (comp->card->instantiated)
ret = snd_soc_dapm_new_widgets(comp->card);
dev_dbg(comp->dev, "Registered %s module\n", module->name);
up_write(&card->controls_rwsem);
return ret;
@ -956,18 +956,18 @@ static void gbaudio_codec_cleanup(struct gbaudio_module_info *module)
void gbaudio_unregister_module(struct gbaudio_module_info *module)
{
struct snd_soc_codec *codec = gbcodec->codec;
struct snd_card *card = codec->card->snd_card;
struct snd_soc_component *comp = gbcodec->component;
struct snd_card *card = comp->card->snd_card;
struct gbaudio_jack *jack, *n;
int mask;
dev_dbg(codec->dev, "Unregister %s module\n", module->name);
dev_dbg(comp->dev, "Unregister %s module\n", module->name);
down_write(&card->controls_rwsem);
mutex_lock(&gbcodec->lock);
gbaudio_codec_cleanup(module);
list_del(&module->list);
dev_dbg(codec->dev, "Process Unregister %s module\n", module->name);
dev_dbg(comp->dev, "Process Unregister %s module\n", module->name);
mutex_unlock(&gbcodec->lock);
#ifdef CONFIG_SND_JACK
@ -983,99 +983,97 @@ void gbaudio_unregister_module(struct gbaudio_module_info *module)
dev_dbg(module->dev, "Report %s removal\n",
jack->jack.jack->id);
snd_soc_jack_report(&jack->jack, 0, mask);
snd_device_free(codec->card->snd_card, jack->jack.jack);
snd_device_free(comp->card->snd_card,
jack->jack.jack);
list_del(&jack->list);
}
}
#endif
if (module->dapm_routes) {
dev_dbg(codec->dev, "Removing %d routes\n",
dev_dbg(comp->dev, "Removing %d routes\n",
module->num_dapm_routes);
snd_soc_dapm_del_routes(&codec->dapm, module->dapm_routes,
snd_soc_dapm_del_routes(&comp->dapm, module->dapm_routes,
module->num_dapm_routes);
}
if (module->controls) {
dev_dbg(codec->dev, "Removing %d controls\n",
dev_dbg(comp->dev, "Removing %d controls\n",
module->num_controls);
snd_soc_remove_codec_controls(codec, module->controls,
snd_soc_remove_codec_controls(comp, module->controls,
module->num_controls);
}
if (module->dapm_widgets) {
dev_dbg(codec->dev, "Removing %d widgets\n",
dev_dbg(comp->dev, "Removing %d widgets\n",
module->num_dapm_widgets);
snd_soc_dapm_free_controls(&codec->dapm, module->dapm_widgets,
snd_soc_dapm_free_controls(&comp->dapm, module->dapm_widgets,
module->num_dapm_widgets);
}
dev_dbg(codec->dev, "Unregistered %s module\n", module->name);
dev_dbg(comp->dev, "Unregistered %s module\n", module->name);
up_write(&card->controls_rwsem);
}
EXPORT_SYMBOL(gbaudio_unregister_module);
/*
* codec driver ops
* component driver ops
*/
static int gbcodec_probe(struct snd_soc_codec *codec)
static int gbcodec_probe(struct snd_soc_component *comp)
{
int i;
struct gbaudio_codec_info *info;
struct gbaudio_codec_dai *dai;
info = devm_kzalloc(codec->dev, sizeof(*info), GFP_KERNEL);
info = devm_kzalloc(comp->dev, sizeof(*info), GFP_KERNEL);
if (!info)
return -ENOMEM;
info->dev = codec->dev;
info->dev = comp->dev;
INIT_LIST_HEAD(&info->module_list);
mutex_init(&info->lock);
INIT_LIST_HEAD(&info->dai_list);
/* init dai_list used to maintain runtime stream info */
for (i = 0; i < ARRAY_SIZE(gbaudio_dai); i++) {
dai = devm_kzalloc(codec->dev, sizeof(*dai), GFP_KERNEL);
dai = devm_kzalloc(comp->dev, sizeof(*dai), GFP_KERNEL);
if (!dai)
return -ENOMEM;
dai->id = gbaudio_dai[i].id;
list_add(&dai->list, &info->dai_list);
}
info->codec = codec;
snd_soc_codec_set_drvdata(codec, info);
info->component = comp;
snd_soc_component_set_drvdata(comp, info);
gbcodec = info;
device_init_wakeup(codec->dev, 1);
device_init_wakeup(comp->dev, 1);
return 0;
}
static int gbcodec_remove(struct snd_soc_codec *codec)
static void gbcodec_remove(struct snd_soc_component *comp)
{
/* Empty function for now */
return 0;
return;
}
static int gbcodec_write(struct snd_soc_codec *codec, unsigned int reg,
static int gbcodec_write(struct snd_soc_component *comp, unsigned int reg,
unsigned int value)
{
return 0;
}
static unsigned int gbcodec_read(struct snd_soc_codec *codec,
static unsigned int gbcodec_read(struct snd_soc_component *comp,
unsigned int reg)
{
return 0;
}
static struct snd_soc_codec_driver soc_codec_dev_gbaudio = {
static const struct snd_soc_component_driver soc_codec_dev_gbaudio = {
.probe = gbcodec_probe,
.remove = gbcodec_remove,
.read = gbcodec_read,
.write = gbcodec_write,
.idle_bias_off = true,
.ignore_pmdown_time = 1,
};
#ifdef CONFIG_PM
@ -1099,13 +1097,13 @@ static const struct dev_pm_ops gbaudio_codec_pm_ops = {
static int gbaudio_codec_probe(struct platform_device *pdev)
{
return snd_soc_register_codec(&pdev->dev, &soc_codec_dev_gbaudio,
return devm_snd_soc_register_component(&pdev->dev,
&soc_codec_dev_gbaudio,
gbaudio_dai, ARRAY_SIZE(gbaudio_dai));
}
static int gbaudio_codec_remove(struct platform_device *pdev)
{
snd_soc_unregister_codec(&pdev->dev);
return 0;
}

View File

@ -66,7 +66,7 @@ struct gbaudio_codec_dai {
struct gbaudio_codec_info {
struct device *dev;
struct snd_soc_codec *codec;
struct snd_soc_component *component;
struct list_head module_list;
/* to maintain runtime stream params for each DAI */
struct list_head dai_list;