У меня есть карта, которая вставляется в слот 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
0000:00:
. Вы разговариваете с одним, интегрированным в ваш мобо. Вам нужно понять, почему ваше ядро не распознает / не перечисляет вашу карту. Также дайте ссылку на описание карты. Что касается аппаратных проблем, попробуйте по возможности поставить его в другой слот. - person 0andriy   schedule 12.05.2018