/* * GigaSpaceWire switch driver for MC-30SF6EM-6U evaluation kit * * Copyright (c) 2019 Elvees (support@elvees.com) * Author: Dmitry Evtushenko * */ #ifndef __MULTICORE_GSPW_H #define __MULTICORE_GSPW_H #include #define GSPW_IOC_MAGIC 's' #define GSPW_OFS_NUM 0 #define GSPW_GET_OFS_NUM 100 #define GSPW_SET_OFS_NUM 300 #define GSPW_SET_GET_OFS_NUM 500 #define GSPW_IO( num) _IO( GSPW_IOC_MAGIC, (GSPW_OFS_NUM + num)) #define GSPW_IOR( num, type) _IOR( GSPW_IOC_MAGIC, (GSPW_GET_OFS_NUM + num), type) #define GSPW_IOW( num, type) _IOW( GSPW_IOC_MAGIC, (GSPW_SET_OFS_NUM + num), type) #define GSPW_IOWR( num, type) _IOWR( GSPW_IOC_MAGIC, (GSPW_SET_GET_OFS_NUM + num), type) // commands: // Сброс статистики: #define GSPW_IO_RESET_STAT GSPW_IO( 1) // Сброс переменных ввода/вывода: #define GSPW_IO_RESET_TX_RX GSPW_IO( 2) // запуск рабочей моды порта: #define GSPW_IO_START GSPW_IO( 3) // остановка рабочей моды порта: #define GSPW_IO_STOP GSPW_IO( 4) // применить внесенные изменения в параметры: #define GSPW_IO_APPLY_CHANGES GSPW_IO( 5) // печать различной отладочной статистики: #define GSPW_IO_PRINT_DBG_STAT GSPW_IO( 80) // фнкционал исследования внутренней работы DMA (DMA-SPW-DMA): #define GSPW_IO_INERN_DMA_TEST GSPW_IO( 81) // фнкционал исследования работы DDR памяти: #define GSPW_IO_MEM_TEST GSPW_IO( 82) // GET: // Получение текущих значений регистров, параметров, статистики: // Получение значения регистра #define GSPW_GET_REG_VAL GSPW_IOR( 10, __u32) // Получение значения CP0 регистра #define GSPW_GET_CP0_REG_VAL GSPW_IOR( 11, __u32) // Получение значения частоты приема #define GSPW_GET_RX_SPEED GSPW_IOR( 21, __u32) // Получение значения частоты передачи #define GSPW_GET_TX_SPEED GSPW_IOR( 22, __u32) // Получение количества успешно принятых пакетов (EOP) #define GSPW_GET_STAT_RX_EOP GSPW_IOR( 23, __u32) // Получение количества принятых пакетов с ошибкой (EEP) #define GSPW_GET_STAT_RX_EEP GSPW_IOR( 24, __u32) // Получение количества принятых байт #define GSPW_GET_STAT_RX_BYTES GSPW_IOR( 25, __u32) // Получение количества переданных пакетов #define GSPW_GET_STAT_TX_PACKETS GSPW_IOR( 26, __u32) // Получение количества переданных байт #define GSPW_GET_STAT_TX_BYTES GSPW_IOR( 27, __u32) // Получение количества ожиданий освобождения DMA передачи //#define GSPW_GET_STAT_TX_DMA_WAITS GSPW_IOR( 28, __u32) // Получение данных таблицы маршрутизации в указанном диапазоне: #define GSPW_GET_ROUTE_TABLE GSPW_IOR( 29, __u32) // Получение регистров RX DMA descriptor: #define GSPW_GET_DMA_DESC_RX GSPW_IOR( 30, __u32) // Получение регистров RX DMA data: #define GSPW_GET_DMA_DATA_RX GSPW_IOR( 31, __u32) // Получение регистров TX DMA descriptor: #define GSPW_GET_DMA_DESC_TX GSPW_IOR( 32, __u32) // Получение регистров TX DMA data: #define GSPW_GET_DMA_DATA_TX GSPW_IOR( 33, __u32) // Получение количества TX DMA дескрипторов: #define GSPW_GET_DMA_TX_DESC_QNT GSPW_IOR( 34, __u32) // Получение количества TX DMA буферов данных: #define GSPW_GET_DMA_TX_DATA_QNT GSPW_IOR( 35, __u32) // Получение размера TX DMA буфера данных: #define GSPW_GET_DMA_TX_DATA_BUF_SIZE GSPW_IOR( 36, __u32) // Получение максимального размера TX пакета данных: #define GSPW_GET_DMA_TX_PACK_SIZE GSPW_IOR( 37, __u32) // Получение количества RX DMA дескрипторов: #define GSPW_GET_DMA_RX_DESC_QNT GSPW_IOR( 38, __u32) // Получение количества RX DMA буферов данных: #define GSPW_GET_DMA_RX_DATA_QNT GSPW_IOR( 39, __u32) // Получение размера RX DMA буфера данных: #define GSPW_GET_DMA_RX_DATA_BUF_SIZE GSPW_IOR( 40, __u32) // Получение максимального количества дескрипторов на отправку (по данному порту): #define GSPW_GET_MAX_SEND_DESC_QNT GSPW_IOR( 41, __u32) // Получение битовой маски рабочих мод портов: #define GSPW_GET_MODE GSPW_IOR( 42, __u32) // *** Получение новых (еще неустановленных) значений параметров: // Получение значения частоты передачи #define GSPW_GET_TX_SPEED_NEW GSPW_IOR( 122, __u32) // Получение количества TX DMA дескрипторов: #define GSPW_GET_DMA_TX_DESC_QNT_NEW GSPW_IOR( 134, __u32) // Получение количества TX DMA буферов данных: #define GSPW_GET_DMA_TX_DATA_QNT_NEW GSPW_IOR( 135, __u32) // Получение размера TX DMA буфера данных: #define GSPW_GET_DMA_TX_DATA_BUF_SIZE_NEW GSPW_IOR( 136, __u32) // Получение максимального размера TX пакета данных: #define GSPW_GET_DMA_TX_PACK_SIZE_NEW GSPW_IOR( 137, __u32) // Получение количества RX DMA дескрипторов: #define GSPW_GET_DMA_RX_DESC_QNT_NEW GSPW_IOR( 138, __u32) // Получение количества RX DMA буферов данных: #define GSPW_GET_DMA_RX_DATA_QNT_NEW GSPW_IOR( 139, __u32) // Получение размера RX DMA буфера данных: #define GSPW_GET_DMA_RX_DATA_BUF_SIZE_NEW GSPW_IOR( 140, __u32) // Получение максимального количества дескрипторов на отправку (по данному порту): #define GSPW_GET_MAX_SEND_DESC_QNT_NEW GSPW_IOR( 141, __u32) // SET: // Запись значения в регистр: #define GSPW_SET_REG_VAL GSPW_IOW( 10, __u32) // Запись значения в CP0 регистр: #define GSPW_SET_CP0_REG_VAL GSPW_IOW( 11, __u32) // Установка значения частоты передачи: #define GSPW_SET_TX_SPEED GSPW_IOW( 21, __u32) // Установка количества TX DMA дескрипторов: #define GSPW_SET_DMA_TX_DESC_QNT GSPW_IOW( 22, __u32) // Установка количества TX DMA буферов данных: #define GSPW_SET_DMA_TX_DATA_QNT GSPW_IOW( 23, __u32) // Установка размера TX DMA буфера данных: #define GSPW_SET_DMA_TX_DATA_BUF_SIZE GSPW_IOW( 24, __u32) // Установка максимального размера TX пакета данных: #define GSPW_SET_DMA_TX_PACK_SIZE GSPW_IOW( 25, __u32) // Установка количества RX DMA дескрипторов: #define GSPW_SET_DMA_RX_DESC_QNT GSPW_IOW( 26, __u32) // Установка количества RX DMA буферов данных: #define GSPW_SET_DMA_RX_DATA_QNT GSPW_IOW( 27, __u32) // Установка размера RX DMA буфера данных: #define GSPW_SET_DMA_RX_DATA_BUF_SIZE GSPW_IOW( 28, __u32) // Установка максимального количества дескрипторов на отправку (по данному порту): #define GSPW_SET_MAX_SEND_DESC_QNT GSPW_IOW( 29, __u32) // SET/GET: #endif /* __MULTICORE_SPW_H */