Android Sensor Input类型 (二) Device Driver

本文详细介绍了在msm8909平台上如何配置和编译传感器设备驱动,以及设备驱动的注册和probe流程。主要内容包括Devicetree配置,设备驱动编译,以及mmc3416x磁传感器驱动的解析,涉及到i2c设备的注册,输入子系统,sensors_classdev的使用,并展示了工作队列的工作方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SENSORS 设备驱动

1.1 Device tree 配置

在msm8909平台上,根据硬件原理图设计得知sensors 是挂载在BLSP1 QUP1 上,所以需要在 i2c1 的节点下配置,以磁传感器mmc3416 为例;

    mpu6050@68 {
        compatible = "invn,mpu6050";
        reg = <0x68>;
        pinctrl-names = "mpu_default","mpu_sleep";
        pinctrl-0 = <&mpu6050_default>;
        pinctrl-1 = <&mpu6050_sleep>;
        interrupt-parent = <&msm_gpio>;
        interrupts = <96 0x1>;
        vdd-supply = <&pm8909_l17>;
        vlogic-supply = <&pm8909_l6>;
        invn,gpio-int = <&msm_gpio 96 0x1>;
        invn,place = "Portrait Down";
    };
    mmc3416x@30 { /* Magnetic field sensor */
        compatible = "memsic,mmc3416x";
        reg = <0x30>;
        vdd-supply = <&pm8909_l17>;
        vio-supply = <&pm8909_l6>;
        memsic,dir = "obverse-x-axis-forward";
        memsic,auto-report;
    };

从以上两个设备树的信息可知 在sensors device tree 的配置中主要是配置,ic 的供电,i2c 从设备地址, 中断gpio 脚,以及特有的sensor 属性等,具体的作用,待解析设备驱动再做简要的说明。

1.2 设备驱动编译

在msm8909平台上,sensors 存放的目录一般是选择如下路径下: msm8909/code/kernel/drivers/input/misc/ 以mpu6050 和 mmc3416 为例,需要在 msm8909/code/kernel/arch/arm/configs/msm8909-1gb_defconfig 中将编译的宏控打开,如下配置:

CONFIG_SENSORS_MPU6050=y
CONFIG_SENSORS_MMC3416X=y

编译完成后,查看out 目录是否生成对应的.o 文件。

1.3 设备驱动解析

以mmc3416 为例解析驱动的逻辑

1.3.1 设备驱动注册

static struct of_device_id mmc3416x_match_table[] = {
    { .compatible = "memsic,mmc3416x", },
    { },
};
static struct i2c_driver mmc3416x_driver = {
    .probe      = mmc3416x_probe,
    .remove     = mmc3416x_remove,
    .id_table   = mmc3416x_id,
    .driver     = {
        .owner  = THIS_MODULE,
        .name   = MMC3416X_I2C_NAME,
        .of_match_table = mmc3416x_match_table,
        .pm = &mmc3416x_pm_ops,
    },
};
module_i2c_driver(mmc3416x_driver);

在mmc3416x.c的驱动中,首先是使用module_i2c_driver将其注册i2c设备总线上, 这个接口是moudle_init 和 i2c_add_d

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值