[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bsd-nomads:15370] ThinkPad
- Subject: [bsd-nomads:15370] ThinkPad
- From: Eiki TOKITA / 時田 瑛紀
- Date: Mon, 09 Apr 2001 12:33:24 +0900
はじめまして。時田と申します。
この前ThinkPad i1124にFreeBSD 4.2を入れたのですがWindowsを起
動した後にFreeBSDを起動するとなぜかpcicが見つからなくなって
しまい、PC-Cardが使えなくなってしまうという現象が発生しまし
た。電源を切ったあとに起動すれば、またちゃんと認識するのです
が、それではWindowsに負けたということになるので(笑)クイッ
クハックしました。
パッチの内容はpower stateを無理矢理D3からD0に変更するという
ものです。なぜそれで良いのかは分りませんが、一応治ります。
過去にもTI系のチップが乗ったマシンで同じような現象が報告され
ているので、このパッチで治るかもしれませんが、どうでしょう?
FreeBSDを4年近く使ってきて、始めてカーネルを読んだのですが、
とっても面白いですね。今までは”なんか難しそう”と思って、全
然手をつけていなかったのですが、それは単なる食わず嫌いでした。
---< ここからパッチ >------------------------------------------------------
--- pci/pcic_p.c.orig Wed Mar 14 02:29:35 2001
+++ pci/pcic_p.c Wed Mar 14 02:25:57 2001
@@ -320,10 +320,17 @@
{
u_int32_t device_id = pci_get_devid(dev);
u_long command;
-
+ u_int16_t pmcs, pmcs_offset = pci_read_config(dev, CB_PCI_CAP_PTR, 1)+4;
+
/* Init. CardBus/PC-card controllers as 16-bit PC-card controllers */
/* Place any per "slot" initialization here */
+
+ /* Power State change D0 */
+ pmcs = pci_read_config(dev, pmcs_offset, 2);
+ if((pmcs & 0x03) != 0){
+ pci_write_config(dev, pmcs_offset, pmcs & ~0x03, 2);
+ }
/*
* In sys/pci/pcireg.h, PCIR_COMMAND must be separated
--- pci/pcic_p.h.orig Wed Mar 14 02:29:43 2001
+++ pci/pcic_p.h Wed Mar 14 02:25:57 2001
@@ -131,6 +131,7 @@
#define CB_PCI_HEADER_TYPE 0x0e /* PCI header type */
#define CB_PCI_BIST 0x0f /* Built-in self test */
#define CB_PCI_SOCKET_BASE 0x10 /* Socket/ExCA base address reg. */
+#define CB_PCI_CAP_PTR 0x14 /* Capability pointer */
#define CB_PCI_CB_STATUS 0x16 /* CardBus Status */
#define CB_PCI_PCI_BUS_NUM 0x18 /* PCI bus number */
#define CB_PCI_CB_BUS_NUM 0x19 /* CardBus bus number */
---< ここまで >------------------------------------------------------------
/*-------------------------------------------------------------------*
時田 瑛紀 長野高専 情報工学科 2年
<school: j99419@ei.nagano-nct.ac.jp>
*-------------------------------------------------------------------*/