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