lkml.org 
[lkml]   [2019]   [Apr]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 4.19 08/53] ASoC: nau8824: fix the issue of the widget with prefix name
    Date
    From: John Hsu <KCHSU0@nuvoton.com>

    [ Upstream commit 844a4a362dbec166b44d6b9b3dd45b08cb273703 ]

    The driver has two issues when machine add prefix name for codec.
    (1)The stream name of DAI can't find the AIF widgets.
    (2)The drivr can enable/disalbe the MICBIAS and SAR widgets.

    The patch will fix these issues caused by prefixed name added.

    Signed-off-by: John Hsu <KCHSU0@nuvoton.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    sound/soc/codecs/nau8824.c | 46 +++++++++++++++++++++++++++++++-------
    1 file changed, 38 insertions(+), 8 deletions(-)

    diff --git a/sound/soc/codecs/nau8824.c b/sound/soc/codecs/nau8824.c
    index 468d5143e2c4..663a208c2f78 100644
    --- a/sound/soc/codecs/nau8824.c
    +++ b/sound/soc/codecs/nau8824.c
    @@ -681,8 +681,8 @@ static const struct snd_soc_dapm_widget nau8824_dapm_widgets[] = {
    SND_SOC_DAPM_ADC("ADCR", NULL, NAU8824_REG_ANALOG_ADC_2,
    NAU8824_ADCR_EN_SFT, 0),

    - SND_SOC_DAPM_AIF_OUT("AIFTX", "HiFi Capture", 0, SND_SOC_NOPM, 0, 0),
    - SND_SOC_DAPM_AIF_IN("AIFRX", "HiFi Playback", 0, SND_SOC_NOPM, 0, 0),
    + SND_SOC_DAPM_AIF_OUT("AIFTX", "Capture", 0, SND_SOC_NOPM, 0, 0),
    + SND_SOC_DAPM_AIF_IN("AIFRX", "Playback", 0, SND_SOC_NOPM, 0, 0),

    SND_SOC_DAPM_DAC("DACL", NULL, NAU8824_REG_RDAC,
    NAU8824_DACL_EN_SFT, 0),
    @@ -831,6 +831,36 @@ static void nau8824_int_status_clear_all(struct regmap *regmap)
    }
    }

    +static void nau8824_dapm_disable_pin(struct nau8824 *nau8824, const char *pin)
    +{
    + struct snd_soc_dapm_context *dapm = nau8824->dapm;
    + const char *prefix = dapm->component->name_prefix;
    + char prefixed_pin[80];
    +
    + if (prefix) {
    + snprintf(prefixed_pin, sizeof(prefixed_pin), "%s %s",
    + prefix, pin);
    + snd_soc_dapm_disable_pin(dapm, prefixed_pin);
    + } else {
    + snd_soc_dapm_disable_pin(dapm, pin);
    + }
    +}
    +
    +static void nau8824_dapm_enable_pin(struct nau8824 *nau8824, const char *pin)
    +{
    + struct snd_soc_dapm_context *dapm = nau8824->dapm;
    + const char *prefix = dapm->component->name_prefix;
    + char prefixed_pin[80];
    +
    + if (prefix) {
    + snprintf(prefixed_pin, sizeof(prefixed_pin), "%s %s",
    + prefix, pin);
    + snd_soc_dapm_force_enable_pin(dapm, prefixed_pin);
    + } else {
    + snd_soc_dapm_force_enable_pin(dapm, pin);
    + }
    +}
    +
    static void nau8824_eject_jack(struct nau8824 *nau8824)
    {
    struct snd_soc_dapm_context *dapm = nau8824->dapm;
    @@ -839,8 +869,8 @@ static void nau8824_eject_jack(struct nau8824 *nau8824)
    /* Clear all interruption status */
    nau8824_int_status_clear_all(regmap);

    - snd_soc_dapm_disable_pin(dapm, "SAR");
    - snd_soc_dapm_disable_pin(dapm, "MICBIAS");
    + nau8824_dapm_disable_pin(nau8824, "SAR");
    + nau8824_dapm_disable_pin(nau8824, "MICBIAS");
    snd_soc_dapm_sync(dapm);

    /* Enable the insertion interruption, disable the ejection
    @@ -870,8 +900,8 @@ static void nau8824_jdet_work(struct work_struct *work)
    struct regmap *regmap = nau8824->regmap;
    int adc_value, event = 0, event_mask = 0;

    - snd_soc_dapm_force_enable_pin(dapm, "MICBIAS");
    - snd_soc_dapm_force_enable_pin(dapm, "SAR");
    + nau8824_dapm_enable_pin(nau8824, "MICBIAS");
    + nau8824_dapm_enable_pin(nau8824, "SAR");
    snd_soc_dapm_sync(dapm);

    msleep(100);
    @@ -882,8 +912,8 @@ static void nau8824_jdet_work(struct work_struct *work)
    if (adc_value < HEADSET_SARADC_THD) {
    event |= SND_JACK_HEADPHONE;

    - snd_soc_dapm_disable_pin(dapm, "SAR");
    - snd_soc_dapm_disable_pin(dapm, "MICBIAS");
    + nau8824_dapm_disable_pin(nau8824, "SAR");
    + nau8824_dapm_disable_pin(nau8824, "MICBIAS");
    snd_soc_dapm_sync(dapm);
    } else {
    event |= SND_JACK_HEADSET;
    --
    2.19.1
    \
     
     \ /
      Last update: 2019-04-27 03:51    [W:3.441 / U:0.544 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site