背景
准备开发一款类似Riser卡的交换板。该交换板支持超过8路PCIe*4通道,每路PCIe对应一路SMBus。当前CSR中并没有这么多I2C通道配置的器件。硬件目前使用多路I2C连接到CPLD上,通过CPLD来实现I2C选择的操作。
关联ISSUE
暂无
整体方案
在CSR中新增I2C拓展对象,该对象支持任意多路I2C拓展(需设置一个上限)。该对象可以通过CPLD来实现,在切换前后可以使用Accessor进行读写控制,用于通道切换或其他操作。目前想法是通过控制两个寄存器来进行通道切换,一个控制是否开启切换功能,另外一个控制切换通道。考虑到数据量问题,可以用多路I2C连接到CPLD,每路I2C选择多路SMBus
应用场景:用于CPLD模拟I2C拓展器件,支持超过8路的拓展情景
graph LR
%% 输入部分
I2C1[I2C线路1] --> CPLD{CPLD芯片}
I2C3[I2C线路....] --> CPLD{CPLD芯片}
I2Cn[I2C线路n] --> CPLD{CPLD芯片}
%% 输出分组
CPLD -->|n*SMBus| Group[SMBus]
评审点
- 是否新增一个CSR对象类用于I2C拓展(超过8路)
- 新增的I2C拓展最大支持多少路数,最少支持多少路数
- 是否可以用CPLD来实现,或者说来模拟
- 新增对象是否可以同时多路入,多路出操作
详细描述
示例:
参考Pca9545、I2cMux类针对CPLD等器件的I2C拓展设计。
{
"ManagementTopology":{
"i2c_1":{
"Chip":[
"CpldExpI2c_0"
]
},
"CpldExpI2c_0":{
"Buses":[
"CpldI2cMux_0",
"CpldI2cMux_1",
"CpldI2cMux_2",
"CpldI2cMux_3",
"CpldI2cMux_4",
"CpldI2cMux_5",
"CpldI2cMux_6",
"CpldI2cMux_7",
"CpldI2cMux_8",
"CpldI2cMux_9",
"CpldI2cMux_10"
]
},
"CpldI2cMux_0":{
"Connectors": [
"Connector_PCIe_0"
]
}
},
"Objects":{
"CpldExpI2c_0":{
"Chip":"#/Smc_BrdSMC", // 用于确定该I2C是从哪个CPLD或者器件发起
"ChanneNum":10, // I2C需要拓展数量。
"PrepareAction":0, // 切换操作前置操作对象。用于在切换通道前操作
"Action":"#/Accessor_Switch.Value", // 切换操作动作对象,用于通道切换
"FinishAction":0 // 切换操作后置操作对象。用于在切换通道后操作
},
"CpldI2cMux_0":{
"PrepareValue":0, // 通道切换前置操作赋值,不需要时不用配置
"Value":0, // 通道切换时,切换操作对象赋值
"FinishValue":0, // 通道切换后置操作赋值,不需要时不用配置
"ChannelId":0 // 通道ID,建议和Value值保持一致
},
// 下面两个是另外一种Action操作
"CpldExpI2c_1":{
"Chip":"#/Smc_BrdSMC", // 用于确定该I2C是从哪个CPLD或者器件发起
"ChanneNum":10, // I2C需要拓展数量。
"Actions":[ // 切换操作动作对象,用于通道切换。按照顺序操作
"#/Accessor_PrepareSwitch.Value",
"#/Accessor_Switch.Value",
"#/Accessor_FinishSwitch.Value"
]
},
"CpldI2cMux_1":{
"Values":[ // 通道切换时,切换操作对象赋值
0,
1,
2
],
"ChannelId":0 // 通道ID,建议和Values中切换操作值保持一致
}
}
}
CpldExpI2c_0:类似Pca9545,该对象用于描述从CPLD等器件拓展I2C功能。这里想到两种操作方式,通过Action配置丢Accessor或其他对象来切换对应i2c拓展通道。
CpldExpI2c_1:CpldExpI2c_0的另外一种想法,将切换前操作与切换后操作合并到数组中。这要求CpldI2cMux_1中Values中数据数量和Actions对象保持一致。否则按照0填充
CpldI2cMux_0:I2C通路,参考I2cMux对象,用于配置具体选择的I2C通路
评审结论
RM SIG评审后认为该接口不需要开发。
遗留问题
PCA9545不确定支持20路
RMSIG:1.CPLD模拟9545+9548实现远超20路SMBus。2.立项时与华为PAE沟通。3.SMBus是否涉及Master切换。