Nexus 5:无法通过sysfs接口更改LED颜色

时间:2014-07-14 12:29:39

标签: android kernel led nexus-5

在其他设备上,我可以将值写入/sys/class/leds/red/brightness等LED亮度控制接口,以打开/关闭LED。然而,它不适用于Nexus 5.

我正在编写一个不断更改LED亮度的应用,因此通知设置不适合我。

我已经阅读了内核驱动程序源leds-qpnp.c。它与Xperia Z2的有点不同:

  1. duty_pcts长度增加到20.在LPG模式下进行更平滑的转换是好的;
  2. 我在代码设置亮度中看到插值代码。
  3. rgb_config_data中的start,calibrated_max,on_ms和off_ms:之前从未见过。
  4. N5没有PWM_DIRECT_MODE和LPG_SYNC_MODE。这导致N5具有rgb_duration_config而Z2具有qpnp_rgb_set_direct。
  5. schedule_work不会调用qpnp_rgb_set!它仅在qpnp_rgb_start_set中调用。它似乎是启动LED的触发器。
  6. 根据这些信息,我想出了一个计划:

    1. echo TARGET_BRIGHTNESS>亮度
    2. echo SOME_u8_VALUE> rgb_start
    3. 然而它仍然拒绝加强领导。我的rgb_start被清理回0。

      查看执行此操作的代码:

      /* Checking lut flags is used to glean if the led really was started */ if (!(led_array[i].rgb_cfg->pwm_cfg->lut_params.flags & PM_PWM_LUT_RAMP_UP)) led_array[i].rgb_cfg->start = 0;

      我知道lut_params.flags已经设置为利用LPG。 但是在这一点上,我不知道如何以干净的方式清除标志,而内核中没有肮脏的黑客。

      任何?

1 个答案:

答案 0 :(得分:1)

好的。我刚刚找到了答案。

只需设置亮度,然后设置on_off_ms,然后通过rgb_start触发。请注意,两个事务需要将不同的数字发送到rgb_start