兼容Gsensor驱动是很常见的驱动调试,下面将简单介绍android7 mt6735平台兼容msa311的过程
修改文件如下:
kernel-3.18/arch/arm64/boot/dts/tek6735m_65_d_n.dts | 28 +-
kernel-3.18/arch/arm64/configs/tek6735m_65_d_n_debug_defconfig | 1 +
kernel-3.18/arch/arm64/configs/tek6735m_65_d_n_defconfig | 1 +
kernel-3.18/drivers/misc/mediatek/accelerometer/Kconfig | 1 +
kernel-3.18/drivers/misc/mediatek/accelerometer/Makefile | 1 +
kernel-3.18/drivers/misc/mediatek/accelerometer/mir3da/mir3da_cust.c | 10 +-
kernel-3.18/drivers/misc/mediatek/accelerometer/msa311/Kconfig | 8 +
kernel-3.18/drivers/misc/mediatek/accelerometer/msa311/Makefile | 5 +
kernel-3.18/drivers/misc/mediatek/accelerometer/msa311/msa_core.c | 2077 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
kernel-3.18/drivers/misc/mediatek/accelerometer/msa311/msa_core.h | 295 +++++++++++++++
kernel-3.18/drivers/misc/mediatek/accelerometer/msa311/msa_cust.c | 1874 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
首先,将对应的Gsensor驱动放到kernel-3.18/drivers/misc/mediatek/accelerometer下
在kernel-3.18/drivers/misc/mediatek/accelerometer/Kconfig添加定义
--- a/kernel-3.18/drivers/misc/mediatek/accelerometer/Kconfig
+++ b/kernel-3.18/drivers/misc/mediatek/accelerometer/Kconfig
@@ -40,3 +40,4 @@ source "drivers/misc/mediatek/accelerometer/KXTJ2_1009-new/Kconfig"
source "drivers/misc/mediatek/accelerometer/rt3000/Kconfig"
source "drivers/misc/mediatek/accelerometer/msa301/Kconfig"
source "drivers/misc/mediatek/accelerometer/mir3da/Kconfig"
+source "drivers/misc/mediatek/accelerometer/msa311/Kconfig"
在kernel-3.18/drivers/misc/mediatek/accelerometer/Makefile下添加对于宏
--- a/kernel-3.18/drivers/misc/mediatek/accelerometer/Makefile
+++ b/kernel-3.18/drivers/misc/mediatek/accelerometer/Makefile
@@ -39,4 +39,5 @@ obj-$(CONFIG_MTK_ACCEL_RT3000) += rt3000/
obj-$(CONFIG_MTK_LSM6DS3HG) += lsm6ds3hg/
obj-$(CONFIG_MTK_MSA301) += msa301/
obj-$(CONFIG_MTK_MIR3DA) += mir3da/
+obj-$(CONFIG_MTK_MSA311) += msa311/
kernel-3.18/arch/arm64/configs/tek6735m_65_d_n_defconfig和kernel-3.18/arch/arm64/configs/tek6735m_65_d_n_debug_defconfig下开启宏
--- a/kernel-3.18/arch/arm64/configs/tek6735m_65_d_n_debug_defconfig
+++ b/kernel-3.18/arch/arm64/configs/tek6735m_65_d_n_debug_defconfig
@@ -212,6 +212,7 @@ CONFIG_LCM_WIDTH="480"
CONFIG_MTK_SENSOR_SUPPORT=y
CONFIG_CUSTOM_KERNEL_ACCELEROMETER=y
#CONFIG_MTK_MSA301 is not set
+CONFIG_MTK_MSA311=y
CONFIG_MTK_MIR3DA=y
# CONFIG_MTK_MXC4005XC is not set
# CONFIG_MTK_MC3410_NEW is not set
diff --git a/kernel-3.18/arch/arm64/configs/tek6735m_65_d_n_defconfig b/kernel-3.18/arch/arm64/configs/tek6735m_65_d_n_defconfig
index 579c90a..c6e0336 100755
--- a/kernel-3.18/arch/arm64/configs/tek6735m_65_d_n_defconfig
+++ b/kernel-3.18/arch/arm64/configs/tek6735m_65_d_n_defconfig
@@ -207,6 +207,7 @@ CONFIG_LCM_WIDTH="480"
CONFIG_MTK_SENSOR_SUPPORT=y
CONFIG_CUSTOM_KERNEL_ACCELEROMETER=y
#CONFIG_MTK_MSA301 is not set
+CONFIG_MTK_MSA311=y
CONFIG_MTK_MIR3DA=y
# CONFIG_MTK_MXC4005XC is not set
# CONFIG_MTK_MC3410_NEW is not set
最后修改kernel-3.18/arch/arm64/boot/dts/tek6735m_65_d_n.dts
--- a/kernel-3.18/arch/arm64/boot/dts/tek6735m_65_d_n.dts
+++ b/kernel-3.18/arch/arm64/boot/dts/tek6735m_65_d_n.dts
@@ -73,23 +73,23 @@ memory@00000000 {
/*************************
* sensor dtsi file
*************************/
- cust_accel_msa301:cust_accel@0 {
- compatible = "mediatek,msa301";
+ cust_accel_msa311:cust_accel@0 {
+ compatible = "mediatek,msa311";
};
cust_accel_mir3da:cust_accel@0 {
compatible = "mediatek,mir3da";
};
/* sensor standardization */
- /*cust_accel@0 {
- compatible = "mediatek,msa301";
+ cust_accel@0 {
+ compatible = "mediatek,msa311";
i2c_num = <2>;
- i2c_addr = <0x26 0 0 0>;
- direction = <1>;
+ i2c_addr = <0x62 0 0 0>;
+ direction = <5>;
power_id = <0xffff>;
power_vol = <0>;
firlen = <0>;
is_batch_supported = <0>;
- };*/
+ };
cust_accel@0 {
compatible = "mediatek,mir3da";
@@ -202,10 +202,10 @@ memory@00000000 {
status = "okay";
};
-&cust_accel_msa301 {
+&cust_accel_msa311 {
i2c_num = <2>;
- i2c_addr = <0x26 0 0 0>;
- direction = <1>;
+ i2c_addr = <0x62 0 0 0>;
+ direction = <5>;
power_id = <0xffff>;
power_vol = <0>;
firlen = <0>;
@@ -646,12 +646,12 @@ memory@00000000 {
&i2c2 {
/*real i2c addr is 0x15, the same as gsensor_mxc622x_auto, so modify the address as 0x16*/
-/* gsensor_msa301@26{
- compatible = "mediatek,gsensor_msa301";
- reg = <0x26>;
+ gsensor_msa311@62{
+ compatible = "mediatek,msa311";
+ reg = <0x62>;
status = "okay";
};
-*/
+
gsensor_mir3da@26 {
compatible = "mediatek,gsensor_mir3da";
reg = <0x26>;
至此 一次兼容Gsensor驱动已完成