【待评审】通过CPLD来切换I2C通道切换,虚拟I2CMux的功能

当前我们在适配硬盘背板+NVME盘,硬件拓扑如下:

        I2C11 –> PCA9545 ( chan2 ) –----写CPLD寄存器:值:1 切换---- > NVME0  (VPD地址0xA6)    
                                  –----写CPLD寄存器:值:2 切换---- > NVME1  (VPD地址0xA6)  
                                  ... ....
                                  –----写CPLD寄存器:值:3 切换---- > NVME7  (VPD地址0xA6)                           


OpenUBMC怎么配置sr文件,我当前参考这样配置不可以

   "Smc_BP_Switch": {
      "Buses": [
        "I2cMux_SMC_PCA1",
        "I2cMux_SMC_PCA2",
        "I2cMux_SMC_PCA3",
        "I2cMux_SMC_PCA4",
        "I2cMux_SMC_PCA5",
        "I2cMux_SMC_PCA6",
        "I2cMux_SMC_PCA7",
        "I2cMux_SMC_PCA8"
      ]
    },


手动拼接I2C命令,可以读VPD信息

/data # ./i2ctool64
==============================================================================
                                  i2ctool help
==============================================================================
1   read i2c     e.g. i2ctool 1 busid read_len cmd_data_len slave_addr
                 data1 data2 ...dataN (read_len<=32,cmd_data_len<=6)
2   write i2c    e.g. i2ctool 2 busid write_len slave_addr
                 data1 data2 ...dataN (write_len<=32)
==============================================================================
Uasge:i2ctool <option> <param...>




~ /data # ./i2ctool64 2 11 1 0xE0 0x02; ./i2ctool64 2 11 2 0x66 0x0C 0x02; ./i2ctool64 1 11 32 1 0xA6 0x00
********************************
     i2c read data is
********************************
0x01  0x00  0x00  0x00
0x01  0x0f  0x00  0xef
0x01  0x0e  0x19  0xc8
0x4a  0x44  0x20  0x43
0x6c  0x6f  0x75  0x64
0xd8  0x4a  0x36  0x35
0x31  0x31  0x00  0x00
0x00  0x00  0x00  0x00

  • 评审点:新增通过CPLD来切换I2C通道切换,虚拟I2CMux的功能