/* * SWIC driver for MCT-04EM-3U evaluation kit * * Copyright (c) 2020 Elvees (support@elvees.com) * Author: Dmitry Evtushenko * */ #ifndef __IOC_SWIC_H #define __IOC_SWIC_H #include #define SWIC_IOC_MAGIC 's' #define SWIC_OFS_NUM 0 #define SWIC_GET_OFS_NUM 100 #define SWIC_SET_OFS_NUM 300 #define SWIC_SET_GET_OFS_NUM 500 #define SWIC_IO( num) _IO( SWIC_IOC_MAGIC, (SWIC_OFS_NUM + num)) #define SWIC_IOR( num, type) _IOR( SWIC_IOC_MAGIC, (SWIC_GET_OFS_NUM + num), type) #define SWIC_IOW( num, type) _IOW( SWIC_IOC_MAGIC, (SWIC_SET_OFS_NUM + num), type) #define SWIC_IOWR( num, type) _IOWR( SWIC_IOC_MAGIC, (SWIC_SET_GET_OFS_NUM + num), type) // commands: // Сброс статистики: #define SWIC_IO_RESET_STAT SWIC_IO( 1) // Сброс переменных ввода/вывода: #define SWIC_IO_RESET_TX_RX SWIC_IO( 2) // запуск рабочей моды порта: #define SWIC_IO_START SWIC_IO( 3) // остановка рабочей моды порта: #define SWIC_IO_STOP SWIC_IO( 4) // применить внесенные изменения в параметры: #define SWIC_IO_APPLY_CHANGES SWIC_IO( 5) // печать различной отладочной статистики: #define SWIC_IO_PRINT_DBG_STAT SWIC_IO( 80) // фнкционал исследования внутренней работы DMA (DMA-SPW-DMA): #define SWIC_IO_INERN_DMA_TEST SWIC_IO( 81) // фнкционал исследования работы DDR памяти: #define SWIC_IO_MEM_TEST SWIC_IO( 82) // GET: // Получение текущих значений регистров, параметров, статистики: // Получение значения регистра #define SWIC_GET_REG_VAL SWIC_IOR( 10, __u32) // Получение значения CP0 регистра. #define SWIC_GET_CP0_REG_VAL SWIC_IOR( 11, __u32) // Получение значения частоты приема #define SWIC_GET_RX_SPEED SWIC_IOR( 21, __u32) // Получение значения частоты передачи #define SWIC_GET_TX_SPEED SWIC_IOR( 22, __u32) // Получение количества успешно принятых пакетов (EOP) #define SWIC_GET_STAT_RX_EOP SWIC_IOR( 23, __u32) // Получение количества принятых пакетов с ошибкой (EEP) #define SWIC_GET_STAT_RX_EEP SWIC_IOR( 24, __u32) // Получение количества принятых байт #define SWIC_GET_STAT_RX_BYTES SWIC_IOR( 25, __u32) // Получение количества переданных пакетов #define SWIC_GET_STAT_TX_PACKETS SWIC_IOR( 26, __u32) // Получение количества переданных байт #define SWIC_GET_STAT_TX_BYTES SWIC_IOR( 27, __u32) // Получение количества ожиданий освобождения DMA передачи //#define SWIC_GET_STAT_TX_DMA_WAITS SWIC_IOR( 28, __u32) // Получение регистров RX DMA descriptor: #define SWIC_GET_DMA_DESC_RX SWIC_IOR( 30, __u32) // Получение регистров RX DMA data: #define SWIC_GET_DMA_DATA_RX SWIC_IOR( 31, __u32) // Получение регистров TX DMA descriptor: #define SWIC_GET_DMA_DESC_TX SWIC_IOR( 32, __u32) // Получение регистров TX DMA data: #define SWIC_GET_DMA_DATA_TX SWIC_IOR( 33, __u32) // Получение количества TX DMA дескрипторов: #define SWIC_GET_DMA_TX_DESC_QNT SWIC_IOR( 34, __u32) // Получение количества TX DMA буферов данных: #define SWIC_GET_DMA_TX_DATA_QNT SWIC_IOR( 35, __u32) // Получение размера TX DMA буфера данных: #define SWIC_GET_DMA_TX_DATA_BUF_SIZE SWIC_IOR( 36, __u32) // Получение максимального размера TX пакета данных: #define SWIC_GET_DMA_TX_PACK_SIZE SWIC_IOR( 37, __u32) // Получение количества RX DMA дескрипторов: #define SWIC_GET_DMA_RX_DESC_QNT SWIC_IOR( 38, __u32) // Получение количества RX DMA буферов данных: #define SWIC_GET_DMA_RX_DATA_QNT SWIC_IOR( 39, __u32) // Получение размера RX DMA буфера данных: #define SWIC_GET_DMA_RX_DATA_BUF_SIZE SWIC_IOR( 40, __u32) // Получение максимального количества дескрипторов на отправку (по данному порту): #define SWIC_GET_MAX_SEND_DESC_QNT SWIC_IOR( 41, __u32) // Получение битовой маски рабочих мод портов: #define SWIC_GET_MODE SWIC_IOR( 42, __u32) // *** Получение новых (еще неустановленных) значений параметров: // Получение значения частоты передачи #define SWIC_GET_TX_SPEED_NEW SWIC_IOR( 122, __u32) // Получение количества TX DMA дескрипторов: #define SWIC_GET_DMA_TX_DESC_QNT_NEW SWIC_IOR( 134, __u32) // Получение количества TX DMA буферов данных: #define SWIC_GET_DMA_TX_DATA_QNT_NEW SWIC_IOR( 135, __u32) // Получение размера TX DMA буфера данных: #define SWIC_GET_DMA_TX_DATA_BUF_SIZE_NEW SWIC_IOR( 136, __u32) // Получение максимального размера TX пакета данных: #define SWIC_GET_DMA_TX_PACK_SIZE_NEW SWIC_IOR( 137, __u32) // Получение количества RX DMA дескрипторов: #define SWIC_GET_DMA_RX_DESC_QNT_NEW SWIC_IOR( 138, __u32) // Получение количества RX DMA буферов данных: #define SWIC_GET_DMA_RX_DATA_QNT_NEW SWIC_IOR( 139, __u32) // Получение размера RX DMA буфера данных: #define SWIC_GET_DMA_RX_DATA_BUF_SIZE_NEW SWIC_IOR( 140, __u32) // Получение максимального количества дескрипторов на отправку (по данному порту): #define SWIC_GET_MAX_SEND_DESC_QNT_NEW SWIC_IOR( 141, __u32) // SET: // Запись значения в регистр: #define SWIC_SET_REG_VAL SWIC_IOW( 10, __u32) // Запись значения в CP0 регистр: #define SWIC_SET_CP0_REG_VAL SWIC_IOW( 11, __u32) // Установка значения частоты передачи: #define SWIC_SET_TX_SPEED SWIC_IOW( 21, __u32) // Установка количества TX DMA дескрипторов: #define SWIC_SET_DMA_TX_DESC_QNT SWIC_IOW( 22, __u32) // Установка количества TX DMA буферов данных: #define SWIC_SET_DMA_TX_DATA_QNT SWIC_IOW( 23, __u32) // Установка размера TX DMA буфера данных: #define SWIC_SET_DMA_TX_DATA_BUF_SIZE SWIC_IOW( 24, __u32) // Установка максимального размера TX пакета данных: #define SWIC_SET_DMA_TX_PACK_SIZE SWIC_IOW( 25, __u32) // Установка количества RX DMA дескрипторов: #define SWIC_SET_DMA_RX_DESC_QNT SWIC_IOW( 26, __u32) // Установка количества RX DMA буферов данных: #define SWIC_SET_DMA_RX_DATA_QNT SWIC_IOW( 27, __u32) // Установка размера RX DMA буфера данных: #define SWIC_SET_DMA_RX_DATA_BUF_SIZE SWIC_IOW( 28, __u32) // Установка максимального количества дескрипторов на отправку (по данному порту): #define SWIC_SET_MAX_SEND_DESC_QNT SWIC_IOW( 29, __u32) // SET/GET: #endif /* __IOC_SWIC_H */