在开启的时候NFC有26M输出
关则无输出
源码如下
./kernel-3.10/drivers/misc/mediatek/nfc/mt6580/mt6605.c
static long mt6605_dev_unlocked_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
...
case MTK_NFC_IOCTL_CMD_CLOCK_BUF_ENABLE:
#ifndef CONFIG_MTK_FPGA
/* enable nfc clock buffer */
clk_buf_ctrl(CLK_BUF_NFC, 1);
#endif
break;
case MTK_NFC_IOCTL_CMD_CLOCK_BUF_DISABLE:
#ifndef CONFIG_MTK_FPGA
/* disable nfc clock buffer */
clk_buf_ctrl(CLK_BUF_NFC, 0);
...
}
上电默认为关,
;
static CLK_BUF_SWCTRL_STATUS_T clk_buf_swctrl_default[CLKBUF_NUM] =
{
CLK_BUF_SW_ENABLE,
CLK_BUF_SW_CONNSRC,
#ifdef CONFIG_MTK_NFC
CLK_BUF_SW_NFC_NFCSRC,
#else
CLK_BUF_SW_DISABLE,
#endif
CLK_BUF_SW_DISABLE
};
#endif
./kernel-3.10/drivers/misc/mediatek/mach/mt6580/mt_pm_init.c:546: clk_buf_init();
static int __init mt_pm_late_init(void)
{
mt_idle_init();
clk_buf_init();
return 0;
}
late_initcall(mt_pm_late_init); //开机初始化 ,
clk_buf_init();
{
clk_buf_ctrl_by_reg(clk_buf_swctrl_default);
}
static void clk_buf_ctrl_by_reg(CLK_BUF_SWCTRL_STATUS_T *status)
{
// CLK_BUF_CONN
clk_buf_ctrl_buf1(status);
// CLK_BUF_NFC
clk_buf_ctrl_buf2(status);
// CLK_BUF_AUDIO
clk_buf_ctrl_buf3(status);
}
static void clk_buf_ctrl_buf2(CLK_BUF_SWCTRL_STATUS_T *status)
{
clk_buf_dbg("#@# CLKBUF %d %d %d %d\n", status[0], status[1], status[2], status[3]);
#ifndef RF_CLK_BUF_BRING_UP // test for bring up
if (CLK_BUF3_STATUS != CLOCK_BUFFER_HW_CO