ClockChipFirmware新增和变更属性

背景

时钟芯片新增场景

  • 配置失败后需要产生告警,当前没有失败状态的获取途径
  • 兼容多个同芯片类型、同通信链路类型的芯片
  • 兼容未来不需要写上电锁的场景(其他部件)

原始方案评审贴:【已评审】支持主板上时钟芯片配置,新增私有对象ClockChipFirmware

关联ISSUE

#391 [需求]: 支持主板上的时钟配置

整体方案

  1. 新增属性Id作为PrimaryKey,用于同芯片类型、同通信链路类型的时钟配置。原primaryKey为ChipType与Protocol的联合主键,上述场景会不兼容。
  2. 新增属性ConfigEnabled,指示当前是否允许配置,可关联上下电状态,部件Ready状态,兼容非fru0上下电的场景。监听该值变化,若该值为true且处于未配置状态则允许配置
  3. 变更属性ConfigSuccessFlag → ConfigStatus,指示当前配置状态,可为各机型配置告警、限制部件上电等场景使用。由于当前时钟芯片方案暂未上库,未有任何机型使用,无兼容性问题。
  4. 新增属性ConfigPowerOnLock,指示配置时是否设置fru0的上电锁

评审点:

  1. 是否统一新增和变更属性

变更属性

属性名称 类型 默认值 持久化 属性说明
ClockChipFirmware.Id U8 - / 对象唯一标识,主键
ClockChipFirmware.ChipType U8 - / 芯片类型,CSR 写入 uint8;0 表示适用厂商代号 HY
ClockChipFirmware.Protocol String I2C / 通信协议,当前仅允许 I2C
ClockChipFirmware.RefChip U8[] - / 关联芯片引用(refInterface: bmc.kepler.Chip.BlockIO)
ClockChipFirmware.ConfigFileName String - / 配置文件完整路径
ClockChipFirmware.ConfigEnabled Boolean false / 当前状态是否允许配置,由使用方通过 CSR 提供或关联
ClockChipFirmware.ConfigStatus U8 0 protect_reset(ResetPer 语义) 配置状态,BMC 复位保留、AC 掉电清除;0:未配置,1:配置成功,2:配置失败
ClockChipFirmware.ConfigPowerOnLock Boolean false / CSR 开关;是否在实际配置期间配置fru0上电锁,成功或失败结束均释放

配置示例

{
    "ClockChipFirmware": {
        "Id": 0,
        "ChipType": 0,
        "Protocol": "I2C",
        "RefChip": "#/Chip_PLL",
        "ConfigFileName": "/opt/bmc/conf/clock/pll.cfg",
        "ConfigEnabled": true,
        "ConfigStatus": 0,
        "ConfigPowerOnLock": true
    }
}