[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[bsd-nomads:16400] Re: Cirrus Logic PD6729/6730 PC-Card



倉品@新潟です.

>>> On Wed, 31 Jul 2002 21:34:34 +0900 (JST), Hideyuki KURASHINA <rushani@bl.mmtr.or.jp> said:

> 倉品@新潟です.
[...]
> > >   hint.pcic.0.port="0x3e0"
> > 
> > なんか この 0x3e0 とか 
> > (a)の時の ppc1: at port 0x3bc-0x3bf irq 7 on isa0 とか
> > (c)の時の sbc1: at port 0x330-0x331,0x388-0x38b,0x220-0x22f
> > とか、 この辺が重なっているとか 隠れデバイスがいるのではないでしょうか?
> 
> (b) の場合の boot -v で起動した dmesg を irq と port を grep して,
> それらしきものを整理すると
> 
> device   port                on       irq drq
> ----------------------------------------------------
[...]
> ed0      0x320-0x33f         pccard0  *
[...]
> となりました.

先の dmesg をよく見てみると

  ESS1681: adding io range 0x220-0x22f, size=0x10, align=0x20
  ESS1681: adding io range 0x388-0x38b, size=0x4, align=0
  ESS1681: adding io range 0x330-0x331, size=0x2, align=0       ← ここ
  ESS1681: adding irq mask 0x20
  ESS1681: adding dma mask 0x2
  pnpbios: handle 22 device ID ESS1681 (81167316)

と, ESS1681 がちょうど ed0 の I/O 空間と重なっているようにみえます. ちなみに
ThinkPad 560 のユーザガイドによると,

  _ 0x220-0x22f … PCM
  _ 0x388-0x38b … FM シンセサイザ

です.

ということで, (b) の場合で次のことを試してみました;

 (b-1) /boot/device.hints にて,

     hint.sbc.0.port="220" → hint.sbc.0.port="240" と変更する.

   → dmesg は

       ppc0: <Parallel port> at port 0x3bc-0x3c3 irq 7 on isa0
       ppc0: Generic chipset (NIBBLE-only) in COMPATIBLE mode
      -sbc0: <ESS 688> at port 0x220-0x22f irq 5 drq 1 flags 0x11 on isa0
      -pcm0: <ESS 18xx DSP> on sbc0
       sc0: <System console> at flags 0x100 on isa0
       sc0: VGA <16 virtual consoles, flags=0x300>
       sio0 at port 0x3f8-0x3ff irq 4 flags 0x10 on isa0
     [中略]
       unknown: <PNP0600> can't assign resources (port)
       unknown: <PNP0400> can't assign resources (port)
       unknown: <IBM0070> can't assign resources (port)
      -unknown: <ESS1681> can't assign resources (port)
      +sbc1: <ESS ES1681> at port 0x330-0x331,0x388-0x38b,0x220-0x22f irq 5 drq 1 on isa0
      +pcm0: <ESS 18xx DSP> on sbc1
       Timecounters tick every 10.000 msec

     に変化.
     sndstat には変化なし.
     ed な NIC をさしても固まらず.

 (b-2) ed0 は I/O port が重ならないように /etc/pccard.conf に

       io 0x240-0x32F 0x340-0x360

     を書く.

   → dmesg は (b) の場合と変化なし.
      sndstat も (b) の場合と変化なし.
      ed な NIC をさしても固まらず.

となりました. なお, どちらの場合も ed ドライバの使う I/O port は
0x340-0x35f になります.

飯島さん, ありがとうございました.

# 結局, 何が 0x330-0x331 を確保しているのか分かりませんが….

-- rushani