【问题标题】:Nexus 5: cannot change LED colour through sysfs interfaceNexus 5:无法通过 sysfs 接口更改 LED 颜色
【发布时间】:2014-09-04 08:54:34
【问题描述】:

在其他设备上,我可以将值写入 LED 亮度控制接口,例如 /sys/class/leds/red/brightness,以打开/关闭 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 的触发器。

根据这些信息,我想出了一个计划:

  1. 回显 TARGET_BRIGHTNESS > 亮度
  2. 回显 SOME_u8_VALUE > rgb_start

但它仍然拒绝为 LED 供电。我的 rgb_start 被清零了。

查看执行此操作的代码:

/* 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。 但是在这一点上,我不知道如何以干净的方式清除标志,而不会在内核中进行肮脏的黑客攻击。

有人吗?

【问题讨论】:

    标签: android kernel led nexus-5


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-04-23
      • 1970-01-01
      • 1970-01-01
      • 2013-03-09
      • 2019-01-03
      • 1970-01-01
      相关资源
      最近更新 更多