Intel Z370 - SMBus на PCIe
У меня здесь есть карта, которая вставляется в слот PCIe, с некоторыми контролируемыми микросхемами SMBus. Карта самостоятельно выложена и прекрасно работает на некоторых старых материнских платах. На более новой материнской плате (ASUS PRIME Z370-A) она не работает.
Карта не использует интерфейс PCIe, только слот PCIe. Нет связи между PRSNT1 и 2 и, кроме того, нет связи с дифференциальными линиями передачи данных. Слот PCIe используется только для питания (контакты A9, A19, B8 (+3,3 В) - A4, A12, A15, A18, B4, B7, B13, B26, B18(GND)) и интерфейса SMBus (B5 (SMCLK)), B6 (SMDAT)).
Я не имею в виду, что не могу общаться с ним через SMBus. Я пытаюсь это с помощью модуля ядра i2c-dev. Вывод i2cdetect -l: (сокращен, я удалил разработчиков i2c карты nvidia)
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 является правильным. Когда я запускаю i2cdetect на интерфейсе 0, обнаруживаются некоторые микросхемы, но не нужные (они имеют адреса 0x70 и 0x72). Подводя итог, я пытаюсь говорить через мастер SMBus в Intel 200 PCH с моими подчиненными чипами 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, чтобы гарантировать, что связывание памяти ACPI не конфликтует с контроллером SMBus.
Некоторые выводы
dmesg modprobe 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 interrupt
i2cdetect 0 (рабочая материнская плата, контроллер SMBus на i2c-0)
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-1
2 ответа
Я получил ответ от Asus. ASUS PRIME Z370-A не имеет подключения SMBus к слотам PCIe.
В соответствии с Электромеханической спецификацией карты PCIe, глава 2 "Вспомогательные сигналы", интерфейсные контакты SMBus являются опциональными как для платы расширения, так и для системной платы. С другой стороны, в спецификации PCIe M.2 упоминается (этот ECN включен в стандарт) провода SMBus на платах, чтобы помочь датчикам, расположенным на устройствах SSD.
Таким образом, в вашем случае очевидно, что старая материнская плата более продвинутая, чем новая, она имеет такие соединения.