linux/drivers/usb/serial/io_edgeport.h
<<
>>
Prefs
   1/************************************************************************
   2 *
   3 *      io_edgeport.h   Edgeport Linux Interface definitions
   4 *
   5 *      Copyright (C) 2000 Inside Out Networks, Inc.
   6 *
   7 *      This program is free software; you can redistribute it and/or modify
   8 *      it under the terms of the GNU General Public License as published by
   9 *      the Free Software Foundation; either version 2 of the License, or
  10 *      (at your option) any later version.
  11 *
  12 *
  13 ************************************************************************/
  14
  15#if !defined(_IO_EDGEPORT_H_)
  16#define _IO_EDGEPORT_H_
  17
  18
  19#define MAX_RS232_PORTS         8       /* Max # of RS-232 ports per device */
  20
  21/* typedefs that the insideout headers need */
  22#ifndef LOW8
  23        #define LOW8(a)         ((unsigned char)(a & 0xff))
  24#endif
  25#ifndef HIGH8
  26        #define HIGH8(a)        ((unsigned char)((a & 0xff00) >> 8))
  27#endif
  28
  29#ifndef __KERNEL__
  30#define __KERNEL__
  31#endif
  32
  33#include "io_usbvend.h"
  34
  35
  36
  37/* The following table is used to map the USBx port number to
  38 * the device serial number (or physical USB path), */
  39#define MAX_EDGEPORTS   64
  40
  41struct comMapper {
  42        char    SerialNumber[MAX_SERIALNUMBER_LEN+1];   /* Serial number/usb path */
  43        int     numPorts;                               /* Number of ports */
  44        int     Original[MAX_RS232_PORTS];              /* Port numbers set by IOCTL */
  45        int     Port[MAX_RS232_PORTS];                  /* Actual used port numbers */
  46};
  47
  48
  49#define EDGEPORT_CONFIG_DEVICE "/proc/edgeport"
  50
  51/* /proc/edgeport Interface
  52 * This interface uses read/write/lseek interface to talk to the edgeport driver
  53 * the following read functions are supported: */
  54#define PROC_GET_MAPPING_TO_PATH        1
  55#define PROC_GET_COM_ENTRY              2
  56#define PROC_GET_EDGE_MANUF_DESCRIPTOR  3
  57#define PROC_GET_BOOT_DESCRIPTOR        4
  58#define PROC_GET_PRODUCT_INFO           5
  59#define PROC_GET_STRINGS                6
  60#define PROC_GET_CURRENT_COM_MAPPING    7
  61
  62/* The parameters to the lseek() for the read is: */
  63#define PROC_READ_SETUP(Command, Argument)      ((Command) + ((Argument)<<8))
  64
  65
  66/* the following write functions are supported: */
  67#define PROC_SET_COM_MAPPING            1
  68#define PROC_SET_COM_ENTRY              2
  69
  70
  71/* The following structure is passed to the write */
  72struct procWrite {
  73        int     Command;
  74        union {
  75                struct comMapper        Entry;
  76                int                     ComMappingBasedOnUSBPort;       /* Boolean value */
  77        } u;
  78};
  79
  80/*
  81 *      Product information read from the Edgeport
  82 */
  83struct edgeport_product_info {
  84        __u16   ProductId;                      /* Product Identifier */
  85        __u8    NumPorts;                       /* Number of ports on edgeport */
  86        __u8    ProdInfoVer;                    /* What version of structure is this? */
  87
  88        __u32   IsServer        :1;             /* Set if Server */
  89        __u32   IsRS232         :1;             /* Set if RS-232 ports exist */
  90        __u32   IsRS422         :1;             /* Set if RS-422 ports exist */
  91        __u32   IsRS485         :1;             /* Set if RS-485 ports exist */
  92        __u32   IsReserved      :28;            /* Reserved for later expansion */
  93
  94        __u8    RomSize;                        /* Size of ROM/E2PROM in K */
  95        __u8    RamSize;                        /* Size of external RAM in K */
  96        __u8    CpuRev;                         /* CPU revision level (chg only if s/w visible) */
  97        __u8    BoardRev;                       /* PCB revision level (chg only if s/w visible) */
  98
  99        __u8    BootMajorVersion;               /* Boot Firmware version: xx. */
 100        __u8    BootMinorVersion;               /*                        yy. */
 101        __le16  BootBuildNumber;                /*                        zzzz (LE format) */
 102
 103        __u8    FirmwareMajorVersion;           /* Operational Firmware version:xx. */
 104        __u8    FirmwareMinorVersion;           /*                              yy. */
 105        __le16  FirmwareBuildNumber;            /*                              zzzz (LE format) */
 106
 107        __u8    ManufactureDescDate[3];         /* MM/DD/YY when descriptor template was compiled */
 108        __u8    HardwareType;
 109
 110        __u8    iDownloadFile;                  /* What to download to EPiC device */
 111        __u8    EpicVer;                        /* What version of EPiC spec this device supports */
 112
 113        struct edge_compatibility_bits Epic;
 114};
 115
 116/*
 117 *      Edgeport Stringblock String locations
 118 */
 119#define EDGESTRING_MANUFNAME            1       /* Manufacture Name */
 120#define EDGESTRING_PRODNAME             2       /* Product Name */
 121#define EDGESTRING_SERIALNUM            3       /* Serial Number */
 122#define EDGESTRING_ASSEMNUM             4       /* Assembly Number */
 123#define EDGESTRING_OEMASSEMNUM          5       /* OEM Assembly Number */
 124#define EDGESTRING_MANUFDATE            6       /* Manufacture Date */
 125#define EDGESTRING_ORIGSERIALNUM        7       /* Serial Number */
 126
 127struct string_block {
 128        __u16   NumStrings;                     /* Number of strings in block */
 129        __u16   Strings[1];                     /* Start of string block */
 130};
 131
 132
 133
 134#endif
 135