openUBMC Chip Abstract Layer V0.1
载入中...
搜索中...
未找到
i2c.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 *
14 * Create: 2025-07-17
15 */
16
21#ifndef DRIVER_I2C_H
22#define DRIVER_I2C_H
23#include <optional>
24#include "driver.h"
25
26namespace DRIVER_I2C {
27using namespace bcal;
28
29constexpr string_view_t I2C_TRACE_NAME = "i2c";
30
35struct I2cConfig {
36 uint32_t speed;
37 uint32_t mode;
38 uint32_t addr;
43 uint32_t use_smbus;
44};
45
51 uint8_t rw: 1;
52 uint8_t addr: 7;
53 uint8_t data[1];
54};
55
60class I2c : public IDriver {
61public:
74 virtual std::tuple<int32_t, std::optional<string_t>> read(int32_t index, uint32_t length, uint32_t timeout, uint32_t retry, const string_t &in_data) = 0;
75
85 virtual int32_t write(int32_t index, const string_view_t &in_data, uint32_t timeout, uint8_t write_delay) = 0;
86
95 virtual string_t slave_cache_read(int32_t index, uint32_t offset, uint32_t size) = 0;
96
105 virtual int32_t slave_cache_write(int32_t index, uint32_t offset, const string_view_t &val) = 0;
106
112 virtual void reset(int32_t index) = 0;
113};
114} // namespace I2C
115
116#endif // DRIVER_I2C_H
I2C 驱动接口
Definition i2c.h:60
virtual int32_t write(int32_t index, const string_view_t &in_data, uint32_t timeout, uint8_t write_delay)=0
写I2C设备数据
virtual string_t slave_cache_read(int32_t index, uint32_t offset, uint32_t size)=0
I2C从设备读缓存 I2C主机写入从机缓存,读取缓存内容
virtual int32_t slave_cache_write(int32_t index, uint32_t offset, const string_view_t &val)=0
I2C从设备写缓存 写入I2C从设备缓存,等待I2C主机读取
virtual std::tuple< int32_t, std::optional< string_t > > read(int32_t index, uint32_t length, uint32_t timeout, uint32_t retry, const string_t &in_data)=0
读取I2C设备数据
virtual void reset(int32_t index)=0
重置I2C设备
BCAL层驱动公共接口
Definition driver.h:41
BCAL 驱动公共接口定义
I2C 设备配置结构体
Definition i2c.h:35
uint32_t addr
Definition i2c.h:38
uint32_t speed
Definition i2c.h:36
uint32_t use_smbus
smbus模式 I2c总线是否使用Smbus模式, 枚举值范围0/1, 1: 总线初始化为Smbus模式
Definition i2c.h:43
uint32_t mode
Definition i2c.h:37
I2C 消息结构体
Definition i2c.h:50
uint8_t data[1]
Definition i2c.h:53
uint8_t rw
Definition i2c.h:51
uint8_t addr
Definition i2c.h:52