2011年8月3日水曜日

[KERNEL] Galaxy S2 Backlight Notification (BLN) support kernel #2

見落としがあったので、改良版を作りました。いままでsysfsのnotificaion_ledはlights経由でのみ変更されるものだと、勝手に考えてましたが、BLN Control Appの動作を見ると全然違いますね、積極的にsysfsを操作してます。というわけで、いろんな条件でテストしてみたところ。BLN Appがlightsの足りないところを補っている感じでした。lightsは主にNotificationManagerからの要求で、各種ひかる系のデバイスの制御をやってますが、そのタイミングはシステム依存です。どのタイミングでLED通知が解除されるかはわかりません。BLN Control Appはこのへんの足りないところを積極的に制御してます。
#あー、なんでいままで気にしなかったんだろうorz...

さておき、以下のような方針で実装しなおしました。
1.端末がdeep sleep状態の時に通知を受けたら、一回だけwake_lock
2.以後、LEDのblinkか連続点灯かにかかわらず、wake_lockを保持。
3.BLN Control Appからの点灯終了イベント(sysfsへのアクセス)で
    wake_unlockしてregulatorを開放。
4.deep sleepに移行。
5.これらの繰り返し。
保険として、BLN Contorl Appからの通知が来なかった場合にresumeでwake_unlockといった感じです。3の部分がキモなんですが
普通アプリの挙動みてればわかるだろう>自分。。。

というわけで、wake_lock -> wake_unlockの区間を制御できるようになったので、いったんはこれでFIXでしょうね。あとはPowerManagement系に手を入れないとこれ以上の省電力化はのぞめないでしょう。

あと、BLN Control Appは最新で運用よろしく。ソースはいつものようにgithubにあげときました。試す人は試すでしょうw。

drivers/input/keyboard/cypress/cypress-touchkey.c
git clone git://github.com/creams/SGS2-BLN-cypress-touchkey.git
サンプルkernelバイナリ
git clone git://github.com/creams/SGS2-SC02C-BLN-Kernel.git

なんだかXDAとかにスレ立ってるし。battery rapeとか言われてるよw。

0 コメント:

コメントを投稿