Merge remote-tracking branches 'asoc/topic/rt286', 'asoc/topic/rt5616' and 'asoc/topic/rt5677' into asoc-next
This commit is contained in:
commit
d1587e345c
13 changed files with 9422 additions and 7 deletions
26
Documentation/devicetree/bindings/sound/rt5616.txt
Normal file
26
Documentation/devicetree/bindings/sound/rt5616.txt
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
RT5616 audio CODEC
|
||||||
|
|
||||||
|
This device supports I2C only.
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
|
||||||
|
- compatible : "realtek,rt5616".
|
||||||
|
|
||||||
|
- reg : The I2C address of the device.
|
||||||
|
|
||||||
|
Pins on the device (for linking into audio routes) for RT5616:
|
||||||
|
|
||||||
|
* IN1P
|
||||||
|
* IN2P
|
||||||
|
* IN2N
|
||||||
|
* LOUTL
|
||||||
|
* LOUTR
|
||||||
|
* HPOL
|
||||||
|
* HPOR
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
codec: rt5616@1b {
|
||||||
|
compatible = "realtek,rt5616";
|
||||||
|
reg = <0x1b>;
|
||||||
|
};
|
75
Documentation/devicetree/bindings/sound/rt5659.txt
Normal file
75
Documentation/devicetree/bindings/sound/rt5659.txt
Normal file
|
@ -0,0 +1,75 @@
|
||||||
|
RT5659/RT5658 audio CODEC
|
||||||
|
|
||||||
|
This device supports I2C only.
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
|
||||||
|
- compatible : One of "realtek,rt5659" or "realtek,rt5658".
|
||||||
|
|
||||||
|
- reg : The I2C address of the device.
|
||||||
|
|
||||||
|
- interrupts : The CODEC's interrupt output.
|
||||||
|
|
||||||
|
Optional properties:
|
||||||
|
|
||||||
|
- realtek,in1-differential
|
||||||
|
- realtek,in3-differential
|
||||||
|
- realtek,in4-differential
|
||||||
|
Boolean. Indicate MIC1/3/4 input are differential, rather than single-ended.
|
||||||
|
|
||||||
|
- realtek,dmic1-data-pin
|
||||||
|
0: dmic1 is not used
|
||||||
|
1: using IN2N pin as dmic1 data pin
|
||||||
|
2: using GPIO5 pin as dmic1 data pin
|
||||||
|
3: using GPIO9 pin as dmic1 data pin
|
||||||
|
4: using GPIO11 pin as dmic1 data pin
|
||||||
|
|
||||||
|
- realtek,dmic2-data-pin
|
||||||
|
0: dmic2 is not used
|
||||||
|
1: using IN2P pin as dmic2 data pin
|
||||||
|
2: using GPIO6 pin as dmic2 data pin
|
||||||
|
3: using GPIO10 pin as dmic2 data pin
|
||||||
|
4: using GPIO12 pin as dmic2 data pin
|
||||||
|
|
||||||
|
- realtek,jd-src
|
||||||
|
0: No JD is used
|
||||||
|
1: using JD3 as JD source
|
||||||
|
|
||||||
|
- realtek,ldo1-en-gpios : The GPIO that controls the CODEC's LDO1_EN pin.
|
||||||
|
- realtek,reset-gpios : The GPIO that controls the CODEC's RESET pin.
|
||||||
|
|
||||||
|
Pins on the device (for linking into audio routes) for RT5659/RT5658:
|
||||||
|
|
||||||
|
* DMIC L1
|
||||||
|
* DMIC R1
|
||||||
|
* DMIC L2
|
||||||
|
* DMIC R2
|
||||||
|
* IN1P
|
||||||
|
* IN1N
|
||||||
|
* IN2P
|
||||||
|
* IN2N
|
||||||
|
* IN3P
|
||||||
|
* IN3N
|
||||||
|
* IN4P
|
||||||
|
* IN4N
|
||||||
|
* HPOL
|
||||||
|
* HPOR
|
||||||
|
* SPOL
|
||||||
|
* SPOR
|
||||||
|
* LOUTL
|
||||||
|
* LOUTR
|
||||||
|
* MONOOUT
|
||||||
|
* PDML
|
||||||
|
* PDMR
|
||||||
|
* SPDIF
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
rt5659 {
|
||||||
|
compatible = "realtek,rt5659";
|
||||||
|
reg = <0x1b>;
|
||||||
|
interrupt-parent = <&gpio>;
|
||||||
|
interrupts = <TEGRA_GPIO(W, 3) GPIO_ACTIVE_HIGH>;
|
||||||
|
realtek,ldo1-en-gpios =
|
||||||
|
<&gpio TEGRA_GPIO(V, 3) GPIO_ACTIVE_HIGH>;
|
||||||
|
};
|
|
@ -18,7 +18,7 @@ Required properties:
|
||||||
Optional properties:
|
Optional properties:
|
||||||
|
|
||||||
- realtek,pow-ldo2-gpio : The GPIO that controls the CODEC's POW_LDO2 pin.
|
- realtek,pow-ldo2-gpio : The GPIO that controls the CODEC's POW_LDO2 pin.
|
||||||
- realtek,reset-gpio : The GPIO that controls the CODEC's RESET pin.
|
- realtek,reset-gpio : The GPIO that controls the CODEC's RESET pin. Active low.
|
||||||
|
|
||||||
- realtek,in1-differential
|
- realtek,in1-differential
|
||||||
- realtek,in2-differential
|
- realtek,in2-differential
|
||||||
|
|
49
include/sound/rt5659.h
Normal file
49
include/sound/rt5659.h
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
/*
|
||||||
|
* linux/sound/rt5659.h -- Platform data for RT5659
|
||||||
|
*
|
||||||
|
* Copyright 2013 Realtek Microelectronics
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License version 2 as
|
||||||
|
* published by the Free Software Foundation.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __LINUX_SND_RT5659_H
|
||||||
|
#define __LINUX_SND_RT5659_H
|
||||||
|
|
||||||
|
enum rt5659_dmic1_data_pin {
|
||||||
|
RT5659_DMIC1_NULL,
|
||||||
|
RT5659_DMIC1_DATA_IN2N,
|
||||||
|
RT5659_DMIC1_DATA_GPIO5,
|
||||||
|
RT5659_DMIC1_DATA_GPIO9,
|
||||||
|
RT5659_DMIC1_DATA_GPIO11,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum rt5659_dmic2_data_pin {
|
||||||
|
RT5659_DMIC2_NULL,
|
||||||
|
RT5659_DMIC2_DATA_IN2P,
|
||||||
|
RT5659_DMIC2_DATA_GPIO6,
|
||||||
|
RT5659_DMIC2_DATA_GPIO10,
|
||||||
|
RT5659_DMIC2_DATA_GPIO12,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum rt5659_jd_src {
|
||||||
|
RT5659_JD_NULL,
|
||||||
|
RT5659_JD3,
|
||||||
|
};
|
||||||
|
|
||||||
|
struct rt5659_platform_data {
|
||||||
|
bool in1_diff;
|
||||||
|
bool in3_diff;
|
||||||
|
bool in4_diff;
|
||||||
|
|
||||||
|
int ldo1_en; /* GPIO for LDO1_EN */
|
||||||
|
int reset; /* GPIO for RESET */
|
||||||
|
|
||||||
|
enum rt5659_dmic1_data_pin dmic1_data_pin;
|
||||||
|
enum rt5659_dmic2_data_pin dmic2_data_pin;
|
||||||
|
enum rt5659_jd_src jd_src;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
|
@ -95,10 +95,12 @@ config SND_SOC_ALL_CODECS
|
||||||
select SND_SOC_PCM512x_SPI if SPI_MASTER
|
select SND_SOC_PCM512x_SPI if SPI_MASTER
|
||||||
select SND_SOC_RT286 if I2C
|
select SND_SOC_RT286 if I2C
|
||||||
select SND_SOC_RT298 if I2C
|
select SND_SOC_RT298 if I2C
|
||||||
|
select SND_SOC_RT5616 if I2C
|
||||||
select SND_SOC_RT5631 if I2C
|
select SND_SOC_RT5631 if I2C
|
||||||
select SND_SOC_RT5640 if I2C
|
select SND_SOC_RT5640 if I2C
|
||||||
select SND_SOC_RT5645 if I2C
|
select SND_SOC_RT5645 if I2C
|
||||||
select SND_SOC_RT5651 if I2C
|
select SND_SOC_RT5651 if I2C
|
||||||
|
select SND_SOC_RT5659 if I2C
|
||||||
select SND_SOC_RT5670 if I2C
|
select SND_SOC_RT5670 if I2C
|
||||||
select SND_SOC_RT5677 if I2C && SPI_MASTER
|
select SND_SOC_RT5677 if I2C && SPI_MASTER
|
||||||
select SND_SOC_SGTL5000 if I2C
|
select SND_SOC_SGTL5000 if I2C
|
||||||
|
@ -563,14 +565,18 @@ config SND_SOC_PCM512x_SPI
|
||||||
|
|
||||||
config SND_SOC_RL6231
|
config SND_SOC_RL6231
|
||||||
tristate
|
tristate
|
||||||
|
default y if SND_SOC_RT5616=y
|
||||||
default y if SND_SOC_RT5640=y
|
default y if SND_SOC_RT5640=y
|
||||||
default y if SND_SOC_RT5645=y
|
default y if SND_SOC_RT5645=y
|
||||||
default y if SND_SOC_RT5651=y
|
default y if SND_SOC_RT5651=y
|
||||||
|
default y if SND_SOC_RT5659=y
|
||||||
default y if SND_SOC_RT5670=y
|
default y if SND_SOC_RT5670=y
|
||||||
default y if SND_SOC_RT5677=y
|
default y if SND_SOC_RT5677=y
|
||||||
|
default m if SND_SOC_RT5616=m
|
||||||
default m if SND_SOC_RT5640=m
|
default m if SND_SOC_RT5640=m
|
||||||
default m if SND_SOC_RT5645=m
|
default m if SND_SOC_RT5645=m
|
||||||
default m if SND_SOC_RT5651=m
|
default m if SND_SOC_RT5651=m
|
||||||
|
default m if SND_SOC_RT5659=m
|
||||||
default m if SND_SOC_RT5670=m
|
default m if SND_SOC_RT5670=m
|
||||||
default m if SND_SOC_RT5677=m
|
default m if SND_SOC_RT5677=m
|
||||||
|
|
||||||
|
@ -589,6 +595,9 @@ config SND_SOC_RT298
|
||||||
tristate
|
tristate
|
||||||
depends on I2C
|
depends on I2C
|
||||||
|
|
||||||
|
config SND_SOC_RT5616
|
||||||
|
tristate
|
||||||
|
|
||||||
config SND_SOC_RT5631
|
config SND_SOC_RT5631
|
||||||
tristate "Realtek ALC5631/RT5631 CODEC"
|
tristate "Realtek ALC5631/RT5631 CODEC"
|
||||||
depends on I2C
|
depends on I2C
|
||||||
|
@ -602,6 +611,9 @@ config SND_SOC_RT5645
|
||||||
config SND_SOC_RT5651
|
config SND_SOC_RT5651
|
||||||
tristate
|
tristate
|
||||||
|
|
||||||
|
config SND_SOC_RT5659
|
||||||
|
tristate
|
||||||
|
|
||||||
config SND_SOC_RT5670
|
config SND_SOC_RT5670
|
||||||
tristate
|
tristate
|
||||||
|
|
||||||
|
|
|
@ -92,10 +92,12 @@ snd-soc-rl6231-objs := rl6231.o
|
||||||
snd-soc-rl6347a-objs := rl6347a.o
|
snd-soc-rl6347a-objs := rl6347a.o
|
||||||
snd-soc-rt286-objs := rt286.o
|
snd-soc-rt286-objs := rt286.o
|
||||||
snd-soc-rt298-objs := rt298.o
|
snd-soc-rt298-objs := rt298.o
|
||||||
|
snd-soc-rt5616-objs := rt5616.o
|
||||||
snd-soc-rt5631-objs := rt5631.o
|
snd-soc-rt5631-objs := rt5631.o
|
||||||
snd-soc-rt5640-objs := rt5640.o
|
snd-soc-rt5640-objs := rt5640.o
|
||||||
snd-soc-rt5645-objs := rt5645.o
|
snd-soc-rt5645-objs := rt5645.o
|
||||||
snd-soc-rt5651-objs := rt5651.o
|
snd-soc-rt5651-objs := rt5651.o
|
||||||
|
snd-soc-rt5659-objs := rt5659.o
|
||||||
snd-soc-rt5670-objs := rt5670.o
|
snd-soc-rt5670-objs := rt5670.o
|
||||||
snd-soc-rt5677-objs := rt5677.o
|
snd-soc-rt5677-objs := rt5677.o
|
||||||
snd-soc-rt5677-spi-objs := rt5677-spi.o
|
snd-soc-rt5677-spi-objs := rt5677-spi.o
|
||||||
|
@ -294,10 +296,12 @@ obj-$(CONFIG_SND_SOC_RL6231) += snd-soc-rl6231.o
|
||||||
obj-$(CONFIG_SND_SOC_RL6347A) += snd-soc-rl6347a.o
|
obj-$(CONFIG_SND_SOC_RL6347A) += snd-soc-rl6347a.o
|
||||||
obj-$(CONFIG_SND_SOC_RT286) += snd-soc-rt286.o
|
obj-$(CONFIG_SND_SOC_RT286) += snd-soc-rt286.o
|
||||||
obj-$(CONFIG_SND_SOC_RT298) += snd-soc-rt298.o
|
obj-$(CONFIG_SND_SOC_RT298) += snd-soc-rt298.o
|
||||||
|
obj-$(CONFIG_SND_SOC_RT5616) += snd-soc-rt5616.o
|
||||||
obj-$(CONFIG_SND_SOC_RT5631) += snd-soc-rt5631.o
|
obj-$(CONFIG_SND_SOC_RT5631) += snd-soc-rt5631.o
|
||||||
obj-$(CONFIG_SND_SOC_RT5640) += snd-soc-rt5640.o
|
obj-$(CONFIG_SND_SOC_RT5640) += snd-soc-rt5640.o
|
||||||
obj-$(CONFIG_SND_SOC_RT5645) += snd-soc-rt5645.o
|
obj-$(CONFIG_SND_SOC_RT5645) += snd-soc-rt5645.o
|
||||||
obj-$(CONFIG_SND_SOC_RT5651) += snd-soc-rt5651.o
|
obj-$(CONFIG_SND_SOC_RT5651) += snd-soc-rt5651.o
|
||||||
|
obj-$(CONFIG_SND_SOC_RT5659) += snd-soc-rt5659.o
|
||||||
obj-$(CONFIG_SND_SOC_RT5670) += snd-soc-rt5670.o
|
obj-$(CONFIG_SND_SOC_RT5670) += snd-soc-rt5670.o
|
||||||
obj-$(CONFIG_SND_SOC_RT5677) += snd-soc-rt5677.o
|
obj-$(CONFIG_SND_SOC_RT5677) += snd-soc-rt5677.o
|
||||||
obj-$(CONFIG_SND_SOC_RT5677_SPI) += snd-soc-rt5677-spi.o
|
obj-$(CONFIG_SND_SOC_RT5677_SPI) += snd-soc-rt5677-spi.o
|
||||||
|
|
|
@ -1114,6 +1114,12 @@ static const struct dmi_system_id force_combo_jack_table[] = {
|
||||||
DMI_MATCH(DMI_BOARD_NAME, "Wilson Beach SDS")
|
DMI_MATCH(DMI_BOARD_NAME, "Wilson Beach SDS")
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
.ident = "Intel Skylake RVP",
|
||||||
|
.matches = {
|
||||||
|
DMI_MATCH(DMI_PRODUCT_NAME, "Skylake Client platform")
|
||||||
|
}
|
||||||
|
},
|
||||||
{ }
|
{ }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -854,8 +854,6 @@ static int rt298_set_dai_sysclk(struct snd_soc_dai *dai,
|
||||||
} else {
|
} else {
|
||||||
snd_soc_update_bits(codec,
|
snd_soc_update_bits(codec,
|
||||||
RT298_I2S_CTRL2, 0x0100, 0x0100);
|
RT298_I2S_CTRL2, 0x0100, 0x0100);
|
||||||
snd_soc_update_bits(codec,
|
|
||||||
RT298_PLL_CTRL, 0x4, 0x4);
|
|
||||||
snd_soc_update_bits(codec,
|
snd_soc_update_bits(codec,
|
||||||
RT298_PLL_CTRL1, 0x20, 0x0);
|
RT298_PLL_CTRL1, 0x20, 0x0);
|
||||||
}
|
}
|
||||||
|
|
1381
sound/soc/codecs/rt5616.c
Normal file
1381
sound/soc/codecs/rt5616.c
Normal file
File diff suppressed because it is too large
Load diff
1819
sound/soc/codecs/rt5616.h
Normal file
1819
sound/soc/codecs/rt5616.h
Normal file
File diff suppressed because it is too large
Load diff
4223
sound/soc/codecs/rt5659.c
Normal file
4223
sound/soc/codecs/rt5659.c
Normal file
File diff suppressed because it is too large
Load diff
1819
sound/soc/codecs/rt5659.h
Normal file
1819
sound/soc/codecs/rt5659.h
Normal file
File diff suppressed because it is too large
Load diff
|
@ -4788,7 +4788,7 @@ static int rt5677_remove(struct snd_soc_codec *codec)
|
||||||
|
|
||||||
regmap_write(rt5677->regmap, RT5677_RESET, 0x10ec);
|
regmap_write(rt5677->regmap, RT5677_RESET, 0x10ec);
|
||||||
gpiod_set_value_cansleep(rt5677->pow_ldo2, 0);
|
gpiod_set_value_cansleep(rt5677->pow_ldo2, 0);
|
||||||
gpiod_set_value_cansleep(rt5677->reset_pin, 0);
|
gpiod_set_value_cansleep(rt5677->reset_pin, 1);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -4803,7 +4803,7 @@ static int rt5677_suspend(struct snd_soc_codec *codec)
|
||||||
regcache_mark_dirty(rt5677->regmap);
|
regcache_mark_dirty(rt5677->regmap);
|
||||||
|
|
||||||
gpiod_set_value_cansleep(rt5677->pow_ldo2, 0);
|
gpiod_set_value_cansleep(rt5677->pow_ldo2, 0);
|
||||||
gpiod_set_value_cansleep(rt5677->reset_pin, 0);
|
gpiod_set_value_cansleep(rt5677->reset_pin, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -4814,8 +4814,11 @@ static int rt5677_resume(struct snd_soc_codec *codec)
|
||||||
struct rt5677_priv *rt5677 = snd_soc_codec_get_drvdata(codec);
|
struct rt5677_priv *rt5677 = snd_soc_codec_get_drvdata(codec);
|
||||||
|
|
||||||
if (!rt5677->dsp_vad_en) {
|
if (!rt5677->dsp_vad_en) {
|
||||||
|
rt5677->pll_src = 0;
|
||||||
|
rt5677->pll_in = 0;
|
||||||
|
rt5677->pll_out = 0;
|
||||||
gpiod_set_value_cansleep(rt5677->pow_ldo2, 1);
|
gpiod_set_value_cansleep(rt5677->pow_ldo2, 1);
|
||||||
gpiod_set_value_cansleep(rt5677->reset_pin, 1);
|
gpiod_set_value_cansleep(rt5677->reset_pin, 0);
|
||||||
if (rt5677->pow_ldo2 || rt5677->reset_pin)
|
if (rt5677->pow_ldo2 || rt5677->reset_pin)
|
||||||
msleep(10);
|
msleep(10);
|
||||||
|
|
||||||
|
@ -5160,7 +5163,7 @@ static int rt5677_i2c_probe(struct i2c_client *i2c,
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
rt5677->reset_pin = devm_gpiod_get_optional(&i2c->dev,
|
rt5677->reset_pin = devm_gpiod_get_optional(&i2c->dev,
|
||||||
"realtek,reset", GPIOD_OUT_HIGH);
|
"realtek,reset", GPIOD_OUT_LOW);
|
||||||
if (IS_ERR(rt5677->reset_pin)) {
|
if (IS_ERR(rt5677->reset_pin)) {
|
||||||
ret = PTR_ERR(rt5677->reset_pin);
|
ret = PTR_ERR(rt5677->reset_pin);
|
||||||
dev_err(&i2c->dev, "Failed to request RESET: %d\n", ret);
|
dev_err(&i2c->dev, "Failed to request RESET: %d\n", ret);
|
||||||
|
|
Loading…
Add table
Reference in a new issue