引用
WM8960需要工作,需要一个I2C总线的读写寄存器,一个I2S来传输音频数据,还需要一个时钟源来提供时钟为WM8960工作。如果不采用外置12.288MHz有源晶振为时钟输入,就需要MT7688的REFCLK为WM8960提供时钟输入。
这里只需要修改一个地方就可以使REFCLK工作。
路径:
.../linux-x.xx.xx/sound/soc/mtk/Makefile
代码:
KBUILD_CFLAGS += -I$(srctree)
ifeq ($(CONFIG_SND_MT76XX_SOC_MT7620),y)
KBUILD_CFLAGS += -DCONFIG_MT7620 -DCONFIG_RALINK_MT7620
endif
ifeq ($(CONFIG_SND_MT76XX_SOC_MT7628),y)
KBUILD_CFLAGS += -DCONFIG_MT7628 -DCONFIG_RALINK_MT7628
endif
ifeq ($(CONFIG_SOC_MT7620),y)
KBUILD_CFLAGS += -DRALINK_SYSCTL_BASE=0xB0000000
KBUILD_CFLAGS += -DRALINK_INTCL_BASE=0xB0000200
KBUILD_CFLAGS += -DRALINK_PIO_BASE=0xB0000600
KBUILD_CFLAGS += -DRALINK_I2S_BASE=0xB0000A00
KBUILD_CFLAGS += -DRALINK_GDMA_BASE=0xB0002800
KBUILD_CFLAGS += -DCONFIG_GDMA_EVERYBODY
KBUILD_CFLAGS += -DCONFIG_SND_MT76XX_SOC
KBUILD_CFLAGS += -DCONFIG_I2S_WM8960
#KBUILD_CFLAGS += -DCONFIG_I2S_MCLK_12P288MHZ
KBUILD_CFLAGS += -DCONFIG_I2S_MCLK_12MHZ
KBUILD_CFLAGS += -DCONFIG_I2S_IN_MCLK
KBUILD_CFLAGS += -DCONFIG_GDMA_EVERYBODY
KBUILD_CFLAGS += -DSURFBOARDINT_DMA=15
KBUILD_CFLAGS += -DRALINK_INTCTL_DMA=128
KBUILD_CFLAGS += -DCONFIG_SND_SOC_WM8960
endif
这里其实主要是添加一个
KBUILD_CFLAGS += -DCONFIG_I2S_IN_MCLK
到Makefile里面就可以了。
REFCLK引脚在调用WM8960播放声音的时候就会有时钟输出了。测试了频率是4MHz.
还有一种方法是打补丁的形式将KBUILD_CFLAGS += -DCONFIG_I2S_IN_MCLK添加进去。
https://github.com/hnhkj/CC15.05/commit/d74fcf753b37a2e6e8945ce56de30e341d06377d
这里感谢huangkj-henan:http://blog.csdn.net/hnhkj/article/details/50930483#reply的帮助