leddrvを書く(番外)

  • 投稿日:
  • by
  • カテゴリ:

完成したと思って、ledcont stshw (緑のLEDをHW制御にする)して帰宅したら、LEDが消えていました oTL
点滅はとまったので、何か不足があるってわけです。調べて見ると、緑のLEDをon/off/blink/fastblinkさせることはできます。が、HW制御にはできません。一方赤のLEDの方は一切の制御を受け付けませんし、常にHW制御のようです。HDDへのアクセスでちかちかしますので。

見かけ上の kernel_timer_led_paramの変化は、純正のドライバと、ほぼ同一なのです。何が足りないのだろう……と、カーネルのソースを見ていると、初期化部分にこんなコードがありました。

/* get status LED control */
//CPLD_LEDBRT_CTRL |= CPLD_LEDBRT_CTRL_LED_MODE1;
 
CPLD_LEDBRT_CTRL |= CPLD_LEDBRT_CTRL_LED_MODE0;
CPLD_LEDBUZ_CTRL |= 3;
ん。このポートに値を出力することで、制御方法(HW/SW)を切り替えるのかな? ……と、推測して、パラメータに従って、この2bitの値も制御するコードを追加したドライバを起こして見ました。すると、今度は正しく、緑、赤ともに、LEDを制御でき、かつHW/SWの制御の切替えもできるようになりました(^^)/