I've had the same problem with kernels later than 3.8. On 3.8, I switched to 
using ti,da830-evm-audio (davinci-evm.c, I think). My DTS (for both types of 
sound card) call for a 12MHz McASP master clock, but in 4.x kernels, I would 
actually see a 24MHz signal come off the master clock, and I think that's what 
led to the underflow.

FWIW, here's my DTS (for 3.8):
        
        
https://github.com/JetForMe/podtique/blob/v1/bbb/cape/Podtique1/BB-BONE-AUDI-03-00A0.dts

I would love to get this to work in 4.1.x

> On Oct 18, 2015, at 07:46 , [email protected] wrote:
> 
> Hi,
> 
> I have the same problem.
> Which kernel are you using?
> I'm currently working with the offical BeagleBone 4.1 kernel.
> The only useful information I found is this post:
> http://mailman.alsa-project.org/pipermail/alsa-devel/2014-November/083797.html
> "An underrun (playback) event occurs when the serializer transfer
> data from the XRBUF buffer to the XRSR shift register, but the
> XRBUF hasn't been filled. Similarly, the overrun (capture) event
> occurs when data from the XRSR shift register is transferred to
> the XRBUF but it hasn't been read yet."
> 
> So I think there is a problem with the mcasp interface and ASoC.
> 
> Am Montag, 10. August 2015 14:25:32 UTC+2 schrieb Shadi Abdu-Rahman:
> Hi all,
> 
> I'm having trouble using an audio codec board with a custom device tree 
> overlay (see below) with the Beaglebone Black. When exporting the overlay, 
> the codecs seem to register fine:
> 
> dmesg
> [ 1375.144463] bone_capemgr bone_capemgr: part_number 'BB-BONE-XA-SK-AU', 
> version 'N/A'
> [ 1375.152305] bone_capemgr bone_capemgr: slot #4: override
> [ 1375.157799] bone_capemgr bone_capemgr: Using override eeprom data at slot 4
> [ 1375.164864] bone_capemgr bone_capemgr: slot #4: 'Override Board 
> Name,00A0,Override Manuf,BB-BONE-XA-SK-AU'
> [ 1375.206351] bone_capemgr bone_capemgr: slot #4: dtbo 
> 'BB-BONE-XA-SK-AU-00A0.dtbo' loaded; overlay id #0
> [ 1375.464260] cs4270 2-0048: found device at i2c address 48
> [ 1375.469699] cs4270 2-0048: hardware revision 3
> [ 1375.485782] cs4270 2-0049: found device at i2c address 49
> [ 1375.491222] cs4270 2-0049: hardware revision 3
> [ 1375.504744] (NULL device *): Setting gpio_int_masterclk_enable = 0
> [ 1375.513334] asoc-simple-card ocp:sound: cs4270-hifi <-> 48038000.mcasp 
> mapping ok
> [ 1375.521095] (NULL device *): Setting gpio_int_masterclk_enable = 0
> [ 1375.529893] asoc-simple-card ocp:sound: cs4270-hifi <-> 48038000.mcasp 
> mapping ok
> 
> aplay -l
> **** List of PLAYBACK Hardware Devices ****
> card 0: XMOSAudioSlice [XMOS-Audio-Slice], device 0: 
> davinci-mcasp.0-cs4270-hifi-a cs4270-hifi-0 []
>   Subdevices: 1/1
>   Subdevice #0: subdevice #0
> card 0: XMOSAudioSlice [XMOS-Audio-Slice], device 1: 
> davinci-mcasp.0-cs4270-hifi-b cs4270-hifi-1 []
>   Subdevices: 1/1
>   Subdevice #0: subdevice #0
> 
> lsmod:
> snd_soc_davinci_mcasp    14391  2 
> snd_soc_simple_card     8156  0 
> snd_soc_edma            1150  1 snd_soc_davinci_mcasp
> snd_soc_cs4270          6875  2 
> snd_soc_omap            2573  1 snd_soc_davinci_mcasp
> snd_soc_core          156881  5 
> snd_soc_davinci_mcasp,snd_soc_edma,snd_soc_omap,snd_soc_simple_card,snd_soc_cs4270
> snd_compress           11668  1 snd_soc_core
> snd_pcm_dmaengine       5061  2 snd_soc_core,snd_soc_omap
> snd_pcm                77081  4 
> snd_soc_davinci_mcasp,snd_soc_core,snd_soc_omap,snd_pcm_dmaengine
> snd_timer              16860  1 snd_pcm
> snd                    56902  4 snd_soc_core,snd_timer,snd_pcm,snd_compress
> soundcore               6869  1 snd
> pvrsrvkm              147014  0 
> omap_aes               13089  0 
> omap_sham              19190  0 
> tda998x                11683  1 
> tilcdc                 27919  0 
> omap_rng                4354  0 
> rng_core                7270  1 omap_rng
> drm_kms_helper        106610  3 tda998x,tilcdc
> uio_pdrv_genirq         3317  0 
> leds_gpio               3102  0 
> uio                     8330  1 uio_pdrv_genirq
> 
> but when I try to play an audio file I get a stream of transmit buffer 
> underflows and no audio:
> 
> aplay test128.wav
> Playing WAVE 'test128.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, 
> Stereo
> underrun!!! (at least 1.630 ms long)
> underrun!!! (at least 5.413 ms long)
> underrun!!! (at least 0.636 ms long)
> underrun!!! (at least 5.369 ms long)
> underrun!!! (at least 0.217 ms long)
> underrun!!! (at least 0.641 ms long)
> underrun!!! (at least 5.254 ms long)
> 
> dmesg
> [ 1493.190031] davinci-mcasp 48038000.mcasp: Transmit buffer underflow
> [ 1493.201647] davinci-mcasp 48038000.mcasp: Transmit buffer underflow
> [ 1493.218719] davinci-mcasp 48038000.mcasp: Transmit buffer underflow
> [ 1493.229946] davinci-mcasp 48038000.mcasp: Transmit buffer underflow
> [ 1493.245328] davinci-mcasp 48038000.mcasp: Transmit buffer underflow
> [ 1493.259411] davinci-mcasp 48038000.mcasp: Transmit buffer underflow
> [ 1493.270549] davinci-mcasp 48038000.mcasp: Transmit buffer underflow
> 
> Using a software oscilloscope, I can see that the frame clock starts on 
> mcasp0_fsx frame clock line but stops after a few periods. There’s no 
> activity on the on the mcasp0_axr2 audio out line.
> 
> This might be related to the problem mentioned here, but I couldn't see a 
> solution for it. I might also have missed something trivial. Any pointers or 
> help would be much appreciated.
> 
> Additional information:
> I’m using the v4.1.3-bone15 linux kernel with 
> debian-8.1-minimal-armhf-2015-06-09 compiled as per Robert C Nelsons 
> instructions here.
> 
> The board I’m using is an XMOS XA-SK-AUDIO slice and consists of two Cirrus 
> Logic cs4270 codecs and an onboard oscillator generating the master clock. 
> I’ve interfaced the board to a XMOS micro controller to make sure the board 
> is in working order (and it is). When connected to the BBB, reset 
> de-assertion and some initial i2c codec configuration (setting the codecs in 
> software mode) are handled by the same XMOS micro controller.
> 
> The overlay I’m using (compiled and installed using bb-overlays) looks like 
> this:
> /dts-v1/;
> /plugin/;
> 
> / {
>     compatible = "ti,beaglebone", "ti,beaglebone-black";
>     part-number = "BB-BONE-XA-SK-AU";
>     version = "00A0";
>  
>     exclusive-use =
>         /* pin header usage */
>         "P9.25",    /* mcasp0_ahclkx <- MCLK */
>         "P9.31",    /* mcasp0_aclkx <-> BCLK*/
>         "P9.29",    /* mcasp0_fsx <-> LRCLK */
>         "P9.30",    /* mcasp0_axr0 <- ADC_DATA0 */
>         "P9.41",    /* mcasp0_axr1 <- ADC_DATA1 */
>         "P9.28",    /* mcasp0_axr2 -> DAC_DATA0 */
>         "P9.27",    /* mcasp0_axr3 -> DAC_DATA1 */
>         /* hardware ip usage */
>         "gpio0_15",    /* ext-mclk-sel -> MCLK_FSEL */
>         "gpio0_20", /* CLKOUT2 disabled */
>         "gpio1_27", /* internal 24.576 MHz oscillator disabled */
>         "mcasp0";
> 
>     fragment@0 {
>         target = <&am33xx_pinmux>;
>         __overlay__ {
>             i2c2_pins: pinmux_i2c2_pins {
>                 pinctrl-single,pins = <
>                     /* Pullup resistors available on codec board */
>                     0x17c 0x2b        /* i2c2_scl,        (PIN_INPUT | 
> MUX_MODE3) */
>                     0x178 0x2b        /* i2c2_sda,         (PIN_INPUT | 
> MUX_MODE3) */
>                 >;
>             };
>             
>             mcasp0_pins: pinmux_mcasp0_pins {
>                 pinctrl-single,pins = <
>                     0x1ac 0x20        /* mcasp0_ahclkx,    
> (PIN_INPUT_PULLDOWN | MUX_MODE0) */
>                     0x190 0x20        /* mcasp0_aclkx,    (PIN_INPUT_PULLDOWN 
> | MUX_MODE0) */
>                     0x194 0x20        /* mcasp0_fsx,        
> (PIN_INPUT_PULLDOWN | MUX_MODE0) */
>                     0x198 0x20        /* mcasp0_axr0,        
> (PIN_INPUT_PULLDOWN | MUX_MODE0) */
>                     0x1a8 0x20        /* mcasp0_axr1,        
> (PIN_INPUT_PULLDOWN | MUX_MODE0) */
>                     0x19c 0x02        /* mcasp0_axr2,        
> (PIN_OUTPUT_PULLDOWN | MUX_MODE2) */
>                     0x1a4 0x02        /* mcasp0_axr3,        
> (PIN_OUTPUT_PULLDOWN | MUX_MODE2) */    
>                     /* disable internal 24.576 MHz oscillator */
>                     0x06c 0x07      /* gpio1_27,        (PIN_OUTPUT_PULLDOWN 
> | MUX_MODE7) */
>                 >;
>             };
>             
>             gpio_pins: pinmux_gpio_pins {
>                 pinctrl-single,pins = <
>                     /* ext-mclk-sel */
>                     0x184 0x17        /* gpio0_15,        (PIN_OUTPUT_PULLUP 
> | MUX_MODE7) */
>                     /* disable CLKOUT2 to allow usage of mcasp0_axr1 on P9_41 
> */
>                     0x1b4 0x2b        /* gpio0_20,        (PIN_INPUT | 
> MUX_MODE3) */
>                 >;
>             };
>         };
>     };
>     
>     fragment@1 {
>         target = <&i2c2>;
>         __overlay__ {
>             pinctrl-names = "default";
>             pinctrl-0 = <&i2c2_pins>;
>             status = "okay";
>             #address-cells = <1>;
>             #size-cells = <0>;
>             clock-frequency = <100000>;
>             
>             cs4270m: cs4270@48 {
>                 compatible = "cirrus,cs4270";
>                 status = "okay";
>                 #sound-dai-cells = <0>;
>                 reg = <0x48>;
>                 name-prefix = "a";
>                 va-supply = <&ldo4_reg>;
>                 vd-supply = <&ldo4_reg>;
>                 vlc-supply = <&ldo4_reg>;
>             };
>             
>             cs4270s: cs4270@49 {
>                 compatible = "cirrus,cs4270";
>                 status = "okay";
>                 #sound-dai-cells = <0>;
>                 reg = <0x49>;
>                 name-prefix = "b";
>                 va-supply = <&ldo4_reg>;
>                 vd-supply = <&ldo4_reg>;
>                 vlc-supply = <&ldo4_reg>;
>             };
>         };
>     };
> 
>     fragment@2 {
>         target = <&mcasp0>;
>         __overlay__ {
>             pinctrl-names = "default";
>             pinctrl-0 = <&mcasp0_pins>;
>             status = "okay";
>             #sound-dai-cells = <0>;
>             op-mode = <0>;    // MCASP_IIS_MODE
>             tdm-slots = <2>;
>             num-serializer = <4>;
>             serial-dir = <        // 0: INACTIVE, 1: TX, 2: RX
>                 2 2 1 1
>             >;
>             tx-num-evt = <1>;
>             rx-num-evt = <1>;
>         };
>     };
> 
>     fragment@3 {
>         target = <&ocp>;
>         __overlay__ {
>             sound {
>                 compatible = "simple-audio-card";
>                 simple-audio-card,name = "XMOS-Audio-Slice";
>                 
>                 simple-audio-card,widgets =
>                     "Line", "Line In 1",
>                     "Line", "Line Out 1",
>                     "Line", "Line In 2",
>                     "Line", "Line Out 2"
>                     ;
>                 simple-audio-card,routing =
>                     "a AINA", "Line In 1",
>                     "a AINB", "Line In 1",
>                     "Line Out 1", "a AOUTA",
>                     "Line Out 1", "a AOUTB",
>                     "b AINA", "Line In 2",
>                     "b AINB", "Line In 2",
>                     "Line Out 2", "b AOUTA",
>                     "Line Out 2", "b AOUTB"
>                     ;
>                     
>                 simple-audio-card,int-masterclk-enable = <&gpio1 27 0>;
> 
>                 simple-audio-card,dai-link@1 {
>                     format = "i2s";
>                     frame-master = <&cpu_node1>;
>                     bitclock-master = <&cpu_node1>;
>                     cpu_node1: cpu {
>                         sound-dai = <&mcasp0>;
>                         system-clock-frequency = <24576000>;
>                     };
>                     codec_node1: codec {
>                         sound-dai = <&cs4270s>;
>                         system-clock-frequency = <24576000>;
>                     };
>                 };
>                 
>                 simple-audio-card,dai-link@0 {
>                     format = "i2s";
>                     frame-master = <&cpu_node0>;
>                     bitclock-master = <&cpu_node0>;
>                     cpu_node0: cpu {
>                         sound-dai = <&mcasp0>;
>                         system-clock-frequency = <24576000>;
>                     };
>                     codec_node0: codec {
>                         sound-dai = <&cs4270m>;
>                         system-clock-frequency = <24576000>;
>                     };
>                 };
>             };
>         };
>     };
> };
> 
> 
> I've also made the following modifications to cs4270.c, simple-card.c, and 
> soc-core.c to add a mechanism to disable the internal BBB master clock, as 
> well as to fix issues with missing source/sink widgets,
> [  137.408549] cs4270 2-0048: ASoC: no source widget found for AINA
> [  137.414737] cs4270 2-0048: ASoC: Failed to add route AINA -> direct -> 
> Capture
> [  137.422016] cs4270 2-0048: ASoC: no source widget found for AINB
> [  137.428137] cs4270 2-0048: ASoC: Failed to add route AINB -> direct -> 
> Capture
> [  137.435477] cs4270 2-0048: ASoC: no sink widget found for AOUTA
> [  137.441445] cs4270 2-0048: ASoC: Failed to add route Playback -> direct -> 
> AOUTA
> [  137.448928] cs4270 2-0048: ASoC: no sink widget found for AOUTB
> [  137.454922] cs4270 2-0048: ASoC: Failed to add route Playback -> direct -> 
> AOUTB
> 
> and name collisions:
> [   51.364492] asoc-simple-card ocp:sound: control 2:0:0:Master Playback 
> Volume:0 is already present
> [   51.373469] cs4270 2-0049: ASoC: Failed to add Master Playback Volume: -16
> ...
> [   51.393905] ------------[ cut here ]------------
> [   51.398561] WARNING: CPU: 0 PID: 44 at fs/sysfs/dir.c:31 
> sysfs_warn_dup+0x51/0x5c()
> [   51.406281] sysfs: cannot create duplicate filename 
> '/devices/platform/ocp/ocp:sound/davinci-mcasp.0-cs4270-hifi'
> 
> diff --git a/sound/soc/codecs/cs4270.c b/sound/soc/codecs/cs4270.c
> index e6d4ff9..4805747 100644
> --- a/sound/soc/codecs/cs4270.c
> +++ b/sound/soc/codecs/cs4270.c
> @@ -140,11 +140,11 @@ struct cs4270_private {
>  };
>  
>  static const struct snd_soc_dapm_widget cs4270_dapm_widgets[] = {
> -SND_SOC_DAPM_INPUT("AINL"),
> -SND_SOC_DAPM_INPUT("AINR"),
> +SND_SOC_DAPM_INPUT("AINA"),
> +SND_SOC_DAPM_INPUT("AINB"),
>  
> -SND_SOC_DAPM_OUTPUT("AOUTL"),
> -SND_SOC_DAPM_OUTPUT("AOUTR"),
> +SND_SOC_DAPM_OUTPUT("AOUTA"),
> +SND_SOC_DAPM_OUTPUT("AOUTB"),
>  };
>  
>  static const struct snd_soc_dapm_route cs4270_dapm_routes[] = {
> diff --git a/sound/soc/generic/simple-card.c b/sound/soc/generic/simple-card.c
> index 33feee9..1383b0f 100644
> --- a/sound/soc/generic/simple-card.c
> +++ b/sound/soc/generic/simple-card.c
> @@ -28,6 +28,7 @@ struct simple_card_data {
>          struct asoc_simple_dai codec_dai;
>      } *dai_props;
>      unsigned int mclk_fs;
> +    int gpio_int_masterclk_enable;
>      int gpio_hp_det;
>      int gpio_hp_det_invert;
>      int gpio_mic_det;
> @@ -50,7 +51,7 @@ static int asoc_simple_card_startup(struct 
> snd_pcm_substream *substream)
>      ret = clk_prepare_enable(dai_props->cpu_dai.clk);
>      if (ret)
>          return ret;
> -    
> +
>      ret = clk_prepare_enable(dai_props->codec_dai.clk);
>      if (ret)
>          clk_disable_unprepare(dai_props->cpu_dai.clk);
> @@ -167,6 +168,12 @@ static int asoc_simple_card_dai_init(struct 
> snd_soc_pcm_runtime *rtd)
>      if (ret < 0)
>          return ret;
>  
> +    /* TODO: Logic for enabling internal clock if specified in DT*/
> +    if (gpio_is_valid(priv->gpio_int_masterclk_enable)) {
> +        dev_info(NULL, "Setting gpio_int_masterclk_enable = 0");
> +        gpio_set_value(priv->gpio_int_masterclk_enable, 0);
> +    }
> +
>      if (gpio_is_valid(priv->gpio_hp_det)) {
>          snd_soc_card_jack_new(rtd->card, "Headphones",
>                        SND_JACK_HEADPHONE,
> @@ -195,16 +202,18 @@ static int asoc_simple_card_dai_init(struct 
> snd_soc_pcm_runtime *rtd)
>  }
>  
>  static int
> -asoc_simple_card_sub_parse_of(struct device_node *np,
> -                  struct asoc_simple_dai *dai,
> -                  struct device_node **p_node,
> -                  const char **name,
> -                  int *args_count)
> +asoc_simple_card_sub_parse_of(struct simple_card_data *priv,
> +                    struct device_node *np,
> +                    struct asoc_simple_dai *dai,
> +                    struct device_node **p_node,
> +                    const char **name,
> +                    int *args_count, bool codec_device, int idx)
>  {
>      struct of_phandle_args args;
>      struct clk *clk;
>      u32 val;
>      int ret;
> +    const char *str = NULL;
>  
>      /*
>       * Get node via "sound-dai = <&phandle port>"
> @@ -225,6 +234,18 @@ asoc_simple_card_sub_parse_of(struct device_node *np,
>      if (ret < 0)
>          return ret;
>  
> +    /* get name-prefix */
> +    if (codec_device) {
> +        /* NULL bypasses the device name check in soc-core */
> +        priv->snd_card.codec_conf[idx].dev_name = NULL;
> +        priv->snd_card.codec_conf[idx].of_node = *p_node;
> +        of_property_read_string(*p_node, "name-prefix", &str);
> +        if (str)
> +            priv->snd_card.codec_conf[idx].name_prefix = str;
> +        else
> +            priv->snd_card.codec_conf[idx].name_prefix = NULL;
> +    }
> +
>      /* Parse TDM slot */
>      ret = snd_soc_of_parse_tdm_slot(np, &dai->slots, &dai->slot_width);
>      if (ret)
> @@ -334,16 +355,16 @@ static int asoc_simple_card_dai_link_of(struct 
> device_node *node,
>      if (ret < 0)
>          goto dai_link_of_err;
>  
> -    ret = asoc_simple_card_sub_parse_of(cpu, &dai_props->cpu_dai,
> +    ret = asoc_simple_card_sub_parse_of(priv, cpu, &dai_props->cpu_dai,
>                          &dai_link->cpu_of_node,
>                          &dai_link->cpu_dai_name,
> -                        &cpu_args);
> +                        &cpu_args, false, idx);
>      if (ret < 0)
>          goto dai_link_of_err;
>  
> -    ret = asoc_simple_card_sub_parse_of(codec, &dai_props->codec_dai,
> +    ret = asoc_simple_card_sub_parse_of(priv, codec, &dai_props->codec_dai,
>                          &dai_link->codec_of_node,
> -                        &dai_link->codec_dai_name, NULL);
> +                        &dai_link->codec_dai_name, NULL, true, idx);
>      if (ret < 0)
>          goto dai_link_of_err;
>  
> @@ -357,8 +378,10 @@ static int asoc_simple_card_dai_link_of(struct 
> device_node *node,
>  
>      /* DAI link name is created from CPU/CODEC dai name */
>      name = devm_kzalloc(dev,
> -                strlen(dai_link->cpu_dai_name)   +
> -                strlen(dai_link->codec_dai_name) + 2,
> +                strlen(dai_link->cpu_dai_name) +
> +                strlen(dai_link->codec_dai_name) +
> +                (priv->snd_card.codec_conf[idx].name_prefix ?
> +                strlen(priv->snd_card.codec_conf[idx].name_prefix) + 3 : 2),
>                  GFP_KERNEL);
>      if (!name) {
>          ret = -ENOMEM;
> @@ -367,6 +390,9 @@ static int asoc_simple_card_dai_link_of(struct 
> device_node *node,
>  
>      sprintf(name, "%s-%s", dai_link->cpu_dai_name,
>                  dai_link->codec_dai_name);
> +    if (priv->snd_card.codec_conf[idx].name_prefix)
> +        sprintf(name, "%s-%s", name,
> +                priv->snd_card.codec_conf[idx].name_prefix);
>      dai_link->name = dai_link->stream_name = name;
>      dai_link->ops = &asoc_simple_card_ops;
>      dai_link->init = asoc_simple_card_dai_init;
> @@ -459,6 +485,15 @@ static int asoc_simple_card_parse_of(struct device_node 
> *node,
>              return ret;
>      }
>  
> +    /* request GPIO to control internal 24.576MHz oscillator */
> +    priv->gpio_int_masterclk_enable = of_get_named_gpio_flags(node,
> +                "simple-audio-card,int-masterclk-enable", 0, &flags);
> +
> +    if (priv->gpio_int_masterclk_enable == -EPROBE_DEFER)
> +        return -EPROBE_DEFER;
> +    gpio_request_one(priv->gpio_int_masterclk_enable, GPIOF_OUT_INIT_LOW,
> +                   "Internal Clock Enable Pin");
> +
>      priv->gpio_hp_det = of_get_named_gpio_flags(node,
>                  "simple-audio-card,hp-det-gpio", 0, &flags);
>      priv->gpio_hp_det_invert = !!(flags & OF_GPIO_ACTIVE_LOW);
> @@ -498,13 +533,18 @@ static int asoc_simple_card_probe(struct 
> platform_device *pdev)
>      struct snd_soc_dai_link *dai_link;
>      struct device_node *np = pdev->dev.of_node;
>      struct device *dev = &pdev->dev;
> -    int num_links, ret;
> +    int num_links = (np && of_get_child_by_name(np,
> +                    "simple-audio-card,dai-link")) ?
> +                    of_get_child_count(np) : 1;
> +    struct snd_soc_codec_conf codec_conf[num_links];
> +    int ret;
>  
> -    /* Get the number of DAI links */
> +    /* Get the number of DAI links
>      if (np && of_get_child_by_name(np, "simple-audio-card,dai-link"))
>          num_links = of_get_child_count(np);
>      else
>          num_links = 1;
> +    */
>  
>      /* Allocate the private data and the DAI link array */
>      priv = devm_kzalloc(dev,
> @@ -519,6 +559,8 @@ static int asoc_simple_card_probe(struct platform_device 
> *pdev)
>      dai_link = priv->dai_link;
>      priv->snd_card.dai_link = dai_link;
>      priv->snd_card.num_links = num_links;
> +    priv->snd_card.codec_conf = codec_conf;
> +    priv->snd_card.num_configs = num_links;
>  
>      priv->gpio_hp_det = -ENOENT;
>      priv->gpio_mic_det = -ENOENT;
> @@ -589,6 +631,11 @@ static int asoc_simple_card_remove(struct 
> platform_device *pdev)
>      struct snd_soc_card *card = platform_get_drvdata(pdev);
>      struct simple_card_data *priv = snd_soc_card_get_drvdata(card);
>  
> +    if (gpio_is_valid(priv->gpio_int_masterclk_enable)) {
> +        gpio_set_value(priv->gpio_int_masterclk_enable, 0);
> +        gpio_free(priv->gpio_int_masterclk_enable);
> +    }
> +
>      if (gpio_is_valid(priv->gpio_hp_det))
>          snd_soc_jack_free_gpios(&simple_card_hp_jack, 1,
>                      &simple_card_hp_jack_gpio);
> diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
> index 2373252..4808089 100644
> --- a/sound/soc/soc-core.c
> +++ b/sound/soc/soc-core.c
> @@ -1102,6 +1102,9 @@ static void soc_set_name_prefix(struct snd_soc_card 
> *card,
>  
>      for (i = 0; i < card->num_configs; i++) {
>          struct snd_soc_codec_conf *map = &card->codec_conf[i];
> +
> +        if (!map->name_prefix)
> +            continue;
>          if (map->of_node && component->dev->of_node != map->of_node)
>              continue;
>          if (map->dev_name && strcmp(component->name, map->dev_name))
> 
> 
> Thanks in advance,
> Shadi
> 
> 
> -- 
> For more options, visit http://beagleboard.org/discuss
> --- 
> You received this message because you are subscribed to the Google Groups 
> "BeagleBoard" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.


-- 
Rick Mann
[email protected]


-- 
For more options, visit http://beagleboard.org/discuss
--- 
You received this message because you are subscribed to the Google Groups 
"BeagleBoard" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to