45#define ICMD_GET_SEMAPHORE_TRIES 2560
60 if (semaphore_id ==
buffer) {
62 utils->icmd.took_semaphore =
TRUE;
67 if (semaphore_id !=
buffer) {
89 if (utils->icmd.took_semaphore ==
FALSE) {
90 goto semaphore_not_taken;
96 utils->icmd.took_semaphore =
FALSE;
115 if (utils->icmd.icmd_opened ==
TRUE) {
119 utils->icmd.took_semaphore =
FALSE;
125 utils->icmd.icmd_opened =
TRUE;
151#define MLX_ICMD_OPCODE_ALIGN 16
152#define MLX_ICMD_OPCODE_MASK 0xffff
186#define MLX_ICMD_BUSY_ALIGN 0
187#define MLX_ICMD_BUSY_MASK 0x1
201#define MLX_ICMD_BUSY_MAX_ITERATIONS 1024
234 if (utils ==
NULL || out_status ==
NULL) {
243#define MLX_ICMD_STATUS_ALIGN 8
244#define MLX_ICMD_STATUS_MASK 0xff
270 for (data_offset = 0 ; data_offset*dword_size < data_size ; data_offset++) {
299 for (data_offset = 0 ; data_offset*dword_size < data_size ; data_offset++) {
328 if (write_data_size > utils->icmd.max_cmd_size ||
329 read_data_size > utils->icmd.max_cmd_size) {
340 if (write_data_size != 0) {
351 if (icmd_status != 0) {
356 if (read_data_size != 0) {
#define NULL
NULL pointer (VOID *)
uint8_t data[48]
Additional event data.
uint32_t buffer
Buffer index (or NETVSC_RNDIS_NO_BUFFER)
#define FILE_LICENCE(_licence)
Declare a particular licence as applying to a file.
#define MLX_CHECK_STATUS(id, status, label, message)
#define MLX_ICMD_BUSY_MASK
static mlx_status mlx_icmd_go(IN mlx_utils *utils)
#define MLX_ICMD_STATUS_ALIGN
static mlx_status mlx_icmd_write_buffer(IN mlx_utils *utils, IN mlx_void *data, IN mlx_uint32 data_size)
static mlx_status mlx_icmd_clear_semaphore(IN mlx_utils *utils)
#define MLX_ICMD_BUSY_ALIGN
#define MLX_ICMD_OPCODE_MASK
static mlx_status mlx_icmd_get_status(IN mlx_utils *utils, OUT mlx_uint32 *out_status)
static mlx_status mlx_icmd_set_opcode(IN mlx_utils *utils, IN mlx_uint16 opcode)
static mlx_status mlx_icmd_read_buffer(IN mlx_utils *utils, OUT mlx_void *data, IN mlx_uint32 data_size)
#define ICMD_GET_SEMAPHORE_TRIES
mlx_status mlx_icmd_send_command(IN mlx_utils *utils, IN mlx_uint16 opcode, IN OUT mlx_void *data, IN mlx_uint32 write_data_size, IN mlx_uint32 read_data_size)
#define MLX_ICMD_STATUS_MASK
static mlx_status mlx_icmd_init(IN mlx_utils *utils)
static mlx_status mlx_icmd_get_semaphore(IN mlx_utils *utils)
#define MLX_ICMD_BUSY_MAX_ITERATIONS
#define MLX_ICMD_OPCODE_ALIGN
#define MLX_ICMD_CTRL_ADDR
#define MLX_ICMD_SEMAPHORE_ADDR
#define MLX_ICMD_MB_SIZE_ADDR
#define MLX_DEBUG_ERROR(...)
#define PCI_GW_SPACE_SEMAPHORE
mlx_status mlx_pci_gw_read(IN mlx_utils *utils, IN mlx_pci_gw_space space, IN mlx_uint32 address, OUT mlx_pci_gw_buffer *buffer)
mlx_status mlx_pci_gw_write(IN mlx_utils *utils, IN mlx_pci_gw_space space, IN mlx_uint32 address, IN mlx_pci_gw_buffer buffer)
#define PCI_GW_SPACE_ALL_ICMD
#define MLX_INVALID_PARAMETER
mlx_status mlx_utils_delay_in_ms(IN mlx_uint32 msecs)
mlx_status mlx_utils_rand(IN mlx_utils *utils, OUT mlx_uint32 *rand_num)