差異處
這裏顯示兩個版本的差異處。
下次修改 | 前次修改 | ||
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~~ |