[Armadillo:07266] Re: A440 のhwclock(単度版)でエラー

Takenoshita Koyo email@hidden
2011年 5月 24日 (火) 15:38:05 JST


竹之下です。

> hwclockのソースをみると、
>  ioctl(rtc_fd, RTC_UIE_ON, 0);
> に失敗しているようです。
> errno=25というのはENOTTY。
たしかに、ここで失敗していました。

Armadillo-440で使用しているRTCは、S35390A(セイコーエプソン製)
ですが、S35390A用のドライバではUIE(Update Interrupt Enable)は
サポートしていません。

これへの対処としては、
1./bin/hwclockの方でエミュレーションしてあげる
    => ドライバ内でioctl(RTC_UIE_ON, )の時に-EINVALを返す
2.ドライバの方でエミュレーションしてあげる
    => カーネルのコンフィギュレーションでCONFIG_RTC_INTF_DEV_UIE_EMUL を有効にする
のいずれかで、対応できるようです。

後者の方は、make menuconfigで以下のオプションを有効にして、
イメージをビルドしなおすことで、実現できます。

Linux Kernel Configuration
  Device Drivers  --->
    <*> Real Time Clock  --->
      [*]     RTC UIE emulation on dev interface #チェックを入れる

これは、デフォルトで有効になっていた方が良さそうなオプションですので、
影響範囲を調査し、問題なさそうであれば、次のカーネルアップデートで
デフォルトで有効にするよう変更したいと思います。

ご報告ありがとうございました。

Yasuhisa Nakamura さんは書きました:
> 中村です。
> 
> [Armadillo:07256]でhwclockが2つ入っていることを書きましたが、
> そのうちの単独版をA440で動かすと、次のようなエラーになります。
> 
> # /bin/hwclock --show
> hwclock: ioctl() to /dev/rtc to turn on update interrupts failed
> unexpectedly, errno=25: Inappropriate ioctl for device.
> 
> hwclockのソースをみると、
>  ioctl(rtc_fd, RTC_UIE_ON, 0);
> に失敗しているようです。
> errno=25というのはENOTTY。
> 
> ドライバ(ハードウェア?)が割り込みをサポートしていない、
> というようなことかな?と思っているのですが、ほんとのところは
> わかりません。
> 
> 今のところ、[Armadillo:07255]で書いたパッチをあてたbuybox版の
> hwclockで足りているので、この単独版がなくても困りはしないのですが、
> このエラーが気になっています。
> 
> どなたか、原因と対処方法をご存じでしょうか?
> 


-- 
Koyo Takenoshita




armadillo メーリングリストの案内