mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-06 06:37:59 +00:00
ASoC: mediatek: mt6358: support DMIC one-wire mode
Supports DMIC one-wire mode. Uses a DT property "dmic-mode" to select. Signed-off-by: Jiaxin Yu <jiaxin.yu@mediatek.com> Link: https://lore.kernel.org/r/1591353222-18576-2-git-send-email-jiaxin.yu@mediatek.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
17212e7188
commit
c46fc80094
1 changed files with 22 additions and 1 deletions
|
@ -95,6 +95,8 @@ struct mt6358_priv {
|
|||
struct regulator *avdd_reg;
|
||||
|
||||
int wov_enabled;
|
||||
|
||||
unsigned int dmic_one_wire_mode;
|
||||
};
|
||||
|
||||
int mt6358_set_mtkaif_protocol(struct snd_soc_component *cmpnt,
|
||||
|
@ -1831,7 +1833,10 @@ static int mt6358_dmic_enable(struct mt6358_priv *priv)
|
|||
mt6358_mtkaif_tx_enable(priv);
|
||||
|
||||
/* UL dmic setting */
|
||||
regmap_write(priv->regmap, MT6358_AFE_UL_SRC_CON0_H, 0x0080);
|
||||
if (priv->dmic_one_wire_mode)
|
||||
regmap_write(priv->regmap, MT6358_AFE_UL_SRC_CON0_H, 0x0400);
|
||||
else
|
||||
regmap_write(priv->regmap, MT6358_AFE_UL_SRC_CON0_H, 0x0080);
|
||||
|
||||
/* UL turn on */
|
||||
regmap_write(priv->regmap, MT6358_AFE_UL_SRC_CON0_L, 0x0003);
|
||||
|
@ -2426,6 +2431,20 @@ static const struct snd_soc_component_driver mt6358_soc_component_driver = {
|
|||
.num_dapm_routes = ARRAY_SIZE(mt6358_dapm_routes),
|
||||
};
|
||||
|
||||
static void mt6358_parse_dt(struct mt6358_priv *priv)
|
||||
{
|
||||
int ret;
|
||||
struct device *dev = priv->dev;
|
||||
|
||||
ret = of_property_read_u32(dev->of_node, "mediatek,dmic-mode",
|
||||
&priv->dmic_one_wire_mode);
|
||||
if (ret) {
|
||||
dev_warn(priv->dev, "%s() failed to read dmic-mode\n",
|
||||
__func__);
|
||||
priv->dmic_one_wire_mode = 0;
|
||||
}
|
||||
}
|
||||
|
||||
static int mt6358_platform_driver_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct mt6358_priv *priv;
|
||||
|
@ -2445,6 +2464,8 @@ static int mt6358_platform_driver_probe(struct platform_device *pdev)
|
|||
if (IS_ERR(priv->regmap))
|
||||
return PTR_ERR(priv->regmap);
|
||||
|
||||
mt6358_parse_dt(priv);
|
||||
|
||||
dev_info(priv->dev, "%s(), dev name %s\n",
|
||||
__func__, dev_name(&pdev->dev));
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue