openUBMC Chip Abstract Layer V0.1
载入中...
搜索中...
未找到
ipmb.h
浏览该文件的文档.
1/*
2 * Copyright (c) Huawei Technologies Co., Ltd. 2025. All rights reserved.
3 *
4 * this file licensed under the Mulan PSL v2.
5 * You can use this software according to the terms and conditions of the Mulan PSL v2.
6 * You may obtain a copy of Mulan PSL v2 at:
7 * http://license.coscl.org.cn/MulanPSL2
8 *
9 * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR
10 * IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR
11 * PURPOSE.
12 * See the Mulan PSL v2 for more details.
13 */
18#ifndef DRIVER_IPMB_H
19#define DRIVER_IPMB_H
20
21#include "driver.h"
22
23namespace DRIVER_IPMB {
24using namespace bcal;
25
30struct IpmbConfig {
31 uint32_t speed;
32 uint32_t slave_addr;
33};
34
40struct IpmiMsg {
41 uint8_t dst_addr;
42 uint8_t dst_lun : 2;
43 uint8_t dst_netfn : 6;
44 uint8_t chksum1;
45 uint8_t src_addr;
46 uint8_t src_lun : 2;
47 uint8_t src_seq : 6;
48 uint8_t cmd;
49 uint8_t data[1];
50};
51
56class Ipmb : public IDriver {
57public:
66 virtual string_t read(int32_t index, uint32_t len, uint32_t timeout) = 0;
67
76 virtual int32_t write(int32_t index, const string_view_t &val, uint32_t timeout) = 0;
77
83 virtual void reset(int32_t index) = 0;
84
91 virtual uint32_t get_enable(int32_t index) = 0;
92
99 virtual uint32_t get_addr(int32_t index) = 0;
100
107 virtual void set_addr(int32_t index, uint32_t slave_addr) = 0;
108
115 virtual uint8_t get_status(int32_t index) = 0;
116
124 virtual string_t check_readable(uint32_t timeout, const string_view_t &mask_read) = 0;
125
132 virtual void set_enable(int32_t index, uint32_t enable) = 0;
133};
134} // namespace
135#endif
IPMB 驱动接口类
Definition ipmb.h:56
virtual uint32_t get_enable(int32_t index)=0
获取 IPMB 使能状态
virtual void set_addr(int32_t index, uint32_t slave_addr)=0
设置 IPMB 地址
virtual uint32_t get_addr(int32_t index)=0
设置 IPMB 地址
virtual uint8_t get_status(int32_t index)=0
获取 IPMB 状态
virtual string_t read(int32_t index, uint32_t len, uint32_t timeout)=0
读取 IPMB 数据
virtual void reset(int32_t index)=0
复位 IPMB
virtual void set_enable(int32_t index, uint32_t enable)=0
设置 IPMB 使能状态
virtual string_t check_readable(uint32_t timeout, const string_view_t &mask_read)=0
检查 IPMB 通道是否可读
virtual int32_t write(int32_t index, const string_view_t &val, uint32_t timeout)=0
写 IPMB
BCAL层驱动公共接口
Definition driver.h:41
BCAL 驱动公共接口定义
IPMB 设备配置结构体
Definition ipmb.h:30
uint32_t speed
Definition ipmb.h:31
uint32_t slave_addr
Definition ipmb.h:32
IPMB 消息结构体 参见IPMI规范
Definition ipmb.h:40
uint8_t dst_lun
Definition ipmb.h:42
uint8_t cmd
Definition ipmb.h:48
uint8_t dst_netfn
Definition ipmb.h:43
uint8_t dst_addr
Definition ipmb.h:41