トップ «前の日記(2006-03-26) 最新 次の日記(2006-03-28)» 編集

muneda's diary


2006-03-27 手前のバス停で降りてウォーキングしてみた [長年日記]

_1 CS4281: probe of 0000:00:0b.0 failed with error -5

昨日の続きで清水さんとこでのエラーメッセージ

sound/pci/cs4281.c

static int __init alsa_card_cs4281_init(void)
 static inline int pci_register_driver(struct pci_driver *driver)
  int __pci_register_driver(struct pci_driver *drv, struct module *owner)
   int driver_register(struct device_driver * drv)
    int bus_add_driver(struct device_driver * drv)
     void driver_attach(struct device_driver * drv)
      int bus_for_each_dev(struct bus_type * bus, struct device * start,
          void * data, int (*fn)(struct device *, void *))
       static int __driver_attach(struct device * dev, void * data)
        int driver_probe_device(struct device_driver * drv, struct device * dev)
         static int __devinit snd_cs4281_probe(struct pci_dev *pci,
             const struct pci_device_id *pci_id)

上のルートを通って,CS4281固有処理に到達.で,CS4281の中でデバイスの初期化をしているのだが, EIOを返すところが多すぎて今回どこでこけているのかいまいちよくわからん.

EIOの解釈からいうとデバイスがうまく動かん

#define        EIO              5      /* I/O error */

なのでなんらかの理由により見つけられないのだと思うが,CONFIG_HZの値が変わると見つけられないのはちょっとおかしい, というか,かなり問題のように思える.何でやろうか.

もう少し調べてみる.

CS4281からEIOを返すのは以下の6箇所のみ.いずれも

static int snd_cs4281_chip_init(struct cs4281 *chip)

から呼ばれている.probe 以降

static int __devinit snd_cs4281_probe(struct pci_dev *pci,
   const struct pci_device_id *pci_id)
 static int __devinit snd_cs4281_create(struct snd_card *card,
     struct pci_dev *pci, struct cs4281 ** rchip, int dual_codec)
  static int snd_cs4281_chip_init(struct cs4281 *chip)
1416  static int snd_cs4281_chip_init(struct cs4281 *chip)

1433                          snd_printk(KERN_ERR "CFLR setup failed (0x%x)\n", tmp);
1434                          return -EIO;

1444                  snd_printk(KERN_ERR "SERC1 AC'97 check failed (0x%x)\n", tmp);
1445                  return -EIO;

1448                  snd_printk(KERN_ERR "SERC2 AC'97 check failed (0x%x)\n", tmp);
1449                  return -EIO;

1510          snd_printk(KERN_ERR "DLLRDY not seen\n");
1511          return -EIO;

1536          snd_printk(KERN_ERR "never read codec ready from AC'97 (0x%x)\n", snd_cs4281_peekBA0(chip, BA0_ACSTS));
1537          return -EIO;

1577          snd_printk(KERN_ERR "never read ISV3 and ISV4 from AC'97\n");
1578          return -EIO;

errorメッセージの上の行にどれかが出ているはず.

またsnd_cs4281_chip_init()にたどり着くまでに,pci_enbale_device(), pci_request_regions(), request_irq()などが 完了しているのでCS4281非依存部は終わっているように思う.

snd_cs4281_pokeBA0()
snd_cs4281_peekBA0()

はレジスタに対するwrite, read命令を発行しているだけ.レジスタの値を読んで期待のものではないときにEIOで終わっている. じゃぁなぜこれが起きるのかといわれると分からん.

すみませんが,errorメッセージの上あたりに上記メッセージのいずれかが出ていないか確認できませんか?>清水さん

Tags: Linux Kernel

_2 ウィルキンソンジンジャーエール

どこかで取り上げられていたのを見て飲みたくなった.近所のちょっと高級なスーパで見つけたので買ってみた.

あれ?思っていたほど辛くない.確かにノドとか鼻にツンとくるものはあるけどぜんぜん飲める.大学生の頃に飲んだときは途中で飲むのをあきらめたような気がしたのだが.味の好みが変わったかな?今のオレならマウンテン・デュー ドライジンジャーでも飲めるような気がする.

Tags: Life
本日のツッコミ(全2件) [ツッコミを入れる]
_ 清水 (2006-03-28 01:41)

こんな詳細まで調べていただいて,ありがとうございます.<br>素人が勝手にエラーメッセージを抜粋するのはよくないですね.往々にして大事な部分が抜け落ちます…<br>munedaさんの予想どおり,<br>never read ISV3 and ISV4 from AC'97<br>を発見しました.と,これだけで終わらせてしまうと,前と同じ事になってしまうので,CONFIG_HZ が 250の時(正常)と1000の時(エラー)のふたつのdmesgを置いておきます.<br>http://furyo.on-air.ne.jp/data/snd_cs4281_OK.txt<br>http://furyo.on-air.ne.jp/data/snd_cs4281_error.txt

_ TrackBack (2006-03-28 22:56)

http://furyo.on-air.ne.jp/tdiary/?date=20060328#p02<br>猿も叩けば日記<br>[linux]CS4281の認識とCONFIG_HZの関係<br> munedaさんが調べてくださってる. 自分でも何かやってみようと思って,とりあえず2.6.16のChangelogを見てみた. Author: Patrick Mochel Date: Fri Jan 6 00:15:14 2006 -0800 [PATCH] oss: remove deprecated PM interface from cs4281 driver This change removes the..


過去の日記
2002|05|06|07|08|09|10|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|05|06|
トップ «前の日記(2006-03-26) 最新 次の日記(2006-03-28)» 編集