通过CPLD管理EEPROM和PSU

问题描述

BMC如何通过CPLD间接读写EEPROM和管理电源?如果有两个BMC呢?


可以参考下VPD仓的14191046_PSU_3.sr,电源信息通过sr里配置Scanner等来获取刷新

如果希望SMC对标PMBus实现一套电源管理接口,是否需要在power_mgmt实现SMC协议接口的开发: power_mgmt/include/device_tree/adapters/power_mgmt/protocol/smc.lua · openUBMC/power_mgmt - AtomGit | GitCode

如果只是简单的电源某个信息的读取,可以直接sr配置scanner或accessor实现,复杂的类似黑匣子数据获取这种,就需要进行代码适配了

也就是scanner/accessor只能实现简单的查询,设置类操作、复杂功能都需要代码适配?

从OnePower_1的UnsupportedProperties属性看起来这种适配方式是有约束的。
还有OnePower_1的Protocol属性是i2c怎么理解,代码里有这个类型的协议适配吗?
power_mgmt/include/device_tree/adapters/power_mgmt/protocol · openUBMC/power_mgmt - AtomGit | GitCode

UnsupportedProperties属性组件最新代码里已经没有使用了,当前代码没有i2c的适配,这个电源是通过sr配置来刷新属性的,可以看下这个文档:电源适配指导

好的,那EEPROM管理呢,是否能通过CPLD进行FRU读写?

设置操作如何处理呢,多个BMC同时设置电源是不合适的

@xuhaijun 海军哥,有老师可以解答下吗

@fumingquan 请问通过SMC forward I2C能实现这些管理需求吗?

读取EEPROM应该是可以的,当前还没有适配过多BMC同时管理电源的场景,若需要支持相关场景可以联系PAE提出相应诉求

单BMC通过SMC forward I2C管理电源可以吗?电源还是配置PMBus协议

对外显示协议可以是pmbus,这种管理方式BMC发送的是smc命令吗?smc命令就不要配置pmbus了,用于在组件代码侧进行适配

也就是SMC forward现在只能透传I2C,不能透传PMBus吗?

应该是走smc再转pmbus吧

应该是吧,配置思路如下:

SMC forward配置
"I2c_1": {
	"Chips": [
		"Smc_abc"
	]
},
"Smc_abc": {
	"Buses": [
		"I2cMux_SMC_0",
		"I2cMux_SMC_1"
	]
},
"I2cMux_SMC_0":{
	"Connectors": [
		"Connector_PowerSupply_1"
	]
},
PSU配置
"OnePower_0": {
	"Protocol": "pmbus",
	"PhysicalInterface": "pmbus",
    ......
}

这样是否可行,BMC - CPLD这条I2C上是什么样的协议封装,BMC当前已经支持了吗?

BMC和CPLD之间的通信使用的应该是SMC协议,是否支持应该是看逻辑是否支持

BMC需要把PMBus帧封装到SMC帧中,再由CPLD解包后将PMBus帧向下一级传递,当前BMC可以支持这种封装吗?

得看pmbus和i2c协议上对于数据的封装和发送方式有没有区别,目前实现的总线协议里是没有单独实现pmbus的

好的,总结下结论:
1 SMC forward可以支持这种场景的EEPROM管理
2 不确定是否支持PMBus的透传