Loading sound/soc/codecs/tlv320dac33.c +24 −4 Original line number Diff line number Diff line Loading @@ -524,6 +524,22 @@ static const struct soc_enum dac33_fifo_mode_enum = SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(dac33_fifo_mode_texts), dac33_fifo_mode_texts); /* L/R Line Output Gain */ static const char *lr_lineout_gain_texts[] = { "Line -12dB DAC 0dB", "Line -6dB DAC 6dB", "Line 0dB DAC 12dB", "Line 6dB DAC 18dB", }; static const struct soc_enum l_lineout_gain_enum = SOC_ENUM_SINGLE(DAC33_LDAC_PWR_CTRL, 0, ARRAY_SIZE(lr_lineout_gain_texts), lr_lineout_gain_texts); static const struct soc_enum r_lineout_gain_enum = SOC_ENUM_SINGLE(DAC33_RDAC_PWR_CTRL, 0, ARRAY_SIZE(lr_lineout_gain_texts), lr_lineout_gain_texts); /* * DACL/R digital volume control: * from 0 dB to -63.5 in 0.5 dB steps Loading @@ -541,6 +557,8 @@ static const struct snd_kcontrol_new dac33_snd_controls[] = { DAC33_LDAC_DIG_VOL_CTRL, DAC33_RDAC_DIG_VOL_CTRL, 7, 1, 1), SOC_DOUBLE_R("Line to Line Out Volume", DAC33_LINEL_TO_LLO_VOL, DAC33_LINER_TO_RLO_VOL, 0, 127, 1), SOC_ENUM("Left Line Output Gain", l_lineout_gain_enum), SOC_ENUM("Right Line Output Gain", r_lineout_gain_enum), }; static const struct snd_kcontrol_new dac33_mode_snd_controls[] = { Loading Loading @@ -651,6 +669,7 @@ static int dac33_set_bias_level(struct snd_soc_codec *codec, static inline void dac33_prefill_handler(struct tlv320dac33_priv *dac33) { struct snd_soc_codec *codec = dac33->codec; unsigned int delay; switch (dac33->fifo_mode) { case DAC33_FIFO_MODE1: Loading @@ -666,8 +685,9 @@ static inline void dac33_prefill_handler(struct tlv320dac33_priv *dac33) dac33_write16(codec, DAC33_PREFILL_MSB, DAC33_THRREG(dac33->alarm_threshold)); /* Enable Alarm Threshold IRQ with a delay */ udelay(SAMPLES_TO_US(dac33->burst_rate, dac33->alarm_threshold)); delay = SAMPLES_TO_US(dac33->burst_rate, dac33->alarm_threshold) + 1000; usleep_range(delay, delay + 500); dac33_write(codec, DAC33_FIFO_IRQ_MASK, DAC33_MAT); break; case DAC33_FIFO_MODE7: Loading Loading @@ -767,11 +787,11 @@ static irqreturn_t dac33_interrupt_handler(int irq, void *dev) static void dac33_oscwait(struct snd_soc_codec *codec) { int timeout = 20; int timeout = 60; u8 reg; do { msleep(1); usleep_range(1000, 2000); dac33_read(codec, DAC33_INT_OSC_STATUS, ®); } while (((reg & 0x03) != DAC33_OSCSTATUS_NORMAL) && timeout--); if ((reg & 0x03) != DAC33_OSCSTATUS_NORMAL) Loading sound/soc/codecs/tpa6130a2.c +22 −6 Original line number Diff line number Diff line Loading @@ -98,16 +98,21 @@ static u8 tpa6130a2_read(int reg) return data->regs[reg]; } static void tpa6130a2_initialize(void) static int tpa6130a2_initialize(void) { struct tpa6130a2_data *data; int i; int i, ret = 0; BUG_ON(tpa6130a2_client == NULL); data = i2c_get_clientdata(tpa6130a2_client); for (i = 1; i < TPA6130A2_REG_VERSION; i++) tpa6130a2_i2c_write(i, data->regs[i]); for (i = 1; i < TPA6130A2_REG_VERSION; i++) { ret = tpa6130a2_i2c_write(i, data->regs[i]); if (ret < 0) break; } return ret; } static int tpa6130a2_power(int power) Loading @@ -133,7 +138,16 @@ static int tpa6130a2_power(int power) } data->power_state = 1; tpa6130a2_initialize(); ret = tpa6130a2_initialize(); if (ret < 0) { dev_err(&tpa6130a2_client->dev, "Failed to initialize chip\n"); if (data->power_gpio >= 0) gpio_set_value(data->power_gpio, 0); regulator_disable(data->supply); data->power_state = 0; goto exit; } /* Clear SWS */ val = tpa6130a2_read(TPA6130A2_REG_CONTROL); Loading Loading @@ -375,7 +389,9 @@ int tpa6130a2_add_controls(struct snd_soc_codec *codec) { struct tpa6130a2_data *data; BUG_ON(tpa6130a2_client == NULL); if (tpa6130a2_client == NULL) return -ENODEV; data = i2c_get_clientdata(tpa6130a2_client); snd_soc_dapm_new_controls(codec, tpa6130a2_dapm_widgets, Loading sound/soc/omap/am3517evm.c +1 −3 Original line number Diff line number Diff line Loading @@ -157,10 +157,8 @@ static int __init am3517evm_soc_init(void) { int ret; if (!machine_is_omap3517evm()) { pr_err("Not OMAP3517 / AM3517 EVM!\n"); if (!machine_is_omap3517evm()) return -ENODEV; } pr_info("OMAP3517 / AM3517 EVM SoC init\n"); am3517evm_snd_device = platform_device_alloc("soc-audio", -1); Loading sound/soc/omap/igep0020.c +1 −3 Original line number Diff line number Diff line Loading @@ -101,10 +101,8 @@ static int __init igep2_soc_init(void) { int ret; if (!machine_is_igep0020()) { pr_debug("Not IGEP v2!\n"); if (!machine_is_igep0020()) return -ENODEV; } printk(KERN_INFO "IGEP v2 SoC init\n"); igep2_snd_device = platform_device_alloc("soc-audio", -1); Loading sound/soc/omap/omap2evm.c +1 −3 Original line number Diff line number Diff line Loading @@ -103,10 +103,8 @@ static int __init omap2evm_soc_init(void) { int ret; if (!machine_is_omap2evm()) { pr_debug("Not omap2evm!\n"); if (!machine_is_omap2evm()) return -ENODEV; } printk(KERN_INFO "omap2evm SoC init\n"); omap2evm_snd_device = platform_device_alloc("soc-audio", -1); Loading Loading
sound/soc/codecs/tlv320dac33.c +24 −4 Original line number Diff line number Diff line Loading @@ -524,6 +524,22 @@ static const struct soc_enum dac33_fifo_mode_enum = SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(dac33_fifo_mode_texts), dac33_fifo_mode_texts); /* L/R Line Output Gain */ static const char *lr_lineout_gain_texts[] = { "Line -12dB DAC 0dB", "Line -6dB DAC 6dB", "Line 0dB DAC 12dB", "Line 6dB DAC 18dB", }; static const struct soc_enum l_lineout_gain_enum = SOC_ENUM_SINGLE(DAC33_LDAC_PWR_CTRL, 0, ARRAY_SIZE(lr_lineout_gain_texts), lr_lineout_gain_texts); static const struct soc_enum r_lineout_gain_enum = SOC_ENUM_SINGLE(DAC33_RDAC_PWR_CTRL, 0, ARRAY_SIZE(lr_lineout_gain_texts), lr_lineout_gain_texts); /* * DACL/R digital volume control: * from 0 dB to -63.5 in 0.5 dB steps Loading @@ -541,6 +557,8 @@ static const struct snd_kcontrol_new dac33_snd_controls[] = { DAC33_LDAC_DIG_VOL_CTRL, DAC33_RDAC_DIG_VOL_CTRL, 7, 1, 1), SOC_DOUBLE_R("Line to Line Out Volume", DAC33_LINEL_TO_LLO_VOL, DAC33_LINER_TO_RLO_VOL, 0, 127, 1), SOC_ENUM("Left Line Output Gain", l_lineout_gain_enum), SOC_ENUM("Right Line Output Gain", r_lineout_gain_enum), }; static const struct snd_kcontrol_new dac33_mode_snd_controls[] = { Loading Loading @@ -651,6 +669,7 @@ static int dac33_set_bias_level(struct snd_soc_codec *codec, static inline void dac33_prefill_handler(struct tlv320dac33_priv *dac33) { struct snd_soc_codec *codec = dac33->codec; unsigned int delay; switch (dac33->fifo_mode) { case DAC33_FIFO_MODE1: Loading @@ -666,8 +685,9 @@ static inline void dac33_prefill_handler(struct tlv320dac33_priv *dac33) dac33_write16(codec, DAC33_PREFILL_MSB, DAC33_THRREG(dac33->alarm_threshold)); /* Enable Alarm Threshold IRQ with a delay */ udelay(SAMPLES_TO_US(dac33->burst_rate, dac33->alarm_threshold)); delay = SAMPLES_TO_US(dac33->burst_rate, dac33->alarm_threshold) + 1000; usleep_range(delay, delay + 500); dac33_write(codec, DAC33_FIFO_IRQ_MASK, DAC33_MAT); break; case DAC33_FIFO_MODE7: Loading Loading @@ -767,11 +787,11 @@ static irqreturn_t dac33_interrupt_handler(int irq, void *dev) static void dac33_oscwait(struct snd_soc_codec *codec) { int timeout = 20; int timeout = 60; u8 reg; do { msleep(1); usleep_range(1000, 2000); dac33_read(codec, DAC33_INT_OSC_STATUS, ®); } while (((reg & 0x03) != DAC33_OSCSTATUS_NORMAL) && timeout--); if ((reg & 0x03) != DAC33_OSCSTATUS_NORMAL) Loading
sound/soc/codecs/tpa6130a2.c +22 −6 Original line number Diff line number Diff line Loading @@ -98,16 +98,21 @@ static u8 tpa6130a2_read(int reg) return data->regs[reg]; } static void tpa6130a2_initialize(void) static int tpa6130a2_initialize(void) { struct tpa6130a2_data *data; int i; int i, ret = 0; BUG_ON(tpa6130a2_client == NULL); data = i2c_get_clientdata(tpa6130a2_client); for (i = 1; i < TPA6130A2_REG_VERSION; i++) tpa6130a2_i2c_write(i, data->regs[i]); for (i = 1; i < TPA6130A2_REG_VERSION; i++) { ret = tpa6130a2_i2c_write(i, data->regs[i]); if (ret < 0) break; } return ret; } static int tpa6130a2_power(int power) Loading @@ -133,7 +138,16 @@ static int tpa6130a2_power(int power) } data->power_state = 1; tpa6130a2_initialize(); ret = tpa6130a2_initialize(); if (ret < 0) { dev_err(&tpa6130a2_client->dev, "Failed to initialize chip\n"); if (data->power_gpio >= 0) gpio_set_value(data->power_gpio, 0); regulator_disable(data->supply); data->power_state = 0; goto exit; } /* Clear SWS */ val = tpa6130a2_read(TPA6130A2_REG_CONTROL); Loading Loading @@ -375,7 +389,9 @@ int tpa6130a2_add_controls(struct snd_soc_codec *codec) { struct tpa6130a2_data *data; BUG_ON(tpa6130a2_client == NULL); if (tpa6130a2_client == NULL) return -ENODEV; data = i2c_get_clientdata(tpa6130a2_client); snd_soc_dapm_new_controls(codec, tpa6130a2_dapm_widgets, Loading
sound/soc/omap/am3517evm.c +1 −3 Original line number Diff line number Diff line Loading @@ -157,10 +157,8 @@ static int __init am3517evm_soc_init(void) { int ret; if (!machine_is_omap3517evm()) { pr_err("Not OMAP3517 / AM3517 EVM!\n"); if (!machine_is_omap3517evm()) return -ENODEV; } pr_info("OMAP3517 / AM3517 EVM SoC init\n"); am3517evm_snd_device = platform_device_alloc("soc-audio", -1); Loading
sound/soc/omap/igep0020.c +1 −3 Original line number Diff line number Diff line Loading @@ -101,10 +101,8 @@ static int __init igep2_soc_init(void) { int ret; if (!machine_is_igep0020()) { pr_debug("Not IGEP v2!\n"); if (!machine_is_igep0020()) return -ENODEV; } printk(KERN_INFO "IGEP v2 SoC init\n"); igep2_snd_device = platform_device_alloc("soc-audio", -1); Loading
sound/soc/omap/omap2evm.c +1 −3 Original line number Diff line number Diff line Loading @@ -103,10 +103,8 @@ static int __init omap2evm_soc_init(void) { int ret; if (!machine_is_omap2evm()) { pr_debug("Not omap2evm!\n"); if (!machine_is_omap2evm()) return -ENODEV; } printk(KERN_INFO "omap2evm SoC init\n"); omap2evm_snd_device = platform_device_alloc("soc-audio", -1); Loading