113d07a46SWarner Losh 2098ca2bdSWarner Losh /*- 3*718cf2ccSPedro F. Giffuni * SPDX-License-Identifier: BSD-4-Clause 4*718cf2ccSPedro F. Giffuni * 513d07a46SWarner Losh * Copyright (c) 1997 Marc Horowitz. All rights reserved. 613d07a46SWarner Losh * 713d07a46SWarner Losh * Redistribution and use in source and binary forms, with or without 813d07a46SWarner Losh * modification, are permitted provided that the following conditions 913d07a46SWarner Losh * are met: 1013d07a46SWarner Losh * 1. Redistributions of source code must retain the above copyright 1113d07a46SWarner Losh * notice, this list of conditions and the following disclaimer. 1213d07a46SWarner Losh * 2. Redistributions in binary form must reproduce the above copyright 1313d07a46SWarner Losh * notice, this list of conditions and the following disclaimer in the 1413d07a46SWarner Losh * documentation and/or other materials provided with the distribution. 1513d07a46SWarner Losh * 3. All advertising materials mentioning features or use of this software 1613d07a46SWarner Losh * must display the following acknowledgement: 1713d07a46SWarner Losh * This product includes software developed by Marc Horowitz. 1813d07a46SWarner Losh * 4. The name of the author may not be used to endorse or promote products 1913d07a46SWarner Losh * derived from this software without specific prior written permission. 2013d07a46SWarner Losh * 2113d07a46SWarner Losh * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 2213d07a46SWarner Losh * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 2313d07a46SWarner Losh * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 2413d07a46SWarner Losh * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 2513d07a46SWarner Losh * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 2613d07a46SWarner Losh * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 2713d07a46SWarner Losh * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 2813d07a46SWarner Losh * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 2913d07a46SWarner Losh * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 3013d07a46SWarner Losh * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 3113d07a46SWarner Losh */ 3213d07a46SWarner Losh 3313d07a46SWarner Losh /* 3413d07a46SWarner Losh * CIS Tuples */ 3513d07a46SWarner Losh 3613d07a46SWarner Losh /* Layer 1 Basic Compatibility Tuples */ 3713d07a46SWarner Losh #define CISTPL_NULL 0x00 3813d07a46SWarner Losh #define CISTPL_DEVICE 0x01 3913d07a46SWarner Losh #define PCCARD_DTYPE_MASK 0xF0 4013d07a46SWarner Losh #define PCCARD_DTYPE_NULL 0x00 4113d07a46SWarner Losh #define PCCARD_DTYPE_ROM 0x10 4213d07a46SWarner Losh #define PCCARD_DTYPE_OTPROM 0x20 4313d07a46SWarner Losh #define PCCARD_DTYPE_EPROM 0x30 4413d07a46SWarner Losh #define PCCARD_DTYPE_EEPROM 0x40 4513d07a46SWarner Losh #define PCCARD_DTYPE_FLASH 0x50 4613d07a46SWarner Losh #define PCCARD_DTYPE_SRAM 0x60 4713d07a46SWarner Losh #define PCCARD_DTYPE_DRAM 0x70 4813d07a46SWarner Losh #define PCCARD_DTYPE_FUNCSPEC 0xD0 4913d07a46SWarner Losh #define PCCARD_DTYPE_EXTEND 0xE0 5013d07a46SWarner Losh #define PCCARD_DSPEED_MASK 0x07 5113d07a46SWarner Losh #define PCCARD_DSPEED_NULL 0x00 5213d07a46SWarner Losh #define PCCARD_DSPEED_250NS 0x01 5313d07a46SWarner Losh #define PCCARD_DSPEED_200NS 0x02 5413d07a46SWarner Losh #define PCCARD_DSPEED_150NS 0x03 5513d07a46SWarner Losh #define PCCARD_DSPEED_100NS 0x04 5613d07a46SWarner Losh #define PCCARD_DSPEED_EXT 0x07 5713d07a46SWarner Losh 5813d07a46SWarner Losh /* 5913d07a46SWarner Losh * the 2.1 docs have 0x02-0x07 as reserved, but the linux drivers list the 6013d07a46SWarner Losh * follwing tuple code values. I have at least one card (3com 3c562 6113d07a46SWarner Losh * lan+modem) which has a code 0x06 tuple, so I'm going to assume that these 6213d07a46SWarner Losh * are for real 6313d07a46SWarner Losh */ 6413d07a46SWarner Losh 6513d07a46SWarner Losh #define CISTPL_LONGLINK_CB 0x02 6613d07a46SWarner Losh #define CISTPL_INDIRECT 0x03 6713d07a46SWarner Losh #define CISTPL_CONFIG_CB 0x04 6813d07a46SWarner Losh #define CISTPL_CFTABLE_ENTRY_CB 0x05 6913d07a46SWarner Losh #define CISTPL_LONGLINK_MFC 0x06 7013d07a46SWarner Losh #define PCCARD_MFC_MEM_ATTR 0x00 7113d07a46SWarner Losh #define PCCARD_MFC_MEM_COMMON 0x01 7213d07a46SWarner Losh #define CISTPL_BAR 0x07 7313d07a46SWarner Losh #define CISTPL_PWR_MGMNT 0x08 7413d07a46SWarner Losh #define CISTPL_EXTDEVICE 0x09 7513d07a46SWarner Losh 7613d07a46SWarner Losh #define CISTPL_CHECKSUM 0x10 7713d07a46SWarner Losh #define CISTPL_LONGLINK_A 0x11 7813d07a46SWarner Losh #define CISTPL_LONGLINK_C 0x12 7913d07a46SWarner Losh #define CISTPL_LINKTARGET 0x13 8013d07a46SWarner Losh #define CISTPL_NO_LINK 0x14 8113d07a46SWarner Losh #define CISTPL_VERS_1 0x15 8213d07a46SWarner Losh #define CISTPL_ALTSTR 0x16 8313d07a46SWarner Losh #define CISTPL_DEVICE_A 0x17 8413d07a46SWarner Losh #define CISTPL_JEDEC_C 0x18 8513d07a46SWarner Losh #define CISTPL_JEDEC_A 0x19 8613d07a46SWarner Losh #define CISTPL_CONFIG 0x1A 8713d07a46SWarner Losh #define PCCARD_TPCC_RASZ_MASK 0x03 8813d07a46SWarner Losh #define PCCARD_TPCC_RASZ_SHIFT 0 8913d07a46SWarner Losh #define PCCARD_TPCC_RMSZ_MASK 0x3C 9013d07a46SWarner Losh #define PCCARD_TPCC_RMSZ_SHIFT 2 9113d07a46SWarner Losh #define PCCARD_TPCC_RFSZ_MASK 0xC0 9213d07a46SWarner Losh #define PCCARD_TPCC_RFSZ_SHIFT 6 9313d07a46SWarner Losh #define CISTPL_CFTABLE_ENTRY 0x1B 9413d07a46SWarner Losh #define PCCARD_TPCE_INDX_INTFACE 0x80 9513d07a46SWarner Losh #define PCCARD_TPCE_INDX_DEFAULT 0x40 9613d07a46SWarner Losh #define PCCARD_TPCE_INDX_NUM_MASK 0x3F 9713d07a46SWarner Losh #define PCCARD_TPCE_IF_MWAIT 0x80 9813d07a46SWarner Losh #define PCCARD_TPCE_IF_RDYBSY 0x40 9913d07a46SWarner Losh #define PCCARD_TPCE_IF_WP 0x20 10013d07a46SWarner Losh #define PCCARD_TPCE_IF_BVD 0x10 10113d07a46SWarner Losh #define PCCARD_TPCE_IF_IFTYPE 0x0F 10213d07a46SWarner Losh #define PCCARD_IFTYPE_MEMORY 0 10313d07a46SWarner Losh #define PCCARD_IFTYPE_IO 1 10413d07a46SWarner Losh #define PCCARD_TPCE_FS_MISC 0x80 10513d07a46SWarner Losh #define PCCARD_TPCE_FS_MEMSPACE_MASK 0x60 10613d07a46SWarner Losh #define PCCARD_TPCE_FS_MEMSPACE_NONE 0x00 10713d07a46SWarner Losh #define PCCARD_TPCE_FS_MEMSPACE_LENGTH 0x20 10813d07a46SWarner Losh #define PCCARD_TPCE_FS_MEMSPACE_LENGTHADDR 0x40 10913d07a46SWarner Losh #define PCCARD_TPCE_FS_MEMSPACE_TABLE 0x60 11013d07a46SWarner Losh #define PCCARD_TPCE_FS_IRQ 0x10 11113d07a46SWarner Losh #define PCCARD_TPCE_FS_IOSPACE 0x08 11213d07a46SWarner Losh #define PCCARD_TPCE_FS_TIMING 0x04 11313d07a46SWarner Losh #define PCCARD_TPCE_FS_POWER_MASK 0x03 11413d07a46SWarner Losh #define PCCARD_TPCE_FS_POWER_NONE 0x00 11513d07a46SWarner Losh #define PCCARD_TPCE_FS_POWER_VCC 0x01 11613d07a46SWarner Losh #define PCCARD_TPCE_FS_POWER_VCCVPP1 0x02 11713d07a46SWarner Losh #define PCCARD_TPCE_FS_POWER_VCCVPP1VPP2 0x03 11813d07a46SWarner Losh #define PCCARD_TPCE_TD_RESERVED_MASK 0xE0 11913d07a46SWarner Losh #define PCCARD_TPCE_TD_RDYBSY_MASK 0x1C 12013d07a46SWarner Losh #define PCCARD_TPCE_TD_WAIT_MASK 0x03 12113d07a46SWarner Losh #define PCCARD_TPCE_IO_HASRANGE 0x80 12213d07a46SWarner Losh #define PCCARD_TPCE_IO_BUSWIDTH_16BIT 0x40 12313d07a46SWarner Losh #define PCCARD_TPCE_IO_BUSWIDTH_8BIT 0x20 12413d07a46SWarner Losh #define PCCARD_TPCE_IO_IOADDRLINES_MASK 0x1F 12513d07a46SWarner Losh #define PCCARD_TPCE_IO_RANGE_LENGTHSIZE_MASK 0xC0 12613d07a46SWarner Losh #define PCCARD_TPCE_IO_RANGE_LENGTHSIZE_NONE 0x00 12713d07a46SWarner Losh #define PCCARD_TPCE_IO_RANGE_LENGTHSIZE_ONE 0x40 12813d07a46SWarner Losh #define PCCARD_TPCE_IO_RANGE_LENGTHSIZE_TWO 0x80 12913d07a46SWarner Losh #define PCCARD_TPCE_IO_RANGE_LENGTHSIZE_FOUR 0xC0 13013d07a46SWarner Losh #define PCCARD_TPCE_IO_RANGE_ADDRSIZE_MASK 0x30 13113d07a46SWarner Losh #define PCCARD_TPCE_IO_RANGE_ADDRSIZE_NONE 0x00 13213d07a46SWarner Losh #define PCCARD_TPCE_IO_RANGE_ADDRSIZE_ONE 0x10 13313d07a46SWarner Losh #define PCCARD_TPCE_IO_RANGE_ADDRSIZE_TWO 0x20 13413d07a46SWarner Losh #define PCCARD_TPCE_IO_RANGE_ADDRSIZE_FOUR 0x30 13513d07a46SWarner Losh #define PCCARD_TPCE_IO_RANGE_COUNT 0x0F 13613d07a46SWarner Losh #define PCCARD_TPCE_IR_SHARE 0x80 13713d07a46SWarner Losh #define PCCARD_TPCE_IR_PULSE 0x40 13813d07a46SWarner Losh #define PCCARD_TPCE_IR_LEVEL 0x20 13913d07a46SWarner Losh #define PCCARD_TPCE_IR_HASMASK 0x10 14013d07a46SWarner Losh #define PCCARD_TPCE_IR_IRQ 0x0F 14113d07a46SWarner Losh #define PCCARD_TPCE_MS_HOSTADDR 0x80 14213d07a46SWarner Losh #define PCCARD_TPCE_MS_CARDADDR_SIZE_MASK 0x60 14313d07a46SWarner Losh #define PCCARD_TPCE_MS_CARDADDR_SIZE_SHIFT 5 14413d07a46SWarner Losh #define PCCARD_TPCE_MS_LENGTH_SIZE_MASK 0x18 14513d07a46SWarner Losh #define PCCARD_TPCE_MS_LENGTH_SIZE_SHIFT 3 14613d07a46SWarner Losh #define PCCARD_TPCE_MS_COUNT 0x07 14713d07a46SWarner Losh #define PCCARD_TPCE_MI_EXT 0x80 14813d07a46SWarner Losh #define PCCARD_TPCE_MI_RESERVED 0x40 14913d07a46SWarner Losh #define PCCARD_TPCE_MI_PWRDOWN 0x20 15013d07a46SWarner Losh #define PCCARD_TPCE_MI_READONLY 0x10 15113d07a46SWarner Losh #define PCCARD_TPCE_MI_AUDIO 0x08 15213d07a46SWarner Losh #define PCCARD_TPCE_MI_MAXTWINS 0x07 15313d07a46SWarner Losh #define CISTPL_DEVICE_OC 0x1C 15413d07a46SWarner Losh #define CISTPL_DEVICE_OA 0x1D 15513d07a46SWarner Losh #define CISTPL_DEVICE_GEO 0x1E 15613d07a46SWarner Losh #define CISTPL_DEVICE_GEO_A 0x1F 15713d07a46SWarner Losh #define CISTPL_MANFID 0x20 15813d07a46SWarner Losh #define CISTPL_FUNCID 0x21 15913d07a46SWarner Losh #define PCCARD_FUNCTION_UNSPEC -1 16013d07a46SWarner Losh #define PCCARD_FUNCTION_MULTIFUNCTION 0 16113d07a46SWarner Losh #define PCCARD_FUNCTION_MEMORY 1 16213d07a46SWarner Losh #define PCCARD_FUNCTION_SERIAL 2 16313d07a46SWarner Losh #define PCCARD_FUNCTION_PARALLEL 3 16413d07a46SWarner Losh #define PCCARD_FUNCTION_DISK 4 16513d07a46SWarner Losh #define PCCARD_FUNCTION_VIDEO 5 16613d07a46SWarner Losh #define PCCARD_FUNCTION_NETWORK 6 16713d07a46SWarner Losh #define PCCARD_FUNCTION_AIMS 7 16813d07a46SWarner Losh #define PCCARD_FUNCTION_SCSI 8 16913d07a46SWarner Losh #define PCCARD_FUNCTION_SECURITY 9 17013d07a46SWarner Losh #define PCCARD_FUNCTION_INSTRUMENT 10 17113d07a46SWarner Losh #define CISTPL_FUNCE 0x22 17213d07a46SWarner Losh #define PCCARD_TPLFE_TYPE_LAN_TECH 0x01 17313d07a46SWarner Losh #define PCCARD_TPLFE_TYPE_LAN_SPEED 0x02 17413d07a46SWarner Losh #define PCCARD_TPLFE_TYPE_LAN_MEDIA 0x03 17513d07a46SWarner Losh #define PCCARD_TPLFE_TYPE_LAN_NID 0x04 17613d07a46SWarner Losh #define PCCARD_TPLFE_TYPE_LAN_CONN 0x05 17713d07a46SWarner Losh #define PCCARD_TPLFE_TYPE_DISK_DEVICE_INTERFACE 0x01 17813d07a46SWarner Losh #define PCCARD_TPLFE_DDI_PCCARD_ATA 0x01 17913d07a46SWarner Losh #define CISTPL_END 0xFF 18013d07a46SWarner Losh 18113d07a46SWarner Losh /* Layer 2 Data Recording Format Tuples */ 18213d07a46SWarner Losh 18313d07a46SWarner Losh #define CISTPL_SWIL 0x23 18413d07a46SWarner Losh /* #define CISTPL_RESERVED 0x24-0x3F */ 18513d07a46SWarner Losh #define CISTPL_VERS_2 0x40 18613d07a46SWarner Losh #define CISTPL_FORMAT 0x41 18713d07a46SWarner Losh #define CISTPL_GEOMETRY 0x42 18813d07a46SWarner Losh #define CISTPL_BYTEORDER 0x43 18913d07a46SWarner Losh #define CISTPL_DATE 0x44 19013d07a46SWarner Losh #define CISTPL_BATTERY 0x45 19113d07a46SWarner Losh #define CISTPL_FORAMT_A 0x47 19213d07a46SWarner Losh 19313d07a46SWarner Losh /* Layer 3 Data Organization Tuples */ 19413d07a46SWarner Losh 19513d07a46SWarner Losh #define CISTPL_ORG 0x46 19613d07a46SWarner Losh /* #define CISTPL_RESERVED 0x47-0x7F */ 19713d07a46SWarner Losh 19813d07a46SWarner Losh /* Layer 4 System-Specific Standard Tuples */ 19913d07a46SWarner Losh 20013d07a46SWarner Losh /* #define CISTPL_RESERVED 0x80-0x8F */ 20113d07a46SWarner Losh #define CISTPL_SPCL 0x90 20213d07a46SWarner Losh /* #define CISTPL_RESERVED 0x90-0xFE */ 20313d07a46SWarner Losh 20413d07a46SWarner Losh #define CISTPL_GENERIC -1 205