2013年11月24日 星期日

讓網樂通的LED像心跳一樣閃動

之前 github中branch leds 中的程式碼完全正確,
問題的確是在 kernel config中。
只要在 menuconfig 時選擇以下項目
Device Drivers  --->
  LED Support  --->
    LED Class Support
    LED Support for GPIO connected LEDs
      Platform device bindings for GPIO LEDs (NEW)
及需要的 Trigger (預設用到的有 Heartbeat 和 ide-disk),

或手動把
# CONFIG_LEDS_CLASS is not set
改成
CONFIG_LEDS_CLASS=y

再加入以下兩個就不會消失了
CONFIG_LEDS_GPIO=y
CONFIG_LEDS_GPIO_PLATFORM=y

還無法註冊成platform device 的 LEDs 附加測速

上一篇 網樂通 reset 按鈕設定成 platform device 提到LED問題,
除了註冊裝置的程式碼是無效的註解外,
GPIO 腳位定義不對,
但是改完後還是沒出現該有的裝置。

原因可能是在手動加入的 kernel .config 項目被自動刪除。
還不能動的原始碼另開一個 branch https://github.com/rexct/kernel-pdk7105/tree/leds

最後加映可能是加上 fdma 韌體、加入編譯參數 CFLAGS="-m4a -pipe -O3 -ffast-math" 以及更新 cross-compile 環境到 2013/11/03 時,
對執行速度的影響。

網樂通 reset 按鈕設定成 platform device

原本以為將原本完全沒設定的 reset 按鈕註冊成 platform device 會是最困難的,
之前先試著改紅外線遙控喚醒卻不好找到問題。
找了些gpio key的資料後,
順利把 reset 按鈕設定成 platform device。
除了在 dmesg 中出現下面訊息外,

evbug.c: Event. Dev: input0, Type: 1, Code: 28, Value: 1
evbug.c: Event. Dev: input0, Type: 0, Code: 0, Value: 0
evbug.c: Event. Dev: input0, Type: 1, Code: 28, Value: 0
evbug.c: Event. Dev: input0, Type: 0, Code: 0, Value: 0

意外的順利用來喚醒 suspend to ram 的系統,
雖然沒有遙控器喚醒方便,
但已經比之前只能用 WoL 和 TTL 訊號實用多了。
修改已經更新到 https://github.com/rexct/kernel-pdk7105