【QNX 】如何通过vdev-virtio-i2c配置I2C并passthrouge到安卓侧使用?

1. 在qnx阶段配置I2C
需要在qnx config对应路径下配置以下信息:
(1)pin脚转态(类似安卓的pinctrl)
对应文件:pin_config.c
+    {(TLMM_MODULE|57), "/dev/gpio/tp_i2c_sda", TLMM_GPIO_CFG_MASK_IGNORE, GPIO_PIN_CFG(GPIO_INPUT, GPIO_PULL_UP, GPIO_STRENGTH_8MA, 2), TLMM_GPIO_SLEEP_CFG_IGNORE, IGNORE},
+    {(TLMM_MODULE|58), "/dev/gpio/tp_i2c_scl", TLMM_GPIO_CFG_MASK_IGNORE, GPIO_PIN_CFG(GPIO_INPUT, GPIO_PULL_UP, GPIO_STRENGTH_8MA, 2), TLMM_GPIO_SLEEP_CFG_IGNORE, IGNORE},
(2)需要配置i2c总线信息
i2c_props_8155.xml
+     <var_seq name="i2c_dev_8_name" type=DALPROP_DATA_TYPE_STRING>/dev/i2c8</var_seq>
+     <var_seq name="i2c_res_8_name" type=DALPROP_DATA_TYPE_STRING>/devcfg/i2c/8</var_seq>
+     <var_seq name="i2c_core_8_name" type=DALPROP_DATA_TYPE_STRING>I2C_CORE_8</var_seq>
+     <var_seq name="gcc_qupv3_wrap2_serial_engine_2_clock_name" type=DALPROP_DATA_TYPE_STRING>gcc_qupv3_wrap2_s2_clk</var_seq>
+    /*
+       i2c-8
+       QUP-19  QUPV3_2_SE2 0xc88000
+       GPIO 57,58
+       TP I2C device: chsc_smtouch
+    */
+   <device id=DALDEVICEID_I2C_DEVICE_8>
+     <props name="I2C_ENABLED" type=DALPROP_ATTR_TYPE_UINT32>              1                                           </props>
+     <props name="INTR_BASED" type=DALPROP_ATTR_TYPE_UINT32>               0                                           </props>
+     <props name="PM_DISABLE" type=DALPROP_ATTR_TYPE_UINT32>               1                                           </props>
+     <props name="QUP_QGIC_IRQ" type=DALPROP_ATTR_TYPE_UINT32>             616                                         </props>
+     <props name="IRQ_TRIG_CFG" type=DALPROP_ATTR_TYPE_UINT32>             0                                           </props>
+     <props name="CLK_RATE_KHZ" type=DALPROP_ATTR_TYPE_UINT32>             19200                                       </props>
+     <props name="DEV_NAME" type=DALPROP_ATTR_TYPE_STRING_PTR>             i2c_dev_8_name                              </props>
+     <props name="BAM_NAME" type=DALPROP_ATTR_TYPE_STRING_PTR>             dev_bam_0_name                              </props>
+     <props name="RES_NAME" type=DALPROP_ATTR_TYPE_STRING_PTR>             i2c_res_8_name                              </props>
+     <props name="CORE_NAME" type=DALPROP_ATTR_TYPE_STRING_PTR>            i2c_core_8_name                             </props>
+     <props name="BLK_PHY_ADDR" type=DALPROP_ATTR_TYPE_UINT32>             0xc88000                                    </props>
+     <props name="BLK_SIZE" type=DALPROP_ATTR_TYPE_UINT32>                 0x1000                                      </props>
+     <props name="BAM_ENABLED" type=DALPROP_ATTR_TYPE_UINT32>              0                                           </props>
+     <props name="BAM_BLK_ADDR" type=DALPROP_ATTR_TYPE_UINT32>             0x7544000                                   </props>
+     <props name="BAM_IRQ_NUM" type=DALPROP_ATTR_TYPE_UINT32>              270                                         </props>
+     <props name="BAM_THRESHOLD" type=DALPROP_ATTR_TYPE_UINT32>            1024                                        </props>
+     <props name="BAM_IN_PIPE" type=DALPROP_ATTR_TYPE_UINT32>              13                                          </props>
+     <props name="BAM_OUT_PIPE" type=DALPROP_ATTR_TYPE_UINT32>             12                                          </props>
+     <props name="CLOCK_MASTER_NAME" type=DALPROP_ATTR_TYPE_STRING_PTR>    gcc_qupv3_wrap2_master_clock_name           </props>
+     <props name="CLOCK_SEC_NAME" type=DALPROP_ATTR_TYPE_STRING_PTR>       gcc_qupv3_wrap2_s_clock_name               </props>
+     <props name="CLOCK_SE_NAME" type=DALPROP_ATTR_TYPE_STRING_PTR>        gcc_qupv3_wrap2_serial_engine_2_clock_name  </props>
+     <props name="CLOCK_CORE_NAME" type=DALPROP_ATTR_TYPE_STRING_PTR>      gcc_qupv3_wrap2_core_clock_name             </props>
+     <props name="CLOCK_GSI_NAME" type=DALPROP_ATTR_TYPE_STRING_PTR>       gcc_qupv3_wrap2_gsi_sequencer_clock_name    </props>
+   </device>


2. 在qnx filesets对应路径下增加qnx对于总线以及gpio的操作权限,还有释放给android使用的配置
(1)增加qnx对于总线以及gpio的操作权限
对应文件:i2c.txt
-interrupt:385,386,388,615,618,619,637,640
-interruptevent:385,386,388,615,618,619,637,640
+interrupt:385,386,388,615,616,618,619,637,640
+interruptevent:385,386,388,615,616,618,619,637,640
 
+mem_phys:QUPV3_2_QUPV3_ID_0.QUPV3_SE_WRAPPER.SE2.GENI4_CFG_DD_4K
对应文件:qcore.txt
+allow_link qcgpio_t /dev/gpio/tp_i2c_sda;
+allow_link qcgpio_t /dev/gpio/tp_i2c_scl;
(2)释放给android使用的配置
对应文件:linux-la_default.config
+vdev vdev-virtio-i2c.so loc 0x1da70000 intr gic:117 verbose 2 device i2c8

3. 需要在安卓侧对应配置virtio-i2c8
+++ b/devicetree/qcom/northstar-C63.dts
+        i2c8 = &i2c_8;

+++ b/devicetree/qcom/northstar-vm.dtsi
+    i2c_8: virtio-i2c@1da70000 {
+        compatible = "virtio,mmio";
+        reg = <0x1da70000 0x1000>;
+        interrupts = <0 85 IRQ_TYPE_LEVEL_HIGH>;
+        status = "ok";
+    };

4. 最后是添加设备调用:
+++ b/devicetree/qcom/northstar-vm.dtsi
+&i2c_8 {
+    status = "ok";
+    smtouch: smtouch@2e{
+        status = "ok";
+        compatible = "chipsemi,chsc_cap_touch";
+        reg = <0x2e>;
+        interrupt-parent = <&tlmm>;
+        interrupts = <0 520 0x2002>;//GIC irq 552
+        chipsemi,vio-gpio = <&tlmm 147 0x00>;
+        chipsemi,vdd-gpio = <&tlmm 148 0x00>;
+        chipsemi,vdd2-gpio = <&tlmm 145 0x00>;
+        chipsemi,rst-gpio = <&tlmm 97 0x00>;
+        chipsemi,int-gpio = <&tlmm 101 0x00>;
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&semi_ts_int_active  &semi_ts_reset_active>;
+       pinctrl-1 = <&semi_ts_int_suspend &semi_ts_reset_suspend>;
+    };
+};

  • 25
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值