MTK一直以傻瓜化,工具化出名,导致了许多代码逻辑的缺失;所以很多做
MTK平台的人,对很多东西都不甚了解,一知半解。最近我们调试一个驱动,在添加
irq时,就找不到代码的逻辑关联,现把关键的过程记录下。
1. 万能的DrvGen.exe (其实挺SB的)
在目录:vendor\mediatek\proprietary\scripts\dct
2. 配置IRQ,对应EINT号,有部分代码在平台dts中已经实现,
如:
touch: touch {
compatible = "mediatek,mt6739-touch";
/* VTOUCH-supply = <&mt_pmic_vgp1_ldo_reg>; */
};
但是进一步的描述却丢失,比如这个对应的Int Gpio是哪个,中断号是什么,
是电平触发,还是边沿触发,都看不到代码。后面发现这些东西是通过工具,生成在另外一个文件中:
out\target\product\pri6763_66l_kb_n1\obj\KERNEL_OBJ\arch\arm64\boot\dts\pri6763_66l_kb_n1\cust.dtsi
&touch {
interrupt-parent = <&pio>;
interrupts = <6 IRQ_TYPE_EDGE_FALLING 6 0>;
status = "okay";
};
3. 对应代码中:
printk("otg_iddig_probe\n");
iddig_eint_num = irq_of_parse_and_map(node, 0);
这个也查看不出任何跟中断相关配置的Gpio, 比如这个是匹配compatible,然后就
看不出其他的信息了,所以就没有然后了...... 需要去匹配另外一个 cust.dtsi文件
里面才有完整的信息。。。。