SM6225平台修改QUP为非I3C配置

背景:项目外接sensor为I2C接口,高通默认配置(LPI_GPIO21和LPI_GPIO22)为I3C,需要将I3C改为I2C配置。

解决:

在ADSP修改QUP的配置,如下:

--- a/ADSP.VT.5.4.3.c1/adsp_proc/core/settings/buses/i2c/config/divar/i2c_devcfg.c
+++ b/ADSP.VT.5.4.3.c1/adsp_proc/core/settings/buses/i2c/config/divar/i2c_devcfg.c
@@ -201,7 +201,7 @@ static plat_device_config i2c_device_config[] =
         .min_data_length_for_dma     = 0,
 
         .gpi_index                   = 1,
-        .gpi_protocol                = 4, 
+        .gpi_protocol                = 3, 
 
         .i3c_cfg_base_addr           = (uint8 *) SSC_MCC_I3C_CFG + 0x4,//hold on to this,i will confirm
         .active_scl_encoding         = SSC_I2C_02_SCL,
--- a/ADSP.VT.5.4.3.c1/adsp_proc/core/settings/buses/qup_fw/config/divar/fw_devcfg.c
+++ b/ADSP.VT.5.4.3.c1/adsp_proc/core/settings/buses/qup_fw/config/divar/fw_devcfg.c
@@ -30,7 +30,7 @@ se_cfg se6_cfg_qrd = { 0x98000, SE_PROTOCOL_UART,  FIFO,     TRUE, FALSE    };
 
 // MTP as default///  offset,        protocol,   mode,  load_fw, dfs_mode
 se_cfg se0_cfg = { 0x80000, SE_PROTOCOL_I2C,    GSI,     TRUE, TRUE  };
-se_cfg se1_cfg = { 0x84000, SE_PROTOCOL_I3C,    GSI,     TRUE, TRUE  };
+se_cfg se1_cfg = { 0x84000, SE_PROTOCOL_I2C,    GSI,     TRUE, TRUE  };
 //se_cfg se2_cfg = { 0x88000, SE_PROTOCOL_I2C,    GSI,     TRUE, TRUE  };
 //se_cfg se3_cfg = { 0x8C000, SE_PROTOCOL_I2C,  FIFO,     TRUE, FALSE  };
 //se_cfg se4_cfg = { 0x90000, SE_PROTOCOL_I2C,    GSI,     TRUE,  TRUE  };

其中gpi协议定义如下,所以.gpi_protocol改为3。

typedef enum
{
GPI_SPI_PROTOCOL = 1,
GPI_UART_PROTOCOL = 2,
GPI_I2C_PROTOCOL = 3,
GPI_I3C_PROTOCOL = 4,
GPI_MAX_PROTOCOL
}GPI_PROTOCOL;

TZ修改如下:

@@ -44,7 +44,7 @@ const QUPv3_se_security_permissions_type ssc_qupv3_perms_default[] =
 {
   /*PeriphID,      ProtocolID,             Mode,           NsOwner,        bAllowFifo, bLoad, bModExcl  */
   { QUPV3_SSC_SE0, QUPV3_PROTOCOL_I2C,     QUPV3_MODE_GSI, AC_ADSP_Q6_ELF, FALSE,      FALSE, FALSE },
-  { QUPV3_SSC_SE1, QUPV3_PROTOCOL_I3C,     QUPV3_MODE_GSI, AC_ADSP_Q6_ELF, FALSE,      FALSE, FALSE },
+  { QUPV3_SSC_SE1, QUPV3_PROTOCOL_I2C,     QUPV3_MODE_GSI, AC_ADSP_Q6_ELF, FALSE,      FALSE, FALSE },
   /*QUPV3_SSC_SE2*/
   /*QUPV3_SSC_SE3*/
   /*QUPV3_SSC_SE4*/

上述修改完后I2C配置成功,再将sensor对应的json文件进行修改,如下:

     ".config":{
       "owner": "sh3001",
       "bus_type":{ "type": "int", "ver": "0",
-        "data": "3"
+        "data": "0"
       },
       "bus_instance":{ "type": "int", "ver": "0",
         "data": "2"

  • 11
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在msm8953芯片上运行的Android 9.0系统中,设备树文件(Device Tree Blob,简称DTB)位于/boot/dtb目录下。设备树文件是一种描述硬件信息的数据结构,可以在系统运行时动态加载,用于配置设备的硬件资源。 要在设备树文件中配置GPIO,可以按照以下步骤进行操作: 1. 找到设备树文件中相应的节点,例如UART节点: ``` serial@78b0000 { compatible = "qcom,msm-uartdm-v1.1.1"; reg = <0x0 0x78b0000 0x0 0x1000>; clocks = <&gcc GCC_UART1_AHB_CLK>, <&gcc GCC_UART1_CLK>, <&gcc GCC_BLSP1_AHB_CLK>, <&gcc GCC_BLSP1_QUP1_SPI_APPS_CLK>, <&gcc GCC_BLSP1_QUP2_SPI_APPS_CLK>, <&gcc GCC_BLSP1_QUP3_SPI_APPS_CLK>; clock-names = "iface", "core", "iface_axi", "qup1_apps", "qup2_apps", "qup3_apps"; interrupts = <GIC_SPI 191 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 194 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 195 IRQ_TYPE_LEVEL_HIGH>; interrupt-parent = <&intc>; dmas = <&sdhc1 2 0>, <&sdhc1 2 0>; dma-names = "rx", "tx"; status = "disabled"; }; ``` 2. 添加pinctrl节点,例如: ``` pinctrl { uart1_default: uart1_default { pins = "gpio41", "gpio42"; function = "blsp_uart1"; bias-disable; drive-strength = <12>; }; }; ``` 此命令将GPIO41和GPIO42配置为UART1的引脚控制器,并设置其参数。 3. 在UART节点中添加pinctrl配置,例如: ``` serial@78b0000 { pinctrl-names = "default"; pinctrl-0 = <&uart1_default>; ... }; ``` 此命令将UART1的引脚控制器配置为uart1_default。 完成上述步骤后,系统启动时会自动加载设备树文件,并根据所定义的GPIO配置进行硬件初始化。如果您想在应用程序中调用GPIO,可以使用sysfs文件系统中的GPIO接口进行操作。例如,使用以下命令将GPIO4设置为输出模式,并输出高电平: ``` echo 4 > /sys/class/gpio/export echo out > /sys/class/gpio/gpio4/direction echo 1 > /sys/class/gpio/gpio4/value ``` 需要注意的是,GPIO的编号在不同的平台和设备上可能会有所不同,请根据实际情况进行调整。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值