HPM SDK
HPMicro Software Development Kit
hpm_pmbus.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2024 HPMicro
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  *
6  */
7 
8 #ifndef HPM_PMBUS_H
9 #define HPM_PMBUS_H
10 
11 #include "hpm_common.h"
12 #include "hpm_soc_feature.h"
13 #include "hpm_i2c_drv.h"
14 #include "hpm_pmbus_def.h"
15 
22 typedef struct {
23  uint8_t command;
24  uint32_t len;
25  bool read;
26  bool pec_check;
27  uint8_t *data;
29 
36 
40 typedef enum {
41  none = 0,
42  write_byte = 1,
43  read_byte = 2,
44  write_word = 3,
45  read_word = 4,
47  read_block = 6,
48  send_byte = 7,
52 
61 typedef struct {
63  uint8_t command_code;
69  uint32_t data_length;
71 
78 typedef struct {
79  bool is_valid;
80  uint8_t *wdata;
81  uint8_t *rdata;
82  uint32_t data_length;
85 
89 enum {
92 };
93 
94 #ifdef __cplusplus
95 extern "C"
96 {
97 #endif
107 
118 hpm_stat_t hpm_pmbus_slave_init(I2C_Type *ptr, uint8_t slave_addr);
119 
134 hpm_stat_t hpm_pmbus_master_read(I2C_Type *ptr, uint8_t slave_address, uint8_t command, uint8_t *data, uint32_t *len);
135 
153 hpm_stat_t hpm_pmbus_master_write(I2C_Type *ptr, uint8_t slave_address, uint8_t command, uint8_t *data, uint32_t len);
154 
169 hpm_stat_t hpm_pmbus_slave_command_transaction_install(I2C_Type *ptr, uint8_t command, uint8_t *wdata, uint8_t *rdata, uint32_t len, hpm_pmbus_complete_cb_t callback);
170 
183 
184 #ifdef __cplusplus
185 }
186 #endif
187 
188 #endif
uint32_t hpm_stat_t
Definition: hpm_common.h:126
#define MAKE_STATUS(group, code)
Definition: hpm_common.h:135
@ status_group_pmbus
Definition: hpm_common.h:175
hpm_stat_t hpm_pmbus_master_read(I2C_Type *ptr, uint8_t slave_address, uint8_t command, uint8_t *data, uint32_t *len)
Reads data from a PMBus slave device.
Definition: hpm_pmbus.c:354
void hpm_pmbus_isr_handler(I2C_Type *ptr)
Handles the HPM PMBUS interrupt service request.
Definition: hpm_pmbus.c:168
@ status_pmbus_not_support_cmd
Definition: hpm_pmbus.h:90
@ status_pmbus_not_transaction_type
Definition: hpm_pmbus.h:91
hpm_stat_t hpm_pmbus_slave_init(I2C_Type *ptr, uint8_t slave_addr)
PMBus Slave Initialization.
Definition: hpm_pmbus.c:340
hpm_stat_t hpm_pmbus_slave_command_transaction_uninstall(I2C_Type *ptr, uint8_t command)
Uninstalls a specified PMBus slave command transaction.
Definition: hpm_pmbus.c:445
hpm_stat_t hpm_pmbus_slave_command_transaction_install(I2C_Type *ptr, uint8_t command, uint8_t *wdata, uint8_t *rdata, uint32_t len, hpm_pmbus_complete_cb_t callback)
Installs a PMBus Slave Command Transaction.
Definition: hpm_pmbus.c:420
void(* hpm_pmbus_complete_cb_t)(I2C_Type *base, hpm_pmbus_complete_cb_cfg_t *cfg)
Define a callback function type hpm_pmbus_complete_cb_t.
Definition: hpm_pmbus.h:35
hpm_stat_t hpm_pmbus_master_write(I2C_Type *ptr, uint8_t slave_address, uint8_t command, uint8_t *data, uint32_t len)
Writes data to a PMBus slave device.
Definition: hpm_pmbus.c:387
hpm_pmbus_transaction_type
Define the HPM PMBUS transaction type enumeration, used to distinguish between different PMBUS operat...
Definition: hpm_pmbus.h:40
@ write_block
Definition: hpm_pmbus.h:46
@ write_byte
Definition: hpm_pmbus.h:42
@ extended_command
Definition: hpm_pmbus.h:50
@ mfr_defined
Definition: hpm_pmbus.h:49
@ read_byte
Definition: hpm_pmbus.h:43
@ read_block
Definition: hpm_pmbus.h:47
@ write_word
Definition: hpm_pmbus.h:44
@ none
Definition: hpm_pmbus.h:41
@ send_byte
Definition: hpm_pmbus.h:48
@ read_word
Definition: hpm_pmbus.h:45
Definition: hpm_i2c_regs.h:12
Defines the PMBus command parameter structure.
Definition: hpm_pmbus.h:61
uint32_t data_length
Definition: hpm_pmbus.h:69
hpm_pmbus_transaction_type write_transaction_type
Definition: hpm_pmbus.h:65
uint8_t command_code
Definition: hpm_pmbus.h:63
hpm_pmbus_transaction_type read_transaction_type
Definition: hpm_pmbus.h:67
PMBUS Complete Callback Configuration Structure.
Definition: hpm_pmbus.h:22
bool read
Definition: hpm_pmbus.h:25
bool pec_check
Definition: hpm_pmbus.h:26
uint32_t len
Definition: hpm_pmbus.h:24
uint8_t command
Definition: hpm_pmbus.h:23
uint8_t * data
Definition: hpm_pmbus.h:27
Define the HPM PMBUS Slave Configuration Structure.
Definition: hpm_pmbus.h:78
uint8_t * wdata
Definition: hpm_pmbus.h:80
uint8_t * rdata
Definition: hpm_pmbus.h:81
hpm_pmbus_complete_cb_t callback
Definition: hpm_pmbus.h:83
bool is_valid
Definition: hpm_pmbus.h:79
uint32_t data_length
Definition: hpm_pmbus.h:82