* Update when new operations are added or otherwise
* backward compatible changes are made
*/
-#define EPSC_MINOR_VERSION 9
+#define EPSC_MINOR_VERSION 10
/*
* Macros for EPSC API #if checking in code
PSIF_EPSC_DEGRADE_CAUSE_EXTENT = 0x7u,
PSIF_EPSC_ATOMIC_CAP_EXTENT = 0x3u,
PSIF_EPSC_CSR_STATUS_EXTENT = 0x100u,
- PSIF_EPSC_CSR_OPCODE_EXTENT = 0x50u,
+ PSIF_EPSC_CSR_OPCODE_EXTENT = 0x51u,
PSIF_EPSC_CSR_FLAGS_EXTENT = 0x5u,
PSIF_VLINK_STATE_EXTENT = 0x11u,
PSIF_EPSC_CSR_MODIFY_DEVICE_FLAGS_EXTENT = 0x3u,
EPSC_VIMMA_CTRL = 0x4bu,
/* EPSC BER (Bit Error Report) Data */
EPSC_BER_DATA = 0x4eu,
+ /* IB Diag Counters */
+ EPSC_DIAG_COUNTERS = 0x4fu,
/** EOF marker - must be last and highest in this enum type. */
- EPSC_LAST_OP = 0x4fu,
+ EPSC_LAST_OP = 0x50u,
/* Padding out to required bits allocated */
PSIF_EPSC_CSR_OPCODE_FIELD_MAX = 0xffu
}; /* enum psif_epsc_csr_opcode [ 8 bits] */
u32 seq_num;
} PSIF_PACKED_ALIGNED32; /* struct psif_eq_entry [64 byte] */
+/**
+ * \brief Definition of struct returned by EPSC_QUERY_ON_CHIP_TEMP
+ * \details
+ * This struct contain temperatures in Centigrades from several PSIF chip internal sensors.
+ * Naming of struct memebers reflect PSIF ASIC internal module names.
+ * \par Width
+ * 64 bit
+ * \par Used in
+ * the parameter for the PSIF_QUERY sub-operation EPSC_QUERY_ON_CHIP_TEMP - index field input ignored
+ * \par Classification
+ * internal, development
+ */
+
+struct psif_epsc_query_on_chip_temp {
+ /* Sample max value */
+ u16 max:8;
+ /* Default main sensor */
+ u16 main:8;
+ /* ARM cores */
+ u16 eps:8;
+ /* IB cores */
+ u16 ibu:8;
+ /* Transaction core */
+ u16 tsu:8;
+ /* PCI core */
+ u16 peu:8;
+ /* Future sensors */
+ u16 noname:16;
+} PSIF_PACKED_ALIGNED; /* struct psif_epsc_query_on_chip_temp [ 8 byte] */
+
/**
* \brief Definition of struct returned by EPSC_QUERY_EXTERNAL_PORT_INFO
* \details
u32 len;
} PSIF_PACKED_ALIGNED; /* struct psif_epsc_csr_ber_data [24 byte] */
+/**
+ * Structure for EPSC_DIAG_COUNTERS
+ */
+struct psif_epsc_csr_diag_counters {
+ /* Buffer address in host memory */
+ u64 host_addr;
+ /* MMU supplied by the driver */
+ struct psif_mmu_cntx mmu_cntx;
+ /* UF number */
+ u32 uf;
+ /* Buffer length in bytes */
+ u32 len;
+} PSIF_PACKED_ALIGNED; /* struct psif_epsc_csr_diag_counters [24 byte] */
+
/* Public API for mailbox requests details */
union psif_epsc_csr_details {
/* Anonymous data */
struct psif_epsc_csr_vimma_ctrl vimma_ctrl;
/* BER data query */
struct psif_epsc_csr_ber_data ber;
+ /* DIAG counters query */
+ struct psif_epsc_csr_diag_counters diag;
} PSIF_PACKED; /* union psif_epsc_csr_details [88 byte] */
/**
u32 noname:32;
} PSIF_PACKED_ALIGNED32; /* struct psif_eq_entry [64 byte] */
+/**
+ * \brief Definition of struct returned by EPSC_QUERY_ON_CHIP_TEMP
+ * \details
+ * This struct contain temperatures in Centigrades from several PSIF chip internal sensors.
+ * Naming of struct memebers reflect PSIF ASIC internal module names.
+ * \par Width
+ * 64 bit
+ * \par Used in
+ * the parameter for the PSIF_QUERY sub-operation EPSC_QUERY_ON_CHIP_TEMP - index field input ignored
+ * \par Classification
+ * internal, development
+ */
+
+struct psif_epsc_query_on_chip_temp {
+ /* Future sensors */
+ u16 noname:16;
+ /* PCI core */
+ u16 peu:8;
+ /* Transaction core */
+ u16 tsu:8;
+ /* IB cores */
+ u16 ibu:8;
+ /* ARM cores */
+ u16 eps:8;
+ /* Default main sensor */
+ u16 main:8;
+ /* Sample max value */
+ u16 max:8;
+} PSIF_PACKED_ALIGNED; /* struct psif_epsc_query_on_chip_temp [ 8 byte] */
+
/**
* \brief Definition of struct returned by EPSC_QUERY_EXTERNAL_PORT_INFO
* \details
u32 port;
} PSIF_PACKED_ALIGNED; /* struct psif_epsc_csr_ber_data [24 byte] */
+/**
+ * Structure for EPSC_DIAG_COUNTERS
+ */
+struct psif_epsc_csr_diag_counters {
+ /* Buffer address in host memory */
+ u64 host_addr;
+ /* MMU supplied by the driver */
+ struct psif_mmu_cntx mmu_cntx;
+ /* Buffer length in bytes */
+ u32 len;
+ /* UF number */
+ u32 uf;
+} PSIF_PACKED_ALIGNED; /* struct psif_epsc_csr_diag_counters [24 byte] */
+
/* Public API for mailbox requests details */
union psif_epsc_csr_details {
/* Anonymous data */
struct psif_epsc_csr_vimma_ctrl vimma_ctrl;
/* BER data query */
struct psif_epsc_csr_ber_data ber;
+ /* DIAG counters query */
+ struct psif_epsc_csr_diag_counters diag;
} PSIF_PACKED; /* union psif_epsc_csr_details [88 byte] */
/**
return "EPSC_VIMMA_CTRL";
case EPSC_BER_DATA:
return "EPSC_BER_DATA";
+ case EPSC_DIAG_COUNTERS:
+ return "EPSC_DIAG_COUNTERS";
case EPSC_LAST_OP:
return "EPSC_LAST_OP";
case PSIF_EPSC_CSR_OPCODE_FIELD_MAX:
xprintf(fd, "}");
} /* end write_..._psif_epsc_csr_ber_data(psif_epsc_csr_ber_data data) */
+void write_struct_psif_epsc_csr_diag_counters(XFILE *fd,
+ int network_order,
+ const struct psif_epsc_csr_diag_counters *data)
+{
+ u64 swap[3];
+
+ if (network_order) {
+ copy_convert_to_sw(swap, (volatile void *)data, 24);
+ data = (struct psif_epsc_csr_diag_counters *)swap;
+ }
+ xprintf(fd, "{");
+ xprintf(fd, " .host_addr = ");
+ write_bits_u64(fd, 64, data->host_addr);
+ xprintf(fd, ", .mmu_cntx = ");
+ write_struct_psif_mmu_cntx(fd, 0, &(data->mmu_cntx));
+ xprintf(fd, ", .len = ");
+ write_bits_u32(fd, 32, data->len);
+ xprintf(fd, ", .uf = ");
+ write_bits_u32(fd, 32, data->uf);
+ xprintf(fd, "}");
+} /* end write_..._psif_epsc_csr_diag_counters(psif_epsc_csr_diag_counters data) */
+
void write_union_psif_epsc_csr_details(XFILE *fd,
int network_order,
const union psif_epsc_csr_details *data)
write_struct_psif_epsc_csr_vimma_ctrl(fd, 0, &(data->vimma_ctrl));
xprintf(fd, ", .ber = ");
write_struct_psif_epsc_csr_ber_data(fd, 0, &(data->ber));
+ xprintf(fd, ", .diag = ");
+ write_struct_psif_epsc_csr_diag_counters(fd, 0, &(data->diag));
xprintf(fd, "}");
} /* end write_..._psif_epsc_csr_details(psif_epsc_csr_details data) */
void write_struct_psif_epsc_csr_ber_data(XFILE *fd,
int network_order,
const struct psif_epsc_csr_ber_data *data);
+void write_struct_psif_epsc_csr_diag_counters(XFILE *fd,
+ int network_order,
+ const struct psif_epsc_csr_diag_counters *data);
void write_union_psif_epsc_csr_details(XFILE *fd,
int network_order,
const union psif_epsc_csr_details *data);
#include "version.h"
struct sif_version sif_version = {
-.git_repo = "sifdrv [origin/master]",
-.last_commit = "titan_1.0.0.2 pqp: Be less aggressive in invoking cond_resched()",
-.git_status = """?? drivers/\n"
-,
-.build_git_time = "Tue, 26 Jul 2016 15:46:06 +0000",
+.git_repo = "sifdrv [non public commit]",
+.last_commit = "titan_1.0.0.3 transform: Update used version of EPSC_API",
+.git_status = "",
+.build_git_time = "Fri, 12 Aug 2016 11:24:07 +0000",
.build_user = "komang",
.git_psifapi_repo = "psifapi [origin/master]",
-.last_psifapi_commit = "titan_1.0.0.2 EPSC_API_VERSION(2,8) - New EPSC_QUERY_ON_CHIP_TEMP",
+.last_psifapi_commit = "titan_1.0.0.3 EPSC_API_VERSION(2,10) - EPSC_DIAG_COUNTERS",
.git_psifapi_status = "",
};
/* Misc driver release info */
-#define BUILD_DATE "2016-07-26"
-#define BUILD_TIME "15:46:06"
-#define BUILD_EPOCH 1469547966
-#define TITAN_RELEASE "1.0.0.2"
+#define BUILD_DATE "2016-08-12"
+#define BUILD_TIME "11:24:07"
+#define BUILD_EPOCH 1471001047
+#define TITAN_RELEASE "1.0.0.3"