hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
/* SPDX-License-Identifier: GPL-2.0+ */
/*****************************************************************************
 *
 *    Copyright (C) 1997-2002 Inside Out Networks, Inc.
 *
 *    Feb-16-2001    DMI    Added I2C structure definitions
 *    May-29-2002    gkh    Ported to Linux
 *
 *
 ******************************************************************************/
 
#ifndef _IO_TI_H_
#define _IO_TI_H_
 
/* Address Space */
#define DTK_ADDR_SPACE_XDATA        0x03    /* Addr is placed in XDATA space */
#define DTK_ADDR_SPACE_I2C_TYPE_II    0x82    /* Addr is placed in I2C area */
#define DTK_ADDR_SPACE_I2C_TYPE_III    0x83    /* Addr is placed in I2C area */
 
/* UART Defines */
#define UMPMEM_BASE_UART1        0xFFA0    /* UMP UART1 base address */
#define UMPMEM_BASE_UART2        0xFFB0    /* UMP UART2 base address */
#define UMPMEM_OFFS_UART_LSR        0x05    /* UMP UART LSR register offset */
 
/* Bits per character */
#define UMP_UART_CHAR5BITS        0x00
#define UMP_UART_CHAR6BITS        0x01
#define UMP_UART_CHAR7BITS        0x02
#define UMP_UART_CHAR8BITS        0x03
 
/* Parity */
#define UMP_UART_NOPARITY        0x00
#define UMP_UART_ODDPARITY        0x01
#define UMP_UART_EVENPARITY        0x02
#define UMP_UART_MARKPARITY        0x03
#define UMP_UART_SPACEPARITY        0x04
 
/* Stop bits */
#define UMP_UART_STOPBIT1        0x00
#define UMP_UART_STOPBIT15        0x01
#define UMP_UART_STOPBIT2        0x02
 
/* Line status register masks */
#define UMP_UART_LSR_OV_MASK        0x01
#define UMP_UART_LSR_PE_MASK        0x02
#define UMP_UART_LSR_FE_MASK        0x04
#define UMP_UART_LSR_BR_MASK        0x08
#define UMP_UART_LSR_ER_MASK        0x0F
#define UMP_UART_LSR_RX_MASK        0x10
#define UMP_UART_LSR_TX_MASK        0x20
 
#define UMP_UART_LSR_DATA_MASK        (LSR_PAR_ERR | LSR_FRM_ERR | LSR_BREAK)
 
/* Port Settings Constants) */
#define UMP_MASK_UART_FLAGS_RTS_FLOW        0x0001
#define UMP_MASK_UART_FLAGS_RTS_DISABLE        0x0002
#define UMP_MASK_UART_FLAGS_PARITY        0x0008
#define UMP_MASK_UART_FLAGS_OUT_X_DSR_FLOW    0x0010
#define UMP_MASK_UART_FLAGS_OUT_X_CTS_FLOW    0x0020
#define UMP_MASK_UART_FLAGS_OUT_X        0x0040
#define UMP_MASK_UART_FLAGS_OUT_XA        0x0080
#define UMP_MASK_UART_FLAGS_IN_X        0x0100
#define UMP_MASK_UART_FLAGS_DTR_FLOW        0x0800
#define UMP_MASK_UART_FLAGS_DTR_DISABLE        0x1000
#define UMP_MASK_UART_FLAGS_RECEIVE_MS_INT    0x2000
#define UMP_MASK_UART_FLAGS_AUTO_START_ON_ERR    0x4000
 
#define UMP_DMA_MODE_CONTINOUS            0x01
#define UMP_PIPE_TRANS_TIMEOUT_ENA        0x80
#define UMP_PIPE_TRANSFER_MODE_MASK        0x03
#define UMP_PIPE_TRANS_TIMEOUT_MASK        0x7C
 
/* Purge port Direction Mask Bits */
#define UMP_PORT_DIR_OUT            0x01
#define UMP_PORT_DIR_IN                0x02
 
/* Address of Port 0 */
#define UMPM_UART1_PORT                0x03
 
/* Commands */
#define    UMPC_SET_CONFIG            0x05
#define    UMPC_OPEN_PORT            0x06
#define    UMPC_CLOSE_PORT            0x07
#define    UMPC_START_PORT            0x08
#define    UMPC_STOP_PORT            0x09
#define    UMPC_TEST_PORT            0x0A
#define    UMPC_PURGE_PORT            0x0B
 
/* Force the Firmware to complete the current Read */
#define    UMPC_COMPLETE_READ        0x80
/* Force UMP back into BOOT Mode */
#define    UMPC_HARDWARE_RESET        0x81
/*
 * Copy current download image to type 0xf2 record in 16k I2C
 * firmware will change 0xff record to type 2 record when complete
 */
#define    UMPC_COPY_DNLD_TO_I2C        0x82
 
/*
 * Special function register commands
 * wIndex is register address
 * wValue is MSB/LSB mask/data
 */
#define    UMPC_WRITE_SFR            0x83    /* Write SFR Register */
 
/* wIndex is register address */
#define    UMPC_READ_SFR            0x84    /* Read SRF Register */
 
/* Set or Clear DTR (wValue bit 0 Set/Clear)    wIndex ModuleID (port) */
#define    UMPC_SET_CLR_DTR        0x85
 
/* Set or Clear RTS (wValue bit 0 Set/Clear)    wIndex ModuleID (port) */
#define    UMPC_SET_CLR_RTS        0x86
 
/* Set or Clear LOOPBACK (wValue bit 0 Set/Clear) wIndex ModuleID (port) */
#define    UMPC_SET_CLR_LOOPBACK        0x87
 
/* Set or Clear BREAK (wValue bit 0 Set/Clear)    wIndex ModuleID (port) */
#define    UMPC_SET_CLR_BREAK        0x88
 
/* Read MSR wIndex ModuleID (port) */
#define    UMPC_READ_MSR            0x89
 
/* Toolkit commands */
/* Read-write group */
#define    UMPC_MEMORY_READ        0x92
#define    UMPC_MEMORY_WRITE        0x93
 
/*
 *    UMP DMA Definitions
 */
#define UMPD_OEDB1_ADDRESS        0xFF08
#define UMPD_OEDB2_ADDRESS        0xFF10
 
struct out_endpoint_desc_block {
   __u8 Configuration;
   __u8 XBufAddr;
   __u8 XByteCount;
   __u8 Unused1;
   __u8 Unused2;
   __u8 YBufAddr;
   __u8 YByteCount;
   __u8 BufferSize;
} __attribute__((packed));
 
 
/*
 * TYPE DEFINITIONS
 * Structures for Firmware commands
 */
/* UART settings */
struct ump_uart_config {
   __u16 wBaudRate;    /* Baud rate                        */
   __u16 wFlags;        /* Bitmap mask of flags             */
   __u8 bDataBits;        /* 5..8 - data bits per character   */
   __u8 bParity;        /* Parity settings                  */
   __u8 bStopBits;        /* Stop bits settings               */
   char cXon;        /* XON character                    */
   char cXoff;        /* XOFF character                   */
   __u8 bUartMode;        /* Will be updated when a user      */
               /* interface is defined             */
} __attribute__((packed));
 
 
/*
 * TYPE DEFINITIONS
 * Structures for USB interrupts
 */
/* Interrupt packet structure */
struct ump_interrupt {
   __u8 bICode;            /* Interrupt code (interrupt num)   */
   __u8 bIInfo;            /* Interrupt information            */
}  __attribute__((packed));
 
 
#define TIUMP_GET_PORT_FROM_CODE(c)    (((c) >> 6) & 0x01)
#define TIUMP_GET_FUNC_FROM_CODE(c)    ((c) & 0x0f)
#define TIUMP_INTERRUPT_CODE_LSR    0x03
#define TIUMP_INTERRUPT_CODE_MSR    0x04
 
#endif