Krzysztof Halasa | 921a86e | 2010-08-12 23:14:07 +0200 | [diff] [blame] | 1 | /* |
| 2 | * SBE 2T3E3 synchronous serial card driver for Linux |
| 3 | * |
| 4 | * Copyright (C) 2009-2010 Krzysztof Halasa <khc@pm.waw.pl> |
| 5 | * |
| 6 | * This program is free software; you can redistribute it and/or modify it |
| 7 | * under the terms of version 2 of the GNU General Public License |
| 8 | * as published by the Free Software Foundation. |
| 9 | * |
| 10 | * This code is based on a driver written by SBE Inc. |
| 11 | */ |
| 12 | |
| 13 | #ifndef CTRL_H |
| 14 | #define CTRL_H |
| 15 | |
| 16 | #define SBE_2T3E3_OFF 0 |
| 17 | #define SBE_2T3E3_ON 1 |
| 18 | |
| 19 | #define SBE_2T3E3_LED_NONE 0 |
| 20 | #define SBE_2T3E3_LED_GREEN 1 |
| 21 | #define SBE_2T3E3_LED_YELLOW 2 |
| 22 | |
| 23 | #define SBE_2T3E3_CABLE_LENGTH_LESS_THAN_255_FEET 0 |
| 24 | #define SBE_2T3E3_CABLE_LENGTH_GREATER_THAN_255_FEET 1 |
| 25 | |
| 26 | #define SBE_2T3E3_CRC_16 0 |
| 27 | #define SBE_2T3E3_CRC_32 1 |
| 28 | |
| 29 | #define SBE_2T3E3_PANEL_FRONT 0 |
| 30 | #define SBE_2T3E3_PANEL_REAR 1 |
| 31 | |
| 32 | #define SBE_2T3E3_FRAME_MODE_HDLC 0 |
| 33 | #define SBE_2T3E3_FRAME_MODE_TRANSPARENT 1 |
| 34 | #define SBE_2T3E3_FRAME_MODE_RAW 2 |
| 35 | |
| 36 | #define SBE_2T3E3_FRAME_TYPE_E3_G751 0 |
| 37 | #define SBE_2T3E3_FRAME_TYPE_E3_G832 1 |
| 38 | #define SBE_2T3E3_FRAME_TYPE_T3_CBIT 2 |
| 39 | #define SBE_2T3E3_FRAME_TYPE_T3_M13 3 |
| 40 | |
| 41 | #define SBE_2T3E3_FRACTIONAL_MODE_NONE 0 |
| 42 | #define SBE_2T3E3_FRACTIONAL_MODE_0 1 |
| 43 | #define SBE_2T3E3_FRACTIONAL_MODE_1 2 |
| 44 | #define SBE_2T3E3_FRACTIONAL_MODE_2 3 |
| 45 | |
| 46 | #define SBE_2T3E3_SCRAMBLER_OFF 0 |
| 47 | #define SBE_2T3E3_SCRAMBLER_LARSCOM 1 |
| 48 | #define SBE_2T3E3_SCRAMBLER_ADC_KENTROX_DIGITAL 2 |
| 49 | |
| 50 | #define SBE_2T3E3_TIMING_LOCAL 0 |
| 51 | #define SBE_2T3E3_TIMING_LOOP 1 |
| 52 | |
| 53 | #define SBE_2T3E3_LOOPBACK_NONE 0 |
| 54 | #define SBE_2T3E3_LOOPBACK_ETHERNET 1 |
| 55 | #define SBE_2T3E3_LOOPBACK_FRAMER 2 |
| 56 | #define SBE_2T3E3_LOOPBACK_LIU_DIGITAL 3 |
| 57 | #define SBE_2T3E3_LOOPBACK_LIU_ANALOG 4 |
| 58 | #define SBE_2T3E3_LOOPBACK_LIU_REMOTE 5 |
| 59 | |
| 60 | #define SBE_2T3E3_PAD_COUNT_1 1 |
| 61 | #define SBE_2T3E3_PAD_COUNT_2 2 |
| 62 | #define SBE_2T3E3_PAD_COUNT_3 3 |
| 63 | #define SBE_2T3E3_PAD_COUNT_4 4 |
| 64 | |
| 65 | #define SBE_2T3E3_CHIP_21143 0 |
| 66 | #define SBE_2T3E3_CHIP_CPLD 1 |
| 67 | #define SBE_2T3E3_CHIP_FRAMER 2 |
| 68 | #define SBE_2T3E3_CHIP_LIU 3 |
| 69 | |
| 70 | #define SBE_2T3E3_LOG_LEVEL_NONE 0 |
| 71 | #define SBE_2T3E3_LOG_LEVEL_ERROR 1 |
| 72 | #define SBE_2T3E3_LOG_LEVEL_WARNING 2 |
| 73 | #define SBE_2T3E3_LOG_LEVEL_INFO 3 |
| 74 | |
| 75 | /* commands */ |
| 76 | #define SBE_2T3E3_PORT_GET 0 |
| 77 | #define SBE_2T3E3_PORT_SET 1 |
| 78 | #define SBE_2T3E3_PORT_GET_STATS 2 |
| 79 | #define SBE_2T3E3_PORT_DEL_STATS 3 |
| 80 | #define SBE_2T3E3_PORT_READ_REGS 4 |
| 81 | #define SBE_2T3E3_LOG_LEVEL 5 |
| 82 | #define SBE_2T3E3_PORT_WRITE_REGS 6 |
| 83 | |
| 84 | #define NG_SBE_2T3E3_NODE_TYPE "sbe2T3E3" |
| 85 | #define NG_SBE_2T3E3_COOKIE 0x03800891 |
| 86 | |
Kristina Martšenko | 154d2b8 | 2014-03-03 23:05:44 +0200 | [diff] [blame] | 87 | struct t3e3_param { |
Krzysztof Halasa | 921a86e | 2010-08-12 23:14:07 +0200 | [diff] [blame] | 88 | u_int8_t frame_mode; /* FRAME_MODE_* */ |
| 89 | u_int8_t crc; /* CRC_* */ |
| 90 | u_int8_t receiver_on; /* ON/OFF */ |
| 91 | u_int8_t transmitter_on; /* ON/OFF */ |
| 92 | u_int8_t frame_type; /* FRAME_TYPE_* */ |
| 93 | u_int8_t panel; /* PANEL_* */ |
| 94 | u_int8_t line_build_out; /* ON/OFF */ |
| 95 | u_int8_t receive_equalization; /* ON/OFF */ |
| 96 | u_int8_t transmit_all_ones; /* ON/OFF */ |
| 97 | u_int8_t loopback; /* LOOPBACK_* */ |
| 98 | u_int8_t clock_source; /* TIMING_* */ |
| 99 | u_int8_t scrambler; /* SCRAMBLER_* */ |
| 100 | u_int8_t pad_count; /* PAD_COUNT_* */ |
| 101 | u_int8_t log_level; /* LOG_LEVEL_* - unused */ |
| 102 | u_int8_t fractional_mode; /* FRACTIONAL_MODE_* */ |
| 103 | u_int8_t bandwidth_start; /* 0-255 */ |
| 104 | u_int8_t bandwidth_stop; /* 0-255 */ |
Kristina Martšenko | 154d2b8 | 2014-03-03 23:05:44 +0200 | [diff] [blame] | 105 | }; |
Krzysztof Halasa | 921a86e | 2010-08-12 23:14:07 +0200 | [diff] [blame] | 106 | |
Kristina Martšenko | c6a297b | 2014-03-03 23:05:45 +0200 | [diff] [blame] | 107 | struct t3e3_stats { |
Krzysztof Halasa | 921a86e | 2010-08-12 23:14:07 +0200 | [diff] [blame] | 108 | u_int64_t in_bytes; |
| 109 | u32 in_packets, in_dropped; |
| 110 | u32 in_errors, in_error_desc, in_error_coll, in_error_drib, |
| 111 | in_error_crc, in_error_mii; |
| 112 | u_int64_t out_bytes; |
| 113 | u32 out_packets, out_dropped; |
| 114 | u32 out_errors, out_error_jab, out_error_lost_carr, |
| 115 | out_error_no_carr, out_error_link_fail, out_error_underflow, |
| 116 | out_error_dereferred; |
| 117 | u_int8_t LOC, LOF, OOF, LOS, AIS, FERF, IDLE, AIC, FEAC; |
| 118 | u_int16_t FEBE_code; |
| 119 | u32 LCV, FRAMING_BIT, PARITY_ERROR, FEBE_count, CP_BIT; |
Kristina Martšenko | c6a297b | 2014-03-03 23:05:45 +0200 | [diff] [blame] | 120 | }; |
Krzysztof Halasa | 921a86e | 2010-08-12 23:14:07 +0200 | [diff] [blame] | 121 | |
| 122 | |
Kristina Martšenko | eb55b5b | 2014-03-03 23:05:46 +0200 | [diff] [blame] | 123 | struct t3e3_resp { |
Krzysztof Halasa | 921a86e | 2010-08-12 23:14:07 +0200 | [diff] [blame] | 124 | union { |
Kristina Martšenko | 154d2b8 | 2014-03-03 23:05:44 +0200 | [diff] [blame] | 125 | struct t3e3_param param; |
Kristina Martšenko | c6a297b | 2014-03-03 23:05:45 +0200 | [diff] [blame] | 126 | struct t3e3_stats stats; |
Krzysztof Halasa | 921a86e | 2010-08-12 23:14:07 +0200 | [diff] [blame] | 127 | u32 data; |
| 128 | } u; |
Kristina Martšenko | eb55b5b | 2014-03-03 23:05:46 +0200 | [diff] [blame] | 129 | }; |
Krzysztof Halasa | 921a86e | 2010-08-12 23:14:07 +0200 | [diff] [blame] | 130 | |
| 131 | #endif /* CTRL_H */ |