Commit 9ce110df authored by Adam Wujek's avatar Adam Wujek

main_fw/i2c: add CAPABILITY register

Signed-off-by: 's avatarAdam Wujek <dev_public@wujek.eu>
parent 7002cd24
Pipeline #3701 passed with stage
in 44 seconds
...@@ -10,6 +10,9 @@ ...@@ -10,6 +10,9 @@
typedef void(*fp_t)(void); typedef void(*fp_t)(void);
/* Defines for CAPABILITY */
#define CAPABILITY_PEC 0x80
/* Defines for STATUS_BYTE */ /* Defines for STATUS_BYTE */
#define STATUS_CML 0x1 #define STATUS_CML 0x1
......
...@@ -213,6 +213,30 @@ parameter are :math:`0 \leq N \leq 3` for the DI/OT Rad-Tol System ...@@ -213,6 +213,30 @@ parameter are :math:`0 \leq N \leq 3` for the DI/OT Rad-Tol System
Board revision and :math:`0 \leq N \leq 2` for the fan-tray, RaToPUS Board revision and :math:`0 \leq N \leq 2` for the fan-tray, RaToPUS
and generic prototype revisions. and generic prototype revisions.
.. _CAPABILITY:
CAPABILITY
~~~~~~~~~~
| Command code: **19**
| Transaction type: **Byte read**
| Data length: **1**
The CAPABILITY command returns one byte of information with some key
capabilities of a PMBus device.
.. table:: CAPABILITY Data byte format
+--------+------------------------------------------------------+
| Bit(s) | Meaning |
+--------+------------------------------------------------------+
| 7 | Packet Error Checking is supported |
+--------+------------------------------------------------------+
| 6:0 | Unused |
+--------+------------------------------------------------------+
Bit 7 of the CAPABILITY register reflects the use of PEC set by the USE_PEC_ register.
.. _QUERY: .. _QUERY:
QUERY QUERY
......
...@@ -78,7 +78,9 @@ uint32_t TMR_ERROR_CNT; ...@@ -78,7 +78,9 @@ uint32_t TMR_ERROR_CNT;
static uint8_t dummy_byte; static uint8_t dummy_byte;
static uint8_t fw_type = FW_MAIN; static uint8_t fw_type = FW_MAIN;
static uint8_t capablity;
void get_capablity(void);
void get_frpms(void); void get_frpms(void);
void set_frpms(); void set_frpms();
uint16_t setfrpms_lin[3]; uint16_t setfrpms_lin[3];
...@@ -109,6 +111,7 @@ void boot_new_fw(); ...@@ -109,6 +111,7 @@ void boot_new_fw();
enum { enum {
cmd_0x00 = 0, cmd_0x00 = 0,
cmd_0x19,
cmd_0x1A, cmd_0x1A,
cmd_0x20, cmd_0x20,
cmd_0x3A, cmd_0x3A,
...@@ -148,6 +151,7 @@ enum { ...@@ -148,6 +151,7 @@ enum {
/* "- 1" to avoid adding null char at the end of a string */ /* "- 1" to avoid adding null char at the end of a string */
static const int8_t cmd_data_lengths[] = { static const int8_t cmd_data_lengths[] = {
[cmd_0x00] = 1, [cmd_0x00] = 1,
[cmd_0x19] = 1,
[cmd_0x1A] = -1, [cmd_0x1A] = -1,
[cmd_0x20] = 1, [cmd_0x20] = 1,
[cmd_0x3A] = 1, [cmd_0x3A] = 1,
...@@ -189,6 +193,7 @@ static int8_t cmd_data_length_query = -1; ...@@ -189,6 +193,7 @@ static int8_t cmd_data_length_query = -1;
static const cmd_t cmds_cmds[] = (cmd_t[]){ static const cmd_t cmds_cmds[] = (cmd_t[]){
{0x00, (int8_t *)&cmd_data_lengths[cmd_0x00], (uint8_t *)&page_tmp, (fp_t)NULL, &page_chk, (fp_t)NULL, QUERY_WR | QUERY_RD | QUERY_FMT_8B, 0}, {0x00, (int8_t *)&cmd_data_lengths[cmd_0x00], (uint8_t *)&page_tmp, (fp_t)NULL, &page_chk, (fp_t)NULL, QUERY_WR | QUERY_RD | QUERY_FMT_8B, 0},
{0x19, (int8_t *)&cmd_data_lengths[cmd_0x19], (uint8_t *)&capablity, &get_capablity, (fp_t)NULL, (fp_t)NULL, QUERY_RD, 0},
{0x1A, (int8_t *)&cmd_data_length_query, (uint8_t *)&query_r, (fp_t)NULL, &query_prp, (fp_t)NULL, QUERY_WR, 1}, {0x1A, (int8_t *)&cmd_data_length_query, (uint8_t *)&query_r, (fp_t)NULL, &query_prp, (fp_t)NULL, QUERY_WR, 1},
{0x20, (int8_t *)&cmd_data_lengths[cmd_0x20], (uint8_t *)&vout_mode, (fp_t)NULL, (fp_t)NULL, (fp_t)NULL, QUERY_RD, 1}, {0x20, (int8_t *)&cmd_data_lengths[cmd_0x20], (uint8_t *)&vout_mode, (fp_t)NULL, (fp_t)NULL, (fp_t)NULL, QUERY_RD, 1},
{0x3A, (int8_t *)&cmd_data_lengths[cmd_0x3A], (uint8_t *)&fan_config_1_2, &get_fan_configs, &fan_config, (fp_t)NULL, QUERY_WR | QUERY_RD | QUERY_FMT_NAN,0}, {0x3A, (int8_t *)&cmd_data_lengths[cmd_0x3A], (uint8_t *)&fan_config_1_2, &get_fan_configs, &fan_config, (fp_t)NULL, QUERY_WR | QUERY_RD | QUERY_FMT_NAN,0},
...@@ -270,6 +275,10 @@ void __xMR page_chk() ...@@ -270,6 +275,10 @@ void __xMR page_chk()
page = page_tmp; page = page_tmp;
} }
void __xMR get_capablity()
{
capablity = use_pec ? CAPABILITY_PEC : 0;
}
void __xMR accvolt() void __xMR accvolt()
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment