怎样调整GPIO的驱动电流
时间:10-02
整理:3721RD
点击:
[DESCRIPTION]
如果默认的GPIO驱动电流无法满足要求,那么可以通过hardcode的方式调整驱动电流
[SOLUTION]
mtk GPIO Driver 模块没有专门提供API来调整驱动电流,只能以hardcode的方式来
调整。
1、首先查看每个平台的datasheet,找到对应的调整驱动电流的寄存器。
2、其次查看该寄存器哪些bit是调整对应的GPIO的驱动电流。
3、最后在LK或者kernel(转换成虚拟地址) 里面 直接对地址赋值即可。
比如:
调整DPI_D0到DPI_D11驱动电流方法修改0x100020F0 这个寄存器的的bit[11:10],
(0,1,2,3分别对应驱动电流4/8/12/16 毫安,default为4毫安)
如果需要在LK阶段调整的话,对应LK里面的地址:0x100020F0
int *addr = 0x100020F0;
*addr = 0x.....;
如果需要在kernel下面调整的话,需要把物理地址转换为虚拟地址:0xF00020F0
int *addr = 0xF00020F0;
*addr = 0x.....;
如果默认的GPIO驱动电流无法满足要求,那么可以通过hardcode的方式调整驱动电流
[SOLUTION]
mtk GPIO Driver 模块没有专门提供API来调整驱动电流,只能以hardcode的方式来
调整。
1、首先查看每个平台的datasheet,找到对应的调整驱动电流的寄存器。
2、其次查看该寄存器哪些bit是调整对应的GPIO的驱动电流。
3、最后在LK或者kernel(转换成虚拟地址) 里面 直接对地址赋值即可。
比如:
调整DPI_D0到DPI_D11驱动电流方法修改0x100020F0 这个寄存器的的bit[11:10],
(0,1,2,3分别对应驱动电流4/8/12/16 毫安,default为4毫安)
如果需要在LK阶段调整的话,对应LK里面的地址:0x100020F0
int *addr = 0x100020F0;
*addr = 0x.....;
如果需要在kernel下面调整的话,需要把物理地址转换为虚拟地址:0xF00020F0
int *addr = 0xF00020F0;
*addr = 0x.....;