【高通SDM660 Android 10.0】(1) --- Sensor 驅動 Bringup Guide

代碼位於:

# adsp_proc/Sensors/dd/qcom/src/sns_dd_lsm6dsm_uimg.c
/**
 * LSM6DSMLHC device driver interface.
 */
sns_ddf_driver_if_s sns_dd_lsm6dsm_if =
{
  &sns_dd_lsm6dsm_init,
  &sns_dd_lsm6dsm_get_data,
  &sns_dd_lsm6dsm_set_attr_uimg,
  &sns_dd_lsm6dsm_get_attr,
  &sns_dd_lsm6dsm_handle_timer,
  &sns_dd_lsm6dsm_handle_irq,
  &sns_dd_lsm6dsm_reset,
  &sns_dd_lsm6dsm_run_test,
  &sns_dd_lsm6dsm_sched_data,
  &sns_dd_lsm6dsm_probe,
  &sns_dd_lsm6dsm_trigger_fifo
};

結構體聲明在

# adsp_proc/Sensors/dd/qcom/inc/sns_dd.h

extern sns_ddf_driver_if_s sns_dd_lsm6dsm_if;

將結構體與UUID綁定:

# adsp_proc/Sensors/smgr/src/sns_smgr_reg.c

#ifdef CONFIG_SUPPORT_LSM6DSM
{ SNS_REG_UUID_LSM6DSM, &sns_dd_lsm6dsm_if},
#endif

UUID 定義位於:

# adsp_proc/Sensors/common/inc/sns_reg_common.h

#define SNS_REG_UUID_LSM6DSM \
  {0x3c,0xfd,0x26,0xe8,0x52,0xaf,0x48,0xbe,0xac,0xc2,0x1d,0x40,0xfc,0x4c,0x53,0x68}

------------------------------------------------------------------------------------------------
# vendor/qcom/proprietary/sensors/dsps/sensordaemon/common/inc/sns_reg_common.h

#define SNS_REG_UUID_LSM6DSM \
  {0x3c,0xfd,0x26,0xe8,0x52,0xaf,0x48,0xbe,0xac,0xc2,0x1d,0x40,0xfc,0x4c,0x53,0x68}
  
==>
1902 0xbe48af52e826fd3c 0x00010001 #UUID
1903 0x68534cfc401dc2ac 0x00010001 #UUID

將代碼編譯進來:

# adsp_proc/Sensors/dd/qcom/build/dd_qcom.scons

DD_SOURCES = [
     "${BUILDPATH}/sns_dd_lsm6dsm.c",
     "${BUILDPATH}/sns_dd_lsm6dsm_esp.c",
     "${BUILDPATH}/sns_dd_lsm6dsm_fifo.c",
     "${BUILDPATH}/sns_dd_lsm6dsm_fifo_uimg.c",
     "${BUILDPATH}/sns_dd_lsm6dsm_selftest.c",
     "${BUILDPATH}/sns_dd_lsm6dsm_uimg.c",
    	]
DD_UIMG_SOURCES = [
     "${BUILDPATH}/sns_dd_lsm6dsm_fifo_uimg.c",
     "${BUILDPATH}/sns_dd_lsm6dsm_uimg.c",
   		]

至此,在ADSP 側,代碼就 配置好了,可以看到UUID 同樣也定義在了vendor 中,所以後面通過UUID 就能找到對應的sensor 了

# dsps/reg_defaults/sensor_def_qcomdev.conf
#######################################################################
###        sdm660 Chipsets
#######################################################################
:hardware sdm660
:platform
:property
:soc_id
:soc_rev
:subtype
# SSI SMGR Cfg 0: LSM6DSM Accel DRI/FIFO
1903 0x68534cfc401dc2ac 0x00010001 #UUID
1902 0xbe48af52e826fd3c 0x00010001 #UUID
1904 100000 0x00010001             #off_to_idle
1905 100000 0x00010001             #idle_to_ready
1906 0x1001 0x00010001             #SPI_bus
1907 1000 0x00010001               #reg_group_id
1908 0 0x00010001                  #cal_grp_id
1909 68 0x00010001                 #gpio1
1910 0xFFFF 0x00010001             #gpio2
1911 0 0x00010001                  #sensor_id
1912 0 0x00010001                  #CS for SPI
1913 1 0x00010001                  #data_type1
1914 4 0x00010001                  #data_type2
1915 -1 0x00010001                 #rel_sns_idx
1916 2 0x00010001                  #sens_default
1917 0xD0 0x00010001               #flags
1982 0 0x00010001                  #device_select
1987 0x8E 0x00010001               #vdd
1988 0x8E 0x00010001               #vddio

# SSI SMGR Cfg 1: LSM6DSM Gyro DRI/FIFO
1919 0x68534cfc401dc2ac 0x00010001 #UUID
1918 0xbe48af52e826fd3c 0x00010001 #UUID
1920 100000 0x00010001             #off_to_idle
1921 100000 0x00010001             #idle_to_ready
1922 0x1001 0x00010001             #SPI_bus
1923 1010 0x00010001               #reg_group_id
1924 10 0x00010001                 #cal_grp_id
1925 68 0x00010001                 #gpio1
1926 0xFFFF 0x00010001             #gpio2
1927 10 0x00010001                 #sensor_id
1928 0 0x00010001                  #CS for SPI
1929 3 0x00010001                  #data_type1
1930 4 0x00010001                  #data_type2
1931 -1 0x00010001                 #rel_sns_idx
1932 4 0x00010001                  #sens_default
1933 0xD0 0x00010001               #flags
1983 0 0x00010001                  #device_select
1989 0x8E 0x00010001               #vdd
1990 0x8E 0x00010001               #vddio

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章