MTK MT6169 clock buffer XO3输出控制方法

来源:互联网 发布:怎么面试美工 编辑:程序博客网 时间:2024/06/05 16:30
这两天调试中遇到的一个问题:MT6169 clock buffer XO3在开机后无时钟输出。这个时钟在项目上是供给ICN6211的,如果没有26M输出会导致ICN6211无法工作,开机白屏。MTK平台默认设计XO3给NFC使用,在带NFC的主板上用示波器量测XO3信号,发现打开NFC时有26M输出,关闭时26M也被关闭。所以顺藤摸瓜,在nfc代码中找到接口clk_buf_ctrl,这个接口就可以控制XO3的输出。
接口定义在kernel-3.18/drivers/misc/mediatek/base/power/mt6735/mt_clkbuf_ctl.c中。

具体的使用方法请参考:
代码中直接调用
①Makefile 中添加ccflags-y += -Werror -I$(srctree)/drivers/misc/mediatek/base/power/$(MTK_PLATFORM)
②.c中包含#include"mt_clkbuf_ctl.h"

mt_clkbuf_ctl.c中修改为开机默认打开
static CLK_BUF_SWCTRL_STATUS_T clk_buf_swctrl[CLKBUF_NUM] = {    CLK_BUF_SW_ENABLE,    CLK_BUF_SW_DISABLE,    CLK_BUF_SW_ENABLE,  //mt6169 XO3 clock buffer default on    CLK_BUF_SW_DISABLE}
lcm resume中clk_buf_ctrl(CLK_BUF_NFC,true)打开。
lcm suspend中clk_buf_ctrl(CLK_BUF_NFC,false)关闭。
参考文档:MT6735_53_MT6737x_Clock_buffer_setting_of_customization.pptx

通过sysfs文件结点调试
连接adb,可以通过sys下的clk_buf_ctrl结点查看和控制clock buffer 状态
root@rlk6737m_35g_c_m0:/ # cat sys/power/clk_buf/clk_buf_ctrl
********** clock buffer state **********
CKBUF1 SW(1)/HW(2) CTL: 2, Disable(0)/Enable(1): 1
CKBUF2 SW(1)/HW(2) CTL: 1, Disable(0)/Enable(1): 1
CKBUF3 SW(1)/HW(2) CTL: 1, Disable(0)/Enable(1): 1
CKBUF4 SW(1)/HW(2) CTL: 1, Disable(0)/Enable(1): 0

********** clock buffer command help **********
BSI switch on/off: echo bsi en1 en2 en3 en4 > /sys/power/clk_buf/clk_buf_ctrl
APBSI switch on/off: echo apbsi en1 en2 en3 en4 > /sys/power/clk_buf/clk_buf_ctrl
BB :en1
6605 :en2
5193 :en3
AUDIO:en4
root@rlk6737m_35g_c_m0:/ # echo apbsi 1 1 1 0 > /sys/power/clk_buf/clk_buf_ctrl
2 0
原创粉丝点击