差異處

這裏顯示兩個版本的差異處。

連向這個比對檢視

下次修改
前次修改
cpp:linux_kernel:smbus_controller [2016/01/21 21:40]
tony 建立
cpp:linux_kernel:smbus_controller [2023/06/25 09:48] (目前版本)
行 2: 行 2:
 ====== 在UEFI-aware OS上遇到的SMBus Controller問題 ====== ====== 在UEFI-aware OS上遇到的SMBus Controller問題 ======
 ===== Problem ===== ===== Problem =====
-最近遇到在UEFI-aware的Windows上,SMBus Controller沒被enable的情況,是發生在Wellsburg的PCH chip。可以透過取得SMBus Controller的PCI Configuration的0x04,確認bit 0(IO space)與bit 1(Memory space)是否為0得知。然而卻一直無法得知這算是BIOS還是OS Driver該去enable的。\\\\+最近遇到在UEFI-aware的Windows上,Wellsburg的SMBus Controller ​I/O Space沒被enable這可以透過取得PCI Configuration ​Space的0x04,確認bit 0(IO space)與bit 1(Memory space)是否為0得知。然而卻一直無法得知這算是BIOS還是OS Driver問題。\\ 
 +\\
 目前知道並非所有的linux diver都會去enable這個register,而Wellsburg使用到的i2c-i801則會去enable。可以參考[[http://​lxr.free-electrons.com/​source/​drivers/​i2c/​busses/​i2c-i801.c|i2c-i801.c]]的i801_probe,裡面會使用到[[http://​lxr.free-electrons.com/​source/​drivers/​pci/​pci.c#​L1467|pcim_enable_device]]。接著可以trace到以下的code:​ 目前知道並非所有的linux diver都會去enable這個register,而Wellsburg使用到的i2c-i801則會去enable。可以參考[[http://​lxr.free-electrons.com/​source/​drivers/​i2c/​busses/​i2c-i801.c|i2c-i801.c]]的i801_probe,裡面會使用到[[http://​lxr.free-electrons.com/​source/​drivers/​pci/​pci.c#​L1467|pcim_enable_device]]。接著可以trace到以下的code:​
 <code cpp> <code cpp>
行 20: 行 21:
 1401 } 1401 }
 </​code>​ </​code>​
 +至於到底是BIOS要去enable,還是OS driver要去enable,等我找到資料再補充。
 ===== Reference ===== ===== Reference =====
   * [[http://​lxr.free-electrons.com/​source/​drivers/​i2c/​busses/​i2c-i801.c|i2c-i801.c]]   * [[http://​lxr.free-electrons.com/​source/​drivers/​i2c/​busses/​i2c-i801.c|i2c-i801.c]]
 +  * [[http://​www.techbang.com/​posts/​4359-fully-understand-uefi-bios-theory-and-actual-combat-2-liu-xiudian|UEFI BIOS系統的開機流程]]
 +
 +=====    =====
 +----
 +\\
 +~~DISQUS~~