Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b11bdb52 authored by Takashi Iwai's avatar Takashi Iwai
Browse files

Merge branch 'for-2.6.37' of...

Merge branch 'for-2.6.37' of git://git.kernel.org/pub/scm/linux/kernel/git/lrg/asoc-2.6 into topic/asoc
parents 4428bc09 84eae18c
Loading
Loading
Loading
Loading
+24 −4
Original line number Diff line number Diff line
@@ -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
@@ -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[] = {
@@ -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:
@@ -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:
@@ -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, &reg);
	} while (((reg & 0x03) != DAC33_OSCSTATUS_NORMAL) && timeout--);
	if ((reg & 0x03) != DAC33_OSCSTATUS_NORMAL)
+22 −6
Original line number Diff line number Diff line
@@ -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)
@@ -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);
@@ -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,
+1 −3
Original line number Diff line number Diff line
@@ -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);
+1 −3
Original line number Diff line number Diff line
@@ -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);
+1 −3
Original line number Diff line number Diff line
@@ -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