2013年12月1日 星期日

修正LED狀態、使用 Timer 和 gpio Trigger 及編入 STx7105 內建音效支援

在測試 retain_state_suspended 時,
發現 suspend 時不維持 LED 狀態(0)會變成全亮,
原因是 active_low 設定錯了,
要設定為 0 才符合實際狀態,
Heartbeat trigger 也變成比較像心跳那樣閃兩下,
而不是變暗兩次。
連帶 script 中控制亮暗也要變更,
(ledctl2.sh ver 2.1 http://sh4twbox.googlecode.com/files/ledctl2.sh
如果只更換 script 沒換 kernel,
燈號控制會部份失效。

修正部份的程式碼:https://github.com/rexct/kernel-pdk7105/commit/f10f9203a5301bb87b044ab4c333d625205f6d4a


之前以為 timmer Trigger 沒效,
原來是因為沒有設定相關參數。

以藍色LED來說
將Trigger 設定成 timer
# echo "timer" > /sys/devices/platform/leds-gpio.0/leds/LD5/trigger
設定亮的時間,單位 ms
# echo "亮的時間" > /sys/devices/platform/leds-gpio.0/leds/LD5/delay_off
設定暗的時間,單位 ms
# echo "暗的時間" > /sys/devices/platform/leds-gpio.0/leds/LD5/delay_on

就可以看到效果。

順便也試了 gpio Trigger 。
以紅色LED示範
將Trigger 設定成 gpio
# echo "gpio" > /sys/devices/platform/leds-gpio.0/leds/LD6/trigger
指定關聯的 gpio 腳位,
用 reset 按鈕(腳位1)來測試
# echo 1 > /sys/devices/platform/leds-gpio.0/leds/LD6/gpio
現在按著 reset 按鈕時,
紅燈會熄滅,
沒按下則是亮的狀態。

可以更改 inverted 來對換要的情況,
先查看目前 inverted 設定
# cat /sys/devices/platform/leds-gpio.0/leds/LD6/inverted
no
換成 yes
# echo 1 > /sys/devices/platform/leds-gpio.0/leds/LD6/inverted
就會是按下 reset 按鈕就亮紅燈。

要恢復 inverted 設定成 no 可以輸入
# echo 0 > /sys/devices/platform/leds-gpio.0/leds/LD6/inverted


另外測試加了 fdma 的 firmware 後,
原本會造成 compile 失敗的

Device Drivers  --->
  Sound card support  --->
    Advanced Linux Sound Architecture  --->
      STMicroelectronics SoCs support  --->
        STx7105 and STx7106 support

也可以編譯完成,
應該就是 debian wheezy 能用內建音效輸出的關鍵,
晚點再來把編好的 kernel 放到 debian wheezy 上試試看。

沒有留言:

張貼留言