MTK配置gsensor/als/ps(重力传感/光感/距感)

1.在配置这些传感器之前,建议项目中用不到的sensor宏给关掉(只是建议)

device/mediateksample/$(yourprojectname)/ProjectConfig.mk

$(LINUX_KERNEL_VERSION)/arch/arm/configs/$(yourprojectname)_debug_defconfig

$(LINUX_KERNEL_VERSION)/arch/arm/configs/$(yourprojectname)_defconfig

# CONFIG_MTK_ACCELHUB is not set
# CONFIG_MTK_ALSPSHUB is not set
# CONFIG_CUSTOM_KERNEL_MAGNETOMETER is not set
# CONFIG_MTK_MAGHUB  is not set
# CONFIG_CUSTOM_KERNEL_BAROMETER is not set
# CONFIG_MTK_BAROHUB is not set
# CONFIG_CUSTOM_KERNEL_STEP_COUNTER is not set
# CONFIG_MTK_STEPSIGNHUB is not set
# CONFIG_CUSTOM_KERNEL_SITUATION is not set
# CONFIG_MTK_STATHUB is not set
# CONFIG_MTK_WAKEHUB is not set
# CONFIG_MTK_GLGHUB is not set
# CONFIG_MTK_PICKUPHUB is not set
# CONFIG_MTK_DEVICE_ORIENTATION_HUB is not set
# CONFIG_MTK_TILTDETECTHUB is not set
# CONFIG_CUSTOM_KERNEL_SENSORHUB is not set
# CONFIG_NANOHUB is not set
# CONFIG_NANOHUB_MTK_IPI is not set
# CONFIG_CUSTOM_KERNEL_SENSOR_FUSION is not set
# CONFIG_CUSTOM_KERNEL_GMRV_SENSOR is not set
# CONFIG_CUSTOM_KERNEL_RV_SENSOR is not set
# CONFIG_CUSTOM_KERNEL_LINEARACCEL_SENSOR is not set
# CONFIG_CUSTOM_KERNEL_GRAVITY_SENSOR is not set
# CONFIG_CUSTOM_KERNEL_UNCALI_ACC_SENSOR is not set
# CONFIG_CUSTOM_KERNEL_UNCALI_MAG_SENSOR is not set
# CONFIG_MTK_UNCALI_ACCHUB is not set

2.配置config文件,设置sensor的宏

$(LINUX_KERNEL_VERSION)/arch/arm/configs/$(yourprojectname)_debug_defconfig

$(LINUX_KERNEL_VERSION)/arch/arm/configs/$(yourprojectname)_defconfig

CONFIG_CUSTOM_KERNEL_ACCELEROMETER=y     //gsensor

CONFIG_MTK_STK8BAXX=y
CONFIG_MTK_MIR3DA=y

CONFIG_CUSTOM_KERNEL_ALSPS=y      //alsps

CONFIG_MTK_STK3338=y

2.配置项目所属平台dts与项目dts

看你项目具体的i2c通道,我项目使用的i2c1,给的仅供参考

$(LINUX_KERNEL_VERSION)/arch/arm/boot/dts/$(MTK_PLATFORM).dts

//gsensor 
gse_1: gse_1 {
    };
    gsensor@0 {
        compatible = "mediatek,gsensor";
    };
    cust_accel_mir3da:cust_accel_mir3da@0 {
        compatible                = "mediatek,mir3da";         //节点,与具体驱动对应
    };
    cust_accel_stk8bxx:cust_accel_stk8bxx@1 {
        compatible                = "mediatek,stk8bxx";
    };
//alsps
    alsps@48 {
        compatible = "mediatek,alsps";
    };

$(LINUX_KERNEL_VERSION)/arch/arm/boot/dts/$(yourprojectname).dts

//gsensor
&cust_accel_mir3da{
	i2c_num				= <1>;
	i2c_addr				= <0x18 0 0 0>;
	direction				= <5>;
	power_id				= <0xffff>;
	power_vol				= <0>;
	firlen					= <0>;
	is_batch_supported			= <0>;
};
&cust_accel_stk8bxx{
	i2c_num				= <1>;
	i2c_addr				= <0x4c 0 0 0>;
	direction				= <5>;
	power_id				= <0xffff>;
	power_vol				= <0>;
	firlen					= <0>;
	is_batch_supported			= <0>;
};
&i2c1 {
	gsensor_mir3da@18 {
		compatible = "mediatek,gsensor_mir3da";
		reg = <0x18>;
		status = "okay";
	};
	gsensor_stk8bxx@4c {
		compatible = "mediatek,gsensor_stk8bxx";
		reg = <0x4c>;
		status = "okay";
	};	
};
//alsps
&i2c1 {

	alsps@48 {
		pinctrl-names = "pin_default", "pin_cfg";
		pinctrl-0 = <&alsps_intpin_default>;
		pinctrl-1 = <&alsps_intpin_cfg>;
		status = "okay";
		/* customization */
		i2c_num = <1>;
		i2c_addr = <0x67 0 0 0>;//使用的sensor地址,stk3338是0x67和0x47两种,其他ic不一定
		polling_mode_ps = <0>;
		polling_mode_als = <1>;
		power_id = <0xffff>;
		power_vol = <0>;
		als_level = <0 125 319 525 1091 2480 3058 5115 8589 10769 12857 17807 22091 65535 65535>;
		als_value = <0 133 303 504 1002 2003 3006 5003 8002 10000 12000 16000 20000 20000 20000 20000>;
		ps_threshold_high =  <26>;
		ps_threshold_low =  <21>;
		is_batch_supported_ps = <0>;
		is_batch_supported_als = <0>;
	};

};
&pio {
	alsps_intpin_cfg: alspspincfg {

		pins_cmd_dat {
			pinmux = <PINMUX_GPIO6__FUNC_GPIO6>;//中断引脚对应的gpio
			slew-rate = <0>;
			bias-pull-up = <00>;
		};
	};

	alsps_intpin_default: alspsdefaultcfg {

	};
};

3.配置dws里面i2c设备的中断和定义

$(LINUX_KERNEL_VERSION)/drivers/misc/mediatek/dws/$(MTK_PLATFORM)/$(yourprojectname).dws

vendor/mediatek/proprietary/bootable/bootloader/preloader/custom/$(yourprojectname)/dct/dct/codegen.dws

vendor/mediatek/proprietary/custom/$(yourprojectname)/kernel/dct/dct/codegen.dws

<eint6>
                <varName>ALSPS_MTK</varName>
                <debounce_time>256</debounce_time>
                <polarity>Low</polarity>
                <sensitive_level>Level</sensitive_level>
                <debounce_en>Disable</debounce_en>
</eint6>

<gpio6>
                <eint_mode>true</eint_mode>
                <def_mode>0</def_mode>
                <inpull_en>true</inpull_en>
                <inpull_selhigh>true</inpull_selhigh>
                <def_dir>IN</def_dir>
                <out_high>false</out_high>
                <varName0>GPIO_ALS_EINT_PIN</varName0>
                <smt>false</smt>
                <ies>true</ies>
 </gpio6>

<gpio12>
                <eint_mode>true</eint_mode>
                <def_mode>0</def_mode>
                <inpull_en>true</inpull_en>
                <inpull_selhigh>true</inpull_selhigh>
                <def_dir>IN</def_dir>
                <out_high>false</out_high>
                <varName0>GPIO_GSE_1_EINT_PIN</varName0>
                <smt>false</smt>
                <ies>true</ies>
 </gpio12>

<device0>
                <varName>ALSPS</varName>
                <channel>I2C_CHANNEL_1</channel>
                <address>0x48</address>
 </device0>
 <device1>
                <varName>GSENSOR_1</varName>
                <channel>I2C_CHANNEL_1</channel>
                <address>0x26</address>
  </device1>
<device2>
                <varName>GSENSOR</varName>
                <channel>I2C_CHANNEL_1</channel>
                <address>0x18</address>
</device2>

4.添加驱动

gsensor

$(LINUX_KERNEL_VERSION)/drivers/misc/mediatek/sensors-1.0/accelerometer/Makefile

obj-$(CONFIG_MTK_STK8BAXX) += stk8baxx/
obj-$(CONFIG_MTK_MIR3DA) += mir3da/

$(LINUX_KERNEL_VERSION)/drivers/misc/mediatek/sensors-1.0/accelerometer/Kconfig

source "drivers/misc/mediatek/sensors-1.0/accelerometer/stk8baxx/Kconfig"
source "drivers/misc/mediatek/sensors-1.0/accelerometer/mir3da/Kconfig"

$(LINUX_KERNEL_VERSION)/drivers/misc/mediatek/sensors-1.0/accelerometer/mir3da/

$(LINUX_KERNEL_VERSION)/drivers/misc/mediatek/sensors-1.0/accelerometer/stk8baxx/

gsensor方向有问题修改hw_direction值,参考这篇gsensor direction调试_mtk gsensor 方向 调整 驱动_吐泡的土豆的博客-CSDN博客

als/ps

$(LINUX_KERNEL_VERSION)/drivers/misc/mediatek/sensors-1.0/alsps/stk3x3x/Makefile

obj-$(CONFIG_MTK_STK3x3x)   +=  stk3x3x/

$(LINUX_KERNEL_VERSION)/drivers/misc/mediatek/sensors-1.0/alsps/stk3x3x/Kconfig

source "drivers/misc/mediatek/sensors-1.0/alsps/stk3x3x/Kconfig"

$(LINUX_KERNEL_VERSION)/drivers/misc/mediatek/sensors-1.0/alsps/stk3x3x/

5.使用了两个gsensor,如果原来dws工具配置里没有gsensor1词条,则需加上

vendor/mediatek/proprietary/tools/dct/YuSu.cmp

+GSENSOR_1

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值