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.

Таким образом, в вашем случае очевидно, что старая материнская плата более продвинутая, чем новая, она имеет такие соединения.

Другие вопросы по тегам