我这里有一张卡,可以放进一个PCIe插槽,上面还有一些SMBus可控芯片。这张卡是自我布局的,在一些旧的主板上工作得很好。在较新的主板(ASUS总理Z 370-A),它是不工作的。
该卡不使用PCIe接口,只使用PCIe插槽。PRSNT1和2之间没有连接,而且也没有与差分数据线的连接。PCIe插槽仅用于电源(Pins A9、A19、B8 (+3.3V) - A4、A12、A15、A18、B4、B7、B13、B26、B18(GND))和SMBus接口(SMCLK)、B6 (SMDAT)。
由于不工作,我的意思是我不能通过SMBus与它交谈。我正在i2c-dev内核模块中尝试这一点。i2cdetect -l的输出是:(缩短,我删除了nvidia卡的i2c开发)
i2c-3 i2c i915 gmbus dpd I2C adapter
i2c-1 i2c i915 gmbus dpc I2C adapteradapter
i2c-4 i2c DPDDC-B I2C adapter
i2c-2 i2c i915 gmbus dpb I2C adapter
i2c-0 smbus SMBus I801 adapter at f040 SMBus adapter在我看来,i2c-0设备是正确的。当我在接口0上运行i2cdetect时,会检测到一些芯片,但没有检测到正确的芯片(它们有addr0x70和0x72)。总之,我试图通过英特尔200 PCH中的SMBus主机与我的SMBus从芯片进行对话。
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- 08 -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: 30 31 -- -- 34 35 -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- 44 -- -- -- -- -- -- -- -- -- -- --
50: -- 51 -- 53 -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- -- 我也试过1-4总线,但结果一样。在另一个主板上,检测工作正常,如下所示。
此外,我用示波器测量了B5和B6上的PCIe连接器。新主板上的一个引脚上没有时钟或数据信号。
我认为我必须以某种方式配置内核模块,它还试图在SMBus插槽上与PCIe设备通信。也许有人能给我个提示。
虽然没有发生有关重叠内存区域的警告,但我将内核选项acpi_enforce_resources=lax设置为确保不存在与SMBus控制器冲突的ACPI内存绑定。
某些输出
dmesg module i2c-i801 (内核模块的输出,用于提取Intel SMBus控制器)
[ 81.667581] i801_smbus 0000:00:1f.4: SPD Write Disable is set
[ 81.667639] i801_smbus 0000:00:1f.4: SMBus using PCI interrupti2cdetect 0 (工作主板,i2c-0上的SMBus控制器)
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- 38 -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: 50 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: 70 -- 72 -- -- -- -- -- uname -a
Linux XY 4.16.0-1-amd64 #1 SMP Debian 4.16.5-1https://stackoverflow.com/questions/50236420
复制相似问题