Linux-libre 5.3.12-gnu
[librecmc/linux-libre.git] / drivers / usb / serial / io_edgeport.h
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
36 struct 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 */
67 struct 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  */
78 struct 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
122 struct string_block {
123         __u16   NumStrings;                     /* Number of strings in block */
124         __u16   Strings[1];                     /* Start of string block */
125 };
126
127
128
129 #endif