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