2

I have here a card that fits in an PCIe slot, with some SMBus controllable chips on it. The card is self layouted and works fine in some older mainboard. In a newer mainboard (ASUS PRIME Z370-A) it is not working.

The card is not using the PCIe Interface only the PCIe Slot. There is no connection between PRSNT1 and 2 and moreover no connection to the differential data lines. The PCIe Slot is only used for power supply (Pins A9, A19, B8 (+3.3V) - A4, A12, A15, A18, B4, B7, B13, B26, B18(GND)) and SMBus interface (B5 (SMCLK), B6 (SMDAT)).

With not working I mean that I can not talk to it via SMBus. I'm trying this with the i2c-dev kernel module. The output of i2cdetect -l is: (shortened, I removed the i2c devs of the nvidia card)

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

In my opinion the i2c-0 device is the right one. When I run i2cdetect on Interface 0 some chips are detected, but not the right one (they have addr 0x70 and 0x72). To sum up I'm trying to talk via the SMBus master in the Intel 200 PCH with my SMBus slave chips.

         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: -- -- -- -- -- -- -- --  

I tried also bus 1-4 but the same result. On the other mainboard the detection is working, as you see below.

Furthermore I measured with my oscilloscope on pin B5 and B6 of the PCIe connector. There is no clock or data signal on one of these pins on the new mainboard.

I think I have to configure somehow the kernel module that it also tries to communicate to SMBus devices on the PCIe Slots. Maybe somebody can give me a hint.

Although no warnings about overlapping memory regions have occurred, I set the kernel option acpi_enforce_resources=lax to ensure that no ACPI memory binding conflicts with the SMBus Controller.

Some outputs

dmesg modprobe i2c-i801 (Output of kernel module, that abstracts the Intel SMBus Controller)

[   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 (Working mainboard, SMBus Controller on 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
Hans Müller
  • 71
  • 1
  • 5
  • External PCIe cards never start with `0000:00:`. You are talking to one integrated to your mobo. You need to understand why your kernel doesn't recognize / enumerate your card. Also, provide a link to the card description. To the hardware issues, try to put it to another slot if possible. – 0andriy May 12 '18 at 19:14
  • I'm not trying to talk with the PCIe Interface of the card, as it has none. It only uses the PCIe slot for a SMBus connection and some power supply. @0000:00:1f.4 is a sub module of my chipset - the smbus controller. The kernel module inits the smbus controller that is supposed to communicate with the smbus slave on my PCIe card. – Hans Müller May 13 '18 at 20:12
  • You are totally confusing me. In the post you stated that you have a PCIe card, here in the comment you are stating the opposite. Please, put in order your question and clarify the things. – 0andriy May 13 '18 at 23:09
  • I have changed the question to clear the difference between PCIe hardware slot and PCIe Lane communication – Hans Müller May 14 '18 at 13:59
  • OK, I got it, you are using PCIe connector as a power connector. The device on the board is a **slave** SMBUS device which is connected by **additional** wires to the on-board controller. Correct? Can you also put the information from I2C detect for **working** case? – 0andriy May 14 '18 at 14:45
  • There are no additional wires. There is a SMCLK (B5) and SMDAT (B6) Pin on the PCIe Slot. The names in the bracket are the side (A or B) and the pin number. I've added the i2cdetect of the working case – Hans Müller May 14 '18 at 18:21
  • Now it's getting more clear. So, looks like the mobo you have doesn't do a real wiring for those signals. I dunno if it's mandatory to have them by PCIe specification and if the mobo you have actually conforms them. – 0andriy May 14 '18 at 21:08
  • https://pcisig.com/sites/default/files/specification_documents/4_SMBus_interface_for_SSD_Socket_2_and_Socket_3.pdf According to this document it's only for M.2 type of connectors. So, Wikipedia also refers to PCIe mini card only (when talking about SMBus). – 0andriy May 14 '18 at 21:15
  • It is part of the PCIe Card Electromechanical Specification (see http://read.pudn.com/downloads166/ebook/758109/PCI_Express_CEM_1.1.pdf page 53). But it's not required by the standard. This could be the problem of course. I tired to contact the mainboard manufacturer about this but got no response. – Hans Müller May 15 '18 at 11:27

2 Answers2

3

I've got an answer from Asus. The ASUS PRIME Z370-A has no SMBus connection on the PCIe Slots.

Hans Müller
  • 71
  • 1
  • 5
  • Any suggestion in recent mothrboard that has SMBUS connecton usable on the PCIe Slots , i am struggling find any board in market – Alok Prasad Aug 22 '23 at 15:58
0

According to PCIe Card Electromechanical Specification, chapter 2 "Auxiliary Signals", the SMBus interface pins are collectively optional for both the add-in card and the system board. On the other hand PCIe M.2 specification mentiones (this ECN is incorporated in the standard) SMBus wires on boards to be helpful for sensors located on SSD devices.

So, in your case obviously old motherboard is more advanced than the newer one, it has those wirings done.

0andriy
  • 4,183
  • 1
  • 24
  • 37
  • The link to the PCIe M.2 specification seems dead. Found an archived copy at http://web.archive.org/web/20180729015647/https://pcisig.com/sites/default/files/specification_documents/4_SMBus_interface_for_SSD_Socket_2_and_Socket_3.pdf – Chester Gillon Jun 03 '23 at 15:14