From: Jie Liu <[email protected]>

This patch adds a new shared header file 'sxe2_msg.h' which
contains definitions for SFP/SFP+ modules. This file is shared across
Firmware, Kernel driver, and DPDK PMD to ensure consistent protocol
handling.

The header includes:
- SFP EEPROM memory map offsets.
- Module type encoding definitions.

By using this shared header, the PMD can correctly identify module
capabilities and report diagnostic information in a way that is
consistent with the underlying firmware logic.

Signed-off-by: Jie Liu <[email protected]>
---
 drivers/common/sxe2/sxe2_msg.h | 118 +++++++++++++++++++++++++++++++++
 1 file changed, 118 insertions(+)
 create mode 100644 drivers/common/sxe2/sxe2_msg.h

diff --git a/drivers/common/sxe2/sxe2_msg.h b/drivers/common/sxe2/sxe2_msg.h
new file mode 100644
index 0000000000..a5270b2c13
--- /dev/null
+++ b/drivers/common/sxe2/sxe2_msg.h
@@ -0,0 +1,118 @@
+
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright (C), 2025, Wuxi Stars Micro System Technologies Co., Ltd.
+ */
+
+#ifndef __SXE2_MSG_H__
+#define __SXE2_MSG_H__
+
+enum sfp_type_identifier {
+       SXE2_SFP_TYPE_UNKNOW       = 0x00,
+       SXE2_SFP_TYPE_SFP          = 0x03,
+
+       SXE2_SFP_TYPE_QSFP_PLUS    = 0x0D,
+       SXE2_SFP_TYPE_QSFP28       = 0x11,
+
+       SXE2_SFP_TYPE_MAX          = 0xFF,
+};
+
+#ifndef SFP_DEFINE
+#define SFP_DEFINE
+
+#define SXE2_SFP_EEP_WR            0x1
+#define SXE2_SFP_EEP_QSFP          0x1
+
+enum sfp_bus_addr {
+       SXE2_SFP_EEP_I2C_ADDR0 = 0xA0,
+       SXE2_SFP_EEP_I2C_ADDR1 = 0xA2,
+       SXE2_SFP_EEP_I2C_ADDR_NR = 0xFFFF,
+};
+
+struct sxe2_sfp_req {
+       u8 is_wr;
+       u8 is_qsfp;
+       uint16_t bus_addr;
+       uint16_t page_cnt;
+       uint16_t offset;
+       uint16_t data_len;
+       uint16_t rvd;
+       u8 data[];
+};
+
+struct sxe2_sfp_resp {
+       u8 is_wr;
+       u8 is_qsfp;
+       uint16_t data_len;
+       u8 data[];
+};
+
+enum sfp_page_cnt {
+       SXE2_SFP_EEP_PAGE_CNT0     = 0,
+       SXE2_SFP_EEP_PAGE_CNT1,
+       SXE2_SFP_EEP_PAGE_CNT2,
+       SXE2_SFP_EEP_PAGE_CNT3,
+       SXE2_SFP_EEP_PAGE_CNT20    = 20,
+       SXE2_SFP_EEP_PAGE_CNT21    = 21,
+
+       SXE2_SFP_EEP_PAGE_CNT_NR   = 0xFFFF,
+};
+
+#define SXE2_SFP_E2P_I2C_7BIT_ADDR0             (SXE2_SFP_EEP_I2C_ADDR0 >> 1)
+#define SXE2_SFP_E2P_I2C_7BIT_ADDR1             (SXE2_SFP_EEP_I2C_ADDR1 >> 1)
+
+#define SXE2_QSFP_PAGE_OFST_START  128
+#define SXE2_SFP_EEP_OFST_MAX      255
+#define SXE2_SFP_EEP_LEN_MAX       256
+#endif
+
+#ifndef FW_STATE_DEFINE
+#define FW_STATE_DEFINE
+
+#define SXE2_FW_STATUS_MAIN_SHIF       (16)
+#define SXE2_FW_STATUS_MAIN_MASK       (0xFF0000)
+#define SXE2_FW_STATUS_SUB_MASK        (0xFFFF)
+
+enum Sxe2FwStateMain {
+       SXE2_FW_STATE_MAIN_UNDEFINED       = 0x00,
+       SXE2_FW_STATE_MAIN_INIT            = 0x10000,
+       SXE2_FW_STATE_MAIN_RUN             = 0x20000,
+       SXE2_FW_STATE_MAIN_ABNOMAL         = 0x30000,
+};
+
+enum Sxe2FwState {
+       SXE2_FW_START_STATE_UNDEFINED = SXE2_FW_STATE_MAIN_UNDEFINED,
+       SXE2_FW_START_STATE_INIT_BASE = (SXE2_FW_STATE_MAIN_INIT + 0x1),
+       SXE2_FW_START_STATE_SCAN_DEVICE = (SXE2_FW_STATE_MAIN_INIT + 0x20),
+       SXE2_FW_START_STATE_FINISHED = (SXE2_FW_STATE_MAIN_RUN + 0x0),
+       SXE2_FW_START_STATE_UPGRADE = (SXE2_FW_STATE_MAIN_RUN + 0x1),
+       SXE2_FW_START_STATE_SYNC = (SXE2_FW_STATE_MAIN_RUN + 0x2),
+       SXE2_FW_RUNNING_STATE_ABNOMAL = (SXE2_FW_STATE_MAIN_ABNOMAL + 0x1),
+       SXE2_FW_RUNNING_STATE_ABNOMAL_CORE1 = (SXE2_FW_STATE_MAIN_ABNOMAL + 
0x2),
+       SXE2_FW_RUNNING_STATE_ABNOMAL_HEART = (SXE2_FW_STATE_MAIN_ABNOMAL + 
0x3),
+       SXE2_FW_START_STATE_MASK = (SXE2_FW_STATUS_MAIN_MASK | 
SXE2_FW_STATUS_SUB_MASK),
+};
+#endif
+
+#ifndef LED_DEFINE
+#define LED_DEFINE
+
+enum sxe2_led_mode {
+       SXE2_IDENTIFY_LED_BLINK_ON   = 0,
+       SXE2_IDENTIFY_LED_BLINK_OFF,
+       SXE2_IDENTIFY_LED_ON,
+       SXE2_IDENTIFY_LED_OFF,
+       SXE2_IDENTIFY_LED_RESET,
+};
+
+
+typedef struct sxe2_led_ctrl {
+       u32 mode;
+       u32 duration;
+} sxe2_led_ctrl_s;
+
+typedef struct sxe2_led_ctrl_resp {
+       u32 ack;
+} sxe2_led_ctrl_resp_s;
+#endif
+
+#endif /* __SXE2_MSG_H__ */
-- 
2.47.3

Reply via email to