This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Failed to get supply 'IOVDD': -19



我调试音频驱动,加载驱动时,调试信息显示:

   Failed to get supply 'IOVDD': -19  

  什么原因啊?

[    1.475982] usbhid: USB HID core driver  
[    1.480590] usbcore: registered new interface driver snd-usb-audio
[    1.488128] tlv320aic3x-codec 3-001b: ---wxj---aic3x_i2c_probe()
[    1.494445] tlv320aic3x-codec 3-001b: ---wxj---aic3x->control_type = SND_SOC_I2C
[    1.502197] tlv320aic3x-codec 3-001b: ---wxj---snd_soc_register_codec return 0
[    1.510833] ---wxj---soc-core.c soc_bind_dai_link(), binding TLV320AIC3X at idx 0
[    1.518768] tlv320aic3x-codec 3-001b: ---wxj---tlv320aic3x.c aic3x_probe()
[    1.526000] tlv320aic3x-codec 3-001b: Failed to get supply 'IOVDD': -19
[    1.532928] tlv320aic3x-codec 3-001b: Failed to request supplies: -19
[    1.539642] tlv320aic3x-codec 3-001b: asoc: failed to probe CODEC tlv320aic3x-codec.3-001b: -19
[    1.548767] asoc: failed to instantiate card AM335X EVM: -19
[    1.554718] ALSA device list:
[    1.557800]   No soundcards found.

  • 请问您的音频芯片是哪个?

  • TLV3106

    完整名字:TLV320AIC3106RGZ

  • 从log来看,建议您查下您的电路,尤其是音频芯片的供电部分是否正确

  • 音频芯片的供电部分,测试正常3.3伏

  • 看log应该是i2c没有正确找到i2c,codec和335x这边是怎么连的,多看看了。

  • 这个是我们的硬件工程师,提供的连接图。

  • 问题应该出在I2C的控制上,测试I2C的时钟线,发现没有时钟信号

    那么,为什么I2C的时钟线上没有时钟信号呢?

     

  • 你用的i2c和evm板上是一个么,如果不是,需要修改驱动

  • 不是同一个。

    那么,您说的驱动,是改什么地方呢。

    我已经对pin-mux等地方,做了修改,包括I2C总线的ID对应关系。

     

  • 我已经修改的地方:

    首先,修改board-support/linux-3.2-psp04.06.00.07.sdk/arch/arm/mach-omap2/board-am33txevm.c
    增加以下代码
     
    /* Module pin mux for mcasp0 */
    static struct pinmux_config mcasp0_pin_mux[] = {
      {"mcasp0_aclkx.mcasp0_aclkx", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLDOWN},
      {"mcasp0_fsx.mcasp0_fsx", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLDOWN},
      {"mcasp0_axr0.mcasp0_axr0", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLDOWN},
      {"mcasp0_ahclkr.mcasp0_axr2", OMAP_MUX_MODE2 | AM33XX_PIN_INPUT_PULLDOWN},
      {NULL, 0},
    };
     
    static u8 am335x_iis_serializer_direction0[] = {
     TX_MODE, INACTIVE_MODE, RX_MODE,        INACTIVE_MODE,
     INACTIVE_MODE, INACTIVE_MODE, INACTIVE_MODE, INACTIVE_MODE,
     INACTIVE_MODE, INACTIVE_MODE, INACTIVE_MODE, INACTIVE_MODE,
     INACTIVE_MODE, INACTIVE_MODE, INACTIVE_MODE, INACTIVE_MODE,
    };
     

    static struct snd_platform_data am335x_evm_snd_data0 = {
     .tx_dma_offset = 0x46000000, /* McASP0 */
     .rx_dma_offset = 0x46000000,
     .op_mode = DAVINCI_MCASP_IIS_MODE,
     .num_serializer = ARRAY_SIZE(am335x_iis_serializer_direction0),
     .tdm_slots = 2,
     .serial_dir = am335x_iis_serializer_direction0,
     .asp_chan_q = EVENTQ_2,
     .version = MCASP_VERSION_3,
     .txnumevt = 1,
     .rxnumevt = 1,
    };
     

    static void mcasp0_init(int evm_id, int profile)
    {
     /* Configure McASP */
     setup_pin_mux(mcasp0_pin_mux);
     am335x_register_mcasp(&am335x_evm_snd_data0, 0);
     return;
    }
     
    static struct evm_dev_cfg beaglebone_dev_cfg[] = {
     ......
     {mcasp0_init, DEV_ON_BASEBOARD, PROFILE_NONE},
     ....
    }
     

    其次修改:sound/soc/davinci/davinci-evm.c
    static struct snd_soc_dai_link am335x_evm_dai = {
     .name = "TLV320AIC3X",
     .stream_name = "AIC3X",
     .cpu_dai_name = "davinci-mcasp.0", //1-->0
     .codec_dai_name = "tlv320aic3x-hifi",
     .codec_name = "tlv320aic3x-codec.3-001b", //2-->1
     .platform_name = "davinci-pcm-audio",
     .init = evm_aic3x_init,
     .ops = &evm_ops,
    };
  • I2C 部分的代码没有配置,需要配置

  • static struct pinmux_config i2c2_pin_mux[] = {
     {"spi0_sclk.i2c2_sda",    OMAP_MUX_MODE2 | AM33XX_SLEWCTRL_SLOW |
         AM33XX_PULL_UP | AM33XX_INPUT_EN},
     {"spi0_d0.i2c2_scl",   OMAP_MUX_MODE2 | AM33XX_SLEWCTRL_SLOW |
         AM33XX_PULL_UP | AM33XX_INPUT_EN},
     {NULL, 0},
    };

    static struct i2c_board_info am335x_i2c_boardinfo2[] = {
        {
            I2C_BOARD_INFO("tlv320aic3x", 0x1b),
        },
    };

    static void i2c2_init(int evm_id, int profile)
    {
        setup_pin_mux(i2c2_pin_mux);
        omap_register_i2c_bus(3, 400, am335x_i2c_boardinfo2,
            ARRAY_SIZE(am335x_i2c_boardinfo2));
        return;
    }

    是这个吗

  • 您好:

      我也遇到了和您一样的 问题,请问您解决了吗?

  • 您好:

       我也遇到了一样的问题,我们用的是I2C2,i2c2这部分已经配置好了。

    static struct pinmux_config i2c2_pin_mux[] = {
        {"uart1_ctsn.i2c2_sda",    OMAP_MUX_MODE3 | AM33XX_SLEWCTRL_SLOW |
                        AM33XX_PULL_UP | AM33XX_INPUT_EN},
        {"uart1_rtsn.i2c2_scl",   OMAP_MUX_MODE3 | AM33XX_SLEWCTRL_SLOW |
                        AM33XX_PULL_UP | AM33XX_INPUT_EN},
        {NULL, 0},
    };

    static void i2c2_init(int evm_id, int profile)
    {
        printk("++++zhouqun i2c2_init\n");
        setup_pin_mux(i2c2_pin_mux);
        omap_register_i2c_bus(3, 100, am335x_i2c2_boardinfo,
                ARRAY_SIZE(am335x_i2c2_boardinfo));
        return;
    }
    static struct i2c_board_info am335x_i2c2_boardinfo[] = {
        {
            I2C_BOARD_INFO("tlv320aic3x", 0x18),
        },
        
    };

    log:

    [    1.738555] ++++++snd_soc_register_codec:0                                   
    [    1.743804] ++++++++++++++++zhouqun:davinci_mcasp_init                       
    [    1.743835]  ++++++++++++++==zhouqun : davinci_mcasp_probe                   
    [    1.755737] +++++++zhouqun :evm_init                                         
    [    1.759582] ++++zhouqun am335x_evm?                                          
    [    1.765045] ++++++++++soc_bind_dai_link                                      
    [    1.769134] ++++++++zhouqun:binding TLV320AIC3X at idx 0                     
    [    1.775024] +++++++++++++++ aic3x_probe                                      
    [    1.779144] tlv320aic3x-codec 1-001b: Failed to get supply 'IOVDD': -19      
    [    1.786224] tlv320aic3x-codec 1-001b: Failed to request supplies: -19        
    [    1.793090] tlv320aic3x-codec 1-001b: asoc: failed to probe CODEC tlv320aic39
    [    1.802398] asoc: failed to instantiate card AM335X EVM: -19                 
    [    1.808471] ALSA device list:                                                
    [    1.811614]   No soundcards found.