On Wed, 2015-06-10 at 22:24 +0800, Koro Chen wrote:
--- /dev/null +++ b/sound/soc/mediatek/Kconfig
+config SND_SOC_MEDIATEK
- bool "ASoC support for Mediatek chip"
- depends on ARCH_MEDIATEK
- help
This adds ASoC platform driver support for Mediatek chip
that can be used with other codecs.
Select Y if you have such device.
Ex: MT8173
--- /dev/null +++ b/sound/soc/mediatek/Makefile
+obj-$(CONFIG_SND_SOC_MEDIATEK) += mtk-afe-pcm.o
--- /dev/null +++ b/sound/soc/mediatek/mtk-afe-pcm.c
+#include <linux/module.h>
+static void mtk_afe_set_i2s_enable(struct mtk_afe *afe, bool enable) +{
- unsigned int val;
- regmap_read(afe->regmap, AFE_I2S_CON2, &val);
- if (!!(val & AFE_I2S_CON2_EN) == !!enable)
(What does negating a bool twice do?)
return; /* must skip soft reset */
- /* I2S soft reset begin */
- regmap_update_bits(afe->regmap, AUDIO_TOP_CON1, 0x4, 0x4);
- /* input */
- regmap_update_bits(afe->regmap, AFE_I2S_CON2, 0x1, !!enable);
Ditto.
- /* output */
- regmap_update_bits(afe->regmap, AFE_I2S_CON1, 0x1, !!enable);
Ditto.
- /* I2S soft reset end */
- udelay(1);
- regmap_update_bits(afe->regmap, AUDIO_TOP_CON1, 0x4, 0);
+}
+static const struct of_device_id mtk_afe_pcm_dt_match[] = {
- { .compatible = "mediatek,mt8173-afe-pcm", },
- { }
+};
+static struct platform_driver mtk_afe_pcm_driver = {
- .driver = {
.name = "mtk-afe-pcm",
.owner = THIS_MODULE,
.of_match_table = mtk_afe_pcm_dt_match,
.pm = &mtk_afe_pm_ops,
- },
- .probe = mtk_afe_pcm_dev_probe,
- .remove = mtk_afe_pcm_dev_remove,
+};
+MODULE_DESCRIPTION("Mediatek ALSA SoC AFE platform driver"); +MODULE_AUTHOR("Koro Chen koro.chen@mediatek.com"); +MODULE_LICENSE("GPL v2"); +MODULE_DEVICE_TABLE(of, mtk_afe_pcm_dt_match);
(The common pattern is to have MODULE_DEVICE_TABLE() directly follow that table.)
SND_SOC_MEDIATEK is a bool symbol and mtk-afe-pcm.o is built-in only. But the code uses a few module specific constructs. I spotted THIS_MODULE, MODULE_DESCRIPTION, MODULE_AUTHOR, MODULE_LICENSE, and MODULE_DEVICE_TABLE.
Is SND_SOC_MEDIATEK perhaps meant to be bool?
Likewise for SND_SOC_MT8173_MAX98090 (in 2/3) and SND_SOC_MT8173_RT5650_RT5676 (in 3/3).
Thanks,
Paul Bolle