差異處
這裏顯示兩個版本的差異處。
Both sides previous revision 前次修改 | |||
cpp:linux_kernel:smbus_controller [2016/01/21 21:54] tony |
cpp:linux_kernel:smbus_controller [2016/01/21 21:55] tony |
||
---|---|---|---|
行 2: | 行 2: | ||
====== 在UEFI-aware OS上遇到的SMBus Controller問題 ====== | ====== 在UEFI-aware OS上遇到的SMBus Controller問題 ====== | ||
===== Problem ===== | ===== Problem ===== | ||
- | 最近遇到在UEFI-aware的Windows上,SMBus Controller的I/O Space沒被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: |