lkml.org 
[lkml]   [2014]   [Jan]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCHv2 1/6] ASoC: core: add off-CODEC widgets list register/unregister
    Date
    This will be need for some audio card, which maybe using the simple
    card and the off-CODEC widgets is needed.

    Signed-off-by: Xiubo Li <Li.Xiubo@freescale.com>
    ---
    include/sound/soc.h | 10 ++++++++++
    sound/soc/soc-core.c | 39 +++++++++++++++++++++++++++++++++++++++
    2 files changed, 49 insertions(+)

    diff --git a/include/sound/soc.h b/include/sound/soc.h
    index 03ce45b..23f9572 100644
    --- a/include/sound/soc.h
    +++ b/include/sound/soc.h
    @@ -326,6 +326,7 @@ struct snd_soc_platform_driver;
    struct snd_soc_codec;
    struct snd_soc_codec_driver;
    struct snd_soc_component;
    +struct snd_soc_widgets;
    struct snd_soc_component_driver;
    struct soc_enum;
    struct snd_soc_jack;
    @@ -385,6 +386,8 @@ int devm_snd_soc_register_component(struct device *dev,
    const struct snd_soc_component_driver *cmpnt_drv,
    struct snd_soc_dai_driver *dai_drv, int num_dai);
    void snd_soc_unregister_component(struct device *dev);
    +int snd_soc_register_widgets(struct snd_soc_widgets *wdg);
    +void snd_soc_unregister_widgets(struct snd_soc_widgets *wdg);
    int snd_soc_codec_volatile_register(struct snd_soc_codec *codec,
    unsigned int reg);
    int snd_soc_codec_readable_register(struct snd_soc_codec *codec,
    @@ -664,6 +667,13 @@ struct snd_soc_component {
    const struct snd_soc_component_driver *driver;
    };

    +struct snd_soc_widgets {
    + const char *name;
    + struct list_head list;
    + const struct snd_soc_dapm_widget *widgets;
    + unsigned int cnt;
    +};
    +
    /* SoC Audio Codec device */
    struct snd_soc_codec {
    const char *name;
    diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
    index 3a128f0..9adcada 100644
    --- a/sound/soc/soc-core.c
    +++ b/sound/soc/soc-core.c
    @@ -3821,6 +3821,45 @@ int snd_soc_unregister_card(struct snd_soc_card *card)
    }
    EXPORT_SYMBOL_GPL(snd_soc_unregister_card);

    +static DEFINE_MUTEX(widgets_mutex);
    +static LIST_HEAD(widgets_list);
    +/**
    + * snd_soc_register_widgets - Register off codec widgets with
    + * the ASoC core
    + *
    + * @wdg: widgets to register
    + *
    + */
    +int snd_soc_register_widgets(struct snd_soc_widgets *wdg)
    +{
    + int ret;
    +
    + if (!wdg)
    + return -EINVAL;
    +
    + mutex_lock(&widgets_mutex);
    + list_add(&wdg->list, &widgets_list);
    + mutex_unlock(&widgets_mutex);
    +
    + return ret;
    +}
    +EXPORT_SYMBOL_GPL(snd_soc_register_widgets);
    +
    +/**
    + * snd_soc_unregister_widgets - Unregister off codec widgets with
    + * the ASoC core
    + *
    + * @wdg: widgets to unregister
    + *
    + */
    +void snd_soc_unregister_widgets(struct snd_soc_widgets *wdg)
    +{
    + mutex_lock(&widgets_mutex);
    + list_del(&wdg->list);
    + mutex_unlock(&widgets_mutex);
    +}
    +EXPORT_SYMBOL_GPL(snd_soc_unregister_widgets);
    +
    /*
    * Simplify DAI link configuration by removing ".-1" from device names
    * and sanitizing names.
    --
    1.8.4



    \
     
     \ /
      Last update: 2014-01-13 08:21    [W:3.744 / U:0.468 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site