高通vibrator

本文介绍了高通vibrator的驱动开发,主要关注HAL层和driver部分。在HAL层,使用了Vibrator.cpp来控制振动,通过判断驱动类型决定调用leds还是ff。在driver层面,重点讲解了leds-qpnp-vibrator-ldo.c中的实现,包括如何通过写入sysfs节点来控制振动。在设备树中,需要定义'qcom,qpnp-vibrator-ldo'来使驱动生效,并通过pmic的寄存器进行控制。" 102627242,9039078,Wi-Fi 电源管理模式与帧缓存机制,"['无线网络', 'WLAN', 'Wi-Fi 电源管理']
摘要由CSDN通过智能技术生成

高通vibrator是用leds下面的leds-qpnp-vibrator-ldo.c比较多,一般是pmic下面的ldo输出的方式控制振动。

HAL层

hal层用的是vendor/qcom/opensource/vibrator/aidl/Vibrator.cpp

振动的时候会调用ndk::ScopedAStatus Vibrator::on

这里会有判断振动驱动的类型

    if (ledVib.mDetected){
        ret = ledVib.on(timeoutMs);
    }else{
        ret = ff.on(timeoutMs);
     }
 

如果leds下面的驱动注册成功,那么会调用

static const char LED_DEVICE[] = "/sys/class/leds/vibrator";

int LedVibratorDevice::on(int32_t timeoutMs) {
    char file[PATH_MAX];
    char value[32];
    int ret;

    snprintf(file, sizeof(file), "%s/%s", LED_DEVICE, "state");
    ret = write_value(file, "1");
    if (ret < 0)
       goto error;

    snprintf(file, sizeof(file), "%s/%s", LED_DEVICE, "duration");

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值