linux-old/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 TRUE
  23        #define TRUE            (1)
  24#endif
  25#ifndef FALSE
  26        #define FALSE           (0)
  27#endif
  28#ifndef LOW8
  29        #define LOW8(a)         ((unsigned char)(a & 0xff))
  30#endif
  31#ifndef HIGH8
  32        #define HIGH8(a)        ((unsigned char)((a & 0xff00) >> 8))
  33#endif
  34#ifndef NUM_ENTRIES
  35        #define NUM_ENTRIES(x)  (sizeof(x)/sizeof((x)[0]))
  36#endif
  37
  38#ifndef __KERNEL__
  39#define __KERNEL__
  40#endif
  41
  42#include "io_usbvend.h"
  43
  44
  45
  46/* The following table is used to map the USBx port number to 
  47 * the device serial number (or physical USB path), */
  48#define MAX_EDGEPORTS   64
  49
  50struct comMapper {
  51        char    SerialNumber[MAX_SERIALNUMBER_LEN+1];   /* Serial number/usb path */
  52        int     numPorts;                               /* Number of ports */
  53        int     Original[MAX_RS232_PORTS];              /* Port numbers set by IOCTL */
  54        int     Port[MAX_RS232_PORTS];                  /* Actual used port numbers */
  55};
  56
  57
  58#define EDGEPORT_CONFIG_DEVICE "/proc/edgeport"
  59
  60/* /proc/edgeport Interface
  61 * This interface uses read/write/lseek interface to talk to the edgeport driver
  62 * the following read functions are supported: */
  63#define PROC_GET_MAPPING_TO_PATH        1
  64#define PROC_GET_COM_ENTRY              2
  65#define PROC_GET_EDGE_MANUF_DESCRIPTOR  3
  66#define PROC_GET_BOOT_DESCRIPTOR        4
  67#define PROC_GET_PRODUCT_INFO           5
  68#define PROC_GET_STRINGS                6
  69#define PROC_GET_CURRENT_COM_MAPPING    7
  70
  71/* The parameters to the lseek() for the read is: */
  72#define PROC_READ_SETUP(Command, Argument)      ((Command) + ((Argument)<<8))
  73
  74
  75/* the following write functions are supported: */
  76#define PROC_SET_COM_MAPPING            1
  77#define PROC_SET_COM_ENTRY              2
  78
  79
  80/* The following sturcture is passed to the write */
  81struct procWrite {
  82        int     Command;
  83        union {
  84                struct comMapper        Entry;
  85                int                     ComMappingBasedOnUSBPort;       /* Boolean value */
  86        } u;
  87};
  88
  89/*
  90 *      Product information read from the Edgeport
  91 */
  92struct edgeport_product_info {
  93        __u16   ProductId;                      /* Product Identifier */
  94        __u8    NumPorts;                       /* Number of ports on edgeport */
  95        __u8    ProdInfoVer;                    /* What version of structure is this? */
  96
  97        __u32   IsServer        :1;             /* Set if Server */
  98        __u32   IsRS232         :1;             /* Set if RS-232 ports exist */
  99        __u32   IsRS422         :1;             /* Set if RS-422 ports exist */
 100        __u32   IsRS485         :1;             /* Set if RS-485 ports exist */
 101        __u32   IsReserved      :28;            /* Reserved for later expansion */
 102
 103        __u8    RomSize;                        /* Size of ROM/E2PROM in K */
 104        __u8    RamSize;                        /* Size of external RAM in K */
 105        __u8    CpuRev;                         /* CPU revision level (chg only if s/w visible) */
 106        __u8    BoardRev;                       /* PCB revision level (chg only if s/w visible) */
 107
 108        __u8    BootMajorVersion;               /* Boot Firmware version: xx. */
 109        __u8    BootMinorVersion;               /*                        yy. */
 110        __u16   BootBuildNumber;                /*                        zzzz (LE format) */
 111
 112        __u8    FirmwareMajorVersion;           /* Operational Firmware version:xx. */
 113        __u8    FirmwareMinorVersion;           /*                              yy. */
 114        __u16   FirmwareBuildNumber;            /*                              zzzz (LE format) */
 115
 116        __u8    ManufactureDescDate[3];         /* MM/DD/YY when descriptor template was compiled */
 117        __u8    Unused1[1];                     /* Available */
 118
 119        __u8    iDownloadFile;                  /* What to download to EPiC device */
 120        __u8    Unused2[2];                     /* Available */
 121};
 122
 123/*
 124 *      Edgeport Stringblock String locations
 125 */
 126#define EDGESTRING_MANUFNAME            1       /* Manufacture Name */
 127#define EDGESTRING_PRODNAME             2       /* Product Name */
 128#define EDGESTRING_SERIALNUM            3       /* Serial Number */
 129#define EDGESTRING_ASSEMNUM             4       /* Assembly Number */
 130#define EDGESTRING_OEMASSEMNUM          5       /* OEM Assembly Number */
 131#define EDGESTRING_MANUFDATE            6       /* Manufacture Date */
 132#define EDGESTRING_ORIGSERIALNUM        7       /* Serial Number */
 133
 134struct string_block {
 135        __u16   NumStrings;                     /* Number of strings in block */
 136        __u16   Strings[1];                     /* Start of string block */
 137};
 138
 139
 140
 141#endif
 142
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.